Pārlūkot izejas kodu

部分时间已有营期

sgw 6 dienas atpakaļ
vecāks
revīzija
a8b9647bd2

+ 2 - 2
fs-company/src/main/java/com/fs/company/controller/qw/SopUserLogsController.java

@@ -179,8 +179,8 @@ public class SopUserLogsController extends BaseController
     @Log(title = "修改群营期时间", businessType = BusinessType.UPDATE)
     @PostMapping("/updateLogDate")
     public R updateLogDate(@RequestBody UpdateSopUserLogDateVo vo){
-        sopUserLogsService.updateLogDate(vo);
-        return R.ok();
+
+        return sopUserLogsService.updateLogDate(vo);
     }
     @Log(title = "追加SOP群聊", businessType = BusinessType.UPDATE)
     @PostMapping("/addGroupChat")

+ 3 - 0
fs-service/src/main/java/com/fs/sop/mapper/SopUserLogsMapper.java

@@ -350,6 +350,9 @@ List<SopUserLogsVO> selectSopUserLogsGroupListByParam(@Param("maps") SopUserLogs
             "             AND qw_sop.status in(2,3)")
     List<SopUserLogs> queryAllSopUserLogs();
 
+    @DataSource(DataSourceType.SOP)
+    List<SopUserLogs> selectSopUserLogsListByIds(List<String> ids);
+
     @DataSource(DataSourceType.SOP)
     void updateSopuserLogsDateById(UpdateSopUserLogDateVo vo);
 

+ 1 - 1
fs-service/src/main/java/com/fs/sop/service/ISopUserLogsService.java

@@ -59,7 +59,7 @@ public interface ISopUserLogsService {
      */
     public R ratingUserLogs(String sopId);
 
-    void updateLogDate(UpdateSopUserLogDateVo vo);
+    R updateLogDate(UpdateSopUserLogDateVo vo);
 
     void addGroupChat(AddSopUserGroupChat vo);
 

+ 55 - 2
fs-service/src/main/java/com/fs/sop/service/impl/SopUserLogsServiceImpl.java

@@ -914,14 +914,67 @@ public class SopUserLogsServiceImpl  implements ISopUserLogsService {
     }
 
     @Override
-    public void updateLogDate(UpdateSopUserLogDateVo vo) {
+    public R updateLogDate(UpdateSopUserLogDateVo vo) {
         if(vo.getDate() == null){
             throw new BaseException("修改时间不能为空");
         }
         if(vo.getIds() == null || vo.getIds().isEmpty()){
             throw new BaseException("营期ID不能为空");
         }
-        sopUserLogsMapper.updateSopuserLogsDateById(vo);
+//        sopUserLogsMapper.updateSopuserLogsDateById(vo);
+        List<SopUserLogs> sopUserLogs = sopUserLogsMapper.selectSopUserLogsListByIds(vo.getIds());
+        LocalDate date = vo.getDate();
+        String targetDateStr = date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+
+        // 记录需要剔除的重复ID
+        List<String> duplicateIds = new ArrayList<>();
+        List<String> validIds = new ArrayList<>();
+
+        // 检查是否存在相同组合的数据
+        for (SopUserLogs log : sopUserLogs) {
+            boolean isDuplicate = checkDuplicateCombination(log, sopUserLogs, targetDateStr);
+            if (isDuplicate) {
+                duplicateIds.add(log.getId());
+            } else {
+                validIds.add(log.getId());
+            }
+        }
+
+        // 更新有效记录
+        if (!validIds.isEmpty()) {
+            vo.setIds(validIds);
+            sopUserLogsMapper.updateSopuserLogsDateById(vo);
+        }
+
+        // 记录剔除的重复ID
+        if (!duplicateIds.isEmpty()) {
+            log.error("根据sopId、qwUserId、corpId、startTime组合检查,剔除重复ID: {},时间:{}", duplicateIds,targetDateStr);
+        }
+
+        return  R.ok().put("data",duplicateIds);
+    }
+
+    /**
+     * 检查是否存在相同组合的数据
+     */
+    private boolean checkDuplicateCombination(SopUserLogs currentLog, List<SopUserLogs> allLogs, String targetDate) {
+        for (SopUserLogs log : allLogs) {
+            // 跳过自身比较
+            if (log.getId().equals(currentLog.getId())) {
+                continue;
+            }
+
+            // 检查组合是否相同 - 直接比较字符串
+            boolean sameCombination = Objects.equals(log.getSopId(), currentLog.getSopId()) &&
+                    Objects.equals(log.getQwUserId(), currentLog.getQwUserId()) &&
+                    Objects.equals(log.getCorpId(), currentLog.getCorpId()) &&
+                    targetDate.equals(log.getStartTime()); // 直接比较字符串
+
+            if (sameCombination) {
+                return true;
+            }
+        }
+        return false;
     }
 
     @Override

+ 23 - 0
fs-service/src/main/resources/mapper/sop/SopUserLogsMapper.xml

@@ -433,6 +433,7 @@
 
         where sop_id=#{sopId}
     </select>
+
     <select id="selectSopUserLogsByQwUserIds" resultType="java.lang.String">
         select id from sop_user_logs
         <where>
@@ -442,6 +443,28 @@
             </foreach>
         </where>
     </select>
+
+    <select id="selectSopUserLogsListByIds" resultType="java.util.Map">
+        select
+            id,
+            sop_id,
+            qw_user_id,
+            corp_id,
+            start_time,
+            status
+        from sop_user_logs
+        <where>
+            status = 0
+            <if test="ids != null and ids.size() > 0">
+                and id in
+                <foreach collection="ids" item="item" open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+        order by start_time desc
+    </select>
+
     <select id="querySopUserLogsByParam" resultType="com.fs.sop.domain.SopUserLogs">
         SELECT DISTINCT log.id as id,
         log.qw_user_id as qw_user_id,