feat(examine): 优化考核任务列表接口
- 新增考核任务列表接口,支持按任务名称和状态筛选 - 优化任务状态逻辑,增加过期和进行中状态判断 - 调整考核类型枚举值,提高可读性 - 优化考核详情保存逻辑,增加批量保存功能dev_1.1.0
parent
fade049c9d
commit
134597b64d
|
@ -98,15 +98,18 @@ public class ExamineDetailController extends BaseController {
|
||||||
for (ExamineDetail examineDetail : examineDto.getExamineDetailList()) {
|
for (ExamineDetail examineDetail : examineDto.getExamineDetailList()) {
|
||||||
examineDetail.setExamineId(examineDto.getExamineId());
|
examineDetail.setExamineId(examineDto.getExamineId());
|
||||||
}
|
}
|
||||||
Map<Integer, BigDecimal> scoreMap = examineDetailService.calculateScoreByDetail(examineDto.getTaskId()
|
if (ReviewTypeEnum.MANAGE.getType().equals(examineDto.getReviewType())) {
|
||||||
, examineDto.getExamineDetailList(), ReviewTypeEnum.MANAGE);
|
//主管才需要计算分数
|
||||||
BigDecimal bigDecimal = scoreMap.get(examineDto.getExamineId());
|
Map<Integer, BigDecimal> scoreMap = examineDetailService.calculateScoreByDetail(examineDto.getTaskId()
|
||||||
if (examineDto.getManageScore().compareTo(bigDecimal) != 0) {
|
, examineDto.getExamineDetailList(), ReviewTypeEnum.MANAGE);
|
||||||
return AjaxResult.error("总分与明细分数不一致");
|
BigDecimal bigDecimal = scoreMap.get(examineDto.getExamineId());
|
||||||
|
if (examineDto.getManageScore().compareTo(bigDecimal) != 0) {
|
||||||
|
return AjaxResult.error("总分与明细分数不一致");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//保存detail详情
|
//保存detail详情
|
||||||
this.examineDetailService.insertBatch(examineDto.getExamineDetailList());
|
this.examineDetailService.saveBatch(examineDto.getExamineDetailList());
|
||||||
//保存总体评价
|
//保存总体评价
|
||||||
examineUserService.access(examineDto);
|
examineUserService.access(examineDto);
|
||||||
return AjaxResult.success();
|
return AjaxResult.success();
|
||||||
|
|
|
@ -31,11 +31,15 @@ public class TaskSetUpController extends BaseController {
|
||||||
|
|
||||||
// 分页查询+模糊查询
|
// 分页查询+模糊查询
|
||||||
@GetMapping("/get")
|
@GetMapping("/get")
|
||||||
public TableDataInfo getTasks(@RequestBody TaskQueryDto queryDto) {
|
public TableDataInfo getTasks(TaskQueryDto queryDto) {
|
||||||
startPage();
|
startPage();
|
||||||
List<ExamineTask> tasks = taskService.getTasks(queryDto);
|
List<ExamineTask> tasks = taskService.getTasks(queryDto);
|
||||||
return getDataTable(tasks);
|
return getDataTable(tasks);
|
||||||
}
|
}
|
||||||
|
@GetMapping("/list")
|
||||||
|
public AjaxResult listTask(TaskQueryDto queryDto) {
|
||||||
|
return success(taskService.listTask(queryDto));
|
||||||
|
}
|
||||||
|
|
||||||
// 编辑任务
|
// 编辑任务
|
||||||
@PutMapping("/update")
|
@PutMapping("/update")
|
||||||
|
|
|
@ -20,9 +20,9 @@ import lombok.Getter;
|
||||||
public enum ReviewTypeEnum {
|
public enum ReviewTypeEnum {
|
||||||
|
|
||||||
MANAGE("0","管理"),
|
MANAGE("0","管理"),
|
||||||
SELF("1","管理"),
|
SELF("1","个人"),
|
||||||
SYSTEM("2","管理"),
|
SYSTEM("2","系统核算"),
|
||||||
ALL("-1","管理"),
|
ALL("-1","所有"),
|
||||||
;
|
;
|
||||||
private final String type;
|
private final String type;
|
||||||
private final String remark;
|
private final String remark;
|
||||||
|
|
|
@ -4,6 +4,8 @@ import org.apache.ibatis.annotations.Mapper;
|
||||||
import tech.unissense.pms.business.examine.config.domain.ExamineConfig;
|
import tech.unissense.pms.business.examine.config.domain.ExamineConfig;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
import org.springframework.data.domain.Pageable;
|
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;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,7 @@ public class ExamineDto {
|
||||||
private String judgeContent;
|
private String judgeContent;
|
||||||
private BigDecimal manageScore;
|
private BigDecimal manageScore;
|
||||||
private Integer taskId;
|
private Integer taskId;
|
||||||
|
private String reviewType;
|
||||||
/**
|
/**
|
||||||
* 主管评分状态 0:待完成 1:已完成
|
* 主管评分状态 0:待完成 1:已完成
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -68,4 +68,7 @@ public interface ExamineDetailService {
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
Map<Integer,BigDecimal> calculateScoreByDetail(Integer taskId,List<ExamineDetail> examineList,ReviewTypeEnum typeEnum);
|
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;
|
return scoreMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void saveBatch(List<ExamineDetail> examineDetailList) {
|
||||||
|
examineDetailMapper.insertOrUpdateBatch(examineDetailList);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
package tech.unissense.pms.business.examine.task.domain;
|
package tech.unissense.pms.business.examine.task.domain;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import tech.unissense.pms.common.core.domain.BaseEntity;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class TaskQueryDto {
|
public class TaskQueryDto extends BaseEntity {
|
||||||
private String taskName;
|
private String taskName;
|
||||||
|
|
||||||
private Integer taskStatus;
|
private Integer taskStatus;
|
||||||
|
|
|
@ -24,5 +24,7 @@ public interface ExamineTaskMapper {
|
||||||
void updateTask(ExamineTask updatedTask);
|
void updateTask(ExamineTask updatedTask);
|
||||||
|
|
||||||
void deleteTask(Integer id);
|
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 tech.unissense.pms.business.examine.task.domain.TaskQueryDto;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public interface TaskService {
|
public interface TaskService {
|
||||||
ExamineTask addTask(ExamineTask task);
|
ExamineTask addTask(ExamineTask task);
|
||||||
|
@ -16,4 +17,6 @@ public interface TaskService {
|
||||||
void deleteTask(Integer id);
|
void deleteTask(Integer id);
|
||||||
|
|
||||||
List<ExamineConfig> getTarget(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;
|
package tech.unissense.pms.business.examine.task.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||||
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;
|
||||||
|
@ -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.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.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.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
|
@ -60,4 +70,26 @@ public class TaskServiceImpl implements TaskService {
|
||||||
examineConfig.setExamineTaskId(id);
|
examineConfig.setExamineTaskId(id);
|
||||||
return examineConfigMapper.list(examineConfig);
|
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.io.Serializable;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 考核人员表(ExamineUser)实体类
|
* 考核人员表(ExamineUser)实体类
|
||||||
|
@ -51,5 +52,6 @@ public class ExamineUser extends BaseEntity {
|
||||||
|
|
||||||
private String isAsc;
|
private String isAsc;
|
||||||
|
|
||||||
|
private List<Integer> userIdList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -97,10 +97,8 @@
|
||||||
(#{entity.examineId}, #{entity.score}, #{entity.remark}, #{entity.configId})
|
(#{entity.examineId}, #{entity.score}, #{entity.remark}, #{entity.configId})
|
||||||
</foreach>
|
</foreach>
|
||||||
on duplicate key update
|
on duplicate key update
|
||||||
examine_id = values(examine_id),
|
|
||||||
score = values(score),
|
score = values(score),
|
||||||
remark = values(remark),
|
remark = values(remark)
|
||||||
config_id = values(config_id)
|
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
<!--通过主键修改数据-->
|
<!--通过主键修改数据-->
|
||||||
|
|
|
@ -29,6 +29,23 @@
|
||||||
</if>
|
</if>
|
||||||
</where>
|
</where>
|
||||||
</select>
|
</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 id="updateTask">
|
||||||
UPDATE pms_examine_task
|
UPDATE pms_examine_task
|
||||||
|
|
|
@ -68,7 +68,7 @@
|
||||||
t1.examine_status,
|
t1.examine_status,
|
||||||
t1.examine_status_self,
|
t1.examine_status_self,
|
||||||
t2.nick_name as userName
|
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>
|
<where>
|
||||||
<if test="id != null">
|
<if test="id != null">
|
||||||
and t1.id = #{id}
|
and t1.id = #{id}
|
||||||
|
@ -79,6 +79,12 @@
|
||||||
<if test="userId != null">
|
<if test="userId != null">
|
||||||
and t1.user_id = #{userId}
|
and t1.user_id = #{userId}
|
||||||
</if>
|
</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">
|
<if test="score != null">
|
||||||
and t1.score = #{score}
|
and t1.score = #{score}
|
||||||
</if>
|
</if>
|
||||||
|
@ -154,10 +160,10 @@
|
||||||
manage_score = #{manageScore},
|
manage_score = #{manageScore},
|
||||||
</if>
|
</if>
|
||||||
<if test="examineStatus != null and examineStatus != ''">
|
<if test="examineStatus != null and examineStatus != ''">
|
||||||
and examine_status = #{examineStatus}
|
examine_status = #{examineStatus},
|
||||||
</if>
|
</if>
|
||||||
<if test="examineStatusSelf != null and examineStatusSelf != ''">
|
<if test="examineStatusSelf != null and examineStatusSelf != ''">
|
||||||
and examine_status_self = #{examineStatusSelf}
|
examine_status_self = #{examineStatusSelf},
|
||||||
</if>
|
</if>
|
||||||
</set>
|
</set>
|
||||||
where id = #{id}
|
where id = #{id}
|
||||||
|
|
Loading…
Reference in New Issue