feat(examine): 新增考核任务和用户关联功能

- 在 ExamineTask 模型中添加 userIdList 字段,用于保存考核用户列表
- 在 ExamineUser模型中添加 taskId 字段,用于关联考核任务
- 修改 TaskServiceImpl 中的 addTask 方法,增加考核用户信息的保存逻辑
- 调整 ExamineDetailController 和 ExamineDetailService 中的方法,以适应新的考核用户关联
dev_1.1.0
chenhao 2025-01-03 16:13:59 +08:00
parent 134597b64d
commit 534dbf1a8d
6 changed files with 39 additions and 9 deletions

View File

@ -64,7 +64,6 @@ public class ExamineDetailController extends BaseController {
} }
@GetMapping @GetMapping
@PreAuthorize("@ss.hasPermi('examine:manager:list')")
public AjaxResult list(ExamineDetailRequestDto dto) { public AjaxResult list(ExamineDetailRequestDto dto) {
Assert.notNull(dto.getExamineTaskId(), "考核任务ID不能为空"); Assert.notNull(dto.getExamineTaskId(), "考核任务ID不能为空");
// Assert.notNull(dto.getExamineId(), "考核ID不能为空"); // Assert.notNull(dto.getExamineId(), "考核ID不能为空");
@ -94,11 +93,11 @@ public class ExamineDetailController extends BaseController {
Assert.notEmpty(examineDto.getExamineDetailList(), "考核详情不能为空"); Assert.notEmpty(examineDto.getExamineDetailList(), "考核详情不能为空");
Assert.notNull(examineDto.getExamineId(), "考核ID不能为空"); Assert.notNull(examineDto.getExamineId(), "考核ID不能为空");
Assert.notNull(examineDto.getTaskId(), "考核任务ID不能为空"); Assert.notNull(examineDto.getTaskId(), "考核任务ID不能为空");
Assert.notNull(examineDto.getManageScore(), "考核分数不能为空");
for (ExamineDetail examineDetail : examineDto.getExamineDetailList()) { for (ExamineDetail examineDetail : examineDto.getExamineDetailList()) {
examineDetail.setExamineId(examineDto.getExamineId()); examineDetail.setExamineId(examineDto.getExamineId());
} }
if (ReviewTypeEnum.MANAGE.getType().equals(examineDto.getReviewType())) { if (ReviewTypeEnum.MANAGE.getType().equals(examineDto.getReviewType())) {
Assert.notNull(examineDto.getManageScore(), "考核分数不能为空");
//主管才需要计算分数 //主管才需要计算分数
Map<Integer, BigDecimal> scoreMap = examineDetailService.calculateScoreByDetail(examineDto.getTaskId() Map<Integer, BigDecimal> scoreMap = examineDetailService.calculateScoreByDetail(examineDto.getTaskId()
, examineDto.getExamineDetailList(), ReviewTypeEnum.MANAGE); , examineDto.getExamineDetailList(), ReviewTypeEnum.MANAGE);

View File

@ -53,7 +53,7 @@ public interface ExamineDetailService {
void insertBatch(List<ExamineDetail> list); void insertBatch(List<ExamineDetail> list);
List<ExamineConfigDetailVo> formatData(List<ExamineConfig> configList, ExamineDetailRequestDto dto); Map<String,Object> formatData(List<ExamineConfig> configList, ExamineDetailRequestDto dto);
/** /**
* *
* @param taskId id * @param taskId id

View File

@ -10,6 +10,7 @@ import tech.unissense.pms.business.examine.detail.mapper.ExamineDetailMapper;
import tech.unissense.pms.business.examine.detail.service.ExamineDetailService; import tech.unissense.pms.business.examine.detail.service.ExamineDetailService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import tech.unissense.pms.business.examine.detail.vo.ExamineConfigDetailVo; import tech.unissense.pms.business.examine.detail.vo.ExamineConfigDetailVo;
import tech.unissense.pms.business.examine.user.mapper.ExamineUserMapper;
import tech.unissense.pms.common.utils.bean.BeanUtils; import tech.unissense.pms.common.utils.bean.BeanUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -32,6 +33,8 @@ public class ExamineDetailServiceImpl implements ExamineDetailService {
private ExamineDetailMapper examineDetailMapper; private ExamineDetailMapper examineDetailMapper;
@Resource @Resource
private ExamineConfigMapper configMapper; private ExamineConfigMapper configMapper;
@Resource
private ExamineUserMapper userMapper;
/** /**
* ID * ID
@ -87,7 +90,7 @@ public class ExamineDetailServiceImpl implements ExamineDetailService {
} }
@Override @Override
public List<ExamineConfigDetailVo> formatData(List<ExamineConfig> configList, ExamineDetailRequestDto dto) { public Map<String,Object> formatData(List<ExamineConfig> configList, ExamineDetailRequestDto dto) {
List<ExamineConfigDetailVo> examineConfigDetailVoList = new ArrayList<>(); List<ExamineConfigDetailVo> examineConfigDetailVoList = new ArrayList<>();
ExamineDetail examineDetail = new ExamineDetail(); ExamineDetail examineDetail = new ExamineDetail();
examineDetail.setExamineId(dto.getExamineId()); examineDetail.setExamineId(dto.getExamineId());
@ -104,7 +107,13 @@ public class ExamineDetailServiceImpl implements ExamineDetailService {
examineConfigDetailVoList.add(examineConfigDetailVo); examineConfigDetailVoList.add(examineConfigDetailVo);
} }
examineConfigDetailVoList.sort(Comparator.comparing(ExamineConfigDetailVo::getSortNum)); examineConfigDetailVoList.sort(Comparator.comparing(ExamineConfigDetailVo::getSortNum));
return examineConfigDetailVoList;
Map<String,Object> result=new HashMap<>();
result.put("examineConfigDetailVoList",examineConfigDetailVoList);
result.put("examineUser",userMapper.queryById(dto.getExamineId()));
return result;
} }

View File

@ -4,6 +4,7 @@ import lombok.Data;
import java.util.Date; import java.util.Date;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
/** /**
* (ExamineTask) * (ExamineTask)
@ -36,5 +37,8 @@ public class ExamineTask implements Serializable {
* *
*/ */
private Date endTime; private Date endTime;
private List<Integer> userIdList;
} }

View File

@ -1,6 +1,7 @@
package tech.unissense.pms.business.examine.task.service.impl; package tech.unissense.pms.business.examine.task.service.impl;
import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.lang.Assert;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -11,17 +12,17 @@ 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.domain.TaskQueryDto;
import tech.unissense.pms.business.examine.task.mapper.ExamineTaskMapper; import tech.unissense.pms.business.examine.task.mapper.ExamineTaskMapper;
import tech.unissense.pms.business.examine.task.service.TaskService; import tech.unissense.pms.business.examine.task.service.TaskService;
import tech.unissense.pms.business.examine.user.domain.ExamineUser;
import tech.unissense.pms.business.examine.user.mapper.ExamineUserMapper;
import tech.unissense.pms.common.annotation.DataScope; import tech.unissense.pms.common.annotation.DataScope;
import javax.annotation.Resource;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalTime; import java.time.LocalTime;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.temporal.TemporalUnit; import java.time.temporal.TemporalUnit;
import java.util.Collections; import java.util.*;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Slf4j @Slf4j
@ -33,6 +34,8 @@ public class TaskServiceImpl implements TaskService {
@Autowired @Autowired
private ExamineConfigMapper examineConfigMapper; private ExamineConfigMapper examineConfigMapper;
@Resource
private ExamineUserMapper userMapper;
@Override @Override
public ExamineTask addTask(ExamineTask task) { public ExamineTask addTask(ExamineTask task) {
@ -45,6 +48,17 @@ public class TaskServiceImpl implements TaskService {
item.setExamineTaskId(task.getId()); item.setExamineTaskId(task.getId());
}); });
examineConfigMapper.insertBatch(list); examineConfigMapper.insertBatch(list);
//生成考核人员信息
List<Integer> userIdList = task.getUserIdList();
Assert.notEmpty(userIdList, "考核人员不能为空");
List<ExamineUser> userList=new ArrayList<>();
for (Integer userId : userIdList) {
ExamineUser examineUser = new ExamineUser();
examineUser.setTaskId(task.getId());
examineUser.setUserId(userId);
userList.add(examineUser);
}
userMapper.insertBatch(userList);
return task; return task;
} }

View File

@ -1,6 +1,7 @@
package tech.unissense.pms.business.examine.user.domain; package tech.unissense.pms.business.examine.user.domain;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import tech.unissense.pms.common.core.domain.BaseEntity; import tech.unissense.pms.common.core.domain.BaseEntity;
import java.io.Serializable; import java.io.Serializable;
@ -53,5 +54,8 @@ public class ExamineUser extends BaseEntity {
private String isAsc; private String isAsc;
private List<Integer> userIdList; private List<Integer> userIdList;
} }