From 0241eac35c460edf9dae5e24c22740dccc0dd289 Mon Sep 17 00:00:00 2001 From: lihongjie0209 Date: Wed, 14 Aug 2024 21:05:17 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=96=B0=E8=AE=A1=E7=AE=97=E9=A2=84?= =?UTF-8?q?=E8=A7=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/EmpSalaryController.java | 6 ++ .../coal/empSalary/dto/EmpSalaryDto.java | 11 ++++ .../empSalary/entity/EmpSalaryEntity.java | 14 ++++ .../empSalary/service/EmpSalaryService.java | 64 +++++++++++++++---- 4 files changed, 82 insertions(+), 13 deletions(-) diff --git a/src/main/java/cn/lihongjie/coal/empSalary/controller/EmpSalaryController.java b/src/main/java/cn/lihongjie/coal/empSalary/controller/EmpSalaryController.java index feafba77..9e015463 100644 --- a/src/main/java/cn/lihongjie/coal/empSalary/controller/EmpSalaryController.java +++ b/src/main/java/cn/lihongjie/coal/empSalary/controller/EmpSalaryController.java @@ -86,6 +86,12 @@ public class EmpSalaryController { return true; } + @PostMapping("/recalculatePreview") + public Object recalculatePreview(@RequestBody UpdateEmpSalaryDto request) { + this.service.recalculatePreview(request); + return true; + } + @PostMapping("/archive") public Object archive(@RequestBody IdRequest request) { this.service.archive(request); diff --git a/src/main/java/cn/lihongjie/coal/empSalary/dto/EmpSalaryDto.java b/src/main/java/cn/lihongjie/coal/empSalary/dto/EmpSalaryDto.java index b6d7ac21..6115d99e 100644 --- a/src/main/java/cn/lihongjie/coal/empSalary/dto/EmpSalaryDto.java +++ b/src/main/java/cn/lihongjie/coal/empSalary/dto/EmpSalaryDto.java @@ -282,4 +282,15 @@ public class EmpSalaryDto extends OrgCommonDto { @Comment("出生日期") private LocalDate birthday; + + + /** + * 批次数据冗余 + */ + + @Comment("批次年月") + private LocalDate batchYearMonth; + + @Comment("批次号") + private String batchNo; } diff --git a/src/main/java/cn/lihongjie/coal/empSalary/entity/EmpSalaryEntity.java b/src/main/java/cn/lihongjie/coal/empSalary/entity/EmpSalaryEntity.java index 8523f5cd..154e9602 100644 --- a/src/main/java/cn/lihongjie/coal/empSalary/entity/EmpSalaryEntity.java +++ b/src/main/java/cn/lihongjie/coal/empSalary/entity/EmpSalaryEntity.java @@ -277,6 +277,17 @@ public class EmpSalaryEntity extends OrgCommonEntity { @Comment("出生日期") private LocalDate birthday; + + /** + * 批次数据冗余 + */ + + @Comment("批次年月") + private LocalDate batchYearMonth; + + @Comment("批次号") + private String batchNo; + @Comment("归档状态") @ColumnDefault("'0'") private String archiveStatus = "0"; @@ -288,6 +299,9 @@ public class EmpSalaryEntity extends OrgCommonEntity { updateEmpInfo(salaryEntity); updateAttendance(salaryEntity); + + this.batchNo = salaryEntity.batchNo; + this.batchYearMonth = salaryEntity.batchYearMonth; } private void updateAttendance(EmpSalaryEntity salaryEntity) { diff --git a/src/main/java/cn/lihongjie/coal/empSalary/service/EmpSalaryService.java b/src/main/java/cn/lihongjie/coal/empSalary/service/EmpSalaryService.java index 79c56b53..23aa4c4d 100644 --- a/src/main/java/cn/lihongjie/coal/empSalary/service/EmpSalaryService.java +++ b/src/main/java/cn/lihongjie/coal/empSalary/service/EmpSalaryService.java @@ -200,9 +200,54 @@ public class EmpSalaryService extends BaseService ctx = buildCtx(null, null, null, salary); + + // 覆盖工资项目 + + overWriteSalaryItem(ctx, ReflectUtils.toMap(dto)); + + scriptObj.setBinding(new Binding(Map.of("salary", ctx))); + + scriptObj.run(); + + updateItems(ctx, dto); + + return dto; + } + + private void updateItems(Map ctx, UpdateEmpSalaryDto dto) { + + for (String string : ctx.keySet()) { + + if (string.startsWith("item")) { + + Object value = ctx.get(string); + + ReflectUtils.writeField(dto, string, value); + } + } + } + + private void overWriteSalaryItem(Map ctx, Map map) { + + for (String string : map.keySet()) { + + if (string.startsWith("item")) { + ctx.put(string, map.get(string)); + } + } } /** 重新计算 */ @@ -469,6 +514,7 @@ public class EmpSalaryService extends BaseService buildCtx( @@ -618,19 +661,14 @@ public class EmpSalaryService extends BaseService