From e88e24e6de08f6c5f4c5cc8a4abfdf71f88f055b Mon Sep 17 00:00:00 2001 From: lihongjie0209 Date: Thu, 8 Aug 2024 20:33:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=B7=A5=E8=B5=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/EmpSalaryItemService.java | 82 +++++++++++-------- 1 file changed, 48 insertions(+), 34 deletions(-) diff --git a/src/main/java/cn/lihongjie/coal/empSalaryItem/service/EmpSalaryItemService.java b/src/main/java/cn/lihongjie/coal/empSalaryItem/service/EmpSalaryItemService.java index 620e8923..a59d8485 100644 --- a/src/main/java/cn/lihongjie/coal/empSalaryItem/service/EmpSalaryItemService.java +++ b/src/main/java/cn/lihongjie/coal/empSalaryItem/service/EmpSalaryItemService.java @@ -21,6 +21,10 @@ import cn.lihongjie.coal.exception.BizException; import groovy.lang.GroovyClassLoader; import groovy.lang.Script; +import io.vavr.Tuple; +import io.vavr.Tuple2; +import io.vavr.collection.Stream; + import jakarta.persistence.EntityManager; import jakarta.persistence.PersistenceContext; import jakarta.persistence.criteria.CriteriaBuilder; @@ -216,40 +220,44 @@ public class EmpSalaryItemService item.setDependOnSysItem(new ArrayList<>()); // 按照名称长度倒序排序 - enabled.stream() - .sorted( - Comparator.comparing( - x -> x.getName().length(), Comparator.reverseOrder())) - .forEachOrdered( - x -> { - if (StringUtils.isNotEmpty(x.getName()) - && formulaAtomic.get().contains(x.getName())) { - // 刷新依赖关系 - dependOn.add(x.getCode()); - item.getDependOn().add(x.getCode()); - // 把表达式中的名称替换为代码 - formulaAtomic.set( - formulaAtomic - .get() - .replace(x.getName(), "salary." + x.getCode())); + Stream.>ofAll( + enabled.stream().map(x -> Tuple.of(x.getName(), x))) + .appendAll(Stream.ofAll(sysItems.stream().map(x -> Tuple.of(x.getName(), x)))) + .sorted(Comparator.comparing(x -> x._1.length(), Comparator.reverseOrder())) + .forEach( + x -> { + if (StringUtils.isNotEmpty(x._1) + && formulaAtomic.get().contains(x._1)) { + + if (x._2 instanceof EmpSalarySysItemEntity z) { + + // 刷新依赖关系 + dependOn.add(z.getCode()); + item.getDependOnSysItem().add(z.getCode()); + + // 把表达式中的名称替换为代码 + formulaAtomic.set( + formulaAtomic + .get() + .replace(z.getName(), z.getCode())); + } else if (x._2 instanceof EmpSalaryItemEntity y) { + // 刷新依赖关系 + // 刷新依赖关系 + dependOn.add(y.getCode()); + item.getDependOn().add(y.getCode()); + + // 把表达式中的名称替换为代码 + formulaAtomic.set( + formulaAtomic + .get() + .replace( + y.getName(), + "salary." + y.getCode())); + } } }); - sysItems.forEach( - x -> { - if (StringUtils.isNotEmpty(x.getName()) - && formulaAtomic.get().contains(x.getName())) { - // 刷新依赖关系 - dependOn.add(x.getCode()); - item.getDependOnSysItem().add(x.getCode()); - - // 把表达式中的名称替换为代码 - formulaAtomic.set( - formulaAtomic.get().replace(x.getName(), x.getCode())); - } - }); - item.setDependOn(item.getDependOn().stream().distinct().toList()); item.setDependOnSysItem(item.getDependOnSysItem().stream().distinct().toList()); String formula = formulaAtomic.get(); @@ -358,6 +366,14 @@ public class EmpSalaryItemService throw new BizException("工资项目名称重复"); } + checkSysItemName(entity); + + this.repository.save(entity); + this.reSyncAll(entity.getOrganizationId(), null, request.getName()); + return getById(entity.getId()); + } + + private void checkSysItemName(EmpSalaryItemEntity entity) { if (CollectionUtils.isNotEmpty( empSalarySysItemService.findAll( new Specification() { @@ -373,10 +389,6 @@ public class EmpSalaryItemService }))) { throw new BizException("与系统预设项目名称重复, 请换一个名称"); } - - this.repository.save(entity); - this.reSyncAll(entity.getOrganizationId(), null, request.getName()); - return getById(entity.getId()); } private void reSyncAll(String organizationId, String oldName, String newName) { @@ -475,6 +487,8 @@ public class EmpSalaryItemService }); } + checkSysItemName(entity); + this.mapper.updateEntity(entity, request); this.repository.save(entity);