From 193e28758cd30221973af4ac50de76c32a91b342 Mon Sep 17 00:00:00 2001 From: sy Date: Mon, 10 Jul 2023 10:26:08 +0800 Subject: [PATCH 01/11] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E8=96=AA=E8=B5=84=E6=A0=B8=E7=AE=97=E3=80=81=E8=96=AA=E8=B5=84?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=E3=80=81=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88?= =?UTF-8?q?=EF=BC=8C=E9=AB=98=E7=BA=A7=E6=90=9C=E7=B4=A2=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=9D=A1=E4=BB=B6=E6=94=B9=E4=B8=BA=E6=95=B0?= =?UTF-8?q?=E7=BB=84=E7=B1=BB=E5=9E=8B=E7=9A=84=E5=85=A5=E5=8F=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SIAccountServiceImpl.java | 76 ++++++++++++++++++- 1 file changed, 75 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index 794b64cbf..4db81131b 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -869,7 +869,20 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { if (insuranceAccountBatchPO == null || Objects.equals(BillStatusEnum.NOT_ARCHIVED.getValue(), insuranceAccountBatchPO.getBillStatus())) { return Lists.newArrayList(); } - List list = queryList(billMonth, taxAgentId, employeeIds); +// List list = queryList(billMonth, taxAgentId, employeeIds); + //20230707增加福利核算明细中的缴纳状态+合计的数据项 + List insuranceAccountDetailPOS = getInsuranceAccountDetailMapper().queryList(billMonth, taxAgentId, employeeIds); + //退差数据不参与薪资核算 + insuranceAccountDetailPOS = insuranceAccountDetailPOS.stream() + .filter(f -> f.getPaymentStatus().equals(PaymentStatusEnum.COMMON.getValue()) + || f.getPaymentStatus().equals(PaymentStatusEnum.REPAIR.getValue()) + || f.getPaymentStatus().equals(PaymentStatusEnum.BALANCE.getValue()) ) + .collect(Collectors.toList()); + List list = buildNewInsuranceDetailPOS(insuranceAccountDetailPOS); + Map siAcctResultWithEmpAndPayStatus = insuranceAccountDetailPOS.stream() + .collect(Collectors.toMap(po -> po.getEmployeeId() + "_" + po.getPaymentStatus(), a -> a, (a, b) -> a)); + + List> result = new ArrayList<>(); list.stream().forEach(item -> { Map record = new HashMap<>(); @@ -921,6 +934,39 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { record.put("otherComSum", item.getOtherComSum()); record.put("perSum", item.getPerSum()); record.put("comSum", item.getComSum()); + + //20230707增加福利核算明细中的缴纳状态+合计的数据项 + InsuranceAccountDetailPO commonSiAcct = siAcctResultWithEmpAndPayStatus.get(item.getEmployeeId() + "_" + PaymentStatusEnum.COMMON.getValue()); + InsuranceAccountDetailPO repairSiAcct = siAcctResultWithEmpAndPayStatus.get(item.getEmployeeId() + "_" + PaymentStatusEnum.REPAIR.getValue()); + InsuranceAccountDetailPO balanceSiAcct = siAcctResultWithEmpAndPayStatus.get(item.getEmployeeId() + "_" + PaymentStatusEnum.BALANCE.getValue()); + record.put("socialPerCommonSum", commonSiAcct != null ? commonSiAcct.getSocialPerSum() : new BigDecimal("0")); + record.put("socialComCommonSum", commonSiAcct != null ? commonSiAcct.getSocialComSum() : new BigDecimal("0")); + record.put("socialPerRepairSum", repairSiAcct != null ? repairSiAcct.getSocialPerSum() : new BigDecimal("0")); + record.put("socialComRepairSum", repairSiAcct != null ? repairSiAcct.getSocialComSum() : new BigDecimal("0")); + record.put("socialPerBalanceSum", balanceSiAcct != null ? balanceSiAcct.getSocialPerSum() : new BigDecimal("0")); + record.put("socialComBalanceSum", balanceSiAcct != null ? balanceSiAcct.getSocialComSum() : new BigDecimal("0")); + + record.put("fundPerCommonSum", commonSiAcct != null ? commonSiAcct.getFundPerSum() : new BigDecimal("0")); + record.put("fundComCommonSum", commonSiAcct != null ? commonSiAcct.getFundComSum() : new BigDecimal("0")); + record.put("fundPerRepairSum", repairSiAcct != null ? repairSiAcct.getFundPerSum() : new BigDecimal("0")); + record.put("fundComRepairSum", repairSiAcct != null ? repairSiAcct.getFundComSum() : new BigDecimal("0")); + record.put("fundPerBalanceSum", balanceSiAcct != null ? balanceSiAcct.getFundPerSum() : new BigDecimal("0")); + record.put("fundComBalanceSum", balanceSiAcct != null ? balanceSiAcct.getFundComSum() : new BigDecimal("0")); + + record.put("otherPerCommonSum", commonSiAcct != null ? commonSiAcct.getOtherPerSum() : new BigDecimal("0")); + record.put("otherComCommonSum", commonSiAcct != null ? commonSiAcct.getOtherComSum() : new BigDecimal("0")); + record.put("otherPerRepairSum", repairSiAcct != null ? repairSiAcct.getOtherPerSum() : new BigDecimal("0")); + record.put("otherComRepairSum", repairSiAcct != null ? repairSiAcct.getOtherComSum() : new BigDecimal("0")); + record.put("otherPerBalanceSum", balanceSiAcct != null ? balanceSiAcct.getOtherPerSum() : new BigDecimal("0")); + record.put("otherComBalanceSum", balanceSiAcct != null ? balanceSiAcct.getOtherComSum() : new BigDecimal("0")); + + record.put("perCommonSum", commonSiAcct != null ? commonSiAcct.getPerSum() : new BigDecimal("0")); + record.put("comCommonSum", commonSiAcct != null ? commonSiAcct.getComSum() : new BigDecimal("0")); + record.put("perRepairSum", repairSiAcct != null ? repairSiAcct.getPerSum() : new BigDecimal("0")); + record.put("comRepairSum", repairSiAcct != null ? repairSiAcct.getComSum() : new BigDecimal("0")); + record.put("perBalanceSum", balanceSiAcct != null ? balanceSiAcct.getPerSum() : new BigDecimal("0")); + record.put("comBalanceSum", balanceSiAcct != null ? balanceSiAcct.getComSum() : new BigDecimal("0")); + result.add(record); }); return result; @@ -939,6 +985,20 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { result.put(SalaryI18nUtil.getI18nLabel(100388, "社保个人合计"), "socialPerSum"); result.put(SalaryI18nUtil.getI18nLabel(100390, "公积金个人合计"), "fundPerSum"); result.put(SalaryI18nUtil.getI18nLabel(100392, "其他福利个人合计"), "otherPerSum"); + + result.put(SalaryI18nUtil.getI18nLabel(0, "个人正常缴纳合计"), "perCommonSum"); + result.put(SalaryI18nUtil.getI18nLabel(0, "社保个人正常缴纳合计"), "socialPerCommonSum"); + result.put(SalaryI18nUtil.getI18nLabel(0, "公积金个人正常缴纳合计"), "fundPerCommonSum"); + result.put(SalaryI18nUtil.getI18nLabel(0, "其他福利个人正常缴纳合计"), "otherPerCommonSum"); + result.put(SalaryI18nUtil.getI18nLabel(0, "个人补缴合计"), "perRepairSum"); + result.put(SalaryI18nUtil.getI18nLabel(0, "社保个人补缴合计"), "socialPerRepairSum"); + result.put(SalaryI18nUtil.getI18nLabel(0, "公积金个人补缴合计"), "fundPerRepairSum"); + result.put(SalaryI18nUtil.getI18nLabel(0, "其他福利个人补缴合计"), "otherPerRepairSum"); + result.put(SalaryI18nUtil.getI18nLabel(0, "个人补差合计"), "perBalanceSum"); + result.put(SalaryI18nUtil.getI18nLabel(0, "社保个人补差合计"), "socialPerBalanceSum"); + result.put(SalaryI18nUtil.getI18nLabel(0, "公积金个人补差合计"), "fundPerBalanceSum"); + result.put(SalaryI18nUtil.getI18nLabel(0, "其他福利个人补差合计"), "otherPerBalanceSum"); + Map categoryIdNameMap = getSICategoryService(user).categoryIdNameMap(); list.stream().forEach(item -> { if (Objects.equals(WelfareTypeEnum.SOCIAL_SECURITY.getValue(), item.getWelfareType())) { @@ -955,6 +1015,20 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { result.put(SalaryI18nUtil.getI18nLabel(100394, "社保单位合计"), "socialComSum"); result.put(SalaryI18nUtil.getI18nLabel(100395, "公积金单位合计"), "fundComSum"); result.put(SalaryI18nUtil.getI18nLabel(100396, "其他福利单位合计"), "otherComSum"); + + result.put(SalaryI18nUtil.getI18nLabel(0, "单位正常缴纳合计"), "comCommonSum"); + result.put(SalaryI18nUtil.getI18nLabel(0, "社保单位正常缴纳合计"), "socialComCommonSum"); + result.put(SalaryI18nUtil.getI18nLabel(0, "公积金单位正常缴纳合计"), "fundComCommonSum"); + result.put(SalaryI18nUtil.getI18nLabel(0, "其他福利单位正常缴纳合计"), "otherComCommonSum"); + result.put(SalaryI18nUtil.getI18nLabel(0, "单位补缴合计"), "comRepairSum"); + result.put(SalaryI18nUtil.getI18nLabel(0, "社保单位补缴合计"), "socialComRepairSum"); + result.put(SalaryI18nUtil.getI18nLabel(0, "公积金单位补缴合计"), "fundComRepairSum"); + result.put(SalaryI18nUtil.getI18nLabel(0, "其他福利单位补缴合计"), "otherComRepairSum"); + result.put(SalaryI18nUtil.getI18nLabel(0, "单位补差合计"), "comBalanceSum"); + result.put(SalaryI18nUtil.getI18nLabel(0, "社保单位补差合计"), "socialComBalanceSum"); + result.put(SalaryI18nUtil.getI18nLabel(0, "公积金单位补差合计"), "fundComBalanceSum"); + result.put(SalaryI18nUtil.getI18nLabel(0, "其他福利单位补差合计"), "otherComBalanceSum"); + list.stream().forEach(item -> { if (Objects.equals(WelfareTypeEnum.SOCIAL_SECURITY.getValue(), item.getWelfareType())) { result.put(categoryIdNameMap.get(String.valueOf(item.getId())) + SalaryI18nUtil.getI18nLabel(100289, "单位"), item.getId() + "socialCom"); From 47dc9e35bd8b1178eb90c5305af2b1173287585e Mon Sep 17 00:00:00 2001 From: sy Date: Tue, 11 Jul 2023 17:56:45 +0800 Subject: [PATCH 02/11] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=8F=B0=E8=B4=A6=EF=BC=8C=E5=B7=B2=E5=BD=92?= =?UTF-8?q?=E6=A1=A3=E7=8A=B6=E6=80=81=E4=B8=8B=E9=87=8D=E6=96=B0=E6=A0=B8?= =?UTF-8?q?=E7=AE=97=E6=8C=89=E9=92=AE=E5=A2=9E=E5=8A=A0=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E8=A2=AB=E8=96=AA=E8=B5=84=E6=A0=B8=E7=AE=97=E5=BC=95=E7=94=A8?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SIAccountBiz.java | 23 ++++++++++++++++--- .../siaccount/bo/InsuranceAccountBO.java | 4 ++-- .../siaccount/dto/SIAccountUtilDTO.java | 10 ++++++++ .../mapper/siaccount/SIAccountUtilMapper.xml | 2 +- .../service/impl/SIAccountServiceImpl.java | 10 ++++---- 5 files changed, 38 insertions(+), 11 deletions(-) diff --git a/src/com/engine/salary/biz/SIAccountBiz.java b/src/com/engine/salary/biz/SIAccountBiz.java index 96b6d0e0d..4d0bdbcd3 100644 --- a/src/com/engine/salary/biz/SIAccountBiz.java +++ b/src/com/engine/salary/biz/SIAccountBiz.java @@ -59,6 +59,7 @@ import org.springframework.beans.BeanUtils; import weaver.hrm.User; import java.math.BigDecimal; +import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -1197,6 +1198,14 @@ public class SIAccountBiz extends Service { InsuranceAccountBatchPO insuranceAccountBatchPO = getInsuranceAccountBatchMapper().getByBillMonth(param.getBillMonth(), param.getPaymentOrganization()); encryptUtil.decrypt(insuranceAccountBatchPO, InsuranceAccountBatchPO.class); SalaryAssert.notNull(insuranceAccountBatchPO, SalaryI18nUtil.getI18nLabel(84026, "参数错误")); +// if (insuranceAccountBatchPO.getBillStatus().equals(BillStatusEnum.ARCHIVED.getValue())) { +// int num = checkIfBusinessaccounting(insuranceAccountBatchPO); +// //表示已经被核算过不能重新核算 +// if (num > 0) { +// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "已被薪酬核算给核算过,无法删除!")); +// } +// } + // if(param.getPaymentOrganization()==null){ // throw new SalaryRunTimeException("个税扣缴义务人为空"); // } @@ -2359,11 +2368,19 @@ public class SIAccountBiz extends Service { */ public int checkIfBusinessaccounting(InsuranceAccountBatchPO param) { List list = getSIAccountUtilMapper().checkIfBusinessaccounting(param.getId()); - return (int) list.stream().filter(e -> e.getBillmonth().equals(e.getTaxcycle().substring(0, 7))).count(); - - + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); + return (int) list.stream().filter( f -> { + String billMonthBySob = sdf.format(convertSalaryMonthToBillMonth(f.getSalaryMonth(), f.getSocialSecurityCycleType())); + return f.getBillmonth().equals(billMonthBySob.substring(0, 7)); + }).count(); } + public Date convertSalaryMonthToBillMonth(Date salaryMonth, Integer socialSecurityCycleType) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(salaryMonth); + calendar.add(Calendar.MONTH, socialSecurityCycleType - 3); + return calendar.getTime(); + } /** * 更新薪资台账 * diff --git a/src/com/engine/salary/entity/siaccount/bo/InsuranceAccountBO.java b/src/com/engine/salary/entity/siaccount/bo/InsuranceAccountBO.java index cc31abebf..8aa28ab09 100644 --- a/src/com/engine/salary/entity/siaccount/bo/InsuranceAccountBO.java +++ b/src/com/engine/salary/entity/siaccount/bo/InsuranceAccountBO.java @@ -54,8 +54,8 @@ public class InsuranceAccountBO { .id(e.getId()) .accountant(e.getAccountant()) .billMonth(e.getBillMonth()) - .billStatus(queryLabelId(e.getBillStatus()).getDefaultLabel()) -// .billStatus(e.getBillStatus().toString()) +// .billStatus(queryLabelId(e.getBillStatus()).getDefaultLabel()) + .billStatus(e.getBillStatus().toString()) .fundNum(e.getFundNum()) .fundPay(SalaryEntityUtil.thousandthConvert(e.getFundPay())) .lastTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(e.getUpdateTime())) diff --git a/src/com/engine/salary/entity/siaccount/dto/SIAccountUtilDTO.java b/src/com/engine/salary/entity/siaccount/dto/SIAccountUtilDTO.java index 841753485..63921df3c 100644 --- a/src/com/engine/salary/entity/siaccount/dto/SIAccountUtilDTO.java +++ b/src/com/engine/salary/entity/siaccount/dto/SIAccountUtilDTO.java @@ -6,6 +6,8 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.Date; + @Data @Builder @NoArgsConstructor @@ -23,4 +25,12 @@ public class SIAccountUtilDTO { * 税款所属期 */ private String taxcycle; + /** + * 薪资所属月 + */ + private Date salaryMonth; + /** + * 社保福利所属期。1:上上月、2:上月、3:本月、4:下月 + */ + private Integer socialSecurityCycleType; } diff --git a/src/com/engine/salary/mapper/siaccount/SIAccountUtilMapper.xml b/src/com/engine/salary/mapper/siaccount/SIAccountUtilMapper.xml index 4b559aff3..6d02de0c6 100644 --- a/src/com/engine/salary/mapper/siaccount/SIAccountUtilMapper.xml +++ b/src/com/engine/salary/mapper/siaccount/SIAccountUtilMapper.xml @@ -10,7 +10,7 @@