优化
This commit is contained in:
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user