富士达报表

This commit is contained in:
Harryxzy 2025-08-21 14:24:58 +08:00
parent 73c7ff48b3
commit c08478befb
2 changed files with 55 additions and 44 deletions

View File

@ -6,7 +6,6 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
import java.util.Map;
/**
* @ClassName FsdReportQueryParam
@ -32,5 +31,17 @@ public class FsdReportJSONParam {
private List<FsdReportJSONParam> children;
private Map<String, Object> resultValue;
// private Map<String, Object> resultValue;
private String thisMonthValue;
private String thisYearValue;
private String lastYearValue;
private String thisMonthEmpNums;
private String thisYearAveEmpNums;
private String lastYearAveEmpNums;
private String empNumsCy;
private String valueCy;
}

View File

@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.hrmelog.entity.dto.LoggerContext;
@ -1117,11 +1118,11 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
List<SalaryAcctResultPO> result = new ArrayList<>();
partition.forEach(empIds -> {
SalaryAcctResultPO build = SalaryAcctResultPO.builder().salaryAcctEmpIds(empIds).salaryItemIds(salaryItemIds).build();
result.addAll(getSalaryAcctResultMapper().listSome(build));
List<SalaryAcctResultPO> acctResultList = getSalaryAcctResultMapper().listSome(build);
// 数据解密
encryptUtil.decryptList(acctResultList, SalaryAcctResultPO.class);
result.addAll(acctResultList);
});
// 数据解密
encryptUtil.decryptList(result, SalaryAcctResultPO.class);
return result;
}
@ -1421,17 +1422,13 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
for (FsdReportJSONParam rangeParam : fsdReportJSONParams) {
List<FsdReportJSONParam> childrenParamList = rangeParam.getChildren();
Map<String, Object> valueMap = countFsdReportDTO(lssjMap, rangeParam, totalSalaryAcctEmployeeList, totalAcctResultPOList, itemIds, sumItemIds, ylaogrItemId, yliaogrItemId, gjjgrItemId);
Map<String, Object> resultValueMap = new HashMap<>();
resultValueMap.put("thisMonthEmpNums", valueMap.get("empNum"));
resultValueMap.put("thisMonthValue", valueMap.get("value"));
rangeParam.setResultValue(resultValueMap);
rangeParam.setThisMonthEmpNums(Utils.null2String(valueMap.get("empNum")));
rangeParam.setThisMonthValue(Utils.null2String(valueMap.get("value")));
if (!CollectionUtils.isEmpty(childrenParamList)) {
for (FsdReportJSONParam childrenParam : childrenParamList) {
valueMap = countFsdReportDTO(lssjMap, childrenParam, totalSalaryAcctEmployeeList, totalAcctResultPOList, itemIds, sumItemIds, ylaogrItemId, yliaogrItemId, gjjgrItemId);
resultValueMap = new HashMap<>();
resultValueMap.put("thisMonthEmpNums", valueMap.get("empNum"));
resultValueMap.put("thisMonthValue", valueMap.get("value"));
childrenParam.setResultValue(resultValueMap);
childrenParam.setThisMonthEmpNums(Utils.null2String(valueMap.get("empNum")));
childrenParam.setThisMonthValue(Utils.null2String(valueMap.get("value")));
}
}
}
@ -1450,7 +1447,6 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
if (CollectionUtils.isNotEmpty(salaryAcctRecordIds)) {
totalSalaryAcctEmployeeList = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordIds(salaryAcctRecordIds);
}
totalSalaryAcctEmployeeList = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordIds(salaryAcctRecordIds);
totalSalaryAcctEmpIds = totalSalaryAcctEmployeeList.stream().map(SalaryAcctEmployeePO::getId).collect(Collectors.toList());
log.info("salaryReport 本年核算人数{}", totalSalaryAcctEmpIds == null ? 0 : totalSalaryAcctEmpIds.size());
totalAcctResultPOList = listByAcctEmployeeIdsAndSalaryItemIds(totalSalaryAcctEmpIds, itemIds);
@ -1470,21 +1466,17 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
for (FsdReportJSONParam rangeParam : fsdReportJSONParams) {
List<FsdReportJSONParam> childrenParamList = rangeParam.getChildren();
Map<String, Object> valueMap = countFsdReportDTO(lssjMap, rangeParam, totalSalaryAcctEmployeeList, totalAcctResultPOList, itemIds, sumItemIds, ylaogrItemId, yliaogrItemId, gjjgrItemId);
Map<String, Object> resultValueMap = rangeParam.getResultValue();
String avgEmpNums = (NumberUtils.isCreatable(Utils.null2String(valueMap.get("empNum"))) ? new BigDecimal(Utils.null2String(valueMap.get("empNum"))) : new BigDecimal("0"))
.divide(new BigDecimal(monthValue), 2, RoundingMode.HALF_UP).toString();
resultValueMap.put("thisYearAveEmpNums", avgEmpNums);
resultValueMap.put("thisYearValue", valueMap.get("value"));
rangeParam.setResultValue(resultValueMap);
rangeParam.setThisYearAveEmpNums(avgEmpNums);
rangeParam.setThisYearValue(Utils.null2String(valueMap.get("value")));
if (!CollectionUtils.isEmpty(childrenParamList)) {
for (FsdReportJSONParam childrenParam : childrenParamList) {
valueMap = countFsdReportDTO(lssjMap, childrenParam, totalSalaryAcctEmployeeList, totalAcctResultPOList, itemIds, sumItemIds, ylaogrItemId, yliaogrItemId, gjjgrItemId);
resultValueMap = childrenParam.getResultValue();
avgEmpNums = (NumberUtils.isCreatable(Utils.null2String(valueMap.get("empNum"))) ? new BigDecimal(Utils.null2String(valueMap.get("empNum"))) : new BigDecimal("0"))
.divide(new BigDecimal(monthValue), 2, RoundingMode.HALF_UP).toString();
resultValueMap.put("thisYearAveEmpNums", avgEmpNums);
resultValueMap.put("thisYearValue", valueMap.get("value"));
childrenParam.setResultValue(resultValueMap);
childrenParam.setThisYearAveEmpNums(avgEmpNums);
childrenParam.setThisYearValue(Utils.null2String(valueMap.get("value")));
}
}
}
@ -1504,7 +1496,6 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
if (CollectionUtils.isNotEmpty(salaryAcctRecordIds)) {
totalSalaryAcctEmployeeList = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordIds(salaryAcctRecordIds);
}
totalSalaryAcctEmployeeList = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordIds(salaryAcctRecordIds);
totalSalaryAcctEmpIds = totalSalaryAcctEmployeeList.stream().map(SalaryAcctEmployeePO::getId).collect(Collectors.toList());
log.info("salaryReport 去年核算人数{}", totalSalaryAcctEmpIds == null ? 0 : totalSalaryAcctEmpIds.size());
totalAcctResultPOList = listByAcctEmployeeIdsAndSalaryItemIds(totalSalaryAcctEmpIds, itemIds);
@ -1524,34 +1515,31 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
for (FsdReportJSONParam rangeParam : fsdReportJSONParams) {
List<FsdReportJSONParam> childrenParamList = rangeParam.getChildren();
Map<String, Object> valueMap = countFsdReportDTO(lssjMap, rangeParam, totalSalaryAcctEmployeeList, totalAcctResultPOList, itemIds, sumItemIds, ylaogrItemId, yliaogrItemId, gjjgrItemId);
Map<String, Object> resultValueMap = rangeParam.getResultValue();
BigDecimal avgEmpNumsVal = (NumberUtils.isCreatable(Utils.null2String(valueMap.get("empNum"))) ? new BigDecimal(Utils.null2String(valueMap.get("empNum"))) : new BigDecimal("0"))
.divide(new BigDecimal("12"), 2, RoundingMode.HALF_UP);
resultValueMap.put("lastYearAveEmpNums", avgEmpNumsVal.toString());
resultValueMap.put("lastYearValue", valueMap.get("value"));
.divide(new BigDecimal(monthValue), 2, RoundingMode.HALF_UP);
rangeParam.setLastYearAveEmpNums(avgEmpNumsVal.toString());
rangeParam.setLastYearValue(Utils.null2String(valueMap.get("value")));
// 获取今年平均人数和金额
BigDecimal thisYearAveEmpNums = SalaryEntityUtil.string2BigDecimalDefault0(Utils.null2String(resultValueMap.get("thisYearAveEmpNums")));
BigDecimal thisYearValue = SalaryEntityUtil.string2BigDecimalDefault0(Utils.null2String(resultValueMap.get("thisYearValue")));
BigDecimal thisYearAveEmpNums = SalaryEntityUtil.string2BigDecimalDefault0(rangeParam.getThisYearAveEmpNums());
BigDecimal thisYearValue = SalaryEntityUtil.string2BigDecimalDefault0(rangeParam.getThisYearValue());
BigDecimal lastYearValue = SalaryEntityUtil.string2BigDecimalDefault0(Utils.null2String(valueMap.get("value")));
resultValueMap.put("empNumsCy", thisYearAveEmpNums.subtract(avgEmpNumsVal).toString());
resultValueMap.put("valueCy", thisYearValue.subtract(lastYearValue).toString());
rangeParam.setResultValue(resultValueMap);
rangeParam.setEmpNumsCy(thisYearAveEmpNums.subtract(avgEmpNumsVal).toString());
rangeParam.setValueCy(thisYearValue.subtract(lastYearValue).toString());
if ( !CollectionUtils.isEmpty(childrenParamList)) {
for (FsdReportJSONParam childrenParam : childrenParamList) {
valueMap = countFsdReportDTO(lssjMap, childrenParam, totalSalaryAcctEmployeeList, totalAcctResultPOList, itemIds, sumItemIds, ylaogrItemId, yliaogrItemId, gjjgrItemId);
resultValueMap = childrenParam.getResultValue();
avgEmpNumsVal = (NumberUtils.isCreatable(Utils.null2String(valueMap.get("empNum"))) ? new BigDecimal(Utils.null2String(valueMap.get("empNum"))) : new BigDecimal("0"))
.divide(new BigDecimal("12"), 2, RoundingMode.HALF_UP);
resultValueMap.put("lastYearAveEmpNums", avgEmpNumsVal.toString());
resultValueMap.put("lastYearValue", valueMap.get("value"));
.divide(new BigDecimal(monthValue), 2, RoundingMode.HALF_UP);
childrenParam.setLastYearAveEmpNums(avgEmpNumsVal.toString());
childrenParam.setLastYearValue(Utils.null2String(valueMap.get("value")));
// 获取今年平均人数和金额
thisYearAveEmpNums = SalaryEntityUtil.string2BigDecimalDefault0(Utils.null2String(resultValueMap.get("thisYearAveEmpNums")));
thisYearValue = SalaryEntityUtil.string2BigDecimalDefault0(Utils.null2String(resultValueMap.get("thisYearValue")));
thisYearAveEmpNums = SalaryEntityUtil.string2BigDecimalDefault0(Utils.null2String(childrenParam.getThisYearAveEmpNums()));
thisYearValue = SalaryEntityUtil.string2BigDecimalDefault0(Utils.null2String(childrenParam.getThisYearValue()));
lastYearValue = SalaryEntityUtil.string2BigDecimalDefault0(Utils.null2String(valueMap.get("value")));
resultValueMap.put("empNumsCy", thisYearAveEmpNums.subtract(avgEmpNumsVal).toString());
resultValueMap.put("valueCy", thisYearValue.subtract(lastYearValue).toString());
childrenParam.setResultValue(resultValueMap);
childrenParam.setEmpNumsCy(thisYearAveEmpNums.subtract(avgEmpNumsVal).toString());
childrenParam.setValueCy(thisYearValue.subtract(lastYearValue).toString());
}
}
}
@ -1566,8 +1554,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
p.setRule(null);
}
});
String s = JsonUtil.toJsonString(fsdReportJSONParams);
return s;
return JSON.toJSONString(fsdReportJSONParams);
}
private Map<String, Object> countFsdReportDTO(Map<String, List<FsdReportLssjDTO>> lssjMap,FsdReportJSONParam rangeParam, List<SalaryAcctEmployeePO> totalSalaryAcctEmployeeList,
@ -1577,6 +1564,19 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
salaryAcctEmployeeList.addAll(totalSalaryAcctEmployeeList);
FsdReportRuleJSONParam rule = rangeParam.getRule();
// 根据条件过滤核算人员
if (rule == null) {
Map<String, Object> resultMap = new HashMap<>();
List<FsdReportLssjDTO> lssjList = lssjMap.get(rangeParam.getName());
Integer lsEmps = 0;
BigDecimal lsValSum = new BigDecimal("0");
if (CollectionUtils.isNotEmpty(lssjList)) {
lsEmps = lssjList.stream().map(ls -> ls.getDygzrs()).filter(rs -> rs != null).reduce(new Integer("0"), Integer::sum);
lsValSum = lssjList.stream().map(ls -> ls.getDygzze()).filter(val -> val != null).reduce(new BigDecimal("0"), BigDecimal::add);
}
resultMap.put("empNum", lsEmps.toString());
resultMap.put("value", lsValSum.toString());
return resultMap;
}
if (CollectionUtils.isNotEmpty(rule.getSubcomids())) {
salaryAcctEmployeeList = salaryAcctEmployeeList.stream().filter(salaryAcctEmployee -> rule.getSubcomids().contains(salaryAcctEmployee.getSubcompanyId())).collect(Collectors.toList());
}