This commit is contained in:
zt
2025-03-06 14:30:45 +08:00
parent d3add5b113
commit 4570788d5e
24 changed files with 359 additions and 154 deletions

View File

@ -3,6 +3,8 @@ package com.ruoyi.common.util;
import cn.hutool.core.util.StrUtil;
import com.ruoyi.bgt.domain.vo.BgtAttendanceCountVO;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.*;
@ -24,7 +26,7 @@ public class DataUtil {
while (!currentDate.isAfter(endDate)) {
if (!existingDates.contains(currentDate)) {
// 如果当前日期不在已有日期集合中,创建一个新的 BgtAttendanceCountVO 对象并添加到结果列表中
filledList.add(new BgtAttendanceCountVO(0,0,currentDate,0));
filledList.add(new BgtAttendanceCountVO(0,0,currentDate,0,0,0));
}
// 日期递增一天
currentDate = currentDate.plusDays(1);
@ -50,11 +52,21 @@ public class DataUtil {
if (monthMap.containsKey(yearMonth)) {
BgtAttendanceCountVO existingVO = monthMap.get(yearMonth);
existingVO.setReportToDutyNum(existingVO.getReportToDutyNum() + countVO.getReportToDutyNum());
existingVO.setTotalNum(existingVO.getTotalNum()>countVO.getTotalNum()?existingVO.getTotalNum():countVO.getTotalNum());
existingVO.setAbsenceDutyNum(existingVO.getAbsenceDutyNum() + countVO.getTotalNum()-countVO.getReportToDutyNum());
int rate = new BigDecimal(countVO.getReportToDutyNum()).divide(new BigDecimal(countVO.getTotalNum()), 2, RoundingMode.HALF_UP)
.multiply(new BigDecimal(100)).intValue();
existingVO.setRateSum(existingVO.getRateSum()+rate);
existingVO.setRateDay(existingVO.getRateDay()+1);
} else {
// 如果该月份不在 map 中,则创建一个新的 BgtAttendanceCountVO 对象
BgtAttendanceCountVO newVO = new BgtAttendanceCountVO(countVO.getReportToDutyNum(), countVO.getTotalNum(), date.withDayOfMonth(1),0);
BgtAttendanceCountVO newVO = new BgtAttendanceCountVO(countVO.getReportToDutyNum(), countVO.getTotalNum(), date.withDayOfMonth(1),0,0,0);
if(countVO.getTotalNum()>0){
newVO.setAbsenceDutyNum(countVO.getTotalNum()-countVO.getReportToDutyNum());
int rate = new BigDecimal(countVO.getReportToDutyNum()).divide(new BigDecimal(countVO.getTotalNum()), 2, RoundingMode.HALF_UP)
.multiply(new BigDecimal(100)).intValue();
newVO.setRateSum(rate);
newVO.setRateDay(1);
}
monthMap.put(yearMonth, newVO);
}
}
@ -73,7 +85,7 @@ public class DataUtil {
result.add(monthMap.get(currentMonth));
} else {
// 如果该月份没有统计数据,则创建一个新的 BgtAttendanceCountVO 对象,将到岗人数和总人数都设置为 0
BgtAttendanceCountVO emptyVO = new BgtAttendanceCountVO(0, 0, currentMonth.atDay(1),0);
BgtAttendanceCountVO emptyVO = new BgtAttendanceCountVO(0, 0, currentMonth.atDay(1),0,0,0);
result.add(emptyVO);
}
}