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 5a7a04a..08ab858 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) {
@@ -97,6 +99,7 @@ public class TaskServiceImpl implements TaskService {
@Override
public void deleteTask(Integer id) {
examineTaskDao.deleteTask(id);
+ examineUserService.deleteUserByTaskId(id);
}
@Override
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 76a9f73..2fccd66 100644
--- a/pms-business/src/main/resources/mapper/business/examine/ExamineTaskMapper.xml
+++ b/pms-business/src/main/resources/mapper/business/examine/ExamineTaskMapper.xml
@@ -30,7 +30,7 @@