|
@@ -4,8 +4,6 @@ import com.punchsettle.server.atomic.entity.PiMultiTask;
|
|
|
import com.punchsettle.server.atomic.entity.PiMultiTaskExt;
|
|
import com.punchsettle.server.atomic.entity.PiMultiTaskExt;
|
|
|
import com.punchsettle.server.atomic.entity.PiMultiTaskHistory;
|
|
import com.punchsettle.server.atomic.entity.PiMultiTaskHistory;
|
|
|
import com.punchsettle.server.atomic.entity.PiMultiTaskRela;
|
|
import com.punchsettle.server.atomic.entity.PiMultiTaskRela;
|
|
|
-import com.punchsettle.server.atomic.entity.StatPiTaskMonth;
|
|
|
|
|
-import com.punchsettle.server.atomic.entity.StatPiTaskWeek;
|
|
|
|
|
import com.punchsettle.server.atomic.entity.PiStatus;
|
|
import com.punchsettle.server.atomic.entity.PiStatus;
|
|
|
import com.punchsettle.server.atomic.entity.PiTask;
|
|
import com.punchsettle.server.atomic.entity.PiTask;
|
|
|
import com.punchsettle.server.atomic.entity.PiTaskExt;
|
|
import com.punchsettle.server.atomic.entity.PiTaskExt;
|
|
@@ -21,15 +19,16 @@ import com.punchsettle.server.atomic.service.IPiTaskExtService;
|
|
|
import com.punchsettle.server.atomic.service.IPiTaskHistoryService;
|
|
import com.punchsettle.server.atomic.service.IPiTaskHistoryService;
|
|
|
import com.punchsettle.server.atomic.service.IPiTaskService;
|
|
import com.punchsettle.server.atomic.service.IPiTaskService;
|
|
|
import com.punchsettle.server.constant.ArchiveStatusEnum;
|
|
import com.punchsettle.server.constant.ArchiveStatusEnum;
|
|
|
-import com.punchsettle.server.constant.PunchInStatusEnum;
|
|
|
|
|
|
|
+import com.punchsettle.server.constant.ContinueStageEnum;
|
|
|
|
|
+import com.punchsettle.server.constant.ContinueStatusEnum;
|
|
|
|
|
+import com.punchsettle.server.constant.PunchInResultEnum;
|
|
|
|
|
+import com.punchsettle.server.constant.SettleResultEnum;
|
|
|
import com.punchsettle.server.pojo.punchIn.PiMultiTaskExtQuery;
|
|
import com.punchsettle.server.pojo.punchIn.PiMultiTaskExtQuery;
|
|
|
import com.punchsettle.server.pojo.punchIn.PiMultiTaskHistoryQuery;
|
|
import com.punchsettle.server.pojo.punchIn.PiMultiTaskHistoryQuery;
|
|
|
import com.punchsettle.server.pojo.punchIn.PiMultiTaskQuery;
|
|
import com.punchsettle.server.pojo.punchIn.PiMultiTaskQuery;
|
|
|
-import com.punchsettle.server.pojo.punchIn.PunchInSettleDto;
|
|
|
|
|
-import com.punchsettle.server.pojo.punchIn.PiStatsMonthQuery;
|
|
|
|
|
-import com.punchsettle.server.pojo.punchIn.StatPiTaskWeekQuery;
|
|
|
|
|
|
|
+import com.punchsettle.server.pojo.punchIn.PunchInSettleData;
|
|
|
import com.punchsettle.server.pojo.punchIn.PiStatusQuery;
|
|
import com.punchsettle.server.pojo.punchIn.PiStatusQuery;
|
|
|
-import com.punchsettle.server.pojo.punchIn.PiTaskDto;
|
|
|
|
|
|
|
+import com.punchsettle.server.pojo.punchIn.PiTaskData;
|
|
|
import com.punchsettle.server.pojo.punchIn.PiTaskExtQuery;
|
|
import com.punchsettle.server.pojo.punchIn.PiTaskExtQuery;
|
|
|
import com.punchsettle.server.pojo.punchIn.PiTaskHistoryQuery;
|
|
import com.punchsettle.server.pojo.punchIn.PiTaskHistoryQuery;
|
|
|
import com.punchsettle.server.pojo.punchIn.PiTaskQuery;
|
|
import com.punchsettle.server.pojo.punchIn.PiTaskQuery;
|
|
@@ -41,11 +40,14 @@ import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
|
|
|
|
+import javax.swing.text.html.Option;
|
|
|
|
|
+import java.time.DayOfWeek;
|
|
|
import java.time.LocalDate;
|
|
import java.time.LocalDate;
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
import java.util.Objects;
|
|
import java.util.Objects;
|
|
|
|
|
+import java.util.Optional;
|
|
|
import java.util.Set;
|
|
import java.util.Set;
|
|
|
import java.util.function.Function;
|
|
import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
@@ -131,33 +133,127 @@ public class PunchInCoreTask {
|
|
|
private ICalendarManager calendarManager;
|
|
private ICalendarManager calendarManager;
|
|
|
|
|
|
|
|
public void manual(List<Long> userIds, String punchInDateStr) {
|
|
public void manual(List<Long> userIds, String punchInDateStr) {
|
|
|
- List<PunchInSettleDto> punchInSettleData = getPunchInSettleData(userIds, punchInDateStr);
|
|
|
|
|
|
|
+ List<PunchInSettleData> punchInSettleData = getPunchInSettleData(userIds, punchInDateStr);
|
|
|
|
|
+
|
|
|
|
|
+ // 打卡日期
|
|
|
|
|
+ LocalDate punchInDate = LocalDate.parse(punchInDateStr);
|
|
|
|
|
+ // 是否周一
|
|
|
|
|
+ boolean isMonday = DayOfWeek.MONDAY.equals(punchInDate.getDayOfWeek());
|
|
|
|
|
+ // 是否周日
|
|
|
|
|
+ boolean isSunday = DayOfWeek.SUNDAY.equals(punchInDate.getDayOfWeek());
|
|
|
|
|
+ // 是否打卡所在月第一天
|
|
|
|
|
+ boolean isFirstDayOfMonth = punchInDate.getDayOfMonth() == 1;
|
|
|
|
|
+ // 是否打卡所在月最后一天
|
|
|
|
|
+ boolean isLastDayOfMonth = punchInDate.getDayOfMonth() == punchInDate.lengthOfMonth();
|
|
|
|
|
|
|
|
List<PiTaskHistory> updatePunchInTaskHistories = new ArrayList<>(punchInSettleData.size());
|
|
List<PiTaskHistory> updatePunchInTaskHistories = new ArrayList<>(punchInSettleData.size());
|
|
|
List<PiMultiTaskHistory> updatePunchInMultiTaskHistories = new ArrayList<>(punchInSettleData.size());
|
|
List<PiMultiTaskHistory> updatePunchInMultiTaskHistories = new ArrayList<>(punchInSettleData.size());
|
|
|
- for (PunchInSettleDto punchInSettle : punchInSettleData) {
|
|
|
|
|
|
|
+ for (PunchInSettleData punchInSettle : punchInSettleData) {
|
|
|
// 单任务处理部分
|
|
// 单任务处理部分
|
|
|
- for (PiTaskDto piTaskDto : punchInSettle.getPiTaskDtoList()) {
|
|
|
|
|
|
|
+ for (PiTaskData piTaskData : punchInSettle.getPiTaskDataList()) {
|
|
|
|
|
+ PiTask piTask = piTaskData.getPiTask();
|
|
|
|
|
+ PiTaskHistory piTaskHistory = piTaskData.getPiTaskHistory();
|
|
|
|
|
+ PiStatus piStatus = piTaskData.getPiStatus();
|
|
|
|
|
+ List<PiTaskExt> piTaskExtList = piTaskData.getPiTaskExtList();
|
|
|
|
|
+
|
|
|
PiTaskHistory updatePiTaskHistory = new PiTaskHistory();
|
|
PiTaskHistory updatePiTaskHistory = new PiTaskHistory();
|
|
|
- updatePiTaskHistory.setId(piTaskDto.getPiTaskHistory().getId());
|
|
|
|
|
- updatePiTaskHistory.setPunchInStatus(PunchInStatusEnum.UNDONE);
|
|
|
|
|
|
|
+ updatePiTaskHistory.setId(piTaskHistory.getId());
|
|
|
|
|
+
|
|
|
|
|
+ // 记录当前状态数据
|
|
|
|
|
+ updatePiTaskHistory.setTaskContinueStatus(piStatus.getTaskContinueStatus());
|
|
|
|
|
+ updatePiTaskHistory.setTaskContinueDay(piStatus.getTaskContinueDay());
|
|
|
|
|
+ updatePiTaskHistory.setContinueStage(piStatus.getContinueStage());
|
|
|
|
|
+ updatePiTaskHistory.setStageStartDate(piStatus.getStageStartDate());
|
|
|
|
|
+ updatePiTaskHistory.setStageEndDate(piStatus.getStageEndDate());
|
|
|
|
|
+ updatePiTaskHistory.setContinueInterruptedCount(piStatus.getContinueInterruptedCount());
|
|
|
|
|
+
|
|
|
|
|
+ // 判断打卡结果
|
|
|
|
|
+ PunchInResultEnum punchInResult = punchInManager.judgePunchInResultInTask(piTask, piTaskHistory);
|
|
|
|
|
+ punchInSettle.getPiMultiTaskHistory().setPunchInResult(punchInResult);
|
|
|
|
|
+ updatePiTaskHistory.setPunchInResult(punchInResult);
|
|
|
|
|
+
|
|
|
|
|
+ // 更新状态表数据
|
|
|
|
|
+ piStatus.setStatusDate(punchInDateStr);
|
|
|
|
|
+
|
|
|
|
|
+ // 设置任务连续状态
|
|
|
|
|
+ ContinueStatusEnum oldTaskContinueStatus = piStatus.getTaskContinueStatus();
|
|
|
|
|
+ piStatus.setTaskContinueStatus(punchInResult.equals(PunchInResultEnum.DONE) ? ContinueStatusEnum.CONTINUE : ContinueStatusEnum.INTERRUPTED);
|
|
|
|
|
+ piStatus.setTaskContinueDay(oldTaskContinueStatus.equals(piStatus.getTaskContinueStatus()) ? piStatus.getTaskContinueDay() + 1 : 1);
|
|
|
|
|
+
|
|
|
|
|
+ // 旧的连续阶段
|
|
|
|
|
+ ContinueStageEnum oldContinueStage = piStatus.getContinueStage();
|
|
|
|
|
+ // 判断当前处于的连续阶段
|
|
|
|
|
+ ContinueStageEnum continueStageResult = punchInManager.judgeContinueStageInTask(piTask, piTaskHistory, piStatus, punchInDate);
|
|
|
|
|
+ piStatus.setContinueStage(continueStageResult);
|
|
|
|
|
+ // 下面3种情况不处理:宽限期 变 宽限期;正常打卡期 变 正常打卡期;惩罚期 变 惩罚期;
|
|
|
|
|
+ // 宽限期 变 正常打卡期,则设置阶段开始时间,重置中断次数
|
|
|
|
|
+ if (ContinueStageEnum.GRACE_STAGE.equals(oldContinueStage) && ContinueStageEnum.NORMAL_STAGE.equals(continueStageResult)) {
|
|
|
|
|
+ piStatus.setStageStartDate(punchInDate);
|
|
|
|
|
+ piStatus.setContinueInterruptedCount(0);
|
|
|
|
|
+ }
|
|
|
|
|
+ // 如果正常打卡期 变 惩罚期,则设置阶段开始时间和阶段结束时间,增加中断次数
|
|
|
|
|
+ if (ContinueStageEnum.NORMAL_STAGE.equals(oldContinueStage) && ContinueStageEnum.PENALTY_STAGE.equals(continueStageResult)) {
|
|
|
|
|
+ piStatus.setStageStartDate(punchInDate);
|
|
|
|
|
+ piStatus.setStageEndDate(punchInDate.plusDays(piTask.getPenaltyDay()));
|
|
|
|
|
+ piStatus.setContinueInterruptedCount(piStatus.getContinueInterruptedCount() + 1);
|
|
|
|
|
+ }
|
|
|
|
|
+ // 如果惩罚期 变 正常打卡期,则设置阶段开始时间
|
|
|
|
|
+ if (ContinueStageEnum.PENALTY_STAGE.equals(oldContinueStage) && ContinueStageEnum.NORMAL_STAGE.equals(continueStageResult)) {
|
|
|
|
|
+ piStatus.setStageStartDate(punchInDate);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 周一
|
|
|
|
|
+ if (isMonday) {
|
|
|
|
|
+ String yearWeek = DateUtils.getYearWeek(punchInDate);
|
|
|
|
|
+ piStatus.setStatTimeInWeek(yearWeek);
|
|
|
|
|
+
|
|
|
|
|
+ // TODO 需要考虑中途变换了重复频率的问题,增加一个记录实际值的字段,容错率也会跟着有影响,影响结算
|
|
|
|
|
+ int PunchInTotalCountInWeek = punchInManager.getPunchInTotalCountInWeek(piTask, punchInDateStr);
|
|
|
|
|
+ piStatus.setPunchInTotalCountInWeek(PunchInTotalCountInWeek);
|
|
|
|
|
+
|
|
|
|
|
+ piStatus.setPunchInCountInWeek(0);
|
|
|
|
|
+ piStatus.setPunchInDoneCountInWeek(0);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 打卡日所在月的第一天
|
|
|
|
|
+ if (isFirstDayOfMonth) {
|
|
|
|
|
+ String yearMonth = DateUtils.getYearMonth(punchInDate);
|
|
|
|
|
+ piStatus.setStatTimeInMonth(yearMonth);
|
|
|
|
|
+
|
|
|
|
|
+ // TODO 需要考虑中途变换了重复频率的问题
|
|
|
|
|
+ int PunchInTotalCountInMonth = punchInManager.getPunchInTotalCountInMonth(piTask, punchInDateStr);
|
|
|
|
|
+ piStatus.setPunchInTotalCountInMonth(PunchInTotalCountInMonth);
|
|
|
|
|
+
|
|
|
|
|
+ piStatus.setPunchInCountInMonth(0);
|
|
|
|
|
+ piStatus.setPunchInDoneCountInMonth(0);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- // 判断打卡状态
|
|
|
|
|
- PunchInStatusEnum punchInStatusResult = punchInManager.judgePunchInStatusInTask(piTaskDto.getPiTask(), piTaskDto.getPiTaskHistory());
|
|
|
|
|
- punchInSettle.getPiMultiTaskHistory().setPunchInStatus(punchInStatusResult);
|
|
|
|
|
- updatePiTaskHistory.setPunchInStatus(punchInStatusResult);
|
|
|
|
|
|
|
+ // 存在打卡记录则已打卡数加1
|
|
|
|
|
+ if (Objects.nonNull(piTaskHistory)) {
|
|
|
|
|
+ piStatus.setPunchInCountInWeek(piStatus.getPunchInCountInWeek() + 1);
|
|
|
|
|
+ piStatus.setPunchInCountInMonth(piStatus.getPunchInCountInMonth() + 1);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 完成打卡则完成打卡数记录加一
|
|
|
|
|
+ if (PunchInResultEnum.DONE.equals(punchInResult)) {
|
|
|
|
|
+ piStatus.setPunchInDoneCountInWeek(piStatus.getPunchInDoneCountInWeek() + 1);
|
|
|
|
|
+ piStatus.setPunchInDoneCountInMonth(piStatus.getPunchInDoneCountInMonth() + 1);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // TODO 可以考虑把年数据一起进行统计
|
|
|
|
|
+ // TODO 可以考虑把统计数据一起落表
|
|
|
|
|
|
|
|
- // TODO 要判断并设置结算状态
|
|
|
|
|
// 计算积分
|
|
// 计算积分
|
|
|
- int taskPoints = settleManager.calculatePointsInTask(piTaskDto.getPiTask(), piTaskDto.getPiTaskExtList(),
|
|
|
|
|
- piTaskDto.getPiTaskHistory(), piTaskDto.getStatPiTaskWeek(),
|
|
|
|
|
- piTaskDto.getStatPiTaskMonth(), piTaskDto.getPiStatus());
|
|
|
|
|
- updatePiTaskHistory.setSettlePoints(taskPoints);
|
|
|
|
|
|
|
+ int taskPoints = settleManager.calculatePointsInTask(piTask, piTaskExtList, piTaskHistory, piStatus);
|
|
|
|
|
+ piStatus.setPointsInWeek(piStatus.getPointsInWeek() + taskPoints);
|
|
|
|
|
+ piStatus.setPointsInMonth(piStatus.getPointsInMonth() + taskPoints);
|
|
|
|
|
|
|
|
// TODO 要设置结算任务执行ID
|
|
// TODO 要设置结算任务执行ID
|
|
|
|
|
|
|
|
- // 还有其他的要设置
|
|
|
|
|
- updatePiTaskHistory.setSettleTaskHistoryId(piTaskDto.getPiTask().getId());
|
|
|
|
|
|
|
+ // 打卡记录 更新
|
|
|
|
|
+ updatePiTaskHistory.setSettlePoints(taskPoints);
|
|
|
|
|
+ updatePiTaskHistory.setSettleResult(SettleResultEnum.SETTLED);
|
|
|
|
|
+ updatePiTaskHistory.setSettleTaskHistoryId(piTaskData.getPiTask().getId());
|
|
|
updatePunchInTaskHistories.add(updatePiTaskHistory);
|
|
updatePunchInTaskHistories.add(updatePiTaskHistory);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -165,10 +261,10 @@ public class PunchInCoreTask {
|
|
|
PiMultiTaskHistory updatePiMultiTaskHistory = new PiMultiTaskHistory();
|
|
PiMultiTaskHistory updatePiMultiTaskHistory = new PiMultiTaskHistory();
|
|
|
|
|
|
|
|
// 判断多任务打卡状态并设置
|
|
// 判断多任务打卡状态并设置
|
|
|
- PunchInStatusEnum punchInStatusEnumResult = punchInManager.judgePunchInStatusInMultiTask(punchInSettle.getPiMultiTask(),
|
|
|
|
|
|
|
+ PunchInResultEnum punchInResultEnumResult = punchInManager.judgePunchInResultInMultiTask(punchInSettle.getPiMultiTask(),
|
|
|
punchInSettle.getRelaPunchInTaskHistories());
|
|
punchInSettle.getRelaPunchInTaskHistories());
|
|
|
- punchInSettle.getPiMultiTaskHistory().setPunchInStatus(punchInStatusEnumResult);
|
|
|
|
|
- updatePiMultiTaskHistory.setPunchInStatus(punchInStatusEnumResult);
|
|
|
|
|
|
|
+ punchInSettle.getPiMultiTaskHistory().setPunchInStatus(punchInResultEnumResult);
|
|
|
|
|
+ updatePiMultiTaskHistory.setPunchInStatus(punchInResultEnumResult);
|
|
|
|
|
|
|
|
int multiTaskPoints = settleManager.calculatePointsInMultiTask(punchInSettle.getPiMultiTask(),
|
|
int multiTaskPoints = settleManager.calculatePointsInMultiTask(punchInSettle.getPiMultiTask(),
|
|
|
punchInSettle.getPiMultiTaskExtList(), punchInSettle.getPiMultiTaskHistory(),
|
|
punchInSettle.getPiMultiTaskExtList(), punchInSettle.getPiMultiTaskHistory(),
|
|
@@ -190,7 +286,7 @@ public class PunchInCoreTask {
|
|
|
* @param punchInDateStr 打卡日期
|
|
* @param punchInDateStr 打卡日期
|
|
|
* @return
|
|
* @return
|
|
|
*/
|
|
*/
|
|
|
- private List<PunchInSettleDto> getPunchInSettleData(List<Long> userIds, String punchInDateStr) {
|
|
|
|
|
|
|
+ private List<PunchInSettleData> getPunchInSettleData(List<Long> userIds, String punchInDateStr) {
|
|
|
// 打卡日期
|
|
// 打卡日期
|
|
|
LocalDate punchInDate = LocalDate.parse(punchInDateStr);
|
|
LocalDate punchInDate = LocalDate.parse(punchInDateStr);
|
|
|
|
|
|
|
@@ -229,6 +325,13 @@ public class PunchInCoreTask {
|
|
|
List<PiMultiTaskRela> piMultiTaskRelaList = punchInMultiTaskRelaService.queryByMultiTaskId(multiTaskIds);
|
|
List<PiMultiTaskRela> piMultiTaskRelaList = punchInMultiTaskRelaService.queryByMultiTaskId(multiTaskIds);
|
|
|
Map<Long, List<PiMultiTaskRela>> punchInMultiTaskRelaMap = piMultiTaskRelaList.stream().collect(Collectors.groupingBy(PiMultiTaskRela::getPunchInMultiTaskId));
|
|
Map<Long, List<PiMultiTaskRela>> punchInMultiTaskRelaMap = piMultiTaskRelaList.stream().collect(Collectors.groupingBy(PiMultiTaskRela::getPunchInMultiTaskId));
|
|
|
|
|
|
|
|
|
|
+ // 获取打卡任务信息,打卡任务唯一ID-打卡任务关联
|
|
|
|
|
+ PiTaskQuery piTaskQuery = new PiTaskQuery();
|
|
|
|
|
+ piTaskQuery.setTaskStatus(ArchiveStatusEnum.ACTIVE);
|
|
|
|
|
+ piTaskQuery.setUserIds(userIds);
|
|
|
|
|
+ List<PiTask> piTasks = punchInTaskService.queryByCondition(piTaskQuery);
|
|
|
|
|
+ Map<Long, PiTask> punchInTaskMap = piTasks.stream().collect(Collectors.toMap(PiTask::getUniqueId, Function.identity(), (key1, key2) -> key1));
|
|
|
|
|
+
|
|
|
// 获取打卡记录,用户ID-打卡记录关联
|
|
// 获取打卡记录,用户ID-打卡记录关联
|
|
|
PiTaskHistoryQuery piTaskHistoryQuery = new PiTaskHistoryQuery();
|
|
PiTaskHistoryQuery piTaskHistoryQuery = new PiTaskHistoryQuery();
|
|
|
piTaskHistoryQuery.setPunchInDate(punchInDateStr);
|
|
piTaskHistoryQuery.setPunchInDate(punchInDateStr);
|
|
@@ -236,16 +339,6 @@ public class PunchInCoreTask {
|
|
|
List<PiTaskHistory> punchInTaskHistories = punchInTaskHistoryService.queryByCondition(piTaskHistoryQuery);
|
|
List<PiTaskHistory> punchInTaskHistories = punchInTaskHistoryService.queryByCondition(piTaskHistoryQuery);
|
|
|
Map<Long, List<PiTaskHistory>> punchInTaskHistoryMap = punchInTaskHistories.stream().collect(Collectors.groupingBy(PiTaskHistory::getUserId));
|
|
Map<Long, List<PiTaskHistory>> punchInTaskHistoryMap = punchInTaskHistories.stream().collect(Collectors.groupingBy(PiTaskHistory::getUserId));
|
|
|
|
|
|
|
|
- // 打卡任务唯一ID
|
|
|
|
|
- Set<Long> punchInTaskUniqueIdList = punchInTaskHistories.stream().map(PiTaskHistory::getPunchInTaskUniqueId).collect(Collectors.toSet());
|
|
|
|
|
-
|
|
|
|
|
- // 获取打卡任务信息,打卡任务唯一ID-打卡任务关联
|
|
|
|
|
- PiTaskQuery piTaskQuery = new PiTaskQuery();
|
|
|
|
|
- piTaskQuery.setTaskStatus(ArchiveStatusEnum.ACTIVE);
|
|
|
|
|
- piTaskQuery.setTaskUniqueIds(punchInTaskUniqueIdList);
|
|
|
|
|
- List<PiTask> piTasks = punchInTaskService.queryByCondition(piTaskQuery);
|
|
|
|
|
- Map<Long, PiTask> punchInTaskMap = piTasks.stream().collect(Collectors.toMap(PiTask::getUniqueId, Function.identity(), (key1, key2) -> key1));
|
|
|
|
|
-
|
|
|
|
|
// 打卡任务ID
|
|
// 打卡任务ID
|
|
|
Set<Long> punchInTaskIds = piTasks.stream().map(PiTask::getId).collect(Collectors.toSet());
|
|
Set<Long> punchInTaskIds = piTasks.stream().map(PiTask::getId).collect(Collectors.toSet());
|
|
|
|
|
|
|
@@ -255,75 +348,54 @@ public class PunchInCoreTask {
|
|
|
List<PiTaskExt> piTaskExtList = punchInTaskExtService.queryByCondition(piTaskExtQuery);
|
|
List<PiTaskExt> piTaskExtList = punchInTaskExtService.queryByCondition(piTaskExtQuery);
|
|
|
Map<Long, List<PiTaskExt>> punchInTaskExtGroupList = piTaskExtList.stream().collect(Collectors.groupingBy(PiTaskExt::getPunchInTaskId));
|
|
Map<Long, List<PiTaskExt>> punchInTaskExtGroupList = piTaskExtList.stream().collect(Collectors.groupingBy(PiTaskExt::getPunchInTaskId));
|
|
|
|
|
|
|
|
- // 获取打卡任务周数据统计,打卡任务唯一ID-打卡任务周数据统计关联
|
|
|
|
|
- StatPiTaskWeekQuery statPiTaskWeekQuery = new StatPiTaskWeekQuery();
|
|
|
|
|
- statPiTaskWeekQuery.setTaskUniqueIds(punchInTaskUniqueIdList);
|
|
|
|
|
- statPiTaskWeekQuery.setStatsTime(DateUtils.getYearWeek(punchInDate));
|
|
|
|
|
- List<StatPiTaskWeek> statPiTaskWeekList = punchInStatsWeekService.queryByCondition(statPiTaskWeekQuery);
|
|
|
|
|
- Map<Long, StatPiTaskWeek> punchInStatsWeekMap = statPiTaskWeekList.stream().collect(Collectors.toMap(StatPiTaskWeek::getTaskUniqueId, Function.identity(), (key1, key2)->key1));
|
|
|
|
|
-
|
|
|
|
|
- // 获取打卡任务月数据统计,打卡任务唯一ID-打卡任务月数据统计关联
|
|
|
|
|
- PiStatsMonthQuery piStatsMonthQuery = new PiStatsMonthQuery();
|
|
|
|
|
- piStatsMonthQuery.setTaskUniqueIds(punchInTaskUniqueIdList);
|
|
|
|
|
- piStatsMonthQuery.setStatsTime(DateUtils.getYearMonth(punchInDate));
|
|
|
|
|
- List<StatPiTaskMonth> statPiTaskMonthList = punchInStatsMonthService.queryByCondition(piStatsMonthQuery);
|
|
|
|
|
- Map<Long, StatPiTaskMonth> punchInStatsMonthMap = statPiTaskMonthList.stream().collect(Collectors.toMap(StatPiTaskMonth::getTaskUniqueId, Function.identity(), (key1, key2)->key1));
|
|
|
|
|
-
|
|
|
|
|
return userIds.stream().map(userId -> {
|
|
return userIds.stream().map(userId -> {
|
|
|
- PunchInSettleDto punchInSettleDto = new PunchInSettleDto();
|
|
|
|
|
- punchInSettleDto.setUserId(userId);
|
|
|
|
|
|
|
+ PunchInSettleData punchInSettleData = new PunchInSettleData();
|
|
|
|
|
+ punchInSettleData.setUserId(userId);
|
|
|
|
|
|
|
|
PiMultiTask piMultiTask = punchInMultiTaskMap.get(userId);
|
|
PiMultiTask piMultiTask = punchInMultiTaskMap.get(userId);
|
|
|
- punchInSettleDto.setPiMultiTask(piMultiTask);
|
|
|
|
|
|
|
+ punchInSettleData.setPiMultiTask(piMultiTask);
|
|
|
|
|
|
|
|
List<PiMultiTaskExt> tempPiMultiTaskExtList = punchInMultiTaskExtMap.get(piMultiTask.getId());
|
|
List<PiMultiTaskExt> tempPiMultiTaskExtList = punchInMultiTaskExtMap.get(piMultiTask.getId());
|
|
|
- punchInSettleDto.setPiMultiTaskExtList(tempPiMultiTaskExtList);
|
|
|
|
|
|
|
+ punchInSettleData.setPiMultiTaskExtList(tempPiMultiTaskExtList);
|
|
|
|
|
|
|
|
PiMultiTaskHistory piMultiTaskHistory = punchInMultiTaskHistoryMap.get(piMultiTask.getUniqueId());
|
|
PiMultiTaskHistory piMultiTaskHistory = punchInMultiTaskHistoryMap.get(piMultiTask.getUniqueId());
|
|
|
- punchInSettleDto.setPiMultiTaskHistory(piMultiTaskHistory);
|
|
|
|
|
|
|
+ punchInSettleData.setPiMultiTaskHistory(piMultiTaskHistory);
|
|
|
|
|
|
|
|
List<PiStatus> tempPiStatusList = punchInStatusMap.get(userId);
|
|
List<PiStatus> tempPiStatusList = punchInStatusMap.get(userId);
|
|
|
- PiStatus punchInStatusInMultiTask = tempPiStatusList.stream().filter(v -> Objects.nonNull(v.getPunchInMultiTaskUniqueId())).findFirst().get();
|
|
|
|
|
- punchInSettleDto.setPiMultiTask(punchInStatusInMultiTask);
|
|
|
|
|
|
|
+ PiStatus piStatusInMultiTask = tempPiStatusList.stream().filter(v -> Objects.nonNull(v.getMultiTaskUniqueId())).findFirst().get();
|
|
|
|
|
+ punchInSettleData.setPiStatus(piStatusInMultiTask);
|
|
|
|
|
|
|
|
List<PiMultiTaskRela> tempPiMultiTaskRelaList = punchInMultiTaskRelaMap.get(piMultiTask.getId());
|
|
List<PiMultiTaskRela> tempPiMultiTaskRelaList = punchInMultiTaskRelaMap.get(piMultiTask.getId());
|
|
|
- Set<Long> relaContainTaskIdList = tempPiMultiTaskRelaList.stream().map(PiMultiTaskRela::getPunchInTaskId).collect(Collectors.toSet());
|
|
|
|
|
|
|
+ Set<Long> relaContainTaskIdList = tempPiMultiTaskRelaList.stream().map(PiMultiTaskRela::getTaskId).collect(Collectors.toSet());
|
|
|
|
|
|
|
|
- Map<Long, PiStatus> punchInStatusInTaskMap = tempPiStatusList.stream().filter(v -> Objects.nonNull(v.getPunchInTaskUniqueId())).collect(Collectors.toMap(PiStatus::getPunchInTaskUniqueId, Function.identity(), (key1, key2) -> key1));
|
|
|
|
|
|
|
+ Map<Long, PiStatus> punchInStatusInTaskMap = tempPiStatusList.stream().filter(v -> Objects.nonNull(v.getTaskUniqueId())).collect(Collectors.toMap(PiStatus::getTaskUniqueId, Function.identity(), (key1, key2) -> key1));
|
|
|
|
|
|
|
|
List<PiTaskHistory> tempPunchInTaskHistories = punchInTaskHistoryMap.get(userId);
|
|
List<PiTaskHistory> tempPunchInTaskHistories = punchInTaskHistoryMap.get(userId);
|
|
|
- List<PiTaskDto> piTaskDtoList = new ArrayList<>(tempPunchInTaskHistories.size());
|
|
|
|
|
|
|
+ List<PiTaskData> piTaskDataList = new ArrayList<>(tempPunchInTaskHistories.size());
|
|
|
List<PiTaskHistory> relaPunchInTaskHistories = new ArrayList<>(relaContainTaskIdList.size());
|
|
List<PiTaskHistory> relaPunchInTaskHistories = new ArrayList<>(relaContainTaskIdList.size());
|
|
|
for (PiTaskHistory piTaskHistory : tempPunchInTaskHistories) {
|
|
for (PiTaskHistory piTaskHistory : tempPunchInTaskHistories) {
|
|
|
- PiTaskDto piTaskDto = new PiTaskDto();
|
|
|
|
|
- piTaskDto.setPiTaskHistory(piTaskHistory);
|
|
|
|
|
|
|
+ PiTaskData piTaskData = new PiTaskData();
|
|
|
|
|
+ piTaskData.setPiTaskHistory(piTaskHistory);
|
|
|
|
|
|
|
|
PiTask piTask = punchInTaskMap.get(piTaskHistory.getPunchInTaskUniqueId());
|
|
PiTask piTask = punchInTaskMap.get(piTaskHistory.getPunchInTaskUniqueId());
|
|
|
- piTaskDto.setPiTask(piTask);
|
|
|
|
|
|
|
+ piTaskData.setPiTask(piTask);
|
|
|
if (relaContainTaskIdList.contains(piTask.getId())) {
|
|
if (relaContainTaskIdList.contains(piTask.getId())) {
|
|
|
relaPunchInTaskHistories.add(piTaskHistory);
|
|
relaPunchInTaskHistories.add(piTaskHistory);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
List<PiTaskExt> tempPiTaskExtList = punchInTaskExtGroupList.get(piTask.getId());
|
|
List<PiTaskExt> tempPiTaskExtList = punchInTaskExtGroupList.get(piTask.getId());
|
|
|
- piTaskDto.setPiTaskExtList(tempPiTaskExtList);
|
|
|
|
|
-
|
|
|
|
|
- StatPiTaskWeek statPiTaskWeek = punchInStatsWeekMap.get(piTask.getUniqueId());
|
|
|
|
|
- piTaskDto.setStatPiTaskWeek(statPiTaskWeek);
|
|
|
|
|
-
|
|
|
|
|
- StatPiTaskMonth statPiTaskMonth = punchInStatsMonthMap.get(piTask.getUniqueId());
|
|
|
|
|
- piTaskDto.setStatPiTaskMonth(statPiTaskMonth);
|
|
|
|
|
|
|
+ piTaskData.setPiTaskExtList(tempPiTaskExtList);
|
|
|
|
|
|
|
|
PiStatus piStatus = punchInStatusInTaskMap.get(piTaskHistory.getPunchInTaskUniqueId());
|
|
PiStatus piStatus = punchInStatusInTaskMap.get(piTaskHistory.getPunchInTaskUniqueId());
|
|
|
- piTaskDto.setPiStatus(piStatus);
|
|
|
|
|
|
|
+ piTaskData.setPiStatus(piStatus);
|
|
|
|
|
|
|
|
- piTaskDtoList.add(piTaskDto);
|
|
|
|
|
|
|
+ piTaskDataList.add(piTaskData);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- punchInSettleDto.setPiTaskDtoList(piTaskDtoList);
|
|
|
|
|
- punchInSettleDto.setRelaPunchInTaskHistories(relaPunchInTaskHistories);
|
|
|
|
|
|
|
+ punchInSettleData.setPiTaskDataList(piTaskDataList);
|
|
|
|
|
+ punchInSettleData.setRelaPunchInTaskHistories(relaPunchInTaskHistories);
|
|
|
|
|
|
|
|
- return punchInSettleDto;
|
|
|
|
|
|
|
+ return punchInSettleData;
|
|
|
}).collect(Collectors.toList());
|
|
}).collect(Collectors.toList());
|
|
|
-
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|