From abeb4d891daa14bd7d642fb1377c8f2c23c3fc1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 17 Feb 2023 14:37:59 +0800 Subject: [PATCH] =?UTF-8?q?=E8=96=AA=E8=B5=84=E9=A1=B9=E7=9B=AE=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/SalaryItemService.java | 18 +++- .../service/impl/SalaryItemServiceImpl.java | 99 +++++++++++++++-- .../salary/wrapper/SalaryFieldWrapper.java | 10 +- .../salary/wrapper/SalaryItemWrapper.java | 102 ++---------------- 4 files changed, 117 insertions(+), 112 deletions(-) diff --git a/src/com/engine/salary/service/SalaryItemService.java b/src/com/engine/salary/service/SalaryItemService.java index 4978ba5bb..24cde13d8 100644 --- a/src/com/engine/salary/service/SalaryItemService.java +++ b/src/com/engine/salary/service/SalaryItemService.java @@ -4,6 +4,7 @@ import com.engine.salary.entity.salaryitem.param.SalaryItemSaveParam; import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.enums.SalarySystemTypeEnum; +import com.engine.salary.service.impl.SalaryItemServiceImpl; import com.engine.salary.util.page.PageInfo; import java.util.Collection; @@ -38,7 +39,7 @@ public interface SalaryItemService { /** * 根据主键id获取薪资项目 * - * @param ids 主键id + * @param ids 主键id * @return */ List listByIds(Collection ids); @@ -54,7 +55,7 @@ public interface SalaryItemService { /** * 根据名称精确匹配获取薪资项目 * - * @param name 薪资项目名称 + * @param name 薪资项目名称 * @return */ List listByName(String name); @@ -92,7 +93,7 @@ public interface SalaryItemService { /** * 保存 * - * @param saveParam 保存参数 + * @param saveParam 保存参数 */ void save(SalaryItemSaveParam saveParam); @@ -106,14 +107,21 @@ public interface SalaryItemService { /** * 更新 * - * @param saveParam 更新参数 + * @param saveParam 更新参数 */ void update(SalaryItemSaveParam saveParam); /** * 根据主键id删除薪资项目 * - * @param ids 主键id + * @param ids 主键id */ void deleteByIds(Collection ids); + + /** + * 获取使用中的项目情况 + * + * @return + */ + SalaryItemServiceImpl.UsingItem getUsingItem(); } diff --git a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java index 3a841da5b..5bc03d077 100644 --- a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java @@ -5,24 +5,28 @@ import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.biz.SalaryItemBiz; import com.engine.salary.biz.SysSalaryItemBiz; +import com.engine.salary.entity.salaryformula.po.FormulaVar; import com.engine.salary.entity.salaryitem.bo.SalaryItemBO; import com.engine.salary.entity.salaryitem.param.SalaryItemSaveParam; import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salaryitem.po.SysSalaryItemPO; +import com.engine.salary.entity.salarysob.po.SalarySobBackItemPO; import com.engine.salary.entity.salarysob.po.SalarySobItemPO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.SalarySystemTypeEnum; import com.engine.salary.enums.SalaryValueTypeEnum; import com.engine.salary.enums.sicategory.SharedTypeEnum; import com.engine.salary.exception.SalaryRunTimeException; -import com.engine.salary.service.SalaryItemService; -import com.engine.salary.service.SalarySobItemService; -import com.engine.salary.service.TaxAgentService; +import com.engine.salary.service.*; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.BeanUtils; import weaver.hrm.User; @@ -43,11 +47,24 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService private SalaryItemBiz salaryItemBiz = new SalaryItemBiz(); private SalarySobItemService getSalarySobItemService(User user) { - return (SalarySobItemService) ServiceUtil.getService(SalarySobItemServiceImpl.class, user); + return ServiceUtil.getService(SalarySobItemServiceImpl.class, user); } private TaxAgentService getTaxAgentService(User user) { - return (TaxAgentServiceImpl) ServiceUtil.getService(TaxAgentServiceImpl.class, user); + return ServiceUtil.getService(TaxAgentServiceImpl.class, user); + } + + private SysSalaryItemService getSysSalaryItemService(User user) { + return ServiceUtil.getService(SysSalaryItemServiceImpl.class, user); + } + + private SalaryFormulaService getSalaryFormulaService(User user) { + return ServiceUtil.getService(SalaryFormulaServiceImpl.class, user); + } + + + private SalarySobBackItemService getSalarySobBackItemService(User user) { + return ServiceUtil.getService(SalarySobBackItemServiceImpl.class, user); } @@ -215,16 +232,22 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService @Override public void deleteByIds(Collection ids) { + SalaryItemServiceImpl.UsingItem usingItem = getUsingItem(); + List usingItemIds = usingItem.getUsingItemIds(); + List usingCodes = usingItem.getUsingCodes(); + // 查询薪资项目 List salaryItemPOS = listByIds(ids); if (CollectionUtils.isEmpty(salaryItemPOS)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98299, "参数错误,薪资项目不存在或已被删除")); } - List salarySobItemPOS = getSalarySobItemService(user).listBySalaryItemIds(ids); - if (CollectionUtils.isNotEmpty(salarySobItemPOS)) { + if (CollectionUtils.containsAny(usingItemIds, ids)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98322, "薪资账套正在使用该薪资项目,不允许删除")); } - + List codes = SalaryEntityUtil.properties(salaryItemPOS, SalaryItemPO::getCode, Collectors.toList()); + if (CollectionUtils.containsAny(usingCodes, codes)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98322, "公式正在使用该薪资项目,不允许删除")); + } // 删除薪资项目 @@ -242,4 +265,64 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService // salaryItemLoggerTemplate.write(loggerContext); // }); } + + + /** + * 获取使用中的项目id、项目编码、公式id + * + * @return 项目id、项目编码、公式id + */ + @Override + public UsingItem getUsingItem() { + + //系统项目 + List sysItems = getSysSalaryItemService(user).listAll(); + List sysItemFormulaIds = SalaryEntityUtil.properties(sysItems, SysSalaryItemPO::getFormulaId, Collectors.toList()); + + //薪资项目 + List items = listAll(); + List itemFormulaIds = SalaryEntityUtil.properties(items, SalaryItemPO::getFormulaId, Collectors.toList()); + + //账套项目 + List sobItems = getSalarySobItemService(user).list(); + List sobItemFormulaIds = SalaryEntityUtil.properties(sobItems, SalarySobItemPO::getFormulaId, Collectors.toList()); + + //回算项目 + List backItems = getSalarySobBackItemService(user).listAll(); + List backItemFormulaIds = SalaryEntityUtil.properties(backItems, SalarySobBackItemPO::getFormulaId, Collectors.toList()); + + List usingFormulaIds = new ArrayList<>(); + usingFormulaIds.addAll(sysItemFormulaIds); + usingFormulaIds.addAll(itemFormulaIds); + usingFormulaIds.addAll(sobItemFormulaIds); + usingFormulaIds.addAll(backItemFormulaIds); + + + //账套里的项目,项目里的项目 + List sobItemIds = SalaryEntityUtil.properties(sobItems, SalarySobItemPO::getSalaryItemId, Collectors.toList()); + List backItemIds = SalaryEntityUtil.properties(backItems, SalarySobBackItemPO::getSalaryItemId, Collectors.toList()); + List usingItemIds = new ArrayList<>(); + usingItemIds.addAll(sobItemIds); + usingItemIds.addAll(backItemIds); + + //使用中的code + List formulaVars = getSalaryFormulaService(user).listVarByFormulaIds(usingFormulaIds); + List itemCode = formulaVars.stream().map(FormulaVar::getFieldId).map(v -> v.replaceAll("salaryItem_", "")).collect(Collectors.toList()); + + return UsingItem.builder().usingFormulaIds(usingFormulaIds).usingItemIds(usingItemIds).usingCodes(itemCode).build(); + } + + + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class UsingItem { + private List usingFormulaIds; + + private List usingItemIds; + + private List usingCodes; + + } } diff --git a/src/com/engine/salary/wrapper/SalaryFieldWrapper.java b/src/com/engine/salary/wrapper/SalaryFieldWrapper.java index ebefbe717..e520403fc 100644 --- a/src/com/engine/salary/wrapper/SalaryFieldWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryFieldWrapper.java @@ -46,16 +46,20 @@ import java.util.*; public class SalaryFieldWrapper extends Service { private SalaryItemService getSalaryItemService(User user) { - return (SalaryItemService) ServiceUtil.getService(SalaryItemServiceImpl.class, user); + return ServiceUtil.getService(SalaryItemServiceImpl.class, user); } private SalaryFormulaService getSalaryFormulaService(User user) { - return (SalaryFormulaService) ServiceUtil.getService(SalaryFormulaServiceImpl.class, user); + return ServiceUtil.getService(SalaryFormulaServiceImpl.class, user); } private SalarySobItemService getSalarySobItemService(User user) { - return (SalarySobItemService) ServiceUtil.getService(SalarySobItemServiceImpl.class, user); + return ServiceUtil.getService(SalarySobItemServiceImpl.class, user); + } + + private SalaryItemWrapper getSalaryItemWrapper(User user) { + return ServiceUtil.getService(SalaryItemWrapper.class, user); } /** diff --git a/src/com/engine/salary/wrapper/SalaryItemWrapper.java b/src/com/engine/salary/wrapper/SalaryItemWrapper.java index ab031ac13..13885be86 100644 --- a/src/com/engine/salary/wrapper/SalaryItemWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryItemWrapper.java @@ -4,7 +4,6 @@ import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.component.WeaFormOption; import com.engine.salary.entity.salaryformula.ExpressFormula; -import com.engine.salary.entity.salaryformula.po.FormulaVar; import com.engine.salary.entity.salaryitem.bo.SalaryItemBO; import com.engine.salary.entity.salaryitem.bo.SysSalaryItemBO; import com.engine.salary.entity.salaryitem.dto.SalaryItemFormDTO; @@ -13,7 +12,6 @@ import com.engine.salary.entity.salaryitem.param.SalaryItemSaveParam; import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salaryitem.po.SysSalaryItemPO; -import com.engine.salary.entity.salarysob.po.SalarySobBackItemPO; import com.engine.salary.entity.salarysob.po.SalarySobItemPO; import com.engine.salary.enums.*; import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; @@ -25,14 +23,12 @@ import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.valid.RuntimeTypeEnum; import com.engine.salary.util.valid.ValidUtil; -import lombok.Builder; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.math.NumberUtils; import org.apache.commons.lang3.StringUtils; import weaver.hrm.User; import java.util.*; -import java.util.stream.Collectors; /** * 薪资项目 @@ -72,37 +68,14 @@ public class SalaryItemWrapper extends Service { * @return */ public PageInfo listPage(SalaryItemSearchParam searchParam) { - - //清除未被引用的公式 - List sysItems = getSysSalaryItemService(user).listAll(); - List sysItemFormulaIds = SalaryEntityUtil.properties(sysItems, SysSalaryItemPO::getFormulaId, Collectors.toList()); - List items = getSalaryItemService(user).listAll(); - List itemFormulaIds = SalaryEntityUtil.properties(items, SalaryItemPO::getFormulaId, Collectors.toList()); - List sobItems = getSalarySobItemService(user).list(); - List sobItemFormulaIds = SalaryEntityUtil.properties(sobItems, SalarySobItemPO::getFormulaId, Collectors.toList()); - List backItems = getSalarySobBackItemService(user).listAll(); - List backItemFormulaIds = SalaryEntityUtil.properties(backItems, SalarySobBackItemPO::getFormulaId, Collectors.toList()); - - List effectiveFormulaIds = new ArrayList<>(); - effectiveFormulaIds.addAll(sysItemFormulaIds); - effectiveFormulaIds.addAll(itemFormulaIds); - effectiveFormulaIds.addAll(sobItemFormulaIds); - effectiveFormulaIds.addAll(backItemFormulaIds); + SalaryItemServiceImpl.UsingItem usingItem = getSalaryItemService(user).getUsingItem(); + List usingFormulaIds = usingItem.getUsingFormulaIds(); + List usingItemIds = usingItem.getUsingItemIds(); + List usingCodes = usingItem.getUsingCodes(); //删除无用公式 -// getSalaryFormulaService(user).deleteNotIn(effectiveFormulaIds); + getSalaryFormulaService(user).deleteNotIn(usingFormulaIds); - //账套里的项目,项目里的项目 - List sobItemIds = SalaryEntityUtil.properties(sobItems, SalarySobItemPO::getSalaryItemId, Collectors.toList()); - List backItemIds = SalaryEntityUtil.properties(backItems, SalarySobBackItemPO::getSalaryItemId, Collectors.toList()); - List usingItemIds = new ArrayList<>(); - usingItemIds.addAll(sobItemIds); - usingItemIds.addAll(backItemIds); - - List formulaVars = getSalaryFormulaService(user).listVarByFormulaIds(effectiveFormulaIds); - List itemCode = formulaVars.stream().map(FormulaVar::getFieldId).map(v -> v.replaceAll("salaryItem_", "")).collect(Collectors.toList()); - - //!!! 从2023-01-23起,薪资项目这里不再查询薪资档案引用的项目 !!! //薪资档案引用的项目转移到字段管理功能项 searchParam.setUseInEmployeeSalary(SalaryOnOffEnum.OFF.getValue()); @@ -129,7 +102,7 @@ public class SalaryItemWrapper extends Service { List salaryItemListDTOS = SalaryItemBO.convert2ListDTO(salaryItemList, expressFormulas, sysSalaryItemPOS); //系统项目不删除 salaryItemListDTOS.forEach(dto -> { - if (StringUtils.isNotBlank(dto.getSystemName()) || usingItemIds.contains(dto.getId()) || itemCode.contains(dto.getCode())) { + if (StringUtils.isNotBlank(dto.getSystemName()) || usingItemIds.contains(dto.getId()) || usingCodes.contains(dto.getCode())) { dto.setCanDelete(false); } }); @@ -267,71 +240,8 @@ public class SalaryItemWrapper extends Service { * @param ids 主键id */ public void delete(Collection ids) { - - //清除未被引用的公式 - List effectiveFormulaIds = getEffectiveFormulaIds(); - - //删除无用公式 -// getSalaryFormulaService(user).deleteNotIn(effectiveFormulaIds); - - //账套里的项目,项目里的项目 - List sobItemIds = SalaryEntityUtil.properties(sobItems, SalarySobItemPO::getSalaryItemId, Collectors.toList()); - List backItemIds = SalaryEntityUtil.properties(backItems, SalarySobBackItemPO::getSalaryItemId, Collectors.toList()); - List usingItemIds = new ArrayList<>(); - usingItemIds.addAll(sobItemIds); - usingItemIds.addAll(backItemIds); - - List formulaVars = getSalaryFormulaService(user).listVarByFormulaIds(effectiveFormulaIds); - List itemCode = formulaVars.stream().map(FormulaVar::getFieldId).map(v -> v.replaceAll("salaryItem_", "")).collect(Collectors.toList()); - - // 查询薪资项目 - List salaryItemPOS = getSalaryItemService(user).listByIds(ids); - if (CollectionUtils.isEmpty(salaryItemPOS)) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98299, "参数错误,薪资项目不存在或已被删除")); - } - if (CollectionUtils.containsAny(usingItemIds, ids)) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98322, "薪资账套正在使用该薪资项目,不允许删除")); - } - List codes = SalaryEntityUtil.properties(salaryItemPOS, SalaryItemPO::getCode, Collectors.toList()); - if (CollectionUtils.containsAny(itemCode, codes)) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98322, "公式正在使用该薪资项目,不允许删除")); - } getSalaryItemService(user).deleteByIds(ids); } - private usingItemAndFormulaIds getUsingFormulaIds() { - //系统项目 - List sysItems = getSysSalaryItemService(user).listAll(); - List sysItemFormulaIds = SalaryEntityUtil.properties(sysItems, SysSalaryItemPO::getFormulaId, Collectors.toList()); - - //薪资项目 - List items = getSalaryItemService(user).listAll(); - List itemFormulaIds = SalaryEntityUtil.properties(items, SalaryItemPO::getFormulaId, Collectors.toList()); - - //账套项目 - List sobItems = getSalarySobItemService(user).list(); - List sobItemFormulaIds = SalaryEntityUtil.properties(sobItems, SalarySobItemPO::getFormulaId, Collectors.toList()); - - //回算项目 - List backItems = getSalarySobBackItemService(user).listAll(); - List backItemFormulaIds = SalaryEntityUtil.properties(backItems, SalarySobBackItemPO::getFormulaId, Collectors.toList()); - - List usingFormulaIds = new ArrayList<>(); - usingFormulaIds.addAll(sysItemFormulaIds); - usingFormulaIds.addAll(itemFormulaIds); - usingFormulaIds.addAll(sobItemFormulaIds); - usingFormulaIds.addAll(backItemFormulaIds); - - - return usingFormulaIds; - } - - - @Builder - class UsingItemAndFormulaIds { - private List usingFormulaIds; - - private List usingItemIds; - } }