diff --git a/pms-business/pom.xml b/pms-business/pom.xml index ba136af..6baa85c 100644 --- a/pms-business/pom.xml +++ b/pms-business/pom.xml @@ -31,6 +31,10 @@ cn.hutool hutool-all + + tech.unissense + pms-system + diff --git a/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/mapper/ExamineDetailMapper.java b/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/mapper/ExamineDetailMapper.java index f402af9..f6e0a8f 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/mapper/ExamineDetailMapper.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/mapper/ExamineDetailMapper.java @@ -75,5 +75,7 @@ public interface ExamineDetailMapper { int deleteById(Integer id); List list(ExamineDetail examineDetail); + + void deleteByExamineId(List collect); } diff --git a/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/service/ExamineDetailService.java b/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/service/ExamineDetailService.java index 560589d..f7e5240 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/service/ExamineDetailService.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/service/ExamineDetailService.java @@ -71,4 +71,6 @@ public interface ExamineDetailService { void saveBatch(List examineDetailList); + + void deleteByExamineId( List collect); } diff --git a/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/service/impl/ExamineDetailServiceImpl.java b/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/service/impl/ExamineDetailServiceImpl.java index 8c3899c..be13e1e 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/service/impl/ExamineDetailServiceImpl.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/examine/detail/service/impl/ExamineDetailServiceImpl.java @@ -1,6 +1,9 @@ package tech.unissense.pms.business.examine.detail.service.impl; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; 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; @@ -11,7 +14,10 @@ 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.business.examine.user.service.impl.ExamineUserServiceImpl; +import tech.unissense.pms.business.work.logger.service.IWorkLoggerService; import tech.unissense.pms.common.utils.bean.BeanUtils; +import tech.unissense.pms.system.service.ISysDictDataService; import javax.annotation.Resource; import java.math.BigDecimal; @@ -35,6 +41,10 @@ public class ExamineDetailServiceImpl implements ExamineDetailService { private ExamineConfigMapper configMapper; @Resource private ExamineUserMapper userMapper; + @Autowired + private IWorkLoggerService workLoggerService; + @Autowired + private ISysDictDataService sysDictDataService; /** * 通过ID查询单条数据 @@ -134,6 +144,8 @@ public class ExamineDetailServiceImpl implements ExamineDetailService { examineConfigQueryDto.setReviewType(typeEnum.getType()); } List configList = configMapper.list(examineConfigQueryDto); + //系统核算单独处理 + dealSystemBusinessAccount(examineList, configList); Map configMap = configList.stream().collect(Collectors.toMap(ExamineConfig::getId, Function.identity())); Map scoreMap = new HashMap<>(); for (ExamineDetail detail : examineList) { @@ -156,8 +168,45 @@ public class ExamineDetailServiceImpl implements ExamineDetailService { return scoreMap; } + private void dealSystemBusinessAccount(List examineList, List configList) { + Map systemExamineConfigMap = configList.stream().filter(item -> + ReviewTypeEnum.SYSTEM.getType().equals(item.getReviewType())).collect(Collectors.toMap(ExamineConfig::getId, Function.identity())); + //如有系统核算才处理 + if (CollUtil.isNotEmpty(systemExamineConfigMap)) { + String workDay = sysDictDataService.selectDictLabel("pms_work_day", "2024"); + workDay = StrUtil.isNotEmpty(workDay) ? workDay : "251"; + BigDecimal configWorkDay = new BigDecimal(workDay); + List collect = examineList.stream().filter(item -> systemExamineConfigMap.containsKey(item.getConfigId())).collect(Collectors.toList()); + Map workTimeByExamineDetail = workLoggerService.getWorkTimeByExamineDetail(collect.stream().map(ExamineDetail::getExamineId).collect(Collectors.toList())); + for (ExamineDetail examineDetail : collect) { + BigDecimal bigDecimal = workTimeByExamineDetail.get(examineDetail.getExamineId()); + if (bigDecimal == null) { + examineDetail.setScore(0); + continue; + } + BigDecimal max = configWorkDay.multiply(new BigDecimal("0.9")); + BigDecimal min = configWorkDay.multiply(new BigDecimal("0.8")); + if (bigDecimal.compareTo(max) >= 0) { + //比90%大 满分 + examineDetail.setScore(10); + } else if (bigDecimal.compareTo(min) >= 0) { + //比80%大 比90%小 6分 + examineDetail.setScore(6); + } else { + //比80%小 0分 + examineDetail.setScore(0); + } + } + } + } + @Override public void saveBatch(List examineDetailList) { examineDetailMapper.insertOrUpdateBatch(examineDetailList); } + + @Override + public void deleteByExamineId(List collect) { + examineDetailMapper.deleteByExamineId(collect); + } } diff --git a/pms-business/src/main/java/tech/unissense/pms/business/examine/task/service/impl/TaskServiceImpl.java b/pms-business/src/main/java/tech/unissense/pms/business/examine/task/service/impl/TaskServiceImpl.java index fca66ae..5f278d0 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/examine/task/service/impl/TaskServiceImpl.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/examine/task/service/impl/TaskServiceImpl.java @@ -12,6 +12,7 @@ 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.business.examine.user.service.impl.ExamineUserServiceImpl; import tech.unissense.pms.common.annotation.DataScope; import javax.annotation.Resource; @@ -33,6 +34,7 @@ public class TaskServiceImpl implements TaskService { @Resource private ExamineUserMapper userMapper; + private ExamineUserServiceImpl examineUserService; @Override public ExamineTask addTask(ExamineTask task) { @@ -107,6 +109,7 @@ public class TaskServiceImpl implements TaskService { @Override public void deleteTask(Integer id) { examineTaskDao.deleteTask(id); + examineUserService.deleteUserByTaskId(id); ExamineConfig examineConfig = new ExamineConfig(); examineConfig.setExamineTaskId(id); List list = examineConfigMapper.list(examineConfig); diff --git a/pms-business/src/main/java/tech/unissense/pms/business/examine/user/mapper/ExamineUserMapper.java b/pms-business/src/main/java/tech/unissense/pms/business/examine/user/mapper/ExamineUserMapper.java index 73caef6..ec31959 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/examine/user/mapper/ExamineUserMapper.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/examine/user/mapper/ExamineUserMapper.java @@ -75,5 +75,8 @@ public interface ExamineUserMapper { List list(ExamineUser examineUser); ExamineUser queryByTaskIdAndUserId(@Param("taskId") Integer examineTaskId,@Param("userId") Integer userId); + + void deleteByIdList(List idList); + } diff --git a/pms-business/src/main/java/tech/unissense/pms/business/examine/user/service/ExamineUserService.java b/pms-business/src/main/java/tech/unissense/pms/business/examine/user/service/ExamineUserService.java index 10e896c..901e972 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/examine/user/service/ExamineUserService.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/examine/user/service/ExamineUserService.java @@ -57,4 +57,5 @@ public interface ExamineUserService { * @return */ ExamineUser queryByTaskIdAndUserId(Integer examineTaskId, Integer userId); + void deleteUserByTaskId(Integer taskId); } diff --git a/pms-business/src/main/java/tech/unissense/pms/business/examine/user/service/impl/ExamineUserServiceImpl.java b/pms-business/src/main/java/tech/unissense/pms/business/examine/user/service/impl/ExamineUserServiceImpl.java index e57bc72..9f1aa3f 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/examine/user/service/impl/ExamineUserServiceImpl.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/examine/user/service/impl/ExamineUserServiceImpl.java @@ -18,6 +18,7 @@ import java.util.Collections; import java.util.List; import java.util.Map; import java.util.concurrent.CompletableFuture; +import java.util.stream.Collectors; /** * 考核人员表(ExamineUser)表服务实现类 @@ -112,4 +113,15 @@ public class ExamineUserServiceImpl implements ExamineUserService { public ExamineUser queryByTaskIdAndUserId(Integer examineTaskId, Integer userId) { return examineUserMapper.queryByTaskIdAndUserId(examineTaskId, userId); } + + @Override + public void deleteUserByTaskId(Integer taskId) { + ExamineUser examineUser = new ExamineUser(); + examineUser.setTaskId(taskId); + List list = examineUserMapper.list(examineUser); + List idList = list.stream().map(ExamineUser::getId).collect(Collectors.toList()); + detailService.deleteByExamineId(idList); + examineUserMapper.deleteByIdList(idList); + // examineUserMapper. + } } diff --git a/pms-business/src/main/java/tech/unissense/pms/business/work/logger/domain/WorkLogger.java b/pms-business/src/main/java/tech/unissense/pms/business/work/logger/domain/WorkLogger.java index 0131e7e..6014619 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/work/logger/domain/WorkLogger.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/work/logger/domain/WorkLogger.java @@ -51,6 +51,7 @@ public class WorkLogger extends BaseEntity { private Date endDate; private List projectIdList; + private Integer examineId; } diff --git a/pms-business/src/main/java/tech/unissense/pms/business/work/logger/mapper/WorkLoggerMapper.java b/pms-business/src/main/java/tech/unissense/pms/business/work/logger/mapper/WorkLoggerMapper.java index 0e68b37..1246b7f 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/work/logger/mapper/WorkLoggerMapper.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/work/logger/mapper/WorkLoggerMapper.java @@ -82,5 +82,8 @@ public interface WorkLoggerMapper { List calendar(WorkLogger workLogger); List listUser(WorkLogger workLogger); + + List listWorkTimeByExamineDetail(@Param("examineIdList") List collect); + } diff --git a/pms-business/src/main/java/tech/unissense/pms/business/work/logger/service/IWorkLoggerService.java b/pms-business/src/main/java/tech/unissense/pms/business/work/logger/service/IWorkLoggerService.java index 8d46149..59ff7c2 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/work/logger/service/IWorkLoggerService.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/work/logger/service/IWorkLoggerService.java @@ -5,7 +5,9 @@ import tech.unissense.pms.business.work.logger.domain.WorkLogger; import tech.unissense.pms.business.work.logger.vo.CalendarVo; import tech.unissense.pms.business.work.logger.vo.StaticsHourVo; +import java.math.BigDecimal; import java.util.List; +import java.util.Map; /** * (WorkLogger)表服务接口 @@ -68,4 +70,5 @@ public interface IWorkLoggerService { String getRemaining(WorkLogger workLogger); + Map getWorkTimeByExamineDetail(List collect); } diff --git a/pms-business/src/main/java/tech/unissense/pms/business/work/logger/service/impl/WorkLoggerServiceImpl.java b/pms-business/src/main/java/tech/unissense/pms/business/work/logger/service/impl/WorkLoggerServiceImpl.java index 4038801..7a2e437 100644 --- a/pms-business/src/main/java/tech/unissense/pms/business/work/logger/service/impl/WorkLoggerServiceImpl.java +++ b/pms-business/src/main/java/tech/unissense/pms/business/work/logger/service/impl/WorkLoggerServiceImpl.java @@ -11,15 +11,13 @@ import tech.unissense.pms.business.work.logger.vo.CalendarVo; import tech.unissense.pms.business.work.logger.vo.StaticsHourVo; import tech.unissense.pms.common.utils.DateUtils; import tech.unissense.pms.common.utils.SecurityUtils; -import java.util.Objects; + +import java.util.*; import javax.annotation.Resource; import java.math.BigDecimal; import java.time.LocalDate; import java.time.ZoneId; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; @@ -222,6 +220,12 @@ public class WorkLoggerServiceImpl implements IWorkLoggerService { return BigDecimal.ONE.subtract(totalWorkTime).toString(); } + @Override + public Map getWorkTimeByExamineDetail(List collect) { + List workLoggers = workLoggerMapper.listWorkTimeByExamineDetail(collect); + return workLoggers.stream().collect(Collectors.toMap(WorkLogger::getExamineId, item -> new BigDecimal(item.getWorkTime()), BigDecimal::add)); + } + // 泛型方法,用于生成统计工时的列表,适用于项目统计 private List generateStaticsHourVoList(List items, Map workDayMap, Function idExtractor, Function nameExtractor) { diff --git a/pms-business/src/main/resources/mapper/business/WorkLogger/WorkLoggerMapper.xml b/pms-business/src/main/resources/mapper/business/WorkLogger/WorkLoggerMapper.xml index 31293b5..bd23181 100644 --- a/pms-business/src/main/resources/mapper/business/WorkLogger/WorkLoggerMapper.xml +++ b/pms-business/src/main/resources/mapper/business/WorkLogger/WorkLoggerMapper.xml @@ -254,6 +254,17 @@ + update pms_work_logger diff --git a/pms-business/src/main/resources/mapper/business/examine/ExamineDetailMapper.xml b/pms-business/src/main/resources/mapper/business/examine/ExamineDetailMapper.xml index f9e7a6a..d9c24c1 100644 --- a/pms-business/src/main/resources/mapper/business/examine/ExamineDetailMapper.xml +++ b/pms-business/src/main/resources/mapper/business/examine/ExamineDetailMapper.xml @@ -127,6 +127,14 @@ from pms_examine_detail where id = #{id} + + delete + from pms_examine_detail + where examine_id in + + #{item} + + diff --git a/pms-business/src/main/resources/mapper/business/examine/ExamineTaskMapper.xml b/pms-business/src/main/resources/mapper/business/examine/ExamineTaskMapper.xml index c7ef1a4..1a5d08e 100644 --- a/pms-business/src/main/resources/mapper/business/examine/ExamineTaskMapper.xml +++ b/pms-business/src/main/resources/mapper/business/examine/ExamineTaskMapper.xml @@ -33,7 +33,7 @@