diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerAttendanceServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerAttendanceServiceImpl.java index 46fcaccea..ebb3464c2 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerAttendanceServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerAttendanceServiceImpl.java @@ -1090,6 +1090,47 @@ status 状态码 String 1表示成功;其余表示失败 return rtList; } + @Override + public List queryYearAttendanceTrend(Map map) { + Date today = new Date(); + List attendanceList = workerAttendanceMapper.selectList(new LambdaQueryWrapper() + .eq(WorkerAttendance::getProjectSn, MapUtils.getString(map, "projectSn")) + .ge(WorkerAttendance::getCreateTime, cn.hutool.core.date.DateUtil.beginOfYear(today)) + .le(WorkerAttendance::getCreateTime, cn.hutool.core.date.DateUtil.endOfYear(today)) + ); + Map> timeDateListMap = attendanceList.stream().map(workerAttendance -> { + workerAttendance.setCreateTimeHour(DateUtil.format(DateUtil.parse(workerAttendance.getCreateTime()), "yyyy-MM")); + return workerAttendance; + }).collect(Collectors.groupingBy(WorkerAttendance::getCreateTimeHour)); + ArrayList rtList = new ArrayList<>(); + int month = DateUtil.month(new Date()); + Set inSet = new HashSet<>(); + for (int i = month - 1; i >= 0; i--) { + String format = DateUtil.format(DateUtil.offsetMonth(new Date(), i), "yyyy-MM"); + List workerAttendances = timeDateListMap.get(format); + NumberTimeTableVo vo = new NumberTimeTableVo(); + if (CollUtil.isNotEmpty(workerAttendances)) { + workerAttendances.sort((o1, o2) -> { + if (o1.getCreateTime() == null || o2.getCreateTime() == null) { + return 0; + } + return o1.getCreateTime().compareTo(o2.getCreateTime()); + }); + for (WorkerAttendance workerAttendance : workerAttendances) { + if (Objects.equals(workerAttendance.getPassType(), 1)) { + inSet.add(workerAttendance.getPersonSn()); + } else if (Objects.equals(workerAttendance.getPassType(), 2)) { + inSet.remove(workerAttendance.getPersonSn()); + } + } + } + vo.setNum(Math.max(inSet.size(), 0)); + vo.setTime(format); + rtList.add(vo); + } + return rtList; + } + @Override public List queryAttendanceTrend(Map map) { if (StringUtils.isBlank(MapUtils.getString(map, QUERY_START_TIME)) || StringUtils.isBlank(MapUtils.getString(map, QUERY_END_TIME))) {