Эх сурвалжийг харах

refactor(hrmp): 重构岗位申请单服务类以优化属性处理逻辑

- 移除排除字段列表,改用获取岗位所有属性的方法
- 更新PositionBillConfirmCallBackService中的属性过滤逻辑
- 修改PositionBillPropertyChangedService中的SQL构建和属性设置方式
- 将原排除字段逻辑替换为包含字段逻辑,提高代码可读性
- 引入EntityMetadataCache来获取岗位实体的所有属性
- 简化原上级岗位特殊处理的逻辑实现
jtd 1 долоо хоног өмнө
parent
commit
e2a7393889

+ 9 - 10
code/hrmp/nckd-jxccl-hrmp/src/main/java/nckd/jxccl/hrmp/hbpm/business/hr/service/impl/PositionBillConfirmCallBackService.java

@@ -214,9 +214,8 @@ public class PositionBillConfirmCallBackService extends PositionBillBaseService
             transKeyMap.putAll(PositionBillServiceHelper.getPosBillEntryTransKeyMap());
             // 获取岗位要转换的键值
             transKeyMap.putAll(PositionBillServiceHelper.getPositionTransKeyMap());
-            // 排除字段
-            List<String> positionExcludeKeyList = PositionBillServiceHelper.getPositionExcludeKeyList();
-            positionExcludeKeyList.forEach(transKeyMap::remove);
+            // 获取岗位所有属性
+            Set<String> positionAllEntities = PositionBillServiceHelper.getPositionAllEntities();
 
             QueryFieldBuilder queryFieldBuilder = QueryFieldBuilder.create();
             for(IDataEntityProperty iDataEntityProperty : entryEntityInfo) {
@@ -238,14 +237,14 @@ public class PositionBillConfirmCallBackService extends PositionBillBaseService
                 String propName = iDataEntityProperty.getName();
                 if (PatternUtil.isExProperty(propName) && propName.endsWith(lineSuffix)) {
                     String selectName = PositionBillServiceHelper.getNoLineSuffixProp(propName, lineSuffix);
-                    if (positionExcludeKeyList.contains(selectName) || HRStringUtils.equals(selectName, PositionBillConstant.NCKD_POSDUTY_ENTRY_ENTITY_KEY)) {
-                        continue;
+                    selectName = transKeyMap.getOrDefault(selectName, selectName);
+                    if (positionAllEntities.contains(selectName)) {
+                        // 原上级岗位特殊处理
+                        if (HRStringUtils.equals(selectName, PositionBillConstant.NCKD_PARENT)) {
+                            entryEntityDyn.set(PositionBillConstant.NCKD_ORIPARENT_KEY+lineSuffix, position.get(selectName));
+                        }
+                        entryEntityDyn.set(propName, position.get(selectName));
                     }
-                    // 原上级岗位特殊处理
-                    if (HRStringUtils.equals(selectName, PositionBillConstant.NCKD_PARENT)) {
-                        entryEntityDyn.set(PositionBillConstant.NCKD_ORIPARENT_KEY+lineSuffix, position.get(transKeyMap.getOrDefault(selectName, selectName)));
-                    }
-                    entryEntityDyn.set(propName, position.get(transKeyMap.getOrDefault(selectName, selectName)));
                 }
             }
 

+ 13 - 12
code/hrmp/nckd-jxccl-hrmp/src/main/java/nckd/jxccl/hrmp/hbpm/business/hr/service/impl/PositionBillPropertyChangedService.java

@@ -19,8 +19,8 @@ import nckd.jxccl.base.common.utils.PatternUtil;
 import nckd.jxccl.hrmp.hbpm.common.hr.PositionBillConstant;
 
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 /**
  * 岗位申请单属性变更服务类
@@ -83,16 +83,17 @@ public class PositionBillPropertyChangedService extends PositionBillBaseService
         transKeyMap.putAll(PositionBillServiceHelper.getPosBillEntryTransKeyMap());
         // 获取岗位要转换的键值
         transKeyMap.putAll(PositionBillServiceHelper.getPositionTransKeyMap());
-        // 排除字段
-        List<String> positionExcludeKeyList = PositionBillServiceHelper.getPositionExcludeKeyList();
-        positionExcludeKeyList.forEach(transKeyMap::remove);
+        // 获取岗位所有属性
+        Set<String> positionAllEntities = PositionBillServiceHelper.getPositionAllEntities();
 
         StringBuilder selectSqlBuilder = new StringBuilder();
         for(IDataEntityProperty iDataEntityProperty : entryEntityInfo) {
             String propName = iDataEntityProperty.getName();
             if (PatternUtil.isExProperty(propName) && propName.endsWith(lineSuffix)) {
                 String selectName = PositionBillServiceHelper.getNoLineSuffixProp(propName, lineSuffix);
-                selectSqlBuilder.append(",").append(transKeyMap.getOrDefault(selectName, selectName));
+                if (positionAllEntities.contains(selectName)) {
+                    selectSqlBuilder.append(",").append(transKeyMap.getOrDefault(selectName, selectName));
+                }
             }
         }
         selectSqlBuilder.deleteCharAt(0);
@@ -122,14 +123,14 @@ public class PositionBillPropertyChangedService extends PositionBillBaseService
                 String propName = iDataEntityProperty.getName();
                 if (PatternUtil.isExProperty(propName) && propName.endsWith(lineSuffix)) {
                     String selectName = PositionBillServiceHelper.getNoLineSuffixProp(propName, lineSuffix);
-                    if (positionExcludeKeyList.contains(selectName) || HRStringUtils.equals(selectName, PositionBillConstant.NCKD_POSDUTY_ENTRY_ENTITY_KEY)) {
-                        continue;
-                    }
-                    // 原上级岗位特殊处理
-                    if (HRStringUtils.equals(selectName, PositionBillConstant.NCKD_PARENT)) {
-                        entryEntityDyn.set(PositionBillConstant.NCKD_ORIPARENT_KEY+lineSuffix, position.get(transKeyMap.getOrDefault(selectName, selectName)));
+                    selectName = transKeyMap.getOrDefault(selectName, selectName);
+                    if (positionAllEntities.contains(selectName)) {
+                        // 原上级岗位特殊处理
+                        if (HRStringUtils.equals(selectName, PositionBillConstant.NCKD_PARENT)) {
+                            entryEntityDyn.set(PositionBillConstant.NCKD_ORIPARENT_KEY+lineSuffix, position.get(selectName));
+                        }
+                        entryEntityDyn.set(propName, position.get(selectName));
                     }
-                    entryEntityDyn.set(propName, position.get(transKeyMap.getOrDefault(selectName, selectName)));
                 }
             }
 

+ 3 - 4
code/hrmp/nckd-jxccl-hrmp/src/main/java/nckd/jxccl/hrmp/hbpm/business/hr/service/impl/PositionBillServiceHelper.java

@@ -15,6 +15,7 @@ import kd.bos.dataentity.serialization.SerializationUtils;
 import kd.bos.db.tx.Propagation;
 import kd.bos.db.tx.TX;
 import kd.bos.db.tx.TXHandle;
+import kd.bos.entity.EntityMetadataCache;
 import kd.bos.entity.constant.StatusEnum;
 import kd.bos.entity.datamodel.IDataModel;
 import kd.bos.entity.operate.OperateOptionConst;
@@ -100,10 +101,8 @@ public class PositionBillServiceHelper {
         return transKeyMap;
     }
 
-    public static List<String> getPositionExcludeKeyList() {
-        DynamicObject[] positionExcludeKeyList = HRBaseServiceHelper.create(PositionBillConstant.NCKD_POSITION_EXCLUDEKEY_ENTITY).queryOriginalArray(PositionBillConstant.NUMBER_KEY, null);
-        List<String> excludeKeyList = Arrays.stream(positionExcludeKeyList).map(positionExcludeKeyDyo -> positionExcludeKeyDyo.getString(PositionBillConstant.NUMBER_KEY)).collect(Collectors.toList());
-        return excludeKeyList;
+    public static Set<String> getPositionAllEntities() {
+        return EntityMetadataCache.getDataEntityType(PositionBillConstant.HBPM_POSITIONHR).getAllEntities().keySet();
     }
 
     /**