From 4e74ff52003b38476fc54cbe9cc05a29353971e0 Mon Sep 17 00:00:00 2001 From: chenhao <852066789@qq.com> Date: Thu, 2 Jan 2025 15:35:33 +0800 Subject: [PATCH] =?UTF-8?q?feat(examine):=20=E6=96=B0=E5=A2=9E=E8=80=83?= =?UTF-8?q?=E6=A0=B8=E8=AF=A6=E6=83=85=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 ExamineConfig 中添加 sortNum 字段 - 新增 ExamineConfig 的 list 方法- 新增 ExamineDetailRequestDto、ExamineDto、ExamineDetailVo 等数据传输对象- 实现考核详情的批量插入和格式化数据功能 - 新增总体评价的更新方法 - 优化 SQL 查询,使用 base_query 重构重复的查询语句 --- .../detail/ExamineDetailController.java | 56 ++++++++++++++++++- .../examine/config/domain/ExamineConfig.java | 2 +- .../config/mapper/ExamineConfigMapper.java | 2 + .../config/service/ExamineConfigService.java | 3 + .../impl/ExamineConfigServiceImpl.java | 7 +++ .../detail/dto/ExamineDetailRequestDto.java | 23 ++++++++ .../examine/detail/dto/ExamineDto.java | 26 +++++++++ .../detail/mapper/ExamineDetailMapper.java | 9 +-- .../detail/service/ExamineDetailService.java | 8 +++ .../impl/ExamineDetailServiceImpl.java | 34 +++++++++++ .../examine/detail/vo/ExamineDetailVo.java | 30 ++++++++++ .../user/service/ExamineUserService.java | 3 + .../service/impl/ExamineUserServiceImpl.java | 9 +++ .../business/examine/ExamineConfigMapper.xml | 41 ++++++++++++-- .../business/examine/ExamineDetailMapper.xml | 14 ++--- 15 files changed, 242 insertions(+), 25 deletions(-) create mode 100644 pms-business/src/main/java/tech/unissense/pms/business/examine/detail/dto/ExamineDetailRequestDto.java create mode 100644 pms-business/src/main/java/tech/unissense/pms/business/examine/detail/dto/ExamineDto.java create mode 100644 pms-business/src/main/java/tech/unissense/pms/business/examine/detail/vo/ExamineDetailVo.java diff --git a/pms-admin/src/main/java/tech/unissense/pms/web/controller/business/examine/detail/ExamineDetailController.java b/pms-admin/src/main/java/tech/unissense/pms/web/controller/business/examine/detail/ExamineDetailController.java index b0f5de6..7d09176 100644 --- a/pms-admin/src/main/java/tech/unissense/pms/web/controller/business/examine/detail/ExamineDetailController.java +++ b/pms-admin/src/main/java/tech/unissense/pms/web/controller/business/examine/detail/ExamineDetailController.java @@ -1,13 +1,24 @@ package tech.unissense.pms.web.controller.business.examine.detail; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.StrUtil; +import org.springframework.beans.factory.annotation.Autowired; +import tech.unissense.pms.business.examine.config.domain.ExamineConfig; +import tech.unissense.pms.business.examine.config.service.ExamineConfigService; 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.dto.ExamineDto; import tech.unissense.pms.business.examine.detail.service.ExamineDetailService; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import tech.unissense.pms.business.examine.user.service.ExamineUserService; +import tech.unissense.pms.common.core.controller.BaseController; +import tech.unissense.pms.common.core.domain.AjaxResult; import javax.annotation.Resource; +import java.util.List; /** * 考核人员详情表(ExamineDetail)表控制层 @@ -16,14 +27,18 @@ import javax.annotation.Resource; * @since 2025-01-02 10:18:04 */ @RestController -@RequestMapping("examineDetail") -public class ExamineDetailController { +@RequestMapping("examine/detail") +public class ExamineDetailController extends BaseController { /** * 服务对象 */ - @Resource + @Autowired private ExamineDetailService examineDetailService; + @Autowired + private ExamineUserService examineUserService; + @Autowired + private ExamineConfigService configService; /** * 通过主键查询单条数据 @@ -47,6 +62,41 @@ public class ExamineDetailController { return ResponseEntity.ok(this.examineDetailService.insert(examineDetail)); } + @GetMapping + public AjaxResult list(ExamineDetailRequestDto dto) { + Assert.notNull(dto.getExamineTaskId(), "考核任务ID不能为空"); + Assert.notNull(dto.getExamineId(), "考核ID不能为空"); + Assert.notEmpty(dto.getReviewType(), "任务类型不能为空"); + + ExamineConfig examineConfig = new ExamineConfig(); + examineConfig.setExamineTaskId(dto.getExamineTaskId()); + examineConfig.setReviewType(dto.getReviewType()); + List configList = configService.list(examineConfig); + + + return AjaxResult.success(examineDetailService.formatData(configList,dto)); + } + + /** + * 新增数据 + * + * @param examineDetail 实体 + * @return 新增结果 + */ + @PostMapping("/batch") + public AjaxResult addBatch(@RequestBody ExamineDto examineDto) { + Assert.notEmpty(examineDto.getExamineDetailList(), "考核详情不能为空"); + Assert.notNull(examineDto.getExamineId(), "考核ID不能为空"); + for (ExamineDetail examineDetail : examineDto.getExamineDetailList()) { + examineDetail.setExamineId(examineDto.getExamineId()); + } + //保存detail详情 + this.examineDetailService.insertBatch(examineDto.getExamineDetailList()); + //保存总体评价 + examineUserService.updateContent(examineDto); + return AjaxResult.success(); + } + /** * 编辑数据 * diff --git a/pms-business/src/main/java/tech/unissense/pms/business/examine/config/domain/ExamineConfig.java b/pms-business/src/main/java/tech/unissense/pms/business/examine/config/domain/ExamineConfig.java index 86202f3..5aba115 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/examine/config/domain/ExamineConfig.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/examine/config/domain/ExamineConfig.java @@ -39,7 +39,7 @@ public class ExamineConfig implements Serializable { * 考核id */ private Integer examineTaskId; - + private Integer sortNum; } diff --git a/pms-business/src/main/java/tech/unissense/pms/business/examine/config/mapper/ExamineConfigMapper.java b/pms-business/src/main/java/tech/unissense/pms/business/examine/config/mapper/ExamineConfigMapper.java index 8c04e66..8a3ed99 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/examine/config/mapper/ExamineConfigMapper.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/examine/config/mapper/ExamineConfigMapper.java @@ -82,5 +82,7 @@ public interface ExamineConfigMapper { */ int deleteById(Integer id); + List list(ExamineConfig examineConfig); + } diff --git a/pms-business/src/main/java/tech/unissense/pms/business/examine/config/service/ExamineConfigService.java b/pms-business/src/main/java/tech/unissense/pms/business/examine/config/service/ExamineConfigService.java index 147576a..1c1fd42 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/examine/config/service/ExamineConfigService.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/examine/config/service/ExamineConfigService.java @@ -4,6 +4,8 @@ import tech.unissense.pms.business.examine.config.domain.ExamineConfig; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; +import java.util.List; + /** * 考核配置表(ExamineConfig)表服务接口 * @@ -44,4 +46,5 @@ public interface ExamineConfigService { */ boolean deleteById(Integer id); + List list(ExamineConfig examineConfig); } diff --git a/pms-business/src/main/java/tech/unissense/pms/business/examine/config/service/impl/ExamineConfigServiceImpl.java b/pms-business/src/main/java/tech/unissense/pms/business/examine/config/service/impl/ExamineConfigServiceImpl.java index d6dc548..225f5ee 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/examine/config/service/impl/ExamineConfigServiceImpl.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/examine/config/service/impl/ExamineConfigServiceImpl.java @@ -6,6 +6,8 @@ import tech.unissense.pms.business.examine.config.service.ExamineConfigService; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.Collections; +import java.util.List; /** * 考核配置表(ExamineConfig)表服务实现类 @@ -65,4 +67,9 @@ public class ExamineConfigServiceImpl implements ExamineConfigService { public boolean deleteById(Integer id) { return this.examineConfigMapper.deleteById(id) > 0; } + + @Override + public List list(ExamineConfig examineConfig) { + return examineConfigMapper.list(examineConfig); + } } diff --git a/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/dto/ExamineDetailRequestDto.java b/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/dto/ExamineDetailRequestDto.java new file mode 100644 index 0000000..1bc8869 --- /dev/null +++ b/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/dto/ExamineDetailRequestDto.java @@ -0,0 +1,23 @@ +package tech.unissense.pms.business.examine.detail.dto; + +import lombok.Data; + +/** + * @author : ch + * @version : 1.0 + * @ClassName : ExamineDetailRequestDto + * @Description : + * @DATE : Created in 14:46 2025/1/2 + *
       Copyright: Copyright(c) 2025     
+ *
       Company :   	紫光汇智信息技术有限公司		           
+ * Modification History: + * Date Author Version Discription + * -------------------------------------------------------------------------- + * 2025/1/2 ch 1.0 Why & What is modified: <修改原因描述> * + */ +@Data +public class ExamineDetailRequestDto { + private Integer examineTaskId; + private Integer examineId; + private String reviewType; +} diff --git a/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/dto/ExamineDto.java b/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/dto/ExamineDto.java new file mode 100644 index 0000000..0503a51 --- /dev/null +++ b/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/dto/ExamineDto.java @@ -0,0 +1,26 @@ +package tech.unissense.pms.business.examine.detail.dto; + +import lombok.Data; +import tech.unissense.pms.business.examine.detail.domain.ExamineDetail; + +import java.util.List; + +/** + * @author : ch + * @version : 1.0 + * @ClassName : ExamineDto + * @Description : + * @DATE : Created in 14:21 2025/1/2 + *
       Copyright: Copyright(c) 2025     
+ *
       Company :   	紫光汇智信息技术有限公司		           
+ * Modification History: + * Date Author Version Discription + * -------------------------------------------------------------------------- + * 2025/1/2 ch 1.0 Why & What is modified: <修改原因描述> * + */ +@Data +public class ExamineDto { + private List examineDetailList; + private Integer examineId; + private String judgeContent; +} 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 bb4e6d2..f402af9 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 @@ -24,14 +24,6 @@ public interface ExamineDetailMapper { */ ExamineDetail queryById(Integer id); - /** - * 查询指定行数据 - * - * @param examineDetail 查询条件 - * @param pageable 分页对象 - * @return 对象列表 - */ - List queryAllByLimit(ExamineDetail examineDetail, @Param("pageable") Pageable pageable); /** * 统计总行数 @@ -82,5 +74,6 @@ public interface ExamineDetailMapper { */ int deleteById(Integer id); + List list(ExamineDetail examineDetail); } 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 dde24a0..d215cf5 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 @@ -1,8 +1,13 @@ package tech.unissense.pms.business.examine.detail.service; +import tech.unissense.pms.business.examine.config.domain.ExamineConfig; import tech.unissense.pms.business.examine.detail.domain.ExamineDetail; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; +import tech.unissense.pms.business.examine.detail.dto.ExamineDetailRequestDto; +import tech.unissense.pms.business.examine.detail.vo.ExamineDetailVo; + +import java.util.List; /** * 考核人员详情表(ExamineDetail)表服务接口 @@ -45,4 +50,7 @@ public interface ExamineDetailService { */ boolean deleteById(Integer id); + void insertBatch(List list); + + List formatData(List configList, ExamineDetailRequestDto dto); } 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 4d32b5e..0806cf8 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 @@ -1,11 +1,18 @@ package tech.unissense.pms.business.examine.detail.service.impl; +import tech.unissense.pms.business.examine.config.domain.ExamineConfig; 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.mapper.ExamineDetailMapper; import tech.unissense.pms.business.examine.detail.service.ExamineDetailService; import org.springframework.stereotype.Service; +import tech.unissense.pms.business.examine.detail.vo.ExamineDetailVo; +import tech.unissense.pms.common.utils.bean.BeanUtils; import javax.annotation.Resource; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; /** * 考核人员详情表(ExamineDetail)表服务实现类 @@ -65,4 +72,31 @@ public class ExamineDetailServiceImpl implements ExamineDetailService { public boolean deleteById(Integer id) { return this.examineDetailMapper.deleteById(id) > 0; } + + @Override + public void insertBatch(List list) { + examineDetailMapper.insertBatch(list); + } + + @Override + public List formatData(List configList, ExamineDetailRequestDto dto) { + List examineDetailVoList = new ArrayList<>(); + ExamineDetail examineDetail = new ExamineDetail(); + examineDetail.setExamineId(dto.getExamineId()); + List list = examineDetailMapper.list(examineDetail); + Map scoreMap = list.stream().collect(Collectors.toMap(ExamineDetail::getConfigId + , Function.identity(), (v1, v2) -> v1)); + for (ExamineConfig examineConfig : configList) { + ExamineDetailVo examineDetailVo = new ExamineDetailVo(); + BeanUtils.copyProperties(examineConfig, examineDetailVo); + ExamineDetail detail = scoreMap.get(examineConfig.getId()); + examineDetailVo.setScore(detail == null ? 0 : detail.getScore()); + examineDetailVo.setRemark(detail == null ? "" : detail.getRemark()); + examineDetailVoList.add(examineDetailVo); + } +// examineDetailVoList.sort(Comparator.comparing(ExamineDetailVo::getSortNum)); + return examineDetailVoList; + + + } } diff --git a/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/vo/ExamineDetailVo.java b/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/vo/ExamineDetailVo.java new file mode 100644 index 0000000..2bc8438 --- /dev/null +++ b/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/vo/ExamineDetailVo.java @@ -0,0 +1,30 @@ +package tech.unissense.pms.business.examine.detail.vo; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.NoArgsConstructor; +import tech.unissense.pms.business.examine.config.domain.ExamineConfig; + +import java.util.List; + +/** + * @author : ch + * @version : 1.0 + * @ClassName : ExamineDetailVo + * @Description : + * @DATE : Created in 14:59 2025/1/2 + *
       Copyright: Copyright(c) 2025     
+ *
       Company :   	紫光汇智信息技术有限公司		           
+ * Modification History: + * Date Author Version Discription + * -------------------------------------------------------------------------- + * 2025/1/2 ch 1.0 Why & What is modified: <修改原因描述> * + */ +@NoArgsConstructor +@Data +public class ExamineDetailVo extends ExamineConfig { + + private Integer score; + private String remark; + +} diff --git a/pms-business/src/main/java/tech/unissense/pms/business/examine/user/service/ExamineUserService.java b/pms-business/src/main/java/tech/unissense/pms/business/examine/user/service/ExamineUserService.java index 38cb76b..08359d6 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/examine/user/service/ExamineUserService.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/examine/user/service/ExamineUserService.java @@ -1,5 +1,6 @@ package tech.unissense.pms.business.examine.user.service; +import tech.unissense.pms.business.examine.detail.dto.ExamineDto; import tech.unissense.pms.business.examine.user.domain.ExamineUser; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; @@ -48,4 +49,6 @@ public interface ExamineUserService { boolean deleteById(Integer id); List list(ExamineUser examineUser); + + void updateContent(ExamineDto examineDto); } diff --git a/pms-business/src/main/java/tech/unissense/pms/business/examine/user/service/impl/ExamineUserServiceImpl.java b/pms-business/src/main/java/tech/unissense/pms/business/examine/user/service/impl/ExamineUserServiceImpl.java index e3245b7..a2b6038 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/examine/user/service/impl/ExamineUserServiceImpl.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/examine/user/service/impl/ExamineUserServiceImpl.java @@ -1,5 +1,6 @@ package tech.unissense.pms.business.examine.user.service.impl; +import tech.unissense.pms.business.examine.detail.dto.ExamineDto; import tech.unissense.pms.business.examine.user.domain.ExamineUser; import tech.unissense.pms.business.examine.user.mapper.ExamineUserMapper; import tech.unissense.pms.business.examine.user.service.ExamineUserService; @@ -71,4 +72,12 @@ public class ExamineUserServiceImpl implements ExamineUserService { public List list(ExamineUser examineUser) { return examineUserMapper.list(examineUser); } + + @Override + public void updateContent(ExamineDto examineDto) { + ExamineUser examineUser = new ExamineUser(); + examineUser.setId(examineDto.getExamineId()); + examineUser.setJudgeContent(examineDto.getJudgeContent()); + examineUserMapper.update(examineUser); + } } diff --git a/pms-business/src/main/resources/mapper/business/examine/ExamineConfigMapper.xml b/pms-business/src/main/resources/mapper/business/examine/ExamineConfigMapper.xml index 57990ea..6e13d52 100644 --- a/pms-business/src/main/resources/mapper/business/examine/ExamineConfigMapper.xml +++ b/pms-business/src/main/resources/mapper/business/examine/ExamineConfigMapper.xml @@ -10,26 +10,29 @@ + - - + where id = #{id} + 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 fde339a..da85b0f 100644 --- a/pms-business/src/main/resources/mapper/business/examine/ExamineDetailMapper.xml +++ b/pms-business/src/main/resources/mapper/business/examine/ExamineDetailMapper.xml @@ -10,22 +10,23 @@ - - + where id = #{id} - + and id = #{id} @@ -43,7 +44,6 @@ and config_id = #{configId} - limit #{pageable.offset}, #{pageable.pageSize}