|
|
@@ -31,10 +31,6 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
import com.punchsettle.server.atomic.ContinueTask;
|
|
|
-import com.punchsettle.server.atomic.entity.PiMultiTask;
|
|
|
-import com.punchsettle.server.atomic.entity.PiMultiTaskExt;
|
|
|
-import com.punchsettle.server.atomic.entity.PiMultiTaskHistory;
|
|
|
-import com.punchsettle.server.atomic.entity.PiMultiTaskRela;
|
|
|
import com.punchsettle.server.atomic.entity.PiStatus;
|
|
|
import com.punchsettle.server.atomic.entity.PiTask;
|
|
|
import com.punchsettle.server.atomic.entity.PiTaskExt;
|
|
|
@@ -59,9 +55,6 @@ import com.punchsettle.server.constant.ContinueStatusEnum;
|
|
|
import com.punchsettle.server.constant.PunchInResultEnum;
|
|
|
import com.punchsettle.server.constant.SettleResultEnum;
|
|
|
import com.punchsettle.server.constant.VersionStatusEnum;
|
|
|
-import com.punchsettle.server.pojo.punchIn.PiMultiTaskExtQuery;
|
|
|
-import com.punchsettle.server.pojo.punchIn.PiMultiTaskHistoryQuery;
|
|
|
-import com.punchsettle.server.pojo.punchIn.PiMultiTaskQuery;
|
|
|
import com.punchsettle.server.pojo.punchIn.PiStatusQuery;
|
|
|
import com.punchsettle.server.pojo.punchIn.PiTaskData;
|
|
|
import com.punchsettle.server.pojo.punchIn.PiTaskExtQuery;
|
|
|
@@ -174,7 +167,7 @@ public class SettleManagerImpl implements ISettleManager {
|
|
|
Map<Long, List<SettleTaskRelaHistory>> settleTaskRelaHistoryMap = new HashMap<>();
|
|
|
|
|
|
// 获取结算数据
|
|
|
- List<SettleData> settleDataList = getSettleData(userIds, punchInDateStr);
|
|
|
+ List<SettleData> settleDataList = getSettleData(userIds, punchInDate);
|
|
|
|
|
|
for (SettleData settleData : settleDataList) {
|
|
|
// 新增结算用户记录
|
|
|
@@ -217,7 +210,7 @@ public class SettleManagerImpl implements ISettleManager {
|
|
|
// 有打卡任务,但是今天无需结算
|
|
|
boolean repeatResult = punchInCoreManager.judgeRepeat(piTask, punchInDate);
|
|
|
if (!repeatResult) {
|
|
|
- addSettleTaskRelaHistory.setSettleResult(SettleResultEnum.NOT_SETTLED);
|
|
|
+ addSettleTaskRelaHistory.setSettleResult(SettleResultEnum.NO_SETTLED);
|
|
|
addSettleTaskRelaHistory.setSettlePoints(0);
|
|
|
addSettleTaskRelaHistories.add(addSettleTaskRelaHistory);
|
|
|
continue;
|
|
|
@@ -284,66 +277,87 @@ public class SettleManagerImpl implements ISettleManager {
|
|
|
* 获取用户ID-打卡结算数据关联
|
|
|
*
|
|
|
* @param userIds 设计的用户
|
|
|
- * @param punchInDateStr 打卡日期
|
|
|
+ * @param punchInDate 打卡日期
|
|
|
* @return
|
|
|
*/
|
|
|
- private List<SettleData> getSettleData(List<Long> userIds, String punchInDateStr) {
|
|
|
+ private List<SettleData> getSettleData(List<Long> userIds, LocalDate punchInDate) {
|
|
|
|
|
|
// 获取多任务信息,用户ID-多任务关联
|
|
|
- PiMultiTaskQuery piMultiTaskQuery = new PiMultiTaskQuery();
|
|
|
- piMultiTaskQuery.setMultiTaskTaskStatus(VersionStatusEnum.ACTIVE);
|
|
|
- piMultiTaskQuery.setUserIds(userIds);
|
|
|
- List<PiMultiTask> piMultiTasks = piMultiTaskService.queryByCondition(piMultiTaskQuery);
|
|
|
- Map<Long, PiMultiTask> piMultiTaskMap = piMultiTasks.stream()
|
|
|
- .collect(Collectors.toMap(PiMultiTask::getUserId, Function.identity(), (key1, key2) -> key1));
|
|
|
+// PiMultiTaskQuery piMultiTaskQuery = new PiMultiTaskQuery();
|
|
|
+// piMultiTaskQuery.setMultiTaskTaskStatus(VersionStatusEnum.ACTIVE);
|
|
|
+// piMultiTaskQuery.setUserIds(userIds);
|
|
|
+// List<PiMultiTask> piMultiTasks = piMultiTaskService.queryByCondition(piMultiTaskQuery);
|
|
|
+// Map<Long, PiMultiTask> piMultiTaskMap = piMultiTasks.stream()
|
|
|
+// .collect(Collectors.toMap(PiMultiTask::getUserId, Function.identity(), (key1, key2) -> key1));
|
|
|
|
|
|
// 多任务ID
|
|
|
- Set<Long> multiTaskIds = piMultiTasks.stream().map(PiMultiTask::getId).collect(Collectors.toSet());
|
|
|
+// Set<Long> multiTaskIds = piMultiTasks.stream().map(PiMultiTask::getId).collect(Collectors.toSet());
|
|
|
// 多任务唯一ID
|
|
|
- Set<Long> multiTaskUniqueIds = piMultiTasks.stream().map(PiMultiTask::getUniqueId).collect(Collectors.toSet());
|
|
|
+// Set<Long> multiTaskUniqueIds = piMultiTasks.stream().map(PiMultiTask::getUniqueId).collect(Collectors.toSet());
|
|
|
|
|
|
// 获取多任务拓展信息,多任务ID-多任务拓展关联
|
|
|
- PiMultiTaskExtQuery piMultiTaskExtQuery = new PiMultiTaskExtQuery();
|
|
|
- piMultiTaskExtQuery.setMultiTaskIds(multiTaskIds);
|
|
|
- List<PiMultiTaskExt> piMultiTaskExtList = piMultiTaskExtService.queryByCondition(piMultiTaskExtQuery);
|
|
|
- Map<Long, List<PiMultiTaskExt>> piMultiTaskExtMap =
|
|
|
- piMultiTaskExtList.stream().collect(Collectors.groupingBy(PiMultiTaskExt::getMultiTaskId));
|
|
|
+// PiMultiTaskExtQuery piMultiTaskExtQuery = new PiMultiTaskExtQuery();
|
|
|
+// piMultiTaskExtQuery.setMultiTaskIds(multiTaskIds);
|
|
|
+// List<PiMultiTaskExt> piMultiTaskExtList = piMultiTaskExtService.queryByCondition(piMultiTaskExtQuery);
|
|
|
+// Map<Long, List<PiMultiTaskExt>> piMultiTaskExtMap =
|
|
|
+// piMultiTaskExtList.stream().collect(Collectors.groupingBy(PiMultiTaskExt::getMultiTaskId));
|
|
|
|
|
|
// 获取多任务打卡历史信息,多任务唯一ID-多任务打卡历史关联
|
|
|
- PiMultiTaskHistoryQuery piMultiTaskHistoryQuery = new PiMultiTaskHistoryQuery();
|
|
|
- piMultiTaskHistoryQuery.setPunchInMultiTaskUniqueIds(multiTaskUniqueIds);
|
|
|
- piMultiTaskHistoryQuery.setPunchInDate(punchInDateStr);
|
|
|
- List<PiMultiTaskHistory> piMultiTaskHistories =
|
|
|
- piMultiTaskHistoryService.queryByCondition(piMultiTaskHistoryQuery);
|
|
|
- Map<Long, PiMultiTaskHistory> piMultiTaskHistoryMap = piMultiTaskHistories.stream().collect(
|
|
|
- Collectors.toMap(PiMultiTaskHistory::getMultiTaskUniqueId, Function.identity(), (key1, key2) -> key1));
|
|
|
+// PiMultiTaskHistoryQuery piMultiTaskHistoryQuery = new PiMultiTaskHistoryQuery();
|
|
|
+// piMultiTaskHistoryQuery.setPunchInMultiTaskUniqueIds(multiTaskUniqueIds);
|
|
|
+// piMultiTaskHistoryQuery.setPunchInDate(punchInDateStr);
|
|
|
+// List<PiMultiTaskHistory> piMultiTaskHistories =
|
|
|
+// piMultiTaskHistoryService.queryByCondition(piMultiTaskHistoryQuery);
|
|
|
+// Map<Long, PiMultiTaskHistory> piMultiTaskHistoryMap = piMultiTaskHistories.stream().collect(
|
|
|
+// Collectors.toMap(PiMultiTaskHistory::getMultiTaskUniqueId, Function.identity(), (key1, key2) -> key1));
|
|
|
|
|
|
// 打卡任务状态
|
|
|
PiStatusQuery piStatusQuery = new PiStatusQuery();
|
|
|
piStatusQuery.setUserIds(userIds);
|
|
|
List<PiStatus> piStatusList = piStatusService.queryByCondition(piStatusQuery);
|
|
|
// 打卡任务状态,多任务唯一ID-打卡状态关联
|
|
|
- Map<Long, PiStatus> piStatusMapInMultiTask = piStatusList.stream().filter(v -> Objects.nonNull(v.getMultiTaskUniqueId())).collect(Collectors.toMap(PiStatus::getMultiTaskUniqueId, Function.identity(), (key1, key2) -> key1));
|
|
|
+// Map<Long, PiStatus> piStatusMapInMultiTask = piStatusList.stream().filter(v -> Objects.nonNull(v.getMultiTaskUniqueId())).collect(Collectors.toMap(PiStatus::getMultiTaskUniqueId, Function.identity(), (key1, key2) -> key1));
|
|
|
// 打卡任务状态,任务唯一ID-打卡状态关联
|
|
|
Map<Long, PiStatus> piStatusMapInTask = piStatusList.stream().filter(v -> Objects.nonNull(v.getTaskUniqueId())).collect(Collectors.toMap(PiStatus::getTaskUniqueId, Function.identity(), (key1, key2) -> key1));
|
|
|
|
|
|
// 多任务关联打卡任务,多任务ID-多任务关联打卡任务关联
|
|
|
- List<PiMultiTaskRela> piMultiTaskRelaList = piMultiTaskRelaService.queryByMultiTaskId(multiTaskIds);
|
|
|
- Map<Long, List<PiMultiTaskRela>> piMultiTaskRelaMap =
|
|
|
- piMultiTaskRelaList.stream().collect(Collectors.groupingBy(PiMultiTaskRela::getMultiTaskId));
|
|
|
+// List<PiMultiTaskRela> piMultiTaskRelaList = piMultiTaskRelaService.queryByMultiTaskId(multiTaskIds);
|
|
|
+// Map<Long, List<PiMultiTaskRela>> piMultiTaskRelaMap =
|
|
|
+// piMultiTaskRelaList.stream().collect(Collectors.groupingBy(PiMultiTaskRela::getMultiTaskId));
|
|
|
|
|
|
- // 获取打卡任务信息,打卡任务唯一ID-打卡任务关联
|
|
|
+ // 获取打卡任务信息
|
|
|
PiTaskQuery piTaskQuery = new PiTaskQuery();
|
|
|
piTaskQuery.setTaskStatus(VersionStatusEnum.ACTIVE);
|
|
|
- piTaskQuery.setArchiveStatus(ArchiveStatusEnum.ACTIVE);
|
|
|
piTaskQuery.setUserIds(userIds);
|
|
|
List<PiTask> piTasks = piTaskService.queryByCondition(piTaskQuery);
|
|
|
+
|
|
|
+ // 处理归档数据,以防归档任务早于结算任务执行
|
|
|
+ piTasks = piTasks.stream().filter(v -> {
|
|
|
+ // 已归档(只有手动和自动两种可能)
|
|
|
+ if (ArchiveStatusEnum.ARCHIVE.equals(v.getArchiveStatus())) {
|
|
|
+ // 有手动归档日期,是主动归档 且 结算日期在手动归档日期前,则参与结算
|
|
|
+ if (Objects.nonNull(v.getManualArchiveDate()) && punchInDate.isBefore(v.getManualArchiveDate())) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ // 有自动归档日期,时自动归档 且 结算日期小于等于归档日期 参与结算
|
|
|
+ if (Objects.nonNull(v.getAutoArchiveDate()) && punchInDate.compareTo(v.getAutoArchiveDate()) < 1) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ // 其他情况应该不存在,不参与结算
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 非已归档情况,参与结算
|
|
|
+ return true;
|
|
|
+ }).toList();
|
|
|
+
|
|
|
+ // 打卡任务唯一ID-打卡任务关联
|
|
|
Map<Long, List<PiTask>> piTaskMap =
|
|
|
piTasks.stream().collect(Collectors.groupingBy(PiTask::getCreatedBy));
|
|
|
|
|
|
// 获取打卡记录,任务唯一 ID-打卡记录关联
|
|
|
PiTaskHistoryQuery piTaskHistoryQuery = new PiTaskHistoryQuery();
|
|
|
- piTaskHistoryQuery.setPunchInDate(punchInDateStr);
|
|
|
+ piTaskHistoryQuery.setPunchInDate(punchInDate.toString());
|
|
|
piTaskHistoryQuery.setUserIds(userIds);
|
|
|
List<PiTaskHistory> punchInTaskHistories = piTaskHistoryService.queryByCondition(piTaskHistoryQuery);
|
|
|
Map<Long, PiTaskHistory> piTaskHistoryMap =
|