diff --git a/src/com/engine/salary/entity/salarysob/param/SalaryItemTopologyQueryParam.java b/src/com/engine/salary/entity/salarysob/param/SalaryItemTopologyQueryParam.java
new file mode 100644
index 000000000..7b27e17d3
--- /dev/null
+++ b/src/com/engine/salary/entity/salarysob/param/SalaryItemTopologyQueryParam.java
@@ -0,0 +1,29 @@
+package com.engine.salary.entity.salarysob.param;
+
+import com.engine.salary.util.valid.DataCheck;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 薪资项目拓扑查询参数
+ *
Copyright: Copyright (c) 2023
+ * Company: 泛微软件
+ *
+ * @author qiantao
+ * @version 1.0
+ **/
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SalaryItemTopologyQueryParam {
+
+ //薪资账套id
+ @DataCheck(require = true, message = "薪资账套的ID不允许为空")
+ private Long salarySobId;
+
+ //薪资项目id
+ private Long salaryItemId;
+}
diff --git a/src/com/engine/salary/service/SalarySobItemService.java b/src/com/engine/salary/service/SalarySobItemService.java
index 9eeeb2424..7f10b1c45 100644
--- a/src/com/engine/salary/service/SalarySobItemService.java
+++ b/src/com/engine/salary/service/SalarySobItemService.java
@@ -4,6 +4,7 @@ import com.engine.salary.entity.salaryacct.bo.SalaryCalcItem;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO;
import com.engine.salary.entity.salarysob.dto.SalarySobItemFormDTO;
+import com.engine.salary.entity.salarysob.param.SalaryItemTopologyQueryParam;
import com.engine.salary.entity.salarysob.param.SalarySobItemSaveParam;
import com.engine.salary.entity.salarysob.po.SalarySobItemPO;
@@ -131,4 +132,6 @@ public interface SalarySobItemService {
void update(SalarySobItemPO po);
List itemTopology(Long salarySobId);
+
+ Object topology(SalaryItemTopologyQueryParam param);
}
diff --git a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java
index 9b1542cc7..6f40a25d7 100644
--- a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java
+++ b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java
@@ -14,6 +14,7 @@ import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.entity.salarysob.bo.SalarySobItemAggregateBO;
import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO;
import com.engine.salary.entity.salarysob.dto.SalarySobItemFormDTO;
+import com.engine.salary.entity.salarysob.param.SalaryItemTopologyQueryParam;
import com.engine.salary.entity.salarysob.param.SalarySobItemSaveParam;
import com.engine.salary.entity.salarysob.po.*;
import com.engine.salary.entity.taxagent.po.TaxAgentPO;
@@ -822,5 +823,66 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe
return salaryCalcItems;
}
+ @Override
+ public Object topology(SalaryItemTopologyQueryParam param) {
+ SalarySobItemFormDTO salarySobItemFormDTO = new SalarySobItemFormDTO();
+ salarySobItemFormDTO.setCanEdit(1);
+ // 默认可以编辑
+ if (param.getSalarySobId() != null && param.getSalaryItemId() != null) {
+ // 查询薪资账套
+ SalarySobPO salarySobPO = salarySobBiz.getById(param.getSalarySobId());
+ if (Objects.isNull(salarySobPO)) {
+ throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98379, "参数错误,薪资账套不存在或者已被删除"));
+ }
+ // 查询薪资项目
+ List salarySobItemPOS = getSalarySobItemMapper().listSome(SalarySobItemPO.builder().salarySobId(param.getSalarySobId()).salaryItemId(param.getSalaryItemId()).build());
+ if (CollectionUtils.isEmpty(salarySobItemPOS)) {
+ throw new SalaryRunTimeException("账套中薪资项目不存在");
+ }
+ SalarySobItemPO salarySobItemPO = salarySobItemPOS.get(0);
+ SalaryItemPO salaryItemPO = getSalaryItemService(user).getById(salarySobItemPO.getSalaryItemId());
+ if (salaryItemPO == null) {
+ throw new SalaryRunTimeException("薪资项目不存在或已被删除");
+ }
+ //获取系统值
+ List salarySobDefaultItemPOS = getSalarySobDefaultItemMapper().listAll();
+ salarySobDefaultItemPOS = salarySobDefaultItemPOS.stream().filter(po -> po.getSysSalaryItemId() != 0).collect(Collectors.toList());
+ Map longIntegerMap = SalaryEntityUtil.convert2Map(salarySobDefaultItemPOS, SalarySobDefaultItemPO::getSysSalaryItemId, SalarySobDefaultItemPO::getCanDelete);
+ if (salaryItemPO.getSysSalaryItemId() != null) {
+ salarySobItemPO.setCanDelete(longIntegerMap.getOrDefault(salaryItemPO.getSysSalaryItemId(), 1));
+ }
+ // 获取薪资项目公式
+ List expressFormulas = getSalaryFormulaService(user).listExpressFormula(Collections.singleton(salarySobItemPO.getFormulaId()));
+ // 强制开启账套的公式配置
+ BaseBean baseBean = new BaseBean();
+ final Boolean openFormulaForcedEditing = "true".equals(baseBean.getPropValue("hrmSalary", "openFormulaForcedEditing"));
+ // 获取核算时隐藏的薪资项目id
+ List hideItemIds = getSalarySobItemHideService(user).listHideGroupBysalarySobId(SalarySobItemHidePO.builder()
+ .salarySobId(param.getSalarySobId())
+ .isGroup(new Integer(0))
+ .salaryItemId(param.getSalaryItemId())
+ .build());
+
+ String formulaContent = CollectionUtils.isEmpty(expressFormulas) ? "" : expressFormulas.get(0).getFormula();
+ Integer valueType = salarySobItemPO.getValueType() == null ? salaryItemPO.getValueType() : salarySobItemPO.getValueType();
+ salarySobItemFormDTO
+ .setId(salarySobItemPO.getId())
+ .setName(salaryItemPO.getName())
+ .setItemHide(hideItemIds.contains(salaryItemPO.getId()) ? 1 : 0)
+ .setDataType(salaryItemPO.getDataType())
+ .setRoundingMode(salarySobItemPO.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : salarySobItemPO.getRoundingMode())
+ .setPattern(salarySobItemPO.getPattern() == null ? salaryItemPO.getPattern() : salarySobItemPO.getPattern())
+ .setValueType(valueType)
+ .setFormulaId(salarySobItemPO.getFormulaId())
+ .setFormulaContent(CollectionUtils.isNotEmpty(expressFormulas) ? formulaContent : "")
+ .setOriginFormulaContent(valueType.equals(SalaryValueTypeEnum.FORMULA.getValue()) ? formulaContent : "")
+ .setOriginSqlContent(valueType.equals(SalaryValueTypeEnum.SQL.getValue()) ? formulaContent : "")
+ .setUseInEmployeeSalary(salaryItemPO.getUseInEmployeeSalary())
+ .setDescription(salarySobItemPO.getDescription())
+ .setCanEdit((openFormulaForcedEditing || salaryItemPO.getCanEdit().equals(1)) ? 1 : 0);
+ }
+ return salarySobItemFormDTO;
+ }
+
}
diff --git a/src/com/engine/salary/web/SalarySobController.java b/src/com/engine/salary/web/SalarySobController.java
index a6107e4c3..e0456bca7 100644
--- a/src/com/engine/salary/web/SalarySobController.java
+++ b/src/com/engine/salary/web/SalarySobController.java
@@ -396,11 +396,19 @@ public class SalarySobController {
@GET
@Path("/item/topology")
@Produces(MediaType.APPLICATION_JSON)
- public String getSalaryItemForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "salarySobId") Long salarySobId) {
+ public String topology(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "salarySobId") Long salarySobId) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult>(user).run(getSalarySobItemWrapper(user)::itemTopology, salarySobId);
}
+ @POST
+ @Path("/item/topology")
+ @Produces(MediaType.APPLICATION_JSON)
+ public String getSalaryItemForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryItemTopologyQueryParam param) {
+ User user = HrmUserVarify.getUser(request, response);
+ return new ResponseResult>(user).run(getSalarySobItemWrapper(user)::topology, param);
+ }
+
/**********************************薪资账套的薪资项目 end*********************************/
diff --git a/src/com/engine/salary/wrapper/SalarySobItemWrapper.java b/src/com/engine/salary/wrapper/SalarySobItemWrapper.java
index 8b0b815e0..712720c0b 100644
--- a/src/com/engine/salary/wrapper/SalarySobItemWrapper.java
+++ b/src/com/engine/salary/wrapper/SalarySobItemWrapper.java
@@ -13,6 +13,7 @@ import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.entity.salaryitem.po.SysSalaryItemPO;
import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO;
import com.engine.salary.entity.salarysob.dto.SalarySobItemFormDTO;
+import com.engine.salary.entity.salarysob.param.SalaryItemTopologyQueryParam;
import com.engine.salary.entity.salarysob.param.SalarySobItemSaveParam;
import com.engine.salary.entity.salarysob.po.SalarySobItemGroupPO;
import com.engine.salary.entity.salarysob.po.SalarySobItemPO;
@@ -182,4 +183,11 @@ public class SalarySobItemWrapper extends Service {
public List itemTopology(Long salarySobId) {
return getSalarySobItemService(user).itemTopology(salarySobId);
}
+
+ public Object topology(SalaryItemTopologyQueryParam param) {
+
+ getSalarySobItemService(user).topology(param);
+ return null;
+
+ }
}