fix(examine): 修复系统核算分数问题

- 增加考核人员存在性校验
- 通过任务ID获取年份,替代硬编码的年份值- 添加 ExamineTaskMapper 的 queryById 方法并实现
- 优化系统核算分数的计算逻辑
dev_1.1.0
chenhao 2025-01-07 09:14:21 +08:00
parent 7702c20b66
commit 76b99571a4
4 changed files with 19 additions and 5 deletions

View File

@ -71,6 +71,7 @@ public class ExamineDetailController extends BaseController {
if (dto.getExamineId() == null) {
Assert.notNull(dto.getUserId(), "用户ID不能为空");
ExamineUser examineUser = examineUserService.queryByTaskIdAndUserId(dto.getExamineTaskId(), dto.getUserId());
Assert.notNull(examineUser, "考核人员不存在");
dto.setExamineId(examineUser.getId());
}
Assert.notNull(dto.getExamineId(), "考核ID不能为空");

View File

@ -13,8 +13,9 @@ 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.ExamineConfigDetailVo;
import tech.unissense.pms.business.examine.task.domain.ExamineTask;
import tech.unissense.pms.business.examine.task.mapper.ExamineTaskMapper;
import tech.unissense.pms.business.examine.user.mapper.ExamineUserMapper;
import tech.unissense.pms.business.examine.user.service.impl.ExamineUserServiceImpl;
import tech.unissense.pms.business.work.logger.service.IWorkLoggerService;
import tech.unissense.pms.common.utils.bean.BeanUtils;
import tech.unissense.pms.system.service.ISysDictDataService;
@ -45,6 +46,8 @@ public class ExamineDetailServiceImpl implements ExamineDetailService {
private IWorkLoggerService workLoggerService;
@Autowired
private ISysDictDataService sysDictDataService;
@Autowired
private ExamineTaskMapper examineTaskMapper;
/**
* ID
@ -144,8 +147,9 @@ public class ExamineDetailServiceImpl implements ExamineDetailService {
examineConfigQueryDto.setReviewType(typeEnum.getType());
}
List<ExamineConfig> configList = configMapper.list(examineConfigQueryDto);
ExamineTask examineTask = examineTaskMapper.queryById(taskId);
//系统核算单独处理
dealSystemBusinessAccount(examineList, configList);
dealSystemBusinessAccount(examineList, configList,examineTask);
Map<Integer, ExamineConfig> configMap = configList.stream().collect(Collectors.toMap(ExamineConfig::getId, Function.identity()));
Map<Integer, BigDecimal> scoreMap = new HashMap<>();
for (ExamineDetail detail : examineList) {
@ -168,12 +172,12 @@ public class ExamineDetailServiceImpl implements ExamineDetailService {
return scoreMap;
}
private void dealSystemBusinessAccount(List<ExamineDetail> examineList, List<ExamineConfig> configList) {
private void dealSystemBusinessAccount(List<ExamineDetail> examineList, List<ExamineConfig> configList, ExamineTask examineTask) {
Map<Integer, ExamineConfig> systemExamineConfigMap = configList.stream().filter(item ->
ReviewTypeEnum.SYSTEM.getType().equals(item.getReviewType())).collect(Collectors.toMap(ExamineConfig::getId, Function.identity()));
//如有系统核算才处理
if (CollUtil.isNotEmpty(systemExamineConfigMap)) {
String workDay = sysDictDataService.selectDictLabel("pms_work_day", "2024");
String workDay = sysDictDataService.selectDictLabel("pms_work_day", examineTask.getYear().toString());
workDay = StrUtil.isNotEmpty(workDay) ? workDay : "251";
BigDecimal configWorkDay = new BigDecimal(workDay);
List<ExamineDetail> collect = examineList.stream().filter(item -> systemExamineConfigMap.containsKey(item.getConfigId())).collect(Collectors.toList());

View File

@ -26,5 +26,7 @@ public interface ExamineTaskMapper {
void deleteTask(Integer id);
List<ExamineTask> listTask(TaskQueryDto queryDto);
ExamineTask queryById(Integer taskId);
}

View File

@ -29,7 +29,7 @@
</if>
</where>
</select>
<select id="listTask" resultType="ExamineTask">
<select id="listTask" resultMap="ExamineTaskMap">
select distinct t1.id,t1.task_name, t1.people_number, t1.people_number_detail, t1.task_status, t1.create_time, t1.end_time
from pms_examine_task t1
left join pms_examine_user t2 on t1.id = t2.task_id
@ -41,11 +41,18 @@
<if test="taskStatus != null">
AND task_status = #{taskStatus}
</if>
<if test="year != null">
AND year = #{year}
</if>
<!-- 数据范围过滤 -->
${params.dataScope}
</where>
</select>
<select id="queryById" resultMap="ExamineTaskMap">
SELECT * FROM pms_examine_task
WHERE id = #{id}
</select>
<update id="updateTask">
UPDATE pms_examine_task