From 61cf337bde49c119d89bb1afaf6f03fb741dc5ac Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Fri, 22 Aug 2025 17:14:26 +0800 Subject: [PATCH] =?UTF-8?q?=E8=96=AA=E8=B5=84=E6=A1=A3=E6=A1=88=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=B2=97=E4=BD=8D=EF=BC=8C=E5=8F=8A=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salaryacct/param/FsdReportJSONParam.java | 2 + .../salaryarchive/bo/SalaryArchiveBO.java | 1 + .../dto/SalaryArchiveListDTO.java | 6 ++ .../mapper/archive/SalaryArchiveMapper.xml | 4 + .../impl/SalaryAcctResultServiceImpl.java | 96 ++++++++++++------- .../impl/SalaryArchiveServiceImpl.java | 3 + 6 files changed, 80 insertions(+), 32 deletions(-) diff --git a/src/com/engine/salary/entity/salaryacct/param/FsdReportJSONParam.java b/src/com/engine/salary/entity/salaryacct/param/FsdReportJSONParam.java index 6cb77981a..7f5a5db9d 100644 --- a/src/com/engine/salary/entity/salaryacct/param/FsdReportJSONParam.java +++ b/src/com/engine/salary/entity/salaryacct/param/FsdReportJSONParam.java @@ -29,6 +29,8 @@ public class FsdReportJSONParam { private String type; + private String key; + private List children; // private Map resultValue; diff --git a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveBO.java b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveBO.java index 75b26f972..db0384b5f 100644 --- a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveBO.java +++ b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveBO.java @@ -78,6 +78,7 @@ public class SalaryArchiveBO { columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86184, "个税扣缴义务人"), "taxAgentName")); columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86185, "分部"), "subcompanyName")); columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86185, "部门"), "departmentName")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86185, "岗位"), "jobtitle")); columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86185, "工号"), "workcode")); columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86186, "手机号"), "mobile")); columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86186, "证件号码"), "idNo")); diff --git a/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveListDTO.java b/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveListDTO.java index f25a6f588..89fdd7cbe 100644 --- a/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveListDTO.java +++ b/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveListDTO.java @@ -61,6 +61,12 @@ public class SalaryArchiveListDTO { @I18n private String subcompanyName; + + /** + * 岗位 + */ + @I18n + private String jobtitle; /** * 部门 */ diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml index 17229b2e9..f98a05a6a 100644 --- a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml @@ -104,6 +104,7 @@ ,e.accounttype as accountType , d.departmentname AS departmentName , c.subcompanyname AS subcompanyName + , j.jobtitlename AS jobtitle @@ -116,6 +117,7 @@ LEFT JOIN hrmresource e ON e.id = t.employee_id LEFT JOIN hrmdepartment d ON d.id = e.departmentid LEFT JOIN hrmsubcompany c ON c.id = e.subcompanyid1 + LEFT JOIN hrmjobtitles j on e.jobtitle = j.id WHERE t.delete_type = 0 and (t.employee_type is null or t.employee_type = 0) and e.status not in (7) @@ -220,6 +222,7 @@ LEFT JOIN hrmresource e ON e.id = t.employee_id LEFT JOIN hrmdepartment d ON d.id = e.departmentid LEFT JOIN hrmsubcompany c ON c.id = e.subcompanyid1 + LEFT JOIN hrmjobtitles j on e.jobtitle = j.id WHERE t.delete_type = 0 and (t.employee_type is null or t.employee_type = 0) and e.status not in (7) @@ -321,6 +324,7 @@ LEFT JOIN hrmresource e ON e.id = t.employee_id LEFT JOIN hrmdepartment d ON d.id = e.departmentid LEFT JOIN hrmsubcompany c ON c.id = e.subcompanyid1 + LEFT JOIN hrmjobtitles j on e.jobtitle = j.id WHERE t.delete_type = 0 and (t.employee_type is null or t.employee_type = 0) and e.status not in (7) diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index 4c495f0b2..e3dc1e40b 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -1421,15 +1421,24 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe List fsdReportJSONParams = JsonUtil.parseList(param.getParam(), FsdReportJSONParam.class); for (FsdReportJSONParam rangeParam : fsdReportJSONParams) { List childrenParamList = rangeParam.getChildren(); - Map valueMap = countFsdReportDTO(lssjMap, rangeParam, totalSalaryAcctEmployeeList, totalAcctResultPOList, itemIds, sumItemIds, ylaogrItemId, yliaogrItemId, gjjgrItemId); - rangeParam.setThisMonthEmpNums(Utils.null2String(valueMap.get("empNum"))); - rangeParam.setThisMonthValue(Utils.null2String(valueMap.get("value"))); if (!CollectionUtils.isEmpty(childrenParamList)) { + BigDecimal sumEmpNum = new BigDecimal("0"); + BigDecimal sumValue = new BigDecimal("0"); for (FsdReportJSONParam childrenParam : childrenParamList) { - valueMap = countFsdReportDTO(lssjMap, childrenParam, totalSalaryAcctEmployeeList, totalAcctResultPOList, itemIds, sumItemIds, ylaogrItemId, yliaogrItemId, gjjgrItemId); - childrenParam.setThisMonthEmpNums(Utils.null2String(valueMap.get("empNum"))); - childrenParam.setThisMonthValue(Utils.null2String(valueMap.get("value"))); + MapvalueMap = countFsdReportDTO(lssjMap, childrenParam, totalSalaryAcctEmployeeList, totalAcctResultPOList, itemIds, sumItemIds, ylaogrItemId, yliaogrItemId, gjjgrItemId); + String empNum = Utils.null2String(valueMap.get("empNum")); + String value = Utils.null2String(valueMap.get("value")); + childrenParam.setThisMonthEmpNums(empNum); + childrenParam.setThisMonthValue(value); + sumEmpNum = sumEmpNum.add(SalaryEntityUtil.string2BigDecimalDefault0(empNum)); + sumValue = sumValue.add(SalaryEntityUtil.string2BigDecimalDefault0(value)); } + rangeParam.setThisMonthEmpNums(sumEmpNum.toString()); + rangeParam.setThisMonthValue(sumValue.toString()); + } else { + Map valueMap = countFsdReportDTO(lssjMap, rangeParam, totalSalaryAcctEmployeeList, totalAcctResultPOList, itemIds, sumItemIds, ylaogrItemId, yliaogrItemId, gjjgrItemId); + rangeParam.setThisMonthEmpNums(Utils.null2String(valueMap.get("empNum"))); + rangeParam.setThisMonthValue(Utils.null2String(valueMap.get("value"))); } } @@ -1465,19 +1474,27 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe lssjMap = SalaryEntityUtil.group2Map(lssjList, FsdReportLssjDTO::getLb); for (FsdReportJSONParam rangeParam : fsdReportJSONParams) { List childrenParamList = rangeParam.getChildren(); - Map valueMap = countFsdReportDTO(lssjMap, rangeParam, totalSalaryAcctEmployeeList, totalAcctResultPOList, itemIds, sumItemIds, ylaogrItemId, yliaogrItemId, gjjgrItemId); - 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(); - rangeParam.setThisYearAveEmpNums(avgEmpNums); - rangeParam.setThisYearValue(Utils.null2String(valueMap.get("value"))); if (!CollectionUtils.isEmpty(childrenParamList)) { + BigDecimal sumEmpNums = new BigDecimal("0"); + BigDecimal sumValue = new BigDecimal("0"); for (FsdReportJSONParam childrenParam : childrenParamList) { - valueMap = countFsdReportDTO(lssjMap, childrenParam, totalSalaryAcctEmployeeList, totalAcctResultPOList, itemIds, sumItemIds, ylaogrItemId, yliaogrItemId, gjjgrItemId); - avgEmpNums = (NumberUtils.isCreatable(Utils.null2String(valueMap.get("empNum"))) ? new BigDecimal(Utils.null2String(valueMap.get("empNum"))) : new BigDecimal("0")) + Map valueMap = countFsdReportDTO(lssjMap, childrenParam, totalSalaryAcctEmployeeList, totalAcctResultPOList, itemIds, sumItemIds, ylaogrItemId, yliaogrItemId, gjjgrItemId); + 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(); + String value = Utils.null2String(valueMap.get("value")); childrenParam.setThisYearAveEmpNums(avgEmpNums); - childrenParam.setThisYearValue(Utils.null2String(valueMap.get("value"))); + childrenParam.setThisYearValue(value); + sumEmpNums = sumEmpNums.add(SalaryEntityUtil.string2BigDecimalDefault0(Utils.null2String(valueMap.get("empNum")))); + sumValue = sumValue.add(SalaryEntityUtil.string2BigDecimalDefault0(value)); } + rangeParam.setThisYearAveEmpNums(sumEmpNums.divide(new BigDecimal(monthValue), 2, RoundingMode.HALF_UP).toString()); + rangeParam.setThisYearValue(sumValue.toString()); + } else { + Map valueMap = countFsdReportDTO(lssjMap, rangeParam, totalSalaryAcctEmployeeList, totalAcctResultPOList, itemIds, sumItemIds, ylaogrItemId, yliaogrItemId, gjjgrItemId); + 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(); + rangeParam.setThisYearAveEmpNums(avgEmpNums); + rangeParam.setThisYearValue(Utils.null2String(valueMap.get("value"))); } } @@ -1514,33 +1531,48 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe lssjMap = SalaryEntityUtil.group2Map(lssjList, FsdReportLssjDTO::getLb); for (FsdReportJSONParam rangeParam : fsdReportJSONParams) { List childrenParamList = rangeParam.getChildren(); - Map valueMap = countFsdReportDTO(lssjMap, rangeParam, totalSalaryAcctEmployeeList, totalAcctResultPOList, itemIds, sumItemIds, ylaogrItemId, yliaogrItemId, gjjgrItemId); - BigDecimal avgEmpNumsVal = (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); - rangeParam.setLastYearAveEmpNums(avgEmpNumsVal.toString()); - rangeParam.setLastYearValue(Utils.null2String(valueMap.get("value"))); - - // 获取今年平均人数和金额 - BigDecimal thisYearAveEmpNums = SalaryEntityUtil.string2BigDecimalDefault0(rangeParam.getThisYearAveEmpNums()); - BigDecimal thisYearValue = SalaryEntityUtil.string2BigDecimalDefault0(rangeParam.getThisYearValue()); - BigDecimal lastYearValue = SalaryEntityUtil.string2BigDecimalDefault0(Utils.null2String(valueMap.get("value"))); - rangeParam.setEmpNumsCy(thisYearAveEmpNums.subtract(avgEmpNumsVal).toString()); - rangeParam.setValueCy(thisYearValue.subtract(lastYearValue).toString()); if ( !CollectionUtils.isEmpty(childrenParamList)) { + BigDecimal sumLastYearEmpNums = new BigDecimal("0"); + BigDecimal sumLastYearValue = new BigDecimal("0"); for (FsdReportJSONParam childrenParam : childrenParamList) { - valueMap = countFsdReportDTO(lssjMap, childrenParam, totalSalaryAcctEmployeeList, totalAcctResultPOList, itemIds, sumItemIds, ylaogrItemId, yliaogrItemId, gjjgrItemId); - - avgEmpNumsVal = (NumberUtils.isCreatable(Utils.null2String(valueMap.get("empNum"))) ? new BigDecimal(Utils.null2String(valueMap.get("empNum"))) : new BigDecimal("0")) + Map valueMap = countFsdReportDTO(lssjMap, childrenParam, totalSalaryAcctEmployeeList, totalAcctResultPOList, itemIds, sumItemIds, ylaogrItemId, yliaogrItemId, gjjgrItemId); + BigDecimal avgEmpNumsVal = (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); childrenParam.setLastYearAveEmpNums(avgEmpNumsVal.toString()); childrenParam.setLastYearValue(Utils.null2String(valueMap.get("value"))); // 获取今年平均人数和金额 - thisYearAveEmpNums = SalaryEntityUtil.string2BigDecimalDefault0(Utils.null2String(childrenParam.getThisYearAveEmpNums())); - thisYearValue = SalaryEntityUtil.string2BigDecimalDefault0(Utils.null2String(childrenParam.getThisYearValue())); - lastYearValue = SalaryEntityUtil.string2BigDecimalDefault0(Utils.null2String(valueMap.get("value"))); + BigDecimal thisYearAveEmpNums = SalaryEntityUtil.string2BigDecimalDefault0(Utils.null2String(childrenParam.getThisYearAveEmpNums())); + BigDecimal thisYearValue = SalaryEntityUtil.string2BigDecimalDefault0(Utils.null2String(childrenParam.getThisYearValue())); + BigDecimal lastYearValue = SalaryEntityUtil.string2BigDecimalDefault0(Utils.null2String(valueMap.get("value"))); childrenParam.setEmpNumsCy(thisYearAveEmpNums.subtract(avgEmpNumsVal).toString()); childrenParam.setValueCy(thisYearValue.subtract(lastYearValue).toString()); + + sumLastYearEmpNums = sumLastYearEmpNums.add(SalaryEntityUtil.string2BigDecimalDefault0(Utils.null2String(valueMap.get("empNum")))); + sumLastYearValue = sumLastYearValue.add(SalaryEntityUtil.string2BigDecimalDefault0(Utils.null2String(valueMap.get("value")))); } + BigDecimal lastYearAveEmpNums = sumLastYearEmpNums.divide(new BigDecimal(monthValue), 2, RoundingMode.HALF_UP); + rangeParam.setLastYearAveEmpNums(lastYearAveEmpNums.toString()); + rangeParam.setLastYearValue(sumLastYearValue.toString()); + // 获取今年平均人数和金额 + BigDecimal thisYearAveEmpNums = SalaryEntityUtil.string2BigDecimalDefault0(rangeParam.getThisYearAveEmpNums()); + BigDecimal thisYearValue = SalaryEntityUtil.string2BigDecimalDefault0(rangeParam.getThisYearValue()); + + rangeParam.setEmpNumsCy(thisYearAveEmpNums.subtract(lastYearAveEmpNums).toString()); + rangeParam.setValueCy(thisYearValue.subtract(sumLastYearValue).toString()); + + } else { + Map valueMap = countFsdReportDTO(lssjMap, rangeParam, totalSalaryAcctEmployeeList, totalAcctResultPOList, itemIds, sumItemIds, ylaogrItemId, yliaogrItemId, gjjgrItemId); + BigDecimal avgEmpNumsVal = (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); + rangeParam.setLastYearAveEmpNums(avgEmpNumsVal.toString()); + rangeParam.setLastYearValue(Utils.null2String(valueMap.get("value"))); + + // 获取今年平均人数和金额 + BigDecimal thisYearAveEmpNums = SalaryEntityUtil.string2BigDecimalDefault0(rangeParam.getThisYearAveEmpNums()); + BigDecimal thisYearValue = SalaryEntityUtil.string2BigDecimalDefault0(rangeParam.getThisYearValue()); + BigDecimal lastYearValue = SalaryEntityUtil.string2BigDecimalDefault0(Utils.null2String(valueMap.get("value"))); + rangeParam.setEmpNumsCy(thisYearAveEmpNums.subtract(avgEmpNumsVal).toString()); + rangeParam.setValueCy(thisYearValue.subtract(lastYearValue).toString()); } } fsdReportJSONParams.stream().forEach(p -> { diff --git a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java index 1c11ad7f4..1af85f930 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java @@ -489,6 +489,7 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe map.put("subcompanyName", e.getSubcompanyName()); map.put("departmentName", e.getDepartmentName()); + map.put("jobtitle", e.getJobtitle()); map.put("mobile", e.getMobile()); map.put("workcode", e.getWorkcode()); map.put("idNo", e.getIdNo()); @@ -520,6 +521,7 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe new WeaTableColumnGroup("150px", SalaryI18nUtil.getI18nLabel(85429, "姓名"), "", "", 0), new WeaTableColumnGroup("150px", SalaryI18nUtil.getI18nLabel(86184, "个税扣缴义务人"), "", "", 0), new WeaTableColumnGroup("150px", SalaryI18nUtil.getI18nLabel(86185, "部门"), "", "", 0), + new WeaTableColumnGroup("150px", SalaryI18nUtil.getI18nLabel(86185, "岗位"), "", "", 0), new WeaTableColumnGroup("150px", SalaryI18nUtil.getI18nLabel(86176, "工号"), "", "", 0), new WeaTableColumnGroup("150px", SalaryI18nUtil.getI18nLabel(86186, "手机号"), "", "", 0), new WeaTableColumnGroup("150px", SalaryI18nUtil.getI18nLabel(86186, "证件号码"), "", "", 0), @@ -559,6 +561,7 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe row.add(Util.null2String(e.get("username"))); row.add(Util.null2String(e.get("taxAgentName"))); row.add(Util.null2String(e.get("departmentName"))); + row.add(Util.null2String(e.get("jobtitle"))); row.add(Util.null2String(e.get("workcode"))); row.add(Util.null2String(e.get("mobile"))); row.add(Util.null2String(e.get("idNo")));