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

refactor(utils): 将PatternUtil工具类迁移至base模块并优化调令申请单据变更检测逻辑

- 移动PatternUtil类从hrmp模块到base模块的utils包下
- 更新所有引用PatternUtil的导入路径
- 修改TransferApplyBillFormPlugin中的属性变更检测逻辑,使用更精确的值比较方式
- 将IDataEntityProperty相关代码替换为DynamicObject比较实现
- 添加compareValues辅助方法用于对象值比较
- 优化布尔值判断逻辑,统一使用Boolean类型处理
- 更新注释信息,添加类来源说明
jtd 2 дней назад
Родитель
Сommit
200435ff7a

+ 3 - 1
code/hrmp/nckd-jxccl-hrmp/src/main/java/nckd/jxccl/hrmp/hbpm/common/hr/PatternUtil.java → code/base/nckd-jxccl-base-common/src/main/java/nckd/jxccl/base/common/utils/PatternUtil.java

@@ -1,4 +1,4 @@
-package nckd.jxccl.hrmp.hbpm.common.hr;
+package nckd.jxccl.base.common.utils;
 
 import kd.bos.entity.ISVInfo;
 import kd.bos.logging.Log;
@@ -10,6 +10,8 @@ import java.util.regex.Pattern;
 
 /**
  * 模型工具类
+ * 用于校验属性名称是否包含特殊字符或是否扩展字段
+ * @from: kd.hr.homs.business.utils.PatternUtil
  * @author: jtd
  * @date: 2025/12/24 19:45
  */

+ 28 - 8
code/hr/nckd-jxccl-hr/src/main/java/nckd/jxccl/hr/hdm/plugin/form/transfer/TransferApplyBillFormPlugin.java

@@ -4,7 +4,6 @@ package nckd.jxccl.hr.hdm.plugin.form.transfer;
 import kd.bos.coderule.api.CodeRuleInfo;
 import kd.bos.dataentity.entity.DynamicObject;
 import kd.bos.dataentity.entity.DynamicObjectCollection;
-import kd.bos.dataentity.metadata.IDataEntityProperty;
 import kd.bos.entity.QueryEntityType;
 import kd.bos.entity.operate.result.OperationResult;
 import kd.bos.form.ConfirmCallBackListener;
@@ -109,16 +108,37 @@ public class TransferApplyBillFormPlugin extends AbstractFormPlugin {
                 }
 
                 // 判断变更的属性是否影响调令顺序号生成
-                List<IDataEntityProperty> dataEntityProperties = getModel().getDataEntity().getDataEntityState().GetDirtyProperties();
-                for (IDataEntityProperty property : dataEntityProperties) {
-                    if (HRStringUtils.equalsAny(property.getName(), TransferApplyBillConstant.PLANDATE_KEY, TransferApplyBillConstant.NCKD_TRANSFERNO_KEY)) {
-                        getModel().setValue(TransferApplyBillConstant.NCKD_GEN_SERIALNO_KEY, true);
-                        break;
-                    }
+                DynamicObject transferApplyDy = transferApplyHelper.loadOne(String.join(",", TransferApplyBillConstant.PLANDATE_KEY, TransferApplyBillConstant.NCKD_TRANSFERNO_KEY), getModel().getValue(TransferApplyBillConstant.ID_KEY));
+                boolean isChange;
+                List<Boolean> booleanList = new ArrayList<>();
+                Object oldPlanDate = transferApplyDy.get(TransferApplyBillConstant.PLANDATE_KEY);
+                Object newPlanDate = getModel().getValue(TransferApplyBillConstant.PLANDATE_KEY);
+                isChange = compareValues(oldPlanDate, newPlanDate);
+                booleanList.add(isChange);
+
+                Object oldTransferNo = transferApplyDy.get(TransferApplyBillConstant.NCKD_TRANSFERNO_KEY);
+                Object newTransferNo = getModel().getValue(TransferApplyBillConstant.NCKD_TRANSFERNO_KEY);
+                isChange = isChange || compareValues(oldTransferNo, newTransferNo);
+                booleanList.add(isChange);
+
+                if (booleanList.stream().allMatch(Boolean::booleanValue)) {
+                    getModel().setValue(TransferApplyBillConstant.NCKD_GEN_SERIALNO_KEY, true);
+                } else {
+                    getModel().setValue(TransferApplyBillConstant.NCKD_GEN_SERIALNO_KEY, false);
                 }
         }
     }
 
+    private Boolean compareValues(Object newValue, Object oldValue) {
+        if (HRObjectUtils.isEmpty(oldValue) && HRObjectUtils.isEmpty(newValue)) {
+            return false;
+        } else if ((HRObjectUtils.isEmpty(oldValue) && !HRObjectUtils.isEmpty(newValue)) || (!HRObjectUtils.isEmpty(oldValue) && HRObjectUtils.isEmpty(newValue))) {
+            return true;
+        } else {
+            return HRDynamicObjectUtils.compareValues(oldValue, newValue);
+        }
+    }
+
     @Override
     public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) {
         super.afterDoOperation(afterDoOperationEventArgs);
@@ -127,7 +147,7 @@ public class TransferApplyBillFormPlugin extends AbstractFormPlugin {
         switch (operateKey){
             case TransferApplyBillConstant.SAVE_OP:
                 OperationResult operationResult = afterDoOperationEventArgs.getOperationResult();
-                if (!operationResult.isSuccess() || operationResult.getSuccessPkIds().isEmpty() || !HRStringUtils.equals("true", getModel().getDataEntity().getString(TransferApplyBillConstant.NCKD_GEN_SERIALNO_KEY))) {
+                if (!operationResult.isSuccess() || operationResult.getSuccessPkIds().isEmpty() || !getModel().getDataEntity().getBoolean(TransferApplyBillConstant.NCKD_GEN_SERIALNO_KEY)) {
                     break;
                 }
 

+ 1 - 1
code/hrmp/nckd-jxccl-hrmp/src/main/java/nckd/jxccl/hrmp/hbpm/business/hr/service/impl/PositionBillAfterBindDataService.java

@@ -19,7 +19,7 @@ import kd.bos.orm.util.CollectionUtils;
 import kd.hr.hbp.business.servicehelper.HRBaseServiceHelper;
 import kd.hr.hbp.common.util.HRArrayUtils;
 import kd.hr.hbp.common.util.HRStringUtils;
-import nckd.jxccl.hrmp.hbpm.common.hr.PatternUtil;;
+import nckd.jxccl.base.common.utils.PatternUtil;;
 import nckd.jxccl.base.common.utils.QueryFieldBuilder;
 import nckd.jxccl.hrmp.hbpm.common.hr.PositionBillConstant;
 import nckd.jxccl.hrmp.hbpm.common.hr.PositionChangeTypeEnum;

+ 1 - 1
code/hrmp/nckd-jxccl-hrmp/src/main/java/nckd/jxccl/hrmp/hbpm/business/hr/service/impl/PositionBillClosedCallBackService.java

@@ -16,7 +16,7 @@ import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
 import kd.hr.hbp.business.servicehelper.HRBaseServiceHelper;
 import kd.hr.hbp.common.util.HRDyObjectPropUtil;
-import nckd.jxccl.hrmp.hbpm.common.hr.PatternUtil;;
+import nckd.jxccl.base.common.utils.PatternUtil;;
 import nckd.jxccl.hrmp.hbpm.common.hr.PositionBillConstant;
 import nckd.jxccl.hrmp.hbpm.common.hr.PositionChangeTypeEnum;
 

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

@@ -19,7 +19,7 @@ import kd.bos.orm.query.QFilter;
 import kd.hr.hbp.business.servicehelper.HRBaseServiceHelper;
 import kd.hr.hbp.common.util.HRStringUtils;
 import nckd.jxccl.base.common.utils.QueryFieldBuilder;
-import nckd.jxccl.hrmp.hbpm.common.hr.PatternUtil;
+import nckd.jxccl.base.common.utils.PatternUtil;
 import nckd.jxccl.hrmp.hbpm.common.hr.PositionBillConstant;
 import nckd.jxccl.hrmp.hbpm.common.hr.PositionChangeTypeEnum;
 

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

@@ -15,7 +15,7 @@ import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
 import kd.hr.hbp.business.servicehelper.HRBaseServiceHelper;
 import kd.hr.hbp.common.util.HRStringUtils;
-import nckd.jxccl.hrmp.hbpm.common.hr.PatternUtil;
+import nckd.jxccl.base.common.utils.PatternUtil;
 import nckd.jxccl.hrmp.hbpm.common.hr.PositionBillConstant;
 
 import java.util.HashMap;

+ 1 - 1
code/hrmp/nckd-jxccl-hrmp/src/main/java/nckd/jxccl/hrmp/hbpm/business/hr/service/impl/PositionBillSaveHelper.java

@@ -13,7 +13,7 @@ import kd.bos.orm.query.QFilter;
 import kd.hr.hbp.business.servicehelper.HRBaseServiceHelper;
 import kd.hr.hbp.common.util.HRDynamicObjectUtils;
 import kd.hr.hbp.common.util.HRStringUtils;
-import nckd.jxccl.hrmp.hbpm.common.hr.PatternUtil;
+import nckd.jxccl.base.common.utils.PatternUtil;
 import nckd.jxccl.hrmp.hbpm.common.hr.PositionBillConstant;
 import nckd.jxccl.hrmp.hbpm.common.hr.PositionChangeTypeEnum;
 

+ 1 - 1
code/hrmp/nckd-jxccl-hrmp/src/main/java/nckd/jxccl/hrmp/hbpm/plugin/form/hr/PosBillEntryAddFormPlugin.java

@@ -28,7 +28,7 @@ import kd.bos.servicehelper.coderule.CodeRuleServiceHelper;
 import kd.hr.hbp.business.servicehelper.HRBaseServiceHelper;
 import kd.hr.hbp.common.util.HRObjectUtils;
 import kd.hr.hbp.common.util.HRStringUtils;
-import nckd.jxccl.hrmp.hbpm.common.hr.PatternUtil;
+import nckd.jxccl.base.common.utils.PatternUtil;
 import nckd.jxccl.hrmp.hbpm.business.hr.service.impl.PosBillEntryFastChgHelper;
 import nckd.jxccl.hrmp.hbpm.business.hr.service.impl.PositionBillServiceHelper;
 import nckd.jxccl.hrmp.hbpm.common.hr.PositionBillConstant;

+ 1 - 1
code/hrmp/nckd-jxccl-hrmp/src/main/java/nckd/jxccl/hrmp/hbpm/plugin/form/hr/PosBillEntryUpdatePlugin.java

@@ -41,7 +41,7 @@ import kd.hr.hbp.common.util.HRDynamicObjectUtils;
 import kd.hr.hbp.common.util.HRStringUtils;
 import nckd.jxccl.hrmp.hbpm.business.hr.service.impl.PosBillEntryFastChgHelper;
 import nckd.jxccl.hrmp.hbpm.business.hr.service.impl.PositionBillServiceHelper;
-import nckd.jxccl.hrmp.hbpm.common.hr.PatternUtil;
+import nckd.jxccl.base.common.utils.PatternUtil;
 import nckd.jxccl.hrmp.hbpm.common.hr.PositionBillConstant;
 import org.apache.commons.lang3.time.DateUtils;
 

+ 6 - 6
code/hrmp/nckd-jxccl-hrmp/src/main/java/nckd/jxccl/hrmp/hbss/plugin/form/bd/LawEntityChgFormPlugin.java

@@ -10,7 +10,7 @@ import kd.hr.hbp.business.servicehelper.HRBaseServiceHelper;
 import kd.hr.hbp.common.util.HRDynamicObjectUtils;
 import kd.hr.hbp.common.util.HRObjectUtils;
 import kd.hr.hbp.common.util.HRStringUtils;
-import nckd.jxccl.hrmp.hbpm.common.hr.PatternUtil;
+import nckd.jxccl.base.common.utils.PatternUtil;
 import nckd.jxccl.hrmp.hbss.common.bd.LawEntityConstant;
 
 import java.util.ArrayList;
@@ -41,15 +41,15 @@ public class LawEntityChgFormPlugin extends AbstractFormPlugin {
             Object oldValue = helper.loadOne(chgProp, getModel().getValue(LawEntityConstant.ID_KEY)).get(chgProp);
             Object newValue = getModel().getValue(chgProp);
 
+            boolean isChange;
             if (HRObjectUtils.isEmpty(oldValue) && HRObjectUtils.isEmpty(newValue)) {
-                getPageCache().put(chgProp, "false");
+                isChange = false;
             } else if ((HRObjectUtils.isEmpty(oldValue) && !HRObjectUtils.isEmpty(newValue)) || (!HRObjectUtils.isEmpty(oldValue) && HRObjectUtils.isEmpty(newValue))) {
-                getPageCache().put(chgProp, "true");
-            } else if (HRDynamicObjectUtils.compareValues(oldValue, newValue)) {
-                getPageCache().put(chgProp, "false");
+                isChange = true;
             } else {
-                getPageCache().put(chgProp, "true");
+                isChange = HRDynamicObjectUtils.compareValues(oldValue, newValue);
             }
+            getPageCache().put(chgProp, Boolean.toString(isChange));
 
             // 获取所有二开字段的变更属性
             List<Map.Entry<String, String>> dataEntityProperties = getPageCache().getAll().entrySet().stream().filter(entry -> PatternUtil.isExProperty(entry.getKey())).filter(entry -> HRStringUtils.equals(entry.getValue(), "true")).collect(Collectors.toList());