Просмотр исходного кода

refactor(adminorg): 优化组织信息变更处理逻辑

- 注释掉原有的 endOpInfoHandler 方法调用
- 在查询组织信息时增加 NUMBER_KEY 字段
- 新增 boIds 列表用于存储变更数据的 BOID
- 在处理历史版本记录时增加对变更组织的判断逻辑
- 修改数据加载方法中的查询字段和参数
- 调整历史版本记录更新逻辑以支持更精确的数据设置
jtd 5 дней назад
Родитель
Сommit
a7c908ffb5

+ 13 - 5
code/hrmp/nckd-jxccl-hrmp/src/main/java/nckd/jxccl/hrmp/haos/plugin/operate/adminorg/AdminOrgDetailConfirmChangeOpPlugin.java

@@ -89,7 +89,7 @@ public class AdminOrgDetailConfirmChangeOpPlugin extends AbstractOperationServic
                 endOpParentHandler();
                 break;
             case CHANGETYPE_INFO:
-                endOpInfoHandler(dataEntities);
+                //endOpInfoHandler(dataEntities);
         }
     }
 
@@ -113,7 +113,7 @@ public class AdminOrgDetailConfirmChangeOpPlugin extends AbstractOperationServic
                 ));
 
         // 根据结构编码获取组织
-        DynamicObjectCollection adminOrgDyColl = QueryServiceHelper.query(AdminOrgConstant.ADMINORGHR_ENTITYID, String.join(",", AdminOrgConstant.BOID_KEY, AdminOrgConstant.STRUCTNUMBER), new QFilter[]{new QFilter(AdminOrgConstant.STRUCTNUMBER, QCP.in, new ArrayList<String>(structMap.keySet())).and(QFilterCommonHelper.getCurrentVersionFilter())}, AdminOrgConstant.LEVEL);
+        DynamicObjectCollection adminOrgDyColl = QueryServiceHelper.query(AdminOrgConstant.ADMINORGHR_ENTITYID, String.join(",", AdminOrgConstant.BOID_KEY, AdminOrgConstant.STRUCTNUMBER), new QFilter[]{new QFilter(AdminOrgConstant.STRUCTNUMBER, QCP.in, new ArrayList<String>(structMap.keySet())).and(QFilterCommonHelper.getCurrentVersionFilter())}, String.join(",", AdminOrgConstant.LEVEL, AdminOrgConstant.NUMBER_KEY));
         adminOrgDyColl.forEach(adminOrgDy -> structMap.put(adminOrgDy.getString(AdminOrgConstant.STRUCTNUMBER), adminOrgDy.getString(AdminOrgConstant.BOID_KEY)));
 
         // 更新一二三四五六级组织
@@ -133,11 +133,14 @@ public class AdminOrgDetailConfirmChangeOpPlugin extends AbstractOperationServic
      * @param dataEntities
      */
     private void endOpInfoHandler(DynamicObject[] dataEntities) {
+        // 存放变更数据的BOID
+        List<Long> boIds = new ArrayList<Long>();
         // 获取组织结构编码
         Map<String, Long> structNumberMap = new HashMap<String, Long>();
         // 拼接过滤条件
         QFilter qFilter = QFilter.of("1!=1");
         for (DynamicObject data : dataEntities) {
+            boIds.add(data.getLong(AdminOrgConstant.BOID_KEY));
             structNumberMap.put(data.getString(AdminOrgConstant.STRUCTNUMBER), data.getLong(AdminOrgConstant.ID_KEY));
             qFilter.or(QFilter.like(AdminOrgConstant.STRUCTLONGNUMBER, data.getString(AdminOrgConstant.STRUCTLONGNUMBER)+"%"));
         }
@@ -150,7 +153,7 @@ public class AdminOrgDetailConfirmChangeOpPlugin extends AbstractOperationServic
         // 存放关联历史版本ID和要更新的字段以及值
         Map<Long, String> sourceIdMap = new HashMap<Long, String>();
         // 查询需要更新的组织(当前版本含本身)
-        DynamicObject[] adminOrgDys = BusinessDataServiceHelper.load(AdminOrgConstant.ADMINORGHR_ENTITYID, selectProperties, new QFilter[]{qFilter}, AdminOrgConstant.LEVEL);
+        DynamicObject[] adminOrgDys = BusinessDataServiceHelper.load(AdminOrgConstant.ADMINORGHR_ENTITYID, selectProperties, new QFilter[]{qFilter}, String.join(",", AdminOrgConstant.LEVEL, AdminOrgConstant.NUMBER_KEY));
         for (DynamicObject adminOrgDy : adminOrgDys) {
             for (String structNumber : structNumberMap.keySet()) {
                 if (adminOrgDy.getString(AdminOrgConstant.STRUCTLONGNUMBER).contains(structNumber)) {
@@ -166,10 +169,15 @@ public class AdminOrgDetailConfirmChangeOpPlugin extends AbstractOperationServic
 
         // 查询出历史版本记录
         Set<Long> sourceIds = new HashSet<>(sourceIdMap.keySet());
-        DynamicObject[] adminOrgHisDys = BusinessDataServiceHelper.load(AdminOrgConstant.ADMINORGHR_ENTITYID, String.join(",", AdminOrgConstant.ADMINORG_STRUCT_FIELDS), new QFilter[]{new QFilter(AdminOrgConstant.ID_KEY, QCP.in, sourceIds)}, AdminOrgConstant.LEVEL);
+        DynamicObject[] adminOrgHisDys = BusinessDataServiceHelper.load(AdminOrgConstant.ADMINORGHR_ENTITYID, String.join(",", AdminOrgConstant.STRUCTLONGNUMBER, adminOrgStructField), new QFilter[]{new QFilter(AdminOrgConstant.ID_KEY, QCP.in, sourceIds)}, String.join(",", AdminOrgConstant.LEVEL, AdminOrgConstant.NUMBER_KEY));
         for (DynamicObject adminOrgHisDy : adminOrgHisDys) {
             String[] sourceId = sourceIdMap.get(adminOrgHisDy.getLong(AdminOrgConstant.ID_KEY)).split("@");
-            adminOrgHisDy.set(sourceId[0], Long.valueOf(sourceId[1]));
+            // 判断是否此次变更的组织
+            if (boIds.indexOf(adminOrgHisDy.getLong(AdminOrgConstant.BOID_KEY)) > 0) {
+                adminOrgHisDy.set(sourceId[0], adminOrgHisDy.getLong(AdminOrgConstant.ID_KEY));
+            } else {
+                adminOrgHisDy.set(sourceId[0], Long.valueOf(sourceId[1]));
+            }
         }
 
         // 合并数据