餐厅费导出调整, 请假时间计算调整

This commit is contained in:
andy 2025-12-13 16:18:33 +08:00
parent a2c63d09f1
commit 40a4f2cc5d
2 changed files with 79 additions and 31 deletions

View File

@ -207,7 +207,7 @@ public class RzLeaveDetailServiceImpl extends ServiceImpl<RzLeaveDetailMapper, R
newRzLeaveDetail.setLeaveEndTime(endDay);
extensionMap.put("month"+m.format(firsDay), ym.format(firsDay));
//如果只请1天, 则按照录入的时间计算, 如果
extensionMap.put("hours"+m.format(firsDay), calculationLeaveHour(newRzLeaveDetail).getLeaveHour());
extensionMap.put("hours"+m.format(firsDay), leaveHour(newRzLeaveDetail).getLeaveHour());
}
}
@ -358,38 +358,77 @@ public class RzLeaveDetailServiceImpl extends ServiceImpl<RzLeaveDetailMapper, R
rzLeaveDetail.setLeaveEndTime(DateUtils.addDays(beginDate, endDays));
rzLeaveDetail.setLeaveHour(new BigDecimal(sysDictData.getDictValue()).multiply(Constants.DAY_WORK_HOUR).intValue());
}else{
//不需要计算, 过滤节假日啥的, 只过滤周末就好了
if(rzLeaveDetail.getLeaveStartTime() == null || rzLeaveDetail.getLeaveEndTime() == null){
return rzLeaveDetail;
}
List<String> holidayDates = Collections.emptyList();
//记录所有时间的年, 防止有跨年的情况
List<String> yearList = Collections.emptyList();
while (beginDate.compareTo(rzLeaveDetail.getLeaveEndTime()) <= 0){
String date = sdfd.format(beginDate);
String dateYear = date.substring(0,4);
if(!yearList.contains(dateYear)){
yearList.add(dateYear);
}
holidayDates.add(date);
beginDate = DateUtils.addDays(beginDate,1);
}
//记录最终需要增加多少天
Integer endDays = 0;
for (String year : yearList){
List<String> holidays = Collections.findDuplicatesList(ParamUtils.getHoliddayList(Integer.valueOf(year), 2), holidayDates);
if(Collections.isNotEmpty(holidays)){
rzLeaveDetail.setRemarks("不包含周末");
}
endDays = new BigDecimal(endDays).add(new BigDecimal(holidays.size())).intValue();
}
//计算结束时间和请假时长 此处使用beginDate 而不使用rzLeaveDetail.getLeaveStartTime() 的原因是, 上面获取全部请假日期的时候, 已经处理过时间, 只需要增加公休,法休时间就可以了
rzLeaveDetail.setLeaveHour(new BigDecimal(holidayDates.size()).subtract(new BigDecimal(endDays)).multiply(Constants.DAY_WORK_HOUR).intValue());
rzLeaveDetail = leaveHour(rzLeaveDetail);
// //不需要计算, 过滤节假日啥的, 只过滤周末就好了
// if(rzLeaveDetail.getLeaveStartTime() == null || rzLeaveDetail.getLeaveEndTime() == null){
// return rzLeaveDetail;
// }
//
// List<String> holidayDates = Collections.emptyList();
// //记录所有时间的年, 防止有跨年的情况
// List<String> yearList = Collections.emptyList();
// while (beginDate.compareTo(rzLeaveDetail.getLeaveEndTime()) <= 0){
// String date = sdfd.format(beginDate);
// String dateYear = date.substring(0,4);
// if(!yearList.contains(dateYear)){
// yearList.add(dateYear);
// }
// holidayDates.add(date);
// beginDate = DateUtils.addDays(beginDate,1);
// }
// //记录最终需要增加多少天
// Integer endDays = 0;
// for (String year : yearList){
// List<String> holidays = Collections.findDuplicatesList(ParamUtils.getHoliddayList(Integer.valueOf(year), 2), holidayDates);
// if(Collections.isNotEmpty(holidays)){
// rzLeaveDetail.setRemarks("不包含周末");
// }
// endDays = new BigDecimal(endDays).add(new BigDecimal(holidays.size())).intValue();
// }
// //计算结束时间和请假时长 此处使用beginDate 而不使用rzLeaveDetail.getLeaveStartTime() 的原因是, 上面获取全部请假日期的时候, 已经处理过时间, 只需要增加公休,法休时间就可以了
// rzLeaveDetail.setLeaveHour(new BigDecimal(holidayDates.size()).subtract(new BigDecimal(endDays)).multiply(Constants.DAY_WORK_HOUR).intValue());
}
return rzLeaveDetail;
}
public RzLeaveDetail leaveHour(RzLeaveDetail rzLeaveDetail) {
if(rzLeaveDetail.getType() == null || rzLeaveDetail.getLeaveStartTime() == null){
return rzLeaveDetail;
}
SimpleDateFormat sdfd = new SimpleDateFormat("yyyy-MM-dd");
Date beginDate = rzLeaveDetail.getLeaveStartTime();
//不需要计算, 过滤节假日啥的, 只过滤周末就好了
if(rzLeaveDetail.getLeaveStartTime() == null || rzLeaveDetail.getLeaveEndTime() == null){
return rzLeaveDetail;
}
List<String> holidayDates = Collections.emptyList();
//记录所有时间的年, 防止有跨年的情况
List<String> yearList = Collections.emptyList();
while (beginDate.compareTo(rzLeaveDetail.getLeaveEndTime()) <= 0){
String date = sdfd.format(beginDate);
String dateYear = date.substring(0,4);
if(!yearList.contains(dateYear)){
yearList.add(dateYear);
}
holidayDates.add(date);
beginDate = DateUtils.addDays(beginDate,1);
}
//记录最终需要增加多少天
Integer endDays = 0;
for (String year : yearList){
List<String> holidays = Collections.findDuplicatesList(ParamUtils.getHoliddayList(Integer.valueOf(year), 2), holidayDates);
if(Collections.isNotEmpty(holidays)){
rzLeaveDetail.setRemarks("不包含周末");
}
endDays = new BigDecimal(endDays).add(new BigDecimal(holidays.size())).intValue();
}
//计算结束时间和请假时长 此处使用beginDate 而不使用rzLeaveDetail.getLeaveStartTime() 的原因是, 上面获取全部请假日期的时候, 已经处理过时间, 只需要增加公休,法休时间就可以了
rzLeaveDetail.setLeaveHour(new BigDecimal(holidayDates.size()).subtract(new BigDecimal(endDays)).multiply(Constants.DAY_WORK_HOUR).intValue());
return rzLeaveDetail;
}
}

View File

@ -76,8 +76,17 @@ public class RzMealExpensesServiceImpl extends ServiceImpl<RzMealExpensesMapper,
Map<String,List<MealExpensesExportVo>> companyDataList = excelResult.stream().collect(Collectors.groupingBy(MealExpensesExportVo::getCompanyName));
//公司名字
List<String> sheetCompanyNames = Collections.asList(companyDataList.keySet());
sheetCompanyNames.set(0, "汇总");
// List<String> sheetCompanyNames = Collections.asList(companyDataList.keySet());
List<String> sheetCompanyNames = Collections.asList(companyDataList.keySet()).stream().sorted((x,y) -> {
if(x.equals("河北伊特")){
return -1;
}else if(y.equals("河北伊特")){
return 1;
}else {
return x.compareTo(y);
}
}).collect(Collectors.toList());
sheetCompanyNames.add(0, "汇总");
List<MealExpensesExportVo> indexDataList = Collections.emptyList();