From db51747dc7ad2b723c1da2715a0f9a3f50272ad3 Mon Sep 17 00:00:00 2001 From: chenhao <852066789@qq.com> Date: Wed, 8 Jan 2025 15:21:05 +0800 Subject: [PATCH] =?UTF-8?q?feat(examine):=20=E4=BC=98=E5=8C=96=E8=80=83?= =?UTF-8?q?=E6=A0=B8=E4=BB=BB=E5=8A=A1=E9=85=8D=E7=BD=AE=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=92=8C=E5=88=97=E8=A1=A8=E6=9F=A5=E8=AF=A2=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 ConfigUpdateDto 类用于封装考核配置更新请求参数 - 在 ExamineTask 中添加 taskEditFlag 字段表示任务编辑状态 - 新增 ExamineTaskDto 类用于封装考核任务列表查询结果 - 优化考核任务列表查询逻辑,支持按用户 ID 查询 -重构考核配置更新方法,支持异步处理和状态更新 --- .../examine/task/TaskSetUpController.java | 13 +++- .../detail/mapper/ExamineDetailMapper.java | 3 +- .../detail/service/ExamineDetailService.java | 3 +- .../impl/ExamineDetailServiceImpl.java | 5 ++ .../examine/task/domain/ExamineTask.java | 1 + .../examine/task/domain/ExamineTaskDto.java | 48 ++++++++++++ .../examine/task/domain/TaskQueryDto.java | 1 + .../examine/task/dto/ConfigUpdateDto.java | 25 +++++++ .../task/mapper/ExamineTaskMapper.java | 5 ++ .../examine/task/service/TaskService.java | 5 +- .../task/service/impl/TaskServiceImpl.java | 73 ++++++++++++++++++- .../business/examine/ExamineDetailMapper.xml | 7 ++ .../business/examine/ExamineTaskMapper.xml | 15 +++- 13 files changed, 195 insertions(+), 9 deletions(-) create mode 100644 pms-business/src/main/java/tech/unissense/pms/business/examine/task/domain/ExamineTaskDto.java create mode 100644 pms-business/src/main/java/tech/unissense/pms/business/examine/task/dto/ConfigUpdateDto.java diff --git a/pms-admin/src/main/java/tech/unissense/pms/web/controller/business/examine/task/TaskSetUpController.java b/pms-admin/src/main/java/tech/unissense/pms/web/controller/business/examine/task/TaskSetUpController.java index f153c2b..31981b8 100644 --- a/pms-admin/src/main/java/tech/unissense/pms/web/controller/business/examine/task/TaskSetUpController.java +++ b/pms-admin/src/main/java/tech/unissense/pms/web/controller/business/examine/task/TaskSetUpController.java @@ -7,6 +7,7 @@ import org.springframework.web.bind.annotation.*; import tech.unissense.pms.business.examine.config.domain.ExamineConfig; 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.dto.ConfigUpdateDto; import tech.unissense.pms.business.examine.task.service.TaskService; import tech.unissense.pms.business.project.domain.Project; import tech.unissense.pms.common.core.controller.BaseController; @@ -43,6 +44,14 @@ public class TaskSetUpController extends BaseController { return success(taskService.listTask(queryDto)); } + @GetMapping("/listSelf") + public AjaxResult listTaskSelf(TaskQueryDto queryDto) { + if (queryDto.getUserId() == null) { + queryDto.setUserId(getUserId().intValue()); + } + return success(taskService.listTaskSelf(queryDto)); + } + // 编辑任务 @PutMapping("/update") public AjaxResult updateTask( @RequestBody ExamineTask updatedTask) { @@ -55,8 +64,8 @@ public class TaskSetUpController extends BaseController { // 编辑任务 @PutMapping("/config/update") - public AjaxResult updateConfigTask(@RequestBody List list) { - return AjaxResult.success(taskService.updateConfigTask(list)); + public AjaxResult updateConfigTask(@RequestBody ConfigUpdateDto dto) { + return AjaxResult.success(taskService.updateConfigTask(dto)); } // 删除任务 diff --git a/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/mapper/ExamineDetailMapper.java b/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/mapper/ExamineDetailMapper.java index f6e0a8f..86ddd6b 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/mapper/ExamineDetailMapper.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/mapper/ExamineDetailMapper.java @@ -3,7 +3,6 @@ package tech.unissense.pms.business.examine.detail.mapper; import org.apache.ibatis.annotations.Mapper; import tech.unissense.pms.business.examine.detail.domain.ExamineDetail; import org.apache.ibatis.annotations.Param; -import org.springframework.data.domain.Pageable; import java.util.List; @@ -77,5 +76,7 @@ public interface ExamineDetailMapper { List list(ExamineDetail examineDetail); void deleteByExamineId(List collect); + + List listByExamineId(List idList); } diff --git a/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/service/ExamineDetailService.java b/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/service/ExamineDetailService.java index f7e5240..7c9ce5d 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/service/ExamineDetailService.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/service/ExamineDetailService.java @@ -4,7 +4,6 @@ import tech.unissense.pms.business.examine.config.domain.ExamineConfig; import tech.unissense.pms.business.examine.config.enums.ReviewTypeEnum; import tech.unissense.pms.business.examine.detail.domain.ExamineDetail; import tech.unissense.pms.business.examine.detail.dto.ExamineDetailRequestDto; -import tech.unissense.pms.business.examine.detail.vo.ExamineConfigDetailVo; import java.math.BigDecimal; import java.util.List; @@ -73,4 +72,6 @@ public interface ExamineDetailService { void deleteByExamineId( List collect); + + List listByExamineId(List taskId); } diff --git a/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/service/impl/ExamineDetailServiceImpl.java b/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/service/impl/ExamineDetailServiceImpl.java index 7dbc326..7dc25f3 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/service/impl/ExamineDetailServiceImpl.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/service/impl/ExamineDetailServiceImpl.java @@ -222,4 +222,9 @@ public class ExamineDetailServiceImpl implements ExamineDetailService { public void deleteByExamineId(List collect) { examineDetailMapper.deleteByExamineId(collect); } + + @Override + public List listByExamineId(List idList) { + return examineDetailMapper.listByExamineId(idList); + } } diff --git a/pms-business/src/main/java/tech/unissense/pms/business/examine/task/domain/ExamineTask.java b/pms-business/src/main/java/tech/unissense/pms/business/examine/task/domain/ExamineTask.java index ce55dbf..f7c9d1f 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/examine/task/domain/ExamineTask.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/examine/task/domain/ExamineTask.java @@ -37,6 +37,7 @@ public class ExamineTask implements Serializable { * 截止时间 */ private Date endTime; + private Boolean taskEditFlag; private List userIdList; diff --git a/pms-business/src/main/java/tech/unissense/pms/business/examine/task/domain/ExamineTaskDto.java b/pms-business/src/main/java/tech/unissense/pms/business/examine/task/domain/ExamineTaskDto.java new file mode 100644 index 0000000..a0e705f --- /dev/null +++ b/pms-business/src/main/java/tech/unissense/pms/business/examine/task/domain/ExamineTaskDto.java @@ -0,0 +1,48 @@ +package tech.unissense.pms.business.examine.task.domain; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * 考核任务表 (ExamineTask)实体类 + * + * @author makejava + * @since 2025-01-02 10:18:29 + */ +@Data +public class ExamineTaskDto implements Serializable { + private static final long serialVersionUID = -72205614757391876L; + + private Integer id; + /** + * 考核任务名 + */ + private String taskName; + + private Integer peopleNumber; + + private String peopleNumberDetail; + /** + * 考核任务状态 0:进行中 2:已过期 + */ + private Integer taskStatus; + /** + * 创建时间 + */ + private Date createTime; + /** + * 截止时间 + */ + private Date endTime; + + + private List userIdList; + + private Integer year; + private Integer examineStatusSelf; + private Integer examineId; +} + diff --git a/pms-business/src/main/java/tech/unissense/pms/business/examine/task/domain/TaskQueryDto.java b/pms-business/src/main/java/tech/unissense/pms/business/examine/task/domain/TaskQueryDto.java index d189d2b..17326a5 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/examine/task/domain/TaskQueryDto.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/examine/task/domain/TaskQueryDto.java @@ -10,4 +10,5 @@ public class TaskQueryDto extends BaseEntity { private Integer taskStatus; private Integer year; + private Integer userId; } diff --git a/pms-business/src/main/java/tech/unissense/pms/business/examine/task/dto/ConfigUpdateDto.java b/pms-business/src/main/java/tech/unissense/pms/business/examine/task/dto/ConfigUpdateDto.java new file mode 100644 index 0000000..32f65a0 --- /dev/null +++ b/pms-business/src/main/java/tech/unissense/pms/business/examine/task/dto/ConfigUpdateDto.java @@ -0,0 +1,25 @@ +package tech.unissense.pms.business.examine.task.dto; + +import lombok.Data; +import tech.unissense.pms.business.examine.config.domain.ExamineConfig; + +import java.util.List; + +/** + * @author : ch + * @version : 1.0 + * @ClassName : ConfigUpdateDto + * @Description : + * @DATE : Created in 14:27 2025/1/8 + *
       Copyright: Copyright(c) 2025     
+ *
       Company :   	紫光汇智信息技术有限公司		           
+ * Modification History: + * Date Author Version Discription + * -------------------------------------------------------------------------- + * 2025/1/8 ch 1.0 Why & What is modified: <修改原因描述> * + */ +@Data +public class ConfigUpdateDto { + private List examineConfigList; + private Integer taskId; +} diff --git a/pms-business/src/main/java/tech/unissense/pms/business/examine/task/mapper/ExamineTaskMapper.java b/pms-business/src/main/java/tech/unissense/pms/business/examine/task/mapper/ExamineTaskMapper.java index 547fc26..42058ab 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/examine/task/mapper/ExamineTaskMapper.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/examine/task/mapper/ExamineTaskMapper.java @@ -4,6 +4,7 @@ import org.apache.ibatis.annotations.Mapper; import tech.unissense.pms.business.examine.task.domain.ExamineTask; import org.apache.ibatis.annotations.Param; import org.springframework.data.domain.Pageable; +import tech.unissense.pms.business.examine.task.domain.ExamineTaskDto; import tech.unissense.pms.business.examine.task.domain.TaskQueryDto; import java.util.List; @@ -28,5 +29,9 @@ public interface ExamineTaskMapper { List listTask(TaskQueryDto queryDto); ExamineTask queryById(Integer taskId); + + void updateTaskEditFlag(@Param("flag") boolean b, @Param("id") Integer taskId); + + List listTaskSelf(TaskQueryDto queryDto); } diff --git a/pms-business/src/main/java/tech/unissense/pms/business/examine/task/service/TaskService.java b/pms-business/src/main/java/tech/unissense/pms/business/examine/task/service/TaskService.java index cd73771..1f1ab8f 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/examine/task/service/TaskService.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/examine/task/service/TaskService.java @@ -2,7 +2,9 @@ package tech.unissense.pms.business.examine.task.service; import tech.unissense.pms.business.examine.config.domain.ExamineConfig; import tech.unissense.pms.business.examine.task.domain.ExamineTask; +import tech.unissense.pms.business.examine.task.domain.ExamineTaskDto; import tech.unissense.pms.business.examine.task.domain.TaskQueryDto; +import tech.unissense.pms.business.examine.task.dto.ConfigUpdateDto; import java.util.List; import java.util.Map; @@ -19,6 +21,7 @@ public interface TaskService { List getTarget(Integer id); Map> listTask(TaskQueryDto queryDto); + Map> listTaskSelf(TaskQueryDto queryDto); - List updateConfigTask(List list); + List updateConfigTask(ConfigUpdateDto dto); } 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 de7c279..32171d8 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 @@ -5,9 +5,14 @@ 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.enums.ReviewTypeEnum; import tech.unissense.pms.business.examine.config.mapper.ExamineConfigMapper; +import tech.unissense.pms.business.examine.detail.domain.ExamineDetail; +import tech.unissense.pms.business.examine.detail.service.ExamineDetailService; import tech.unissense.pms.business.examine.task.domain.ExamineTask; +import tech.unissense.pms.business.examine.task.domain.ExamineTaskDto; import tech.unissense.pms.business.examine.task.domain.TaskQueryDto; +import tech.unissense.pms.business.examine.task.dto.ConfigUpdateDto; import tech.unissense.pms.business.examine.task.mapper.ExamineTaskMapper; import tech.unissense.pms.business.examine.task.service.TaskService; import tech.unissense.pms.business.examine.user.domain.ExamineUser; @@ -16,10 +21,12 @@ import tech.unissense.pms.business.examine.user.service.impl.ExamineUserServiceI import tech.unissense.pms.common.annotation.DataScope; import javax.annotation.Resource; +import java.math.BigDecimal; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZoneId; import java.util.*; +import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; @Slf4j @@ -37,6 +44,8 @@ public class TaskServiceImpl implements TaskService { @Autowired private ExamineUserServiceImpl examineUserService; + @Autowired + private ExamineDetailService detailService; @Override public ExamineTask addTask(ExamineTask task) { @@ -160,13 +169,71 @@ public class TaskServiceImpl implements TaskService { } @Override - public List updateConfigTask(List list) { - for (ExamineConfig examineConfig : list) { + public Map> listTaskSelf(TaskQueryDto queryDto) { + List examineTasks = examineTaskDao.listTaskSelf(queryDto); + LocalDateTime now = LocalDateTime.now(); + for (ExamineTaskDto examineTask : examineTasks) { + // 获取endTime那一天的最大时间 + LocalDateTime endTime = examineTask.getEndTime().toInstant().atZone(ZoneId.systemDefault()) + .toLocalDate().atTime(LocalTime.MAX); + + // 比较当前时间与localDateTime + if (now.isAfter(endTime)) { + // 当前时间大于localDateTime,已过期 + examineTask.setTaskStatus(2); + } else { + // 当前时间小于localDateTime,进行中 + examineTask.setTaskStatus(0); + } + } + return examineTasks.stream().collect(Collectors.groupingBy(ExamineTaskDto::getTaskStatus)); + } + + @Override + public List updateConfigTask(ConfigUpdateDto dto) { + for (ExamineConfig examineConfig : dto.getExamineConfigList()) { if (examineConfig.getId() == null) { continue; } examineConfigMapper.update(examineConfig); } - return list; + //重新计算分数 修改task + examineTaskDao.updateTaskEditFlag(false, dto.getTaskId()); + CompletableFuture.runAsync(() -> { + ExamineUser examineUser = new ExamineUser(); + examineUser.setTaskId(dto.getTaskId()); + List list = userMapper.list(examineUser); + List completeList = new ArrayList<>(); + List idList = new ArrayList<>(); + for (ExamineUser user : list) { + if (!"1".equals(user.getExamineStatus())) { + continue; + } + idList.add(user.getId()); + completeList.add(user); + } + List examineDetails = detailService.listByExamineId(idList); + Map manageScoreMap = detailService.calculateScoreByDetail(dto.getTaskId(), examineDetails, ReviewTypeEnum.MANAGE); + Map allScoreMap = detailService.calculateScoreByDetail(dto.getTaskId(), examineDetails, ReviewTypeEnum.ALL); + for (ExamineUser user : completeList) { + if ("1".equals(user.getExamineStatus())) { + //计算管理人员分数 + BigDecimal manageScore = manageScoreMap.get(user.getId()); + user.setManageScore(manageScore); + if ("1".equals(user.getExamineStatusSelf())) { + //计算总分数 + BigDecimal allScore = allScoreMap.get(user.getId()); + user.setScore(allScore); + } + } + } + userMapper.insertOrUpdateBatch(completeList); + examineTaskDao.updateTaskEditFlag(true, dto.getTaskId()); + }).exceptionally(e -> { + log.error("update task edit flag error", e); + examineTaskDao.updateTaskEditFlag(true, dto.getTaskId()); + return null; + }); + return dto.getExamineConfigList(); } } diff --git a/pms-business/src/main/resources/mapper/business/examine/ExamineDetailMapper.xml b/pms-business/src/main/resources/mapper/business/examine/ExamineDetailMapper.xml index d9c24c1..1809572 100644 --- a/pms-business/src/main/resources/mapper/business/examine/ExamineDetailMapper.xml +++ b/pms-business/src/main/resources/mapper/business/examine/ExamineDetailMapper.xml @@ -75,6 +75,13 @@ + diff --git a/pms-business/src/main/resources/mapper/business/examine/ExamineTaskMapper.xml b/pms-business/src/main/resources/mapper/business/examine/ExamineTaskMapper.xml index bff5f7a..540a8f6 100644 --- a/pms-business/src/main/resources/mapper/business/examine/ExamineTaskMapper.xml +++ b/pms-business/src/main/resources/mapper/business/examine/ExamineTaskMapper.xml @@ -10,6 +10,7 @@ + @@ -41,7 +42,7 @@ order by create_time desc + UPDATE pms_examine_task @@ -85,6 +93,11 @@ WHERE id = #{id} + + update pms_examine_task + set task_edit_flag=#{flag} + where id=#{id} + DELETE FROM pms_examine_task