|
|
@@ -53,6 +53,8 @@ import java.io.FileOutputStream;
|
|
|
import java.io.IOException;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.time.LocalDate;
|
|
|
+import java.time.ZoneId;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@@ -100,6 +102,8 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
private TOrderMidMapper tOrderMidMapper;
|
|
|
@Resource
|
|
|
private AdminPublicReviewerMapper adminPublicReviewerMapper;
|
|
|
+ @Resource
|
|
|
+ private LegalHolidaysMapper legalHolidaysMapper;
|
|
|
|
|
|
|
|
|
|
|
|
@@ -402,6 +406,10 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
public Object detailsListExport(InputDetailsListBo in) {
|
|
|
List<OutExpenseAccountDetailsList> list = (List<OutExpenseAccountDetailsList>) detailsList(in).getList();
|
|
|
for (OutExpenseAccountDetailsList e : list) {
|
|
|
+ //新增计算法定
|
|
|
+ Integer statutoryDays = pushDtailsDays(e);
|
|
|
+ e.setStatutoryDays(statutoryDays);
|
|
|
+
|
|
|
if (e.getTargetType()!=null){
|
|
|
if (e.getTargetType()==0){
|
|
|
e.setTargetName("固定费用");
|
|
|
@@ -432,6 +440,51 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
return excelUtil.exportExcel(list,"费用详细列表",uploadPath);
|
|
|
}
|
|
|
|
|
|
+ private Integer pushDtailsDays(OutExpenseAccountDetailsList e) {
|
|
|
+ Integer statutoryDays = 0;
|
|
|
+ //获取俩个日期之间的所有日期
|
|
|
+ long days = DateUtils.getDaysBetween(e.getReleaseStart(),e.getReleaseEnd());
|
|
|
+ if (days>0){
|
|
|
+ List<LegalHolidays> legalHolidays = legalHolidaysMapper.selectAll();
|
|
|
+ //法定节假日
|
|
|
+ Set<String> holidaysSet = legalHolidays.stream()
|
|
|
+ .filter(et -> et.getStatus() == 1)
|
|
|
+ .map(holiday -> DateUtils.formatDateYYYYMMdd(holiday.getHolidays()))
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+ //需要补班
|
|
|
+ Set<String> workDaysSet = legalHolidays.stream()
|
|
|
+ .filter(et -> et.getStatus() == 2)
|
|
|
+ .map(holiday -> DateUtils.formatDateYYYYMMdd(holiday.getHolidays()))
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
+ LocalDate startDate = LocalDate.from(e.getReleaseStart().toInstant().atZone(ZoneId.systemDefault()));
|
|
|
+
|
|
|
+ for (int i = 0; i <= days; i++) {
|
|
|
+ LocalDate currentDate = startDate.plusDays(i);
|
|
|
+ int dayOfWeek = currentDate.getDayOfWeek().getValue();
|
|
|
+ String dateString = currentDate.format(formatter);
|
|
|
+
|
|
|
+ // 周六(6)和周日(7)默认为节假日
|
|
|
+ if (dayOfWeek > 5) {
|
|
|
+ // 如果是补班日,则不是节假日
|
|
|
+ if (!workDaysSet.contains(dateString)) {
|
|
|
+ statutoryDays++;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 工作日如果是法定节假日,则是节假日
|
|
|
+ if (holidaysSet.contains(dateString)) {
|
|
|
+ statutoryDays++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ return statutoryDays;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
@Override
|
|
|
public Object getDepDetails(Integer id) {
|
|
|
OutExpenseAccount outExpenseAccount = expenseAccountMapper.selectByid(id);
|