From f6564b610b382c6c78f0e1cb231c60ea6cf543ef Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期二, 17 六月 2025 21:07:42 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-system/src/main/resources/mapper/system/TTemplateDetailMapper.xml | 5 +++-- ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java | 33 ++++++++++++++++++++++++++------- ruoyi-system/src/main/java/com/ruoyi/system/model/TTemplateDetail.java | 3 +++ 3 files changed, 32 insertions(+), 9 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java index bef287e..9959b2e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java @@ -18,9 +18,7 @@ import java.math.BigDecimal; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -34,6 +32,8 @@ private static final String PROJECT_DEPT_WEIGHT = ":PROJECT_DEPT_WEIGHT"; // 保洁员权重标识 private static final String CLEANER_WEIGHT = ":CLEANER_WEIGHT"; + // 重复点位标识 + private static final String REPEAT_LOCATION = ":REPEAT_LOCATION"; @Autowired private RedisCache redisCache; @@ -86,7 +86,7 @@ // 创建任务 list.forEach(detail -> { // 计算周期 - long cycle = detail.getCycle(); + int cycle = detail.getCycle(); switch (detail.getCycleType()){ case 2: cycle = cycle * 7; @@ -156,7 +156,7 @@ .in(TCleaner::getProjectId, areaIds)); int cleanerSums = num1 * Integer.parseInt(count + ""); // 获取每天需要抽取的保洁员数,向上取整 - int dayCleanerCount = cleanerSums / detail.getCycle(); + int dayCleanerCount = cleanerSums / cycle; // 获取保洁员权重 List<String> cleanerIds = redisCache.getCacheList(detail.getId() + CLEANER_WEIGHT); @@ -218,7 +218,26 @@ } } - // TODO 抽取重复点位 + // 抽取重复点位 + Integer currentValue = detail.getCurrentValue(); + if(currentValue != cycle){ + // 周期天数加一 + detail.setCurrentValue(currentValue + 1); + // 获取重复点位 + Set<TLocation> repeatLocation = redisCache.getCacheSet(detail.getId() + REPEAT_LOCATION); + if(!CollectionUtils.isEmpty(repeatLocation)){ + List<TLocation> locations = randomSelection(new ArrayList<>(tLocationList), num3); + tLocationList.addAll(locations); + } + Set<TLocation> locationSet = new HashSet<>(tLocationList); + redisCache.setCacheSet(detail.getId() + REPEAT_LOCATION, locationSet); + + }else { + // 设置当前周期为0 + detail.setCurrentValue(0); + // 将重复点位置空 + redisCache.deleteObject(detail.getId() + REPEAT_LOCATION); + } // 创建任务 List<TTask> tasks = new ArrayList<>(); @@ -242,7 +261,7 @@ tasks.add(task); } taskCleanService.saveBatch(tasks); - + templateDetailService.updateById(detail); }); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TTemplateDetail.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TTemplateDetail.java index d58add3..3a1923f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TTemplateDetail.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TTemplateDetail.java @@ -67,5 +67,8 @@ @TableField("template_id") private String templateId; + @ApiModelProperty(value = "当前周期值") + @TableField("current_value") + private Integer currentValue; } diff --git a/ruoyi-system/src/main/resources/mapper/system/TTemplateDetailMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TTemplateDetailMapper.xml index 142e653..9d92502 100644 --- a/ruoyi-system/src/main/resources/mapper/system/TTemplateDetailMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/TTemplateDetailMapper.xml @@ -10,17 +10,18 @@ <result column="create_by" property="createBy" /> <result column="update_by" property="updateBy" /> <result column="disabled" property="disabled" /> - <result column="cycle" property="cycle" /> + <result column="`cycle`" property="cycle" /> <result column="num1" property="num1" /> <result column="num2" property="num2" /> <result column="num3" property="num3" /> <result column="num4" property="num4" /> <result column="template_id" property="templateId" /> + <result column="current_value" property="currentValue" /> </resultMap> <!-- 通用查询结果列 --> <sql id="Base_Column_List"> - id, create_time, update_time, create_by, update_by, disabled, cycle, num1, num2, num3, num4, template_id + id, create_time, update_time, create_by, update_by, disabled, `cycle`, num1, num2, num3, num4, template_id,current_value </sql> </mapper> -- Gitblit v1.7.1