Procházet zdrojové kódy

refactor(swc): 重构定调薪档案服务接口和实现

- 将 IAdjFileService 接口重命名为 ISwcHCDMService
- 创建新的 SwcHCDMService 实现类,整合定调薪档案服务功能
- 在 ServiceFactory 中更新服务映射配置
- 修改 AdjFileServiceHelper 中的服务调用接口
- 更新 PersonPosFileSaveOpPlugin 中的数据匹配逻辑,使用新的服务接口
- 修改 SalaryAdjOpPlugin 中的定调薪记录查询,使用新的服务接口
- 将原有的 StdTableDataMatchParam 和 StdTableDataMatchResult 替换为 Map 结构
- 移除 PersonPosFileSaveOpPlugin 和 SalaryAdjOpPlugin 中的过时导入
wyc před 4 dny
rodič
revize
6aedb3695c

+ 1 - 1
code/base/nckd-jxccl-base-helper/src/main/java/nckd/jxccl/base/swc/helper/AdjFileServiceHelper.java

@@ -86,7 +86,7 @@ public class AdjFileServiceHelper {
             adjRecordParams.put("selprops", "salarystdv.rankentry.rank.id,salarystdv.rankentry.rank.name,salarystdv.rankentry.rank.number,salarystdv.rankentry.rank.index,salarystdv.rankentry.frankindex,company.id,company.name,hcdmorg.id,");
             //查询定调薪记录
             //hcdm_decadjrecor
-            Map<String, Object> lastDecAdjRecordMap = DispatchServiceHelper.invokeService("nckd.jxccl.swc.hcdm.servicehelper", "hcdm", "IAdjFileService", "getLastDecAdjRecords", adjRecordParams);
+            Map<String, Object> lastDecAdjRecordMap = DispatchServiceHelper.invokeService("nckd.jxccl.swc.hcdm.servicehelper", "hcdm", "ISwcHCDMService", "getLastDecAdjRecords", adjRecordParams);
             if (ConvertUtil.toBoolean(lastDecAdjRecordMap.get("success"))) {
                 List<Map> datas = ConvertUtil.toList(lastDecAdjRecordMap.get("data"), ArrayList::new);
                 for (Map data : datas) {

+ 12 - 11
code/hr/nckd-jxccl-hr/src/main/java/nckd/jxccl/hr/psms/plugin/operate/file/PersonPosFileSaveOpPlugin.java

@@ -11,13 +11,12 @@ import kd.bos.logging.LogFactory;
 import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
 import kd.bos.servicehelper.BusinessDataServiceHelper;
+import kd.bos.servicehelper.DispatchServiceHelper;
 import kd.bos.servicehelper.QueryServiceHelper;
 import kd.sdk.plugin.Plugin;
-import kd.sdk.swc.hcdm.business.helper.HCDMSalaryStdServiceHelper;
-import kd.sdk.swc.hcdm.common.dto.stdtab.match.StdTableDataMatchParam;
-import kd.sdk.swc.hcdm.common.dto.stdtab.match.StdTableDataMatchResult;
 import nckd.jxccl.base.common.constant.FormConstant;
 import nckd.jxccl.base.common.enums.psms.TypeStateEnum;
+import nckd.jxccl.base.common.utils.ConvertUtil;
 import nckd.jxccl.base.common.utils.QueryFieldBuilder;
 import nckd.jxccl.base.entity.helper.EntityHelper;
 import nckd.jxccl.base.swc.helper.AdjFileServiceHelper;
@@ -107,16 +106,17 @@ public class PersonPosFileSaveOpPlugin extends AbstractOperationServicePlugIn im
 
                     if (!salaryStandardMap.isEmpty()) {
                         logger.info("Created salary standard map with {} entries", salaryStandardMap.size());
-                        List<StdTableDataMatchParam> matchParams = new ArrayList<>();
+                        List<Map<String,Object>> matchParams = new ArrayList<>();
                         for (AdjFileServiceHelper.SalaryAdjustmentResult result : salaryAdjustmentResultList) {
-                            StdTableDataMatchParam stdTableDataMatchParam = new StdTableDataMatchParam();
-                            stdTableDataMatchParam.setStdTableId(result.salaryStDv.getLong(FormConstant.ID_KEY));
-                            stdTableDataMatchParam.setStdItemId(salaryItemId);
-                            stdTableDataMatchParam.setGradeId(result.salaryGrade.getLong(FormConstant.ID_KEY));
+                            Map<String,Object> stdTableDataMatchParam = new HashMap<>();
+
+                            stdTableDataMatchParam.put("stdTableId",result.salaryStDv.getLong(FormConstant.ID_KEY));
+                            stdTableDataMatchParam.put("stdItemId",salaryItemId);
+                            stdTableDataMatchParam.put("gradeId",result.salaryGrade.getLong(FormConstant.ID_KEY));
                             DynamicObject dynamicObject = salaryStandardMap.get(result.salaryStDv.getLong(FormConstant.ID_KEY));
                             if (dynamicObject != null) {
                                 long rankId = dynamicObject.getLong(String.join(".", "rankentry", "rank", FormConstant.ID_KEY));
-                                stdTableDataMatchParam.setRankId(rankId);
+                                stdTableDataMatchParam.put("rankId",result.salaryGrade.getLong(FormConstant.ID_KEY));
                                 matchParams.add(stdTableDataMatchParam);
                             }
                         }
@@ -124,14 +124,15 @@ public class PersonPosFileSaveOpPlugin extends AbstractOperationServicePlugIn im
                         
                         if (!matchParams.isEmpty()) {
                             //获取薪酬项目、薪等、薪档对应金额(入参params的数组下标和出参的数组下标一一对应)
-                            List<StdTableDataMatchResult> stdTableDataMatchResults = HCDMSalaryStdServiceHelper.matchStdTableData(matchParams);
+//                            List<StdTableDataMatchResult> stdTableDataMatchResults = HCDMSalaryStdServiceHelper.matchStdTableData(matchParams);
+                            List<Map<String,Object>> stdTableDataMatchResults = DispatchServiceHelper.invokeService("nckd.jxccl.swc.hcdm.servicehelper", "hcdm", "ISwcHCDMService", "matchStdTableData", matchParams);
                             logger.info("Retrieved {} standard table match results", stdTableDataMatchResults.size());
                             
                             for (int i = 0; i < salaryAdjustmentResultList.size(); i++) {
                                 AdjFileServiceHelper.SalaryAdjustmentResult result = salaryAdjustmentResultList.get(i);
                                 if (i < stdTableDataMatchResults.size() && stdTableDataMatchResults.get(i) != null) {
                                     //当前薪等01档的金额
-                                    amountMap.put(result.employee.getLong(FormConstant.ID_KEY), stdTableDataMatchResults.get(i).getAmount());
+                                    amountMap.put(result.employee.getLong(FormConstant.ID_KEY), ConvertUtil.toBigDecimal(stdTableDataMatchResults.get(i).get("amount")));
                                 }
                             }
                             logger.info("Populated amount map with {} entries", amountMap.size());

+ 9 - 13
code/opmc/nckd-jxccl-opmc/src/main/java/nckd/jxccl/opmc/pm/plugin/operate/salary/SalaryAdjOpPlugin.java

@@ -29,10 +29,6 @@ import kd.bos.servicehelper.user.UserServiceHelper;
 import kd.hr.hbp.common.model.OrgSubInfo;
 import kd.sdk.hr.hbp.business.helper.permission.HRPermissionServiceHelper;
 import kd.sdk.plugin.Plugin;
-import kd.sdk.swc.hcdm.business.helper.HCDMAdjFileServiceHelper;
-import kd.sdk.swc.hcdm.business.helper.HCDMSalaryStdServiceHelper;
-import kd.sdk.swc.hcdm.common.dto.stdtab.match.StdTableDataMatchParam;
-import kd.sdk.swc.hcdm.common.dto.stdtab.match.StdTableDataMatchResult;
 import nckd.jxccl.base.common.constant.FormConstant;
 import nckd.jxccl.base.common.enums.AppraisalResultEnum;
 import nckd.jxccl.base.common.exception.ValidationException;
@@ -254,7 +250,7 @@ public class SalaryAdjOpPlugin extends AbstractOperationServicePlugIn implements
                     adjRecordParams.put("data", dataList);
                     adjRecordParams.put("selprops", "salarystdv.rankentry.rank.id,salarystdv.rankentry.rank.name,salarystdv.rankentry.rank.number,salarystdv.rankentry.rank.index,salarystdv.rankentry.frankindex,company.id,company.name,");
                     //查询定调薪记录
-                    Map<String, Object> lastDecAdjRecordMap = HCDMAdjFileServiceHelper.getLastDecAdjRecords(adjRecordParams);
+                    Map<String, Object> lastDecAdjRecordMap = DispatchServiceHelper.invokeService("nckd.jxccl.swc.hcdm.servicehelper", "hcdm", "ISwcHCDMService", "getLastDecAdjRecords", adjRecordParams);
                     if (ConvertUtil.toBoolean(lastDecAdjRecordMap.get("success"))) {
                         List<Map> datas = ConvertUtil.toList(lastDecAdjRecordMap.get("data"), ArrayList::new);
                         for (Map data : datas) {
@@ -365,17 +361,17 @@ public class SalaryAdjOpPlugin extends AbstractOperationServicePlugIn implements
                             }
                             result.salaryRank = newSalaryRank;
                             result.reason += StrFormatter.format(";{}->{}", oldSalaryRank.getString(FormConstant.NAME_KEY), newSalaryRank.getString(FormConstant.NAME_KEY));
-                            List<StdTableDataMatchParam> matchParams = new ArrayList<>();
-                            StdTableDataMatchParam stdTableDataMatchParam = new StdTableDataMatchParam();
-                            stdTableDataMatchParam.setStdTableId(result.salaryStDv.getLong(FormConstant.ID_KEY));
-                            stdTableDataMatchParam.setStdItemId(salaryItemId);
-                            stdTableDataMatchParam.setGradeId(result.oldSalaryGrade.getLong(FormConstant.ID_KEY));
-                            stdTableDataMatchParam.setRankId(newSalaryRank.getLong(FormConstant.ID_KEY));
+                            List<Map<String,Object>> matchParams = new ArrayList<>();
+                            Map<String,Object> stdTableDataMatchParam = new HashMap<>();
+                            stdTableDataMatchParam.put("stdTableId", result.salaryStDv.getLong(FormConstant.ID_KEY));
+                            stdTableDataMatchParam.put("stdItemId", salaryItemId);
+                            stdTableDataMatchParam.put("gradeId", result.oldSalaryGrade.getLong(FormConstant.ID_KEY));
+                            stdTableDataMatchParam.put("rankId", newSalaryRank.getLong(FormConstant.ID_KEY));
                             matchParams.add(stdTableDataMatchParam);
                             //获取薪酬项目、薪等、薪档对应金额
-                            List<StdTableDataMatchResult> stdTableDataMatchResults = HCDMSalaryStdServiceHelper.matchStdTableData(matchParams);
+                            List<Map<String,Object>> stdTableDataMatchResults = DispatchServiceHelper.invokeService("nckd.jxccl.swc.hcdm.servicehelper", "hcdm", "ISwcHCDMService", "matchStdTableData", matchParams);
                             if (!stdTableDataMatchResults.isEmpty()) {
-                                result.amount = stdTableDataMatchResults.get(0).getAmount();
+                                result.amount = ConvertUtil.toBigDecimal(stdTableDataMatchResults.get(0).get("amount"));
                             }
                             msgJoiner.add(StrFormatter.format("【{}】{}", result.personName, result.reason));
                         }

+ 0 - 19
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/hcdm/mservice/AdjFileService.java

@@ -1,19 +0,0 @@
-package nckd.jxccl.swc.hcdm.mservice;
-
-import kd.sdk.swc.hcdm.business.helper.HCDMAdjFileServiceHelper;
-import nckd.jxccl.swc.hcdm.mservice.api.IAdjFileService;
-
-import java.util.Map;
-
-/**
- * 定调薪档案服务
- * @author W.Y.C
- * @date 2026/1/7 21:37
- * @version 1.0
- */
-public class AdjFileService implements IAdjFileService {
-    @Override
-    public Map<String, Object> getLastDecAdjRecords(Map<String, Object> param) {
-        return HCDMAdjFileServiceHelper.getLastDecAdjRecords(param);
-    }
-}

+ 41 - 0
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/hcdm/mservice/SwcHCDMService.java

@@ -0,0 +1,41 @@
+package nckd.jxccl.swc.hcdm.mservice;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import kd.sdk.swc.hcdm.business.helper.HCDMAdjFileServiceHelper;
+import kd.sdk.swc.hcdm.business.helper.HCDMSalaryStdServiceHelper;
+import kd.sdk.swc.hcdm.common.dto.stdtab.match.StdTableDataMatchParam;
+import kd.sdk.swc.hcdm.common.dto.stdtab.match.StdTableDataMatchResult;
+import nckd.jxccl.swc.hcdm.mservice.api.ISwcHCDMService;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * 定调薪档案服务
+ * @author W.Y.C
+ * @date 2026/1/7 21:37
+ * @version 1.0
+ */
+public class SwcHCDMService implements ISwcHCDMService {
+    @Override
+    public Map<String, Object> getLastDecAdjRecords(Map<String, Object> param) {
+        return HCDMAdjFileServiceHelper.getLastDecAdjRecords(param);
+    }
+
+    @Override
+    public List<Map<String,Object>> matchStdTableData(List<Map<String,Object>> params) {
+        List<StdTableDataMatchParam> stdTableDataMatchParams = params.stream()
+                .map(m -> JSON.toJavaObject((JSONObject) JSON.toJSON(m), StdTableDataMatchParam.class))
+                .collect(Collectors.toList());
+        List<StdTableDataMatchResult> stdTableDataMatchResults = HCDMSalaryStdServiceHelper.matchStdTableData(stdTableDataMatchParams);
+        List<Map<String,Object>> result = new ArrayList<>();
+        return stdTableDataMatchResults.stream()
+                .filter(Objects::nonNull)
+                .map(r -> (Map<String, Object>) JSON.toJSON(r)) // 返回 JSONObject,兼容 Map
+                .collect(Collectors.toList());
+    }
+}

+ 0 - 22
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/hcdm/mservice/api/IAdjFileService.java

@@ -1,22 +0,0 @@
-package nckd.jxccl.swc.hcdm.mservice.api;
-
-import java.util.Date;
-import java.util.Map;
-
-/**
-* 定调薪档案服务
-* @author W.Y.C
-* @date 2026/1/7 21:37
-* @version 1.0
-*/
-public interface IAdjFileService {
-
-    /**
-     * 获取上一次定调薪信息
-     * @param param
-     * @return: java.util.Map<java.lang.String, java.lang.Object>
-     * @author W.Y.C
-     * @date: 2026/01/07 21:35
-     */
-    Map<String, Object> getLastDecAdjRecords(Map<String, Object> param);
-}

+ 31 - 0
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/hcdm/mservice/api/ISwcHCDMService.java

@@ -0,0 +1,31 @@
+package nckd.jxccl.swc.hcdm.mservice.api;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+* 定调薪档案服务
+* @author W.Y.C
+* @date 2026/1/7 21:37
+* @version 1.0
+*/
+public interface ISwcHCDMService {
+
+    /**
+     * 获取上一次定调薪信息
+     * @param param
+     * @return: java.util.Map<java.lang.String, java.lang.Object>
+     * @author W.Y.C
+     * @date: 2026/01/07 21:35
+     */
+    Map<String, Object> getLastDecAdjRecords(Map<String, Object> param);
+
+    /**
+     * 标准表数据匹配::根据标准表、项目、薪等、薪档获取金额、薪点数等信息
+      * @param params
+     * @return: java.util.List<kd.sdk.swc.hcdm.common.dto.stdtab.match.StdTableDataMatchResult>
+     * @author W.Y.C
+     * @date: 2026/01/07 22:12
+     */
+    List<Map<String,Object>> matchStdTableData(List<Map<String,Object>> params);
+}

+ 1 - 1
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/hcdm/servicehelper/ServiceFactory.java

@@ -16,7 +16,7 @@ public class ServiceFactory {
 
     private static final Map<String, String> SERVICE_MAP = new HashMap<String, String>() {
         {
-            this.put("IAdjFileService", "nckd.jxccl.swc.hcdm.mservice.AdjFileService");
+            this.put("ISwcHCDMService", "nckd.jxccl.swc.hcdm.mservice.SwcHCDMService");
         }
     };