This commit is contained in:
pengjie 2024-09-03 14:49:28 +08:00
parent 92e1d7edea
commit c6f82c55f8

View File

@ -1090,6 +1090,47 @@ status 状态码 String 1表示成功其余表示失败
return rtList;
}
@Override
public List<NumberTimeTableVo> queryYearAttendanceTrend(Map<String, Object> map) {
Date today = new Date();
List<WorkerAttendance> attendanceList = workerAttendanceMapper.selectList(new LambdaQueryWrapper<WorkerAttendance>()
.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<String, List<WorkerAttendance>> timeDateListMap = attendanceList.stream().map(workerAttendance -> {
workerAttendance.setCreateTimeHour(DateUtil.format(DateUtil.parse(workerAttendance.getCreateTime()), "yyyy-MM"));
return workerAttendance;
}).collect(Collectors.groupingBy(WorkerAttendance::getCreateTimeHour));
ArrayList<NumberTimeTableVo> rtList = new ArrayList<>();
int month = DateUtil.month(new Date());
Set<String> inSet = new HashSet<>();
for (int i = month - 1; i >= 0; i--) {
String format = DateUtil.format(DateUtil.offsetMonth(new Date(), i), "yyyy-MM");
List<WorkerAttendance> 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<NumberTimeTableVo> queryAttendanceTrend(Map<String, Object> map) {
if (StringUtils.isBlank(MapUtils.getString(map, QUERY_START_TIME)) || StringUtils.isBlank(MapUtils.getString(map, QUERY_END_TIME))) {