|
|
@@ -46,6 +46,7 @@ import com.punchsettle.server.constant.VersionStatusEnum;
|
|
|
import com.punchsettle.server.pojo.punchIn.PiTaskHistoryQuery;
|
|
|
import com.punchsettle.server.pojo.punchIn.PiTaskHistorySimpleVO;
|
|
|
import com.punchsettle.server.pojo.punchIn.PiTaskHistoryStatVO;
|
|
|
+import com.punchsettle.server.pojo.punchIn.PiTaskHistoryVO;
|
|
|
import com.punchsettle.server.pojo.punchIn.PiTaskQuery;
|
|
|
import com.punchsettle.server.pojo.punchIn.PiTaskRequest;
|
|
|
import com.punchsettle.server.pojo.punchIn.PiTaskSimpleVO;
|
|
|
@@ -53,10 +54,12 @@ import com.punchsettle.server.pojo.punchIn.PiTaskStatQuery;
|
|
|
import com.punchsettle.server.pojo.punchIn.PiTaskStatVO;
|
|
|
import com.punchsettle.server.pojo.punchIn.PiTaskToDoVO;
|
|
|
import com.punchsettle.server.pojo.punchIn.PiTaskVO;
|
|
|
+import com.punchsettle.server.pojo.punchIn.PunchInHistoryVO;
|
|
|
import com.punchsettle.server.pojo.punchIn.PunchInRequest;
|
|
|
import com.punchsettle.server.pojo.stat.StatPiTaskQuery;
|
|
|
import com.punchsettle.server.pojo.ucharts.LineSeriesVO;
|
|
|
import com.punchsettle.server.pojo.ucharts.LineVO;
|
|
|
+import com.punchsettle.server.pojo.uniapp.CalendarSelectedVO;
|
|
|
import com.punchsettle.server.service.manager.ICacheManager;
|
|
|
import com.punchsettle.server.service.manager.ICalendarManager;
|
|
|
import com.punchsettle.server.service.manager.IPunchInCoreManager;
|
|
|
@@ -636,23 +639,70 @@ public class PunchInManagerImpl implements IPunchInManager {
|
|
|
|
|
|
@Override
|
|
|
@Cacheable(cacheNames = CacheNameConstant.TASK_PUNCH_IN_HISTORY, key = "T(com.punchsettle.server.utiis.UserUtils).getCurrentUserId()+'_'+#punchInDate", condition = "#punchInDate != null && !#punchInDate.isBlank()")
|
|
|
- public List<PiTaskHistoryStatVO> queryPunchInHistory(String punchInDate) {
|
|
|
+ public PunchInHistoryVO queryPunchInHistory(String punchInDate) {
|
|
|
Assert.isNullInBusiness(punchInDate, "打卡日期不能为空");
|
|
|
|
|
|
// 查询打卡记录
|
|
|
PiTaskHistoryQuery piTaskHistoryQuery = new PiTaskHistoryQuery();
|
|
|
piTaskHistoryQuery.setUserIds(Arrays.asList(UserUtils.getCurrentUserId()));
|
|
|
- piTaskHistoryQuery.setPunchInDate(punchInDate);
|
|
|
+ piTaskHistoryQuery.setPunchInDateLike(punchInDate.substring(0, 7));
|
|
|
List<PiTaskHistory> piTaskHistories = piTaskHistoryService.queryByCondition(piTaskHistoryQuery);
|
|
|
+
|
|
|
+ // 打卡数据直接返回
|
|
|
if (CollectionUtils.isEmpty(piTaskHistories)) {
|
|
|
- return List.of();
|
|
|
+ return new PunchInHistoryVO();
|
|
|
}
|
|
|
|
|
|
- return piTaskHistories.stream().map(piTaskHistory -> {
|
|
|
- PiTaskHistoryStatVO piTaskHistoryStatVO = new PiTaskHistoryStatVO();
|
|
|
- BeanUtils.copyProperties(piTaskHistory, piTaskHistoryStatVO);
|
|
|
- return piTaskHistoryStatVO;
|
|
|
+ // 打卡日期 - 打卡记录关联
|
|
|
+ Map<String, List<PiTaskHistory>> piTaskHistoryMap = piTaskHistories.stream().collect(Collectors.groupingBy(PiTaskHistory::getPunchInDate));
|
|
|
+
|
|
|
+ PunchInHistoryVO punchInHistoryVO = new PunchInHistoryVO();
|
|
|
+
|
|
|
+ // 日历打点信息
|
|
|
+ List<CalendarSelectedVO> calendarSelectedVOS = piTaskHistoryMap.keySet().stream().map(tempPunchInDate -> {
|
|
|
+ // 获取打卡记录
|
|
|
+ List<PiTaskHistory> tempPiTaskHistories = piTaskHistoryMap.get(tempPunchInDate);
|
|
|
+ // 打卡完成数
|
|
|
+ long punchInDoneCount = tempPiTaskHistories.stream().filter(piTaskHistory -> PunchInResultEnum.DONE.equals(piTaskHistory.getPunchInResult())).count();
|
|
|
+
|
|
|
+ CalendarSelectedVO calendarSelectedVO = new CalendarSelectedVO();
|
|
|
+ calendarSelectedVO.setDate(tempPunchInDate);
|
|
|
+ calendarSelectedVO.setInfo(String.valueOf(punchInDoneCount));
|
|
|
+ return calendarSelectedVO;
|
|
|
+ }).toList();
|
|
|
+ // 设置日历打点信息
|
|
|
+ punchInHistoryVO.setCalendarSelectedVOS(calendarSelectedVOS);
|
|
|
+
|
|
|
+ // 获取任务信息
|
|
|
+ List<PiTaskHistory> tempPiTaskHistories = piTaskHistoryMap.get(punchInDate);
|
|
|
+ // 当天没有直接返回
|
|
|
+ if (CollectionUtils.isEmpty(tempPiTaskHistories)) {
|
|
|
+ return punchInHistoryVO;
|
|
|
+ }
|
|
|
+ Set<Long> taskIds = tempPiTaskHistories.stream().map(PiTaskHistory::getTaskId).collect(Collectors.toSet());
|
|
|
+ PiTaskQuery piTaskQuery = new PiTaskQuery();
|
|
|
+ piTaskQuery.setIds(taskIds);
|
|
|
+ List<PiTask> piTasks = piTaskService.queryByCondition(piTaskQuery);
|
|
|
+ // 任务ID - 任务信息
|
|
|
+ Map<Long, PiTask> piTaskMap = piTasks.stream().collect(Collectors.toMap(PiTask::getId, Function.identity(), (key1, key2) -> key1));
|
|
|
+ // 打卡记录
|
|
|
+ List<PiTaskHistoryVO> piTaskHistoryVOS = tempPiTaskHistories.stream().map(piTaskHistory -> {
|
|
|
+ PiTask piTask = piTaskMap.get(piTaskHistory.getTaskId());
|
|
|
+
|
|
|
+ PiTaskHistoryVO piTaskHistoryVO = new PiTaskHistoryVO();
|
|
|
+ if (Objects.nonNull(piTask)) {
|
|
|
+ piTaskHistoryVO.setTaskName(piTask.getTaskName());
|
|
|
+ piTaskHistoryVO.setPunchInMethod(piTask.getPunchInMethod());
|
|
|
+ }
|
|
|
+ piTaskHistoryVO.setTimeTrack(piTaskHistory.getTimeTrack());
|
|
|
+ piTaskHistoryVO.setCountTrack(piTaskHistory.getCountTrack());
|
|
|
+ piTaskHistoryVO.setPunchInResult(piTaskHistory.getPunchInResult());
|
|
|
+ return piTaskHistoryVO;
|
|
|
}).collect(Collectors.toList());
|
|
|
+ // 设置打卡记录
|
|
|
+ punchInHistoryVO.setPiTaskHistoryVOS(piTaskHistoryVOS);
|
|
|
+
|
|
|
+ return punchInHistoryVO;
|
|
|
}
|
|
|
|
|
|
@Override
|