feat(examine): 优化考核任务配置更新和列表查询功能
- 新增 ConfigUpdateDto 类用于封装考核配置更新请求参数 - 在 ExamineTask 中添加 taskEditFlag 字段表示任务编辑状态 - 新增 ExamineTaskDto 类用于封装考核任务列表查询结果 - 优化考核任务列表查询逻辑,支持按用户 ID 查询 -重构考核配置更新方法,支持异步处理和状态更新dev_1.1.0
parent
a8692d640f
commit
db51747dc7
|
@ -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<ExamineConfig> list) {
|
||||
return AjaxResult.success(taskService.updateConfigTask(list));
|
||||
public AjaxResult updateConfigTask(@RequestBody ConfigUpdateDto dto) {
|
||||
return AjaxResult.success(taskService.updateConfigTask(dto));
|
||||
}
|
||||
|
||||
// 删除任务
|
||||
|
|
|
@ -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<ExamineDetail> list(ExamineDetail examineDetail);
|
||||
|
||||
void deleteByExamineId(List<Integer> collect);
|
||||
|
||||
List<ExamineDetail> listByExamineId(List<Integer> idList);
|
||||
}
|
||||
|
||||
|
|
|
@ -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<Integer> collect);
|
||||
|
||||
List<ExamineDetail> listByExamineId(List<Integer> taskId);
|
||||
}
|
||||
|
|
|
@ -222,4 +222,9 @@ public class ExamineDetailServiceImpl implements ExamineDetailService {
|
|||
public void deleteByExamineId(List<Integer> collect) {
|
||||
examineDetailMapper.deleteByExamineId(collect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ExamineDetail> listByExamineId(List<Integer> idList) {
|
||||
return examineDetailMapper.listByExamineId(idList);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -37,6 +37,7 @@ public class ExamineTask implements Serializable {
|
|||
* 截止时间
|
||||
*/
|
||||
private Date endTime;
|
||||
private Boolean taskEditFlag;
|
||||
|
||||
|
||||
private List<Integer> userIdList;
|
||||
|
|
|
@ -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<Integer> userIdList;
|
||||
|
||||
private Integer year;
|
||||
private Integer examineStatusSelf;
|
||||
private Integer examineId;
|
||||
}
|
||||
|
|
@ -10,4 +10,5 @@ public class TaskQueryDto extends BaseEntity {
|
|||
private Integer taskStatus;
|
||||
|
||||
private Integer year;
|
||||
private Integer userId;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
* <pre> Copyright: Copyright(c) 2025 </pre>
|
||||
* <pre> Company : 紫光汇智信息技术有限公司 </pre>
|
||||
* Modification History:
|
||||
* Date Author Version Discription
|
||||
* --------------------------------------------------------------------------
|
||||
* 2025/1/8 ch 1.0 Why & What is modified: <修改原因描述> *
|
||||
*/
|
||||
@Data
|
||||
public class ConfigUpdateDto {
|
||||
private List<ExamineConfig> examineConfigList;
|
||||
private Integer taskId;
|
||||
}
|
|
@ -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<ExamineTask> listTask(TaskQueryDto queryDto);
|
||||
|
||||
ExamineTask queryById(Integer taskId);
|
||||
|
||||
void updateTaskEditFlag(@Param("flag") boolean b, @Param("id") Integer taskId);
|
||||
|
||||
List<ExamineTaskDto> listTaskSelf(TaskQueryDto queryDto);
|
||||
}
|
||||
|
||||
|
|
|
@ -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<ExamineConfig> getTarget(Integer id);
|
||||
|
||||
Map<Integer,List<ExamineTask>> listTask(TaskQueryDto queryDto);
|
||||
Map<Integer,List<ExamineTaskDto>> listTaskSelf(TaskQueryDto queryDto);
|
||||
|
||||
List<ExamineConfig> updateConfigTask(List<ExamineConfig> list);
|
||||
List<ExamineConfig> updateConfigTask(ConfigUpdateDto dto);
|
||||
}
|
||||
|
|
|
@ -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<ExamineConfig> updateConfigTask(List<ExamineConfig> list) {
|
||||
for (ExamineConfig examineConfig : list) {
|
||||
public Map<Integer, List<ExamineTaskDto>> listTaskSelf(TaskQueryDto queryDto) {
|
||||
List<ExamineTaskDto> 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<ExamineConfig> 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<ExamineUser> list = userMapper.list(examineUser);
|
||||
List<ExamineUser> completeList = new ArrayList<>();
|
||||
List<Integer> idList = new ArrayList<>();
|
||||
for (ExamineUser user : list) {
|
||||
if (!"1".equals(user.getExamineStatus())) {
|
||||
continue;
|
||||
}
|
||||
idList.add(user.getId());
|
||||
completeList.add(user);
|
||||
}
|
||||
List<ExamineDetail> examineDetails = detailService.listByExamineId(idList);
|
||||
Map<Integer, BigDecimal> manageScoreMap = detailService.calculateScoreByDetail(dto.getTaskId(), examineDetails, ReviewTypeEnum.MANAGE);
|
||||
Map<Integer, BigDecimal> 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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -75,6 +75,13 @@
|
|||
</if>
|
||||
</where>
|
||||
</select>
|
||||
<select id="listByExamineId" resultMap="ExamineDetailMap">
|
||||
<include refid="base_query"/>
|
||||
where examine_id in
|
||||
<foreach collection="idList" item="item" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
</select>
|
||||
|
||||
<!--新增所有列-->
|
||||
<insert id="insert" keyProperty="id" useGeneratedKeys="true">
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
<result property="taskStatus" column="task_status" jdbcType="INTEGER"/>
|
||||
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
|
||||
<result property="endTime" column="end_time" jdbcType="TIMESTAMP"/>
|
||||
<result property="taskEditFlag" column="task_edit_flag" jdbcType="BOOLEAN"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 新增任务 -->
|
||||
|
@ -41,7 +42,7 @@
|
|||
order by create_time desc
|
||||
</select>
|
||||
<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
|
||||
select distinct t1.id,t1.task_name, t1.people_number,t1.task_edit_flag, 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
|
||||
left join sys_user t3 on t2.user_id = t3.user_id
|
||||
|
@ -71,6 +72,13 @@
|
|||
SELECT * FROM pms_examine_task
|
||||
WHERE id = #{id}
|
||||
</select>
|
||||
<select id="listTaskSelf" resultType="tech.unissense.pms.business.examine.task.domain.ExamineTaskDto">
|
||||
select t1.examine_status_self,t1.id as examine_id,
|
||||
t2.* from pms_examine_user t1
|
||||
left join pms_examine_task t2
|
||||
on t1.task_id=t2.id
|
||||
where user_id=#{userId}
|
||||
</select>
|
||||
|
||||
<update id="updateTask">
|
||||
UPDATE pms_examine_task
|
||||
|
@ -85,6 +93,11 @@
|
|||
</set>
|
||||
WHERE id = #{id}
|
||||
</update>
|
||||
<update id="updateTaskEditFlag">
|
||||
update pms_examine_task
|
||||
set task_edit_flag=#{flag}
|
||||
where id=#{id}
|
||||
</update>
|
||||
|
||||
<delete id="deleteTask">
|
||||
DELETE FROM pms_examine_task
|
||||
|
|
Loading…
Reference in New Issue