feat(examine): 优化考核任务列表接口

- 新增考核任务列表接口,支持按任务名称和状态筛选
- 优化任务状态逻辑,增加过期和进行中状态判断
- 调整考核类型枚举值,提高可读性
- 优化考核详情保存逻辑,增加批量保存功能
dev_1.1.0
chenhao 2025-01-03 15:21:26 +08:00
parent fade049c9d
commit 134597b64d
15 changed files with 96 additions and 17 deletions

View File

@ -98,15 +98,18 @@ public class ExamineDetailController extends BaseController {
for (ExamineDetail examineDetail : examineDto.getExamineDetailList()) {
examineDetail.setExamineId(examineDto.getExamineId());
}
Map<Integer, BigDecimal> scoreMap = examineDetailService.calculateScoreByDetail(examineDto.getTaskId()
, examineDto.getExamineDetailList(), ReviewTypeEnum.MANAGE);
BigDecimal bigDecimal = scoreMap.get(examineDto.getExamineId());
if (examineDto.getManageScore().compareTo(bigDecimal) != 0) {
return AjaxResult.error("总分与明细分数不一致");
if (ReviewTypeEnum.MANAGE.getType().equals(examineDto.getReviewType())) {
//主管才需要计算分数
Map<Integer, BigDecimal> scoreMap = examineDetailService.calculateScoreByDetail(examineDto.getTaskId()
, examineDto.getExamineDetailList(), ReviewTypeEnum.MANAGE);
BigDecimal bigDecimal = scoreMap.get(examineDto.getExamineId());
if (examineDto.getManageScore().compareTo(bigDecimal) != 0) {
return AjaxResult.error("总分与明细分数不一致");
}
}
//保存detail详情
this.examineDetailService.insertBatch(examineDto.getExamineDetailList());
this.examineDetailService.saveBatch(examineDto.getExamineDetailList());
//保存总体评价
examineUserService.access(examineDto);
return AjaxResult.success();

View File

@ -31,11 +31,15 @@ public class TaskSetUpController extends BaseController {
// 分页查询+模糊查询
@GetMapping("/get")
public TableDataInfo getTasks(@RequestBody TaskQueryDto queryDto) {
public TableDataInfo getTasks(TaskQueryDto queryDto) {
startPage();
List<ExamineTask> tasks = taskService.getTasks(queryDto);
return getDataTable(tasks);
}
@GetMapping("/list")
public AjaxResult listTask(TaskQueryDto queryDto) {
return success(taskService.listTask(queryDto));
}
// 编辑任务
@PutMapping("/update")

View File

@ -20,9 +20,9 @@ import lombok.Getter;
public enum ReviewTypeEnum {
MANAGE("0","管理"),
SELF("1","管理"),
SYSTEM("2","管理"),
ALL("-1","管理"),
SELF("1","个人"),
SYSTEM("2","系统核算"),
ALL("-1","所有"),
;
private final String type;
private final String remark;

View File

@ -4,6 +4,8 @@ import org.apache.ibatis.annotations.Mapper;
import tech.unissense.pms.business.examine.config.domain.ExamineConfig;
import org.apache.ibatis.annotations.Param;
import org.springframework.data.domain.Pageable;
import tech.unissense.pms.business.examine.task.domain.ExamineTask;
import tech.unissense.pms.business.examine.task.domain.TaskQueryDto;
import java.util.List;

View File

@ -26,6 +26,7 @@ public class ExamineDto {
private String judgeContent;
private BigDecimal manageScore;
private Integer taskId;
private String reviewType;
/**
* 0: 1:
*/

View File

@ -68,4 +68,7 @@ public interface ExamineDetailService {
* @return
*/
Map<Integer,BigDecimal> calculateScoreByDetail(Integer taskId,List<ExamineDetail> examineList,ReviewTypeEnum typeEnum);
void saveBatch(List<ExamineDetail> examineDetailList);
}

View File

@ -146,4 +146,9 @@ public class ExamineDetailServiceImpl implements ExamineDetailService {
return scoreMap;
}
@Override
public void saveBatch(List<ExamineDetail> examineDetailList) {
examineDetailMapper.insertOrUpdateBatch(examineDetailList);
}
}

View File

@ -1,9 +1,10 @@
package tech.unissense.pms.business.examine.task.domain;
import lombok.Data;
import tech.unissense.pms.common.core.domain.BaseEntity;
@Data
public class TaskQueryDto {
public class TaskQueryDto extends BaseEntity {
private String taskName;
private Integer taskStatus;

View File

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

View File

@ -5,6 +5,7 @@ import tech.unissense.pms.business.examine.task.domain.ExamineTask;
import tech.unissense.pms.business.examine.task.domain.TaskQueryDto;
import java.util.List;
import java.util.Map;
public interface TaskService {
ExamineTask addTask(ExamineTask task);
@ -16,4 +17,6 @@ public interface TaskService {
void deleteTask(Integer id);
List<ExamineConfig> getTarget(Integer id);
Map<Integer,List<ExamineTask>> listTask(TaskQueryDto queryDto);
}

View File

@ -1,5 +1,6 @@
package tech.unissense.pms.business.examine.task.service.impl;
import cn.hutool.core.date.LocalDateTimeUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -10,9 +11,18 @@ 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.common.annotation.DataScope;
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.stream.Collectors;
@Slf4j
@Service
@ -60,4 +70,26 @@ public class TaskServiceImpl implements TaskService {
examineConfig.setExamineTaskId(id);
return examineConfigMapper.list(examineConfig);
}
@Override
@DataScope(deptAlias = "t3", userAlias = "t2")
public Map<Integer,List<ExamineTask>> listTask(TaskQueryDto queryDto) {
List<ExamineTask> examineTasks = examineTaskDao.listTask(queryDto);
LocalDateTime now = LocalDateTime.now();
for (ExamineTask 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(ExamineTask::getTaskStatus));
}
}

View File

@ -5,6 +5,7 @@ import tech.unissense.pms.common.core.domain.BaseEntity;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
/**
* (ExamineUser)
@ -51,5 +52,6 @@ public class ExamineUser extends BaseEntity {
private String isAsc;
private List<Integer> userIdList;
}

View File

@ -97,10 +97,8 @@
(#{entity.examineId}, #{entity.score}, #{entity.remark}, #{entity.configId})
</foreach>
on duplicate key update
examine_id = values(examine_id),
score = values(score),
remark = values(remark),
config_id = values(config_id)
remark = values(remark)
</insert>
<!--通过主键修改数据-->

View File

@ -29,6 +29,23 @@
</if>
</where>
</select>
<select id="listTask" resultType="ExamineTask">
select 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
left join sys_user t3 on t2.user_id = t3.user_id
<where>
<if test="taskName != null and taskName != ''">
AND task_name LIKE CONCAT('%', #{taskName}, '%')
</if>
<if test="taskStatus != null">
AND task_status = #{taskStatus}
</if>
<!-- 数据范围过滤 -->
${params.dataScope}
</where>
</select>
<update id="updateTask">
UPDATE pms_examine_task

View File

@ -68,7 +68,7 @@
t1.examine_status,
t1.examine_status_self,
t2.nick_name as userName
from pms_examine_user t1 left join sys_user t2 on t1.user_id = t2.user_id
from pms_examine_user t1 left join sys_user t2 on t1.user_id = t2.user_id
<where>
<if test="id != null">
and t1.id = #{id}
@ -79,6 +79,12 @@
<if test="userId != null">
and t1.user_id = #{userId}
</if>
<if test="userIdList != null and userIdList.size>0">
and t1.user_id in
<foreach collection="userIdList" item="userId" open="(" separator="," close=")">
#{userId}
</foreach>
</if>
<if test="score != null">
and t1.score = #{score}
</if>
@ -154,10 +160,10 @@
manage_score = #{manageScore},
</if>
<if test="examineStatus != null and examineStatus != ''">
and examine_status = #{examineStatus}
examine_status = #{examineStatus},
</if>
<if test="examineStatusSelf != null and examineStatusSelf != ''">
and examine_status_self = #{examineStatusSelf}
examine_status_self = #{examineStatusSelf},
</if>
</set>
where id = #{id}