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