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

View File

@ -53,7 +53,7 @@ public interface ExamineDetailService {
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

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 org.springframework.stereotype.Service;
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 javax.annotation.Resource;
@ -32,6 +33,8 @@ public class ExamineDetailServiceImpl implements ExamineDetailService {
private ExamineDetailMapper examineDetailMapper;
@Resource
private ExamineConfigMapper configMapper;
@Resource
private ExamineUserMapper userMapper;
/**
* ID
@ -87,7 +90,7 @@ public class ExamineDetailServiceImpl implements ExamineDetailService {
}
@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<>();
ExamineDetail examineDetail = new ExamineDetail();
examineDetail.setExamineId(dto.getExamineId());
@ -104,7 +107,13 @@ public class ExamineDetailServiceImpl implements ExamineDetailService {
examineConfigDetailVoList.add(examineConfigDetailVo);
}
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.io.Serializable;
import java.util.List;
/**
* (ExamineTask)
@ -36,5 +37,8 @@ public class ExamineTask implements Serializable {
*
*/
private Date endTime;
private List<Integer> userIdList;
}

View File

@ -1,6 +1,7 @@
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;
@ -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.mapper.ExamineTaskMapper;
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 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.Collections;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
@Slf4j
@ -33,6 +34,8 @@ public class TaskServiceImpl implements TaskService {
@Autowired
private ExamineConfigMapper examineConfigMapper;
@Resource
private ExamineUserMapper userMapper;
@Override
public ExamineTask addTask(ExamineTask task) {
@ -45,6 +48,17 @@ public class TaskServiceImpl implements TaskService {
item.setExamineTaskId(task.getId());
});
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;
}

View File

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