|
|
@@ -1,5 +1,9 @@
|
|
|
package com.punchsettle.server.task;
|
|
|
|
|
|
+import com.punchsettle.server.atomic.entity.PunchInMultiTask;
|
|
|
+import com.punchsettle.server.atomic.entity.PunchInMultiTaskExt;
|
|
|
+import com.punchsettle.server.atomic.entity.PunchInMultiTaskHistory;
|
|
|
+import com.punchsettle.server.atomic.entity.PunchInMultiTaskRela;
|
|
|
import com.punchsettle.server.atomic.entity.PunchInStatsMonth;
|
|
|
import com.punchsettle.server.atomic.entity.PunchInStatsWeek;
|
|
|
import com.punchsettle.server.atomic.entity.PunchInStatus;
|
|
|
@@ -8,6 +12,7 @@ import com.punchsettle.server.atomic.entity.PunchInTaskExt;
|
|
|
import com.punchsettle.server.atomic.entity.PunchInTaskHistory;
|
|
|
import com.punchsettle.server.atomic.service.IPunchInMultiTaskExtService;
|
|
|
import com.punchsettle.server.atomic.service.IPunchInMultiTaskHistoryService;
|
|
|
+import com.punchsettle.server.atomic.service.IPunchInMultiTaskRelaService;
|
|
|
import com.punchsettle.server.atomic.service.IPunchInMultiTaskService;
|
|
|
import com.punchsettle.server.atomic.service.IPunchInStatsMonthService;
|
|
|
import com.punchsettle.server.atomic.service.IPunchInStatsWeekService;
|
|
|
@@ -17,9 +22,14 @@ import com.punchsettle.server.atomic.service.IPunchInTaskHistoryService;
|
|
|
import com.punchsettle.server.atomic.service.IPunchInTaskService;
|
|
|
import com.punchsettle.server.constant.ArchiveStatusEnum;
|
|
|
import com.punchsettle.server.constant.PunchInStatusEnum;
|
|
|
+import com.punchsettle.server.pojo.punchIn.PunchInMultiTaskExtQuery;
|
|
|
+import com.punchsettle.server.pojo.punchIn.PunchInMultiTaskHistoryQuery;
|
|
|
+import com.punchsettle.server.pojo.punchIn.PunchInMultiTaskQuery;
|
|
|
+import com.punchsettle.server.pojo.punchIn.PunchInSettleDto;
|
|
|
import com.punchsettle.server.pojo.punchIn.PunchInStatsMonthQuery;
|
|
|
import com.punchsettle.server.pojo.punchIn.PunchInStatsWeekQuery;
|
|
|
import com.punchsettle.server.pojo.punchIn.PunchInStatusQuery;
|
|
|
+import com.punchsettle.server.pojo.punchIn.PunchInTaskDto;
|
|
|
import com.punchsettle.server.pojo.punchIn.PunchInTaskExtQuery;
|
|
|
import com.punchsettle.server.pojo.punchIn.PunchInTaskHistoryQuery;
|
|
|
import com.punchsettle.server.pojo.punchIn.PunchInTaskQuery;
|
|
|
@@ -30,14 +40,12 @@ import com.punchsettle.server.utiis.DateUtils;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
-import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
import java.time.LocalDate;
|
|
|
-import java.time.temporal.TemporalField;
|
|
|
-import java.time.temporal.WeekFields;
|
|
|
-import java.util.Arrays;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.Objects;
|
|
|
import java.util.Set;
|
|
|
import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
@@ -64,29 +72,30 @@ public class PunchInCoreTask {
|
|
|
log.info("========== 打卡定时任务 结束执行 ==========");
|
|
|
}
|
|
|
|
|
|
-// public void punchInInTask(PunchInTask punchInTask, List<PunchInTaskExt> punchInTaskExtList,
|
|
|
-// PunchInTaskHistory punchInTaskHistory,
|
|
|
-// PunchInStatsWeek punchInStatsWeek, PunchInStatsMonth punchInStatsMonth, PunchInStatus punchInStatus,
|
|
|
-// ) {
|
|
|
-//
|
|
|
-// PunchInStatusEnum punchInStatusEnum = punchInManager.judgePunchInStatusInTask(punchInTask, punchInTaskHistory);
|
|
|
-//
|
|
|
-// int taskPoints = settleManager.calculatePointsInTask(punchInTask, punchInTaskExtList, punchInTaskHistory, punchInStatsWeek, punchInStatsMonth, punchInStatus);
|
|
|
-//
|
|
|
-// }
|
|
|
-//
|
|
|
-// public void punchInInMultiTask(PunchInStatus punchInStatus,
|
|
|
-// List<PunchInTaskHistory> punchInTaskHistoryList,
|
|
|
-// PunchInMultiTask punchInMultiTask, List<PunchInMultiTaskExt> punchInMultiTaskExtList,
|
|
|
-// PunchInMultiTaskHistory punchInMultiTaskHistory) {
|
|
|
-//
|
|
|
-// PunchInStatusEnum punchInStatusEnum1 =
|
|
|
-// punchInManager.judgePunchInStatusInMultiTask(punchInMultiTask, punchInTaskHistoryList);
|
|
|
-//
|
|
|
-// int multiTaskPoints = settleManager.calculatePointsInMultiTask(punchInMultiTask, punchInMultiTaskExtList,
|
|
|
-// punchInMultiTaskHistory, punchInStatus);
|
|
|
-//
|
|
|
-// }
|
|
|
+ // public void punchInInTask(PunchInTask punchInTask, List<PunchInTaskExt> punchInTaskExtList,
|
|
|
+ // PunchInTaskHistory punchInTaskHistory,
|
|
|
+ // PunchInStatsWeek punchInStatsWeek, PunchInStatsMonth punchInStatsMonth, PunchInStatus punchInStatus,
|
|
|
+ // ) {
|
|
|
+ //
|
|
|
+ // PunchInStatusEnum punchInStatusEnum = punchInManager.judgePunchInStatusInTask(punchInTask, punchInTaskHistory);
|
|
|
+ //
|
|
|
+ // int taskPoints = settleManager.calculatePointsInTask(punchInTask, punchInTaskExtList, punchInTaskHistory,
|
|
|
+ // punchInStatsWeek, punchInStatsMonth, punchInStatus);
|
|
|
+ //
|
|
|
+ // }
|
|
|
+ //
|
|
|
+ // public void punchInInMultiTask(PunchInStatus punchInStatus,
|
|
|
+ // List<PunchInTaskHistory> punchInTaskHistoryList,
|
|
|
+ // PunchInMultiTask punchInMultiTask, List<PunchInMultiTaskExt> punchInMultiTaskExtList,
|
|
|
+ // PunchInMultiTaskHistory punchInMultiTaskHistory) {
|
|
|
+ //
|
|
|
+ // PunchInStatusEnum punchInStatusEnum1 =
|
|
|
+ // punchInManager.judgePunchInStatusInMultiTask(punchInMultiTask, punchInTaskHistoryList);
|
|
|
+ //
|
|
|
+ // int multiTaskPoints = settleManager.calculatePointsInMultiTask(punchInMultiTask, punchInMultiTaskExtList,
|
|
|
+ // punchInMultiTaskHistory, punchInStatus);
|
|
|
+ //
|
|
|
+ // }
|
|
|
|
|
|
@Autowired
|
|
|
private IPunchInTaskService punchInTaskService;
|
|
|
@@ -115,88 +124,206 @@ public class PunchInCoreTask {
|
|
|
@Autowired
|
|
|
private IPunchInMultiTaskHistoryService punchInMultiTaskHistoryService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IPunchInMultiTaskRelaService punchInMultiTaskRelaService;
|
|
|
+
|
|
|
@Autowired
|
|
|
private ICalendarManager calendarManager;
|
|
|
|
|
|
- public void manual(Long userId, String punchInDateStr) {
|
|
|
- // 判断打卡日期是否节假日
|
|
|
- boolean holidayFlag = calendarManager.judgeHoliday(punchInDateStr);
|
|
|
+ public void manual(List<Long> userIds, String punchInDateStr) {
|
|
|
+ List<PunchInSettleDto> punchInSettleData = getPunchInSettleData(userIds, punchInDateStr);
|
|
|
+
|
|
|
+ List<PunchInTaskHistory> updatePunchInTaskHistories = new ArrayList<>(punchInSettleData.size());
|
|
|
+ List<PunchInMultiTaskHistory> updatePunchInMultiTaskHistories = new ArrayList<>(punchInSettleData.size());
|
|
|
+ for (PunchInSettleDto punchInSettle : punchInSettleData) {
|
|
|
+ // 单任务处理部分
|
|
|
+ for (PunchInTaskDto punchInTaskDto : punchInSettle.getPunchInTaskDtoList()) {
|
|
|
+ PunchInTaskHistory updatePunchInTaskHistory = new PunchInTaskHistory();
|
|
|
+ updatePunchInTaskHistory.setId(punchInTaskDto.getPunchInTaskHistory().getId());
|
|
|
+ updatePunchInTaskHistory.setPunchInStatus(PunchInStatusEnum.UNDONE);
|
|
|
+
|
|
|
+ // 判断打卡状态
|
|
|
+ PunchInStatusEnum punchInStatusResult = punchInManager.judgePunchInStatusInTask(punchInTaskDto.getPunchInTask(), punchInTaskDto.getPunchInTaskHistory());
|
|
|
+ punchInSettle.getPunchInMultiTaskHistory().setPunchInStatus(punchInStatusResult);
|
|
|
+ updatePunchInTaskHistory.setPunchInStatus(punchInStatusResult);
|
|
|
+
|
|
|
+ // TODO 要判断并设置结算状态
|
|
|
+ // 计算积分
|
|
|
+ int taskPoints = settleManager.calculatePointsInTask(punchInTaskDto.getPunchInTask(), punchInTaskDto.getPunchInTaskExtList(),
|
|
|
+ punchInTaskDto.getPunchInTaskHistory(), punchInTaskDto.getPunchInStatsWeek(),
|
|
|
+ punchInTaskDto.getPunchInStatsMonth(), punchInTaskDto.getPunchInStatus());
|
|
|
+ updatePunchInTaskHistory.setSettlePoints(taskPoints);
|
|
|
+
|
|
|
+ // TODO 要设置结算任务执行ID
|
|
|
+
|
|
|
+ // 还有其他的要设置
|
|
|
+ updatePunchInTaskHistory.setSettleTaskHistoryId(punchInTaskDto.getPunchInTask().getId());
|
|
|
+ updatePunchInTaskHistories.add(updatePunchInTaskHistory);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 多任务处理部分
|
|
|
+ PunchInMultiTaskHistory updatePunchInMultiTaskHistory = new PunchInMultiTaskHistory();
|
|
|
+
|
|
|
+ // 判断多任务打卡状态并设置
|
|
|
+ PunchInStatusEnum punchInStatusEnumResult = punchInManager.judgePunchInStatusInMultiTask(punchInSettle.getPunchInMultiTask(),
|
|
|
+ punchInSettle.getRelaPunchInTaskHistories());
|
|
|
+ punchInSettle.getPunchInMultiTaskHistory().setPunchInStatus(punchInStatusEnumResult);
|
|
|
+ updatePunchInMultiTaskHistory.setPunchInStatus(punchInStatusEnumResult);
|
|
|
+
|
|
|
+ int multiTaskPoints = settleManager.calculatePointsInMultiTask(punchInSettle.getPunchInMultiTask(),
|
|
|
+ punchInSettle.getPunchInMultiTaskExtList(), punchInSettle.getPunchInMultiTaskHistory(),
|
|
|
+ punchInSettle.getPunchInStatusInMultiTask());
|
|
|
+ updatePunchInMultiTaskHistory.setSettlePoints(multiTaskPoints);
|
|
|
+
|
|
|
+ // TODO 要判断并设置结算状态
|
|
|
+ // TODO 要设置结算任务执行ID
|
|
|
+ updatePunchInMultiTaskHistories.add(updatePunchInMultiTaskHistory);
|
|
|
+ }
|
|
|
+
|
|
|
+ punchInTaskHistoryService.batchUpdate(updatePunchInTaskHistories);
|
|
|
+ punchInMultiTaskHistoryService.batchUpdate(updatePunchInMultiTaskHistories);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取用户ID-打卡结算数据关联
|
|
|
+ * @param userIds 设计的用户
|
|
|
+ * @param punchInDateStr 打卡日期
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<PunchInSettleDto> getPunchInSettleData(List<Long> userIds, String punchInDateStr) {
|
|
|
// 打卡日期
|
|
|
LocalDate punchInDate = LocalDate.parse(punchInDateStr);
|
|
|
- // 本周是第几周
|
|
|
- TemporalField weekOfYearField = WeekFields.ISO.weekOfYear();
|
|
|
- int weekOfYear = punchInDate.get(weekOfYearField);
|
|
|
|
|
|
+ // 获取多任务信息,用户ID-多任务关联
|
|
|
+ PunchInMultiTaskQuery punchInMultiTaskQuery = new PunchInMultiTaskQuery();
|
|
|
+ punchInMultiTaskQuery.setMultiTaskTaskStatus(ArchiveStatusEnum.ACTIVE);
|
|
|
+ punchInMultiTaskQuery.setUserIds(userIds);
|
|
|
+ List<PunchInMultiTask> punchInMultiTasks = punchInMultiTaskService.queryByCondition(punchInMultiTaskQuery);
|
|
|
+ Map<Long, PunchInMultiTask> punchInMultiTaskMap = punchInMultiTasks.stream().collect(Collectors.toMap(PunchInMultiTask::getUserId, Function.identity(), (key1, key2) -> key1));
|
|
|
+
|
|
|
+ // 多任务ID
|
|
|
+ Set<Long> multiTaskIds = punchInMultiTasks.stream().map(PunchInMultiTask::getId).collect(Collectors.toSet());
|
|
|
+ // 多任务唯一ID
|
|
|
+ Set<Long> multiTaskUniqueIds = punchInMultiTasks.stream().map(PunchInMultiTask::getMultiTaskUniqueId).collect(Collectors.toSet());
|
|
|
+
|
|
|
+ // 获取多任务拓展信息,多任务ID-多任务拓展关联
|
|
|
+ PunchInMultiTaskExtQuery punchInMultiTaskExtQuery = new PunchInMultiTaskExtQuery();
|
|
|
+ punchInMultiTaskExtQuery.setMultiTaskIds(multiTaskIds);
|
|
|
+ List<PunchInMultiTaskExt> punchInMultiTaskExtList = punchInMultiTaskExtService.queryByCondition(punchInMultiTaskExtQuery);
|
|
|
+ Map<Long, List<PunchInMultiTaskExt>> punchInMultiTaskExtMap = punchInMultiTaskExtList.stream().collect(Collectors.groupingBy(PunchInMultiTaskExt::getMultiTaskId));
|
|
|
+
|
|
|
+ // 获取多任务打卡历史信息,多任务唯一ID-多任务打卡历史关联
|
|
|
+ PunchInMultiTaskHistoryQuery punchInMultiTaskHistoryQuery = new PunchInMultiTaskHistoryQuery();
|
|
|
+ punchInMultiTaskHistoryQuery.setPunchInMultiTaskUniqueIds(multiTaskUniqueIds);
|
|
|
+ punchInMultiTaskHistoryQuery.setPunchInDate(punchInDateStr);
|
|
|
+ List<PunchInMultiTaskHistory> punchInMultiTaskHistories = punchInMultiTaskHistoryService.queryByCondition(punchInMultiTaskHistoryQuery);
|
|
|
+ Map<Long, PunchInMultiTaskHistory> punchInMultiTaskHistoryMap = punchInMultiTaskHistories.stream().collect(Collectors.toMap(PunchInMultiTaskHistory::getPunchInMultiTaskUniqueId, Function.identity(), (key1, key2)->key1));
|
|
|
+
|
|
|
+ // 打卡任务状态,用户ID-打卡状态关联
|
|
|
+ PunchInStatusQuery punchInStatusQuery = new PunchInStatusQuery();
|
|
|
+ punchInStatusQuery.setUserIds(userIds);
|
|
|
+ List<PunchInStatus> punchInStatusList = punchInStatusService.queryByCondition(punchInStatusQuery);
|
|
|
+ Map<Long, List<PunchInStatus>> punchInStatusMap = punchInStatusList.stream().collect(Collectors.groupingBy(PunchInStatus::getUserId));
|
|
|
+
|
|
|
+ // 多任务关联打卡任务,多任务ID-多任务关联打卡任务关联
|
|
|
+ List<PunchInMultiTaskRela> punchInMultiTaskRelaList = punchInMultiTaskRelaService.queryByMultiTaskId(multiTaskIds);
|
|
|
+ Map<Long, List<PunchInMultiTaskRela>> punchInMultiTaskRelaMap = punchInMultiTaskRelaList.stream().collect(Collectors.groupingBy(PunchInMultiTaskRela::getPunchInMultiTaskId));
|
|
|
+
|
|
|
+ // 获取打卡记录,用户ID-打卡记录关联
|
|
|
PunchInTaskHistoryQuery punchInTaskHistoryQuery = new PunchInTaskHistoryQuery();
|
|
|
punchInTaskHistoryQuery.setPunchInDate(punchInDateStr);
|
|
|
- punchInTaskHistoryQuery.setUserIds(Arrays.asList(userId));
|
|
|
+ punchInTaskHistoryQuery.setUserIds(userIds);
|
|
|
List<PunchInTaskHistory> punchInTaskHistories = punchInTaskHistoryService.queryByCondition(punchInTaskHistoryQuery);
|
|
|
- if(CollectionUtils.isEmpty(punchInTaskHistories)) {
|
|
|
- log.info("用户:{} 在打卡日期:{} 没有查询到打卡记录", userId, punchInDateStr);
|
|
|
- return;
|
|
|
- }
|
|
|
+ Map<Long, List<PunchInTaskHistory>> punchInTaskHistoryMap = punchInTaskHistories.stream().collect(Collectors.groupingBy(PunchInTaskHistory::getUserId));
|
|
|
|
|
|
+ // 打卡任务唯一ID
|
|
|
Set<Long> punchInTaskUniqueIdList = punchInTaskHistories.stream().map(PunchInTaskHistory::getPunchInTaskUniqueId).collect(Collectors.toSet());
|
|
|
+
|
|
|
+ // 获取打卡任务信息,打卡任务唯一ID-打卡任务关联
|
|
|
PunchInTaskQuery punchInTaskQuery = new PunchInTaskQuery();
|
|
|
punchInTaskQuery.setTaskStatus(ArchiveStatusEnum.ACTIVE);
|
|
|
punchInTaskQuery.setTaskUniqueIds(punchInTaskUniqueIdList);
|
|
|
List<PunchInTask> punchInTasks = punchInTaskService.queryByCondition(punchInTaskQuery);
|
|
|
- if(CollectionUtils.isEmpty(punchInTasks)) {
|
|
|
- log.info("用户:{} 在打卡日期:{} 没有查询到打卡任务", userId, punchInDateStr);
|
|
|
- return;
|
|
|
- }
|
|
|
Map<Long, PunchInTask> punchInTaskMap = punchInTasks.stream().collect(Collectors.toMap(PunchInTask::getTaskUniqueId, Function.identity(), (key1, key2) -> key1));
|
|
|
|
|
|
- // 拓展表
|
|
|
+ // 打卡任务ID
|
|
|
Set<Long> punchInTaskIds = punchInTasks.stream().map(PunchInTask::getId).collect(Collectors.toSet());
|
|
|
+
|
|
|
+ // 获取打卡任务拓展表,打卡任务ID-打卡任务拓展关联
|
|
|
PunchInTaskExtQuery punchInTaskExtQuery = new PunchInTaskExtQuery();
|
|
|
punchInTaskExtQuery.setPunchInTaskIds(punchInTaskIds);
|
|
|
List<PunchInTaskExt> punchInTaskExtList = punchInTaskExtService.queryByCondition(punchInTaskExtQuery);
|
|
|
Map<Long, List<PunchInTaskExt>> punchInTaskExtGroupList = punchInTaskExtList.stream().collect(Collectors.groupingBy(PunchInTaskExt::getPunchInTaskId));
|
|
|
|
|
|
- // 打卡任务周数据统计
|
|
|
+ // 获取打卡任务周数据统计,打卡任务唯一ID-打卡任务周数据统计关联
|
|
|
PunchInStatsWeekQuery punchInStatsWeekQuery = new PunchInStatsWeekQuery();
|
|
|
punchInStatsWeekQuery.setTaskUniqueIds(punchInTaskUniqueIdList);
|
|
|
punchInStatsWeekQuery.setStatsTime(DateUtils.getYearWeek(punchInDate));
|
|
|
List<PunchInStatsWeek> punchInStatsWeekList = punchInStatsWeekService.queryByCondition(punchInStatsWeekQuery);
|
|
|
Map<Long, PunchInStatsWeek> punchInStatsWeekMap = punchInStatsWeekList.stream().collect(Collectors.toMap(PunchInStatsWeek::getTaskUniqueId, Function.identity(), (key1, key2)->key1));
|
|
|
|
|
|
- // 打卡任务月数据统计
|
|
|
+ // 获取打卡任务月数据统计,打卡任务唯一ID-打卡任务月数据统计关联
|
|
|
PunchInStatsMonthQuery punchInStatsMonthQuery = new PunchInStatsMonthQuery();
|
|
|
punchInStatsMonthQuery.setTaskUniqueIds(punchInTaskUniqueIdList);
|
|
|
- punchInStatsMonthQuery.setStatsTime(DateUtils.getYearWeek(punchInDate));
|
|
|
+ punchInStatsMonthQuery.setStatsTime(DateUtils.getYearMonth(punchInDate));
|
|
|
List<PunchInStatsMonth> punchInStatsMonthList = punchInStatsMonthService.queryByCondition(punchInStatsMonthQuery);
|
|
|
Map<Long, PunchInStatsMonth> punchInStatsMonthMap = punchInStatsMonthList.stream().collect(Collectors.toMap(PunchInStatsMonth::getTaskUniqueId, Function.identity(), (key1, key2)->key1));
|
|
|
|
|
|
- // 打卡任务状态
|
|
|
- PunchInStatusQuery punchInStatusQuery = new PunchInStatusQuery();
|
|
|
- punchInStatusQuery.setTaskUniqueIds(punchInTaskUniqueIdList);
|
|
|
- List<PunchInStatus> punchInStatusList = punchInStatusService.queryByCondition(punchInStatusQuery);
|
|
|
- Map<Long, PunchInStatus> punchInStatusMap = punchInStatusList.stream().collect(Collectors.toMap(PunchInStatus::getPunchInTaskUniqueId, Function.identity(), (key1, key2)->key1));
|
|
|
-
|
|
|
- List<PunchInTaskHistory> updatePunchInTaskHistories = punchInTaskHistories.stream().map(punchInTaskHistory -> {
|
|
|
- PunchInTaskHistory updatePunchInTaskHistory = new PunchInTaskHistory();
|
|
|
- updatePunchInTaskHistory.setId(punchInTaskHistory.getId());
|
|
|
- updatePunchInTaskHistory.setPunchInStatus(PunchInStatusEnum.UNDONE);
|
|
|
- // 设置打卡状态
|
|
|
- PunchInTask punchInTask = punchInTaskMap.get(punchInTaskHistory.getPunchInTaskUniqueId());
|
|
|
- PunchInStatusEnum punchInStatusResult = punchInManager.judgePunchInStatusInTask(punchInTask, punchInTaskHistory);
|
|
|
- punchInTaskHistory.setPunchInStatus(punchInStatusResult);
|
|
|
- updatePunchInTaskHistory.setPunchInStatus(punchInStatusResult);
|
|
|
-
|
|
|
- // 计算积分
|
|
|
- List<PunchInTaskExt> tempPunchInTaskExtList = punchInTaskExtGroupList.get(punchInTask.getId());
|
|
|
- PunchInStatsWeek punchInStatsWeek = punchInStatsWeekMap.get(punchInTask.getTaskUniqueId());
|
|
|
- PunchInStatsMonth punchInStatsMonth = punchInStatsMonthMap.get(punchInTask.getTaskUniqueId());
|
|
|
- PunchInStatus punchInStatus = punchInStatusMap.get(punchInTask.getTaskUniqueId());
|
|
|
- int taskPoints = settleManager.calculatePointsInTask(punchInTask, tempPunchInTaskExtList, punchInTaskHistory, punchInStatsWeek, punchInStatsMonth, punchInStatus);
|
|
|
- updatePunchInTaskHistory.setSettlePoints(taskPoints);
|
|
|
-
|
|
|
- // 还有其他的要设置
|
|
|
-
|
|
|
- return updatePunchInTaskHistory;
|
|
|
+ return userIds.stream().map(userId -> {
|
|
|
+ PunchInSettleDto punchInSettleDto = new PunchInSettleDto();
|
|
|
+ punchInSettleDto.setUserId(userId);
|
|
|
+
|
|
|
+ PunchInMultiTask punchInMultiTask = punchInMultiTaskMap.get(userId);
|
|
|
+ punchInSettleDto.setPunchInMultiTask(punchInMultiTask);
|
|
|
+
|
|
|
+ List<PunchInMultiTaskExt> tempPunchInMultiTaskExtList = punchInMultiTaskExtMap.get(punchInMultiTask.getId());
|
|
|
+ punchInSettleDto.setPunchInMultiTaskExtList(tempPunchInMultiTaskExtList);
|
|
|
+
|
|
|
+ PunchInMultiTaskHistory punchInMultiTaskHistory = punchInMultiTaskHistoryMap.get(punchInMultiTask.getMultiTaskUniqueId());
|
|
|
+ punchInSettleDto.setPunchInMultiTaskHistory(punchInMultiTaskHistory);
|
|
|
+
|
|
|
+ List<PunchInStatus> tempPunchInStatusList = punchInStatusMap.get(userId);
|
|
|
+ PunchInStatus punchInStatusInMultiTask = tempPunchInStatusList.stream().filter(v -> Objects.nonNull(v.getPunchInMultiTaskUniqueId())).findFirst().get();
|
|
|
+ punchInSettleDto.setPunchInStatusInMultiTask(punchInStatusInMultiTask);
|
|
|
+
|
|
|
+ List<PunchInMultiTaskRela> tempPunchInMultiTaskRelaList = punchInMultiTaskRelaMap.get(punchInMultiTask.getId());
|
|
|
+ Set<Long> relaContainTaskIdList = tempPunchInMultiTaskRelaList.stream().map(PunchInMultiTaskRela::getPunchInTaskId).collect(Collectors.toSet());
|
|
|
+
|
|
|
+ Map<Long, PunchInStatus> punchInStatusInTaskMap = tempPunchInStatusList.stream().filter(v -> Objects.nonNull(v.getPunchInTaskUniqueId())).collect(Collectors.toMap(PunchInStatus::getPunchInTaskUniqueId, Function.identity(), (key1, key2) -> key1));
|
|
|
+
|
|
|
+ List<PunchInTaskHistory> tempPunchInTaskHistories = punchInTaskHistoryMap.get(userId);
|
|
|
+ List<PunchInTaskDto> punchInTaskDtoList = new ArrayList<>(tempPunchInTaskHistories.size());
|
|
|
+ List<PunchInTaskHistory> relaPunchInTaskHistories = new ArrayList<>(relaContainTaskIdList.size());
|
|
|
+ for (PunchInTaskHistory punchInTaskHistory : tempPunchInTaskHistories) {
|
|
|
+ PunchInTaskDto punchInTaskDto = new PunchInTaskDto();
|
|
|
+ punchInTaskDto.setPunchInTaskHistory(punchInTaskHistory);
|
|
|
+
|
|
|
+ PunchInTask punchInTask = punchInTaskMap.get(punchInTaskHistory.getPunchInTaskUniqueId());
|
|
|
+ punchInTaskDto.setPunchInTask(punchInTask);
|
|
|
+ if (relaContainTaskIdList.contains(punchInTask.getId())) {
|
|
|
+ relaPunchInTaskHistories.add(punchInTaskHistory);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<PunchInTaskExt> tempPunchInTaskExtList = punchInTaskExtGroupList.get(punchInTask.getId());
|
|
|
+ punchInTaskDto.setPunchInTaskExtList(tempPunchInTaskExtList);
|
|
|
+
|
|
|
+ PunchInStatsWeek punchInStatsWeek = punchInStatsWeekMap.get(punchInTask.getTaskUniqueId());
|
|
|
+ punchInTaskDto.setPunchInStatsWeek(punchInStatsWeek);
|
|
|
+
|
|
|
+ PunchInStatsMonth punchInStatsMonth = punchInStatsMonthMap.get(punchInTask.getTaskUniqueId());
|
|
|
+ punchInTaskDto.setPunchInStatsMonth(punchInStatsMonth);
|
|
|
+
|
|
|
+ PunchInStatus punchInStatus = punchInStatusInTaskMap.get(punchInTaskHistory.getPunchInTaskUniqueId());
|
|
|
+ punchInTaskDto.setPunchInStatus(punchInStatus);
|
|
|
+
|
|
|
+ punchInTaskDtoList.add(punchInTaskDto);
|
|
|
+ }
|
|
|
+
|
|
|
+ punchInSettleDto.setPunchInTaskDtoList(punchInTaskDtoList);
|
|
|
+ punchInSettleDto.setRelaPunchInTaskHistories(relaPunchInTaskHistories);
|
|
|
+
|
|
|
+ return punchInSettleDto;
|
|
|
}).collect(Collectors.toList());
|
|
|
- punchInTaskHistoryService.batchUpdate(updatePunchInTaskHistories);
|
|
|
- }
|
|
|
|
|
|
+ }
|
|
|
}
|