feat(examine): 优化考核任务列表接口
- 新增考核任务列表接口,支持按任务名称和状态筛选 - 优化任务状态逻辑,增加过期和进行中状态判断 - 调整考核类型枚举值,提高可读性 - 优化考核详情保存逻辑,增加批量保存功能dev_1.1.0
parent
fade049c9d
commit
134597b64d
|
@ -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();
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -26,6 +26,7 @@ public class ExamineDto {
|
|||
private String judgeContent;
|
||||
private BigDecimal manageScore;
|
||||
private Integer taskId;
|
||||
private String reviewType;
|
||||
/**
|
||||
* 主管评分状态 0:待完成 1:已完成
|
||||
*/
|
||||
|
|
|
@ -68,4 +68,7 @@ public interface ExamineDetailService {
|
|||
* @return
|
||||
*/
|
||||
Map<Integer,BigDecimal> calculateScoreByDetail(Integer taskId,List<ExamineDetail> examineList,ReviewTypeEnum typeEnum);
|
||||
|
||||
void saveBatch(List<ExamineDetail> examineDetailList);
|
||||
|
||||
}
|
||||
|
|
|
@ -146,4 +146,9 @@ public class ExamineDetailServiceImpl implements ExamineDetailService {
|
|||
|
||||
return scoreMap;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveBatch(List<ExamineDetail> examineDetailList) {
|
||||
examineDetailMapper.insertOrUpdateBatch(examineDetailList);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -24,5 +24,7 @@ public interface ExamineTaskMapper {
|
|||
void updateTask(ExamineTask updatedTask);
|
||||
|
||||
void deleteTask(Integer id);
|
||||
|
||||
List<ExamineTask> listTask(TaskQueryDto queryDto);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
||||
<!--通过主键修改数据-->
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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}
|
||||
|
|
Loading…
Reference in New Issue