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