diff --git a/pms-business/src/main/java/tech/unissense/pms/business/examine/task/service/impl/TaskServiceImpl.java b/pms-business/src/main/java/tech/unissense/pms/business/examine/task/service/impl/TaskServiceImpl.java index da97850..5a7a04a 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/examine/task/service/impl/TaskServiceImpl.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/examine/task/service/impl/TaskServiceImpl.java @@ -1,13 +1,11 @@ package tech.unissense.pms.business.examine.task.service.impl; -import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.lang.Assert; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import tech.unissense.pms.business.examine.config.domain.ExamineConfig; import tech.unissense.pms.business.examine.config.mapper.ExamineConfigMapper; -import tech.unissense.pms.business.examine.config.service.ExamineConfigService; import tech.unissense.pms.business.examine.task.domain.ExamineTask; import tech.unissense.pms.business.examine.task.domain.TaskQueryDto; import tech.unissense.pms.business.examine.task.mapper.ExamineTaskMapper; @@ -17,11 +15,9 @@ import tech.unissense.pms.business.examine.user.mapper.ExamineUserMapper; import tech.unissense.pms.common.annotation.DataScope; import javax.annotation.Resource; -import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZoneId; -import java.time.temporal.TemporalUnit; import java.util.*; import java.util.stream.Collectors; @@ -34,6 +30,7 @@ public class TaskServiceImpl implements TaskService { @Autowired private ExamineConfigMapper examineConfigMapper; + @Resource private ExamineUserMapper userMapper; @@ -70,6 +67,30 @@ public class TaskServiceImpl implements TaskService { @Override public ExamineTask updateTask(ExamineTask updatedTask) { examineTaskDao.updateTask(updatedTask); + + List userIdList = updatedTask.getUserIdList(); + ExamineUser examineUser = new ExamineUser(); + examineUser.setTaskId(updatedTask.getId()); + List existingUsers = userMapper.list(examineUser); + List existingUserIds = existingUsers.stream() + .map(ExamineUser::getUserId) + .collect(Collectors.toList()); + + // 1. 删除与任务相关的已经不在 userIdList 中的用户记录 + existingUsers.stream() + .filter(user -> !userIdList.contains(user.getUserId())) + .forEach(user -> userMapper.deleteById(user.getId())); + + // 2. 添加新的用户记录(只插入那些不在现有用户中的用户) + userIdList.stream() + .filter(userId -> !existingUserIds.contains(userId)) + .forEach(userId -> { + ExamineUser newExamineUser = new ExamineUser(); + newExamineUser.setTaskId(updatedTask.getId()); + newExamineUser.setUserId(userId); + userMapper.insert(newExamineUser); + }); + return updatedTask; }