diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryCalcItemGraph.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryCalcItemGraph.java index 52baba1db..ecfad44da 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryCalcItemGraph.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryCalcItemGraph.java @@ -5,6 +5,7 @@ import com.engine.salary.entity.salaryformula.po.FormulaVar; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.po.SalarySobItemPO; import com.engine.salary.enums.salaryformula.SalaryFormulaReferenceEnum; +import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.report.common.constant.SalaryConstant; import com.engine.salary.util.SalaryEntityUtil; import com.google.common.collect.Lists; @@ -13,6 +14,7 @@ import org.apache.commons.lang3.StringUtils; import java.util.*; import java.util.concurrent.LinkedTransferQueue; +import java.util.stream.Collectors; /** * 对薪资核算时涉及的薪资项目进行排序 @@ -25,6 +27,7 @@ import java.util.concurrent.LinkedTransferQueue; public class SalaryCalcItemGraph { private List nodes; + private Map items; /** * 根据薪资账套的薪资项目、公式详情构建实例 @@ -51,7 +54,7 @@ public class SalaryCalcItemGraph { SalaryItemPO salaryItemPO = salaryItemMap.get(salaryItemCode); if (salaryItemPO == null) { continue; - }else { + } else { subSalarySobItem = SalarySobItemPO.builder().salaryItemId(salaryItemPO.getId()).salaryItemCode(salaryItemPO.getCode()).build(); } } @@ -63,6 +66,7 @@ public class SalaryCalcItemGraph { } } this.nodes = Lists.newArrayList(nodeMap.values()); + this.items = SalaryEntityUtil.convert2Map(salaryItemPOS, SalaryItemPO::getId, SalaryItemPO::getName); } /** @@ -130,6 +134,18 @@ public class SalaryCalcItemGraph { // 倒序 Collections.reverse(result); + if (!Objects.equals(result.size(), nodes.size())) { + + List resultIds = SalaryEntityUtil.properties(result, SalaryCalcItem::getSalaryItemId, Collectors.toList()); + String errItemName = nodes.stream() + .map(SalaryCalcItemGraphNode::getSalaryCalcItem) + .map(SalaryCalcItem::getSalaryItemId) + .filter(itemId -> !resultIds.contains(itemId)) + .map(itemId -> items.getOrDefault(itemId, "")) + .collect((Collectors.joining(",", "[", "]"))); + + throw new SalaryRunTimeException("薪资项目:" + errItemName + "存在闭环!"); + } // 返回结果列表 return result; } diff --git a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java index bb2387cfd..584a8425f 100644 --- a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java @@ -8,9 +8,9 @@ import com.engine.salary.biz.SalarySobItemGroupBiz; import com.engine.salary.biz.SalarySobItemHideBiz; import com.engine.salary.config.SalaryElogConfig; import com.engine.salary.constant.SalaryDefaultTenantConstant; +import com.engine.salary.elog.entity.dto.LoggerContext; import com.engine.salary.entity.salaryacct.bo.SalaryAcctCalculatePriorityBO; import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; -import com.engine.salary.elog.entity.dto.LoggerContext; import com.engine.salary.entity.salaryformula.ExpressFormula; import com.engine.salary.entity.salaryformula.po.FormulaVar; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; @@ -36,7 +36,6 @@ import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.IdGenerator; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.valid.ValidUtil; -import com.engine.salary.util.db.IdGenerator; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -269,10 +268,6 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe // 校验 validSaveParam(saveParam); - - //清除原数据 - cleanOldData(salarySobId); - //保存 saveSobItem(saveParam); @@ -325,34 +320,17 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe } - /** - * 清楚原相关数据 - * - * @param salarySobId - */ - private void cleanOldData(Long salarySobId) { - // 删除薪资账套的员工信息字段 -// getSalarySobEmpFieldService(user).deleteBySalarySobIds(Collections.singleton(salarySobId)); - // 删除薪资账套的薪资项目副本 -// deleteBySalarySobIds(Collections.singleton(salarySobId)); - // 删除薪资账套的薪资项目分类 -// getSalarySobItemGroupService(user).deleteBySalarySobIds(Collections.singleton(salarySobId)); - // 删除薪资项目是否显示 - deleteItemShowBySalarySobIds(Collections.singleton(salarySobId)); - - } - /** * 保存项目信息 * * @param saveParam */ private void saveSobItem(SalarySobItemSaveParam saveParam) { - //处理人员信息字段 - handleEmpField(saveParam); - //分组和薪资项 handleGroupAndItem(saveParam); + + //处理人员信息字段 + handleEmpField(saveParam); } private void handleGroupAndItem(SalarySobItemSaveParam saveParam) { @@ -664,6 +642,8 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe // 保存薪资账套的薪资项目副本 batchSave(salarySobItems); + // 删除原薪资项目是否显示 + deleteItemShowBySalarySobIds(Collections.singleton(salarySobId)); // 保存薪资账套的薪资项目隐藏信息 batchSaveShow(needInsertItemShow); } diff --git a/src/com/engine/salary/web/SalarySobController.java b/src/com/engine/salary/web/SalarySobController.java index c7c4255e1..3782721f4 100644 --- a/src/com/engine/salary/web/SalarySobController.java +++ b/src/com/engine/salary/web/SalarySobController.java @@ -92,6 +92,18 @@ public class SalarySobController { return new ResponseResult>(user).run(getSalarySobWrapper(user)::listPage, queryParam); } + /** + * 薪资账套列表 + */ + @POST + @Path("/listAll") + @Produces(MediaType.APPLICATION_JSON) + public String listAll(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getSalarySobWrapper(user)::listAll); + } + + /** * 薪资账套基本信息表单 */ diff --git a/src/com/engine/salary/wrapper/SalarySobWrapper.java b/src/com/engine/salary/wrapper/SalarySobWrapper.java index 4e0b1db0c..c94b09e15 100644 --- a/src/com/engine/salary/wrapper/SalarySobWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySobWrapper.java @@ -94,6 +94,16 @@ public class SalarySobWrapper extends Service { return dtoPage; } + + /** + * 薪资账套列表 + * + * @return + */ + public List listAll() { + return getSalarySobService(user).listAll(); + } + private void handleSalarySobBackItemHistory(SalarySobListQueryParam queryParam) { queryParam.setPageSize(100000); List list = getSalarySobService(user).listPageByParam(queryParam).getList();