Преглед на файлове

feat(sandintask): 添加提交人字段并实现提交时自动记录功能

- 在SanDingConstant中添加提交人字段常量
- 在TransferApplyBillFormPlugin中导入OperationStatus类
- 优化调令顺序号生成逻辑,区分新增和编辑状态的处理
- 实现SanDingTaskFormPlugin的afterDoOperation方法
- 添加setSubmitter方法在提交操作时自动记录当前用户ID
- 使用SaveServiceHelper保存包含提交人信息的数据实体
jtd преди 1 седмица
родител
ревизия
1097eecde7

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

@@ -1,6 +1,7 @@
 package nckd.jxccl.hr.hdm.plugin.form.transfer;
 
 
+import kd.bos.bill.OperationStatus;
 import kd.bos.coderule.api.CodeRuleInfo;
 import kd.bos.dataentity.entity.DynamicObject;
 import kd.bos.dataentity.entity.DynamicObjectCollection;
@@ -107,19 +108,24 @@ public class TransferApplyBillFormPlugin extends AbstractFormPlugin {
                     validateFamilyRelation(args);
                 }
 
-                // 判断变更的属性是否影响调令顺序号生成
-                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 (OperationStatus.ADDNEW.equals(getView().getFormShowParameter().getStatus())) {
+                    // 如果是新增
+                    booleanList.add(true);
+                } else {
+                    // 判断变更的属性是否影响调令顺序号生成
+                    DynamicObject transferApplyDy = transferApplyHelper.loadOne(String.join(",", TransferApplyBillConstant.PLANDATE_KEY, TransferApplyBillConstant.NCKD_TRANSFERNO_KEY), getModel().getValue(TransferApplyBillConstant.ID_KEY));
+                    boolean isChange;
+                    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);

+ 2 - 0
code/hr/nckd-jxccl-hr/src/main/java/nckd/jxccl/hr/sdm/common/SanDingConstant.java

@@ -73,6 +73,8 @@ public class SanDingConstant extends FormConstant {
     public static final String NCKD_STAFFINGSHORTFALL_KEY = "nckd_staffingshortfall";
     /** 附件 */
     public static final String ATTACHMENTPANEL_KEY = "attachmentpanel";
+    /** 提交人 */
+    public static final String NCKD_SUBMITTER_KEY = "nckd_submitter";
 
     /** 行政组织.ID */
     public static final String HAOS_ADMINORGHRF7_ID = "haos_adminorghrf7.id";

+ 27 - 0
code/hr/nckd-jxccl-hr/src/main/java/nckd/jxccl/hr/sdm/plugin/form/SanDingTaskFormPlugin.java

@@ -1,9 +1,14 @@
 package nckd.jxccl.hr.sdm.plugin.form;
 
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.entity.operate.result.OperationResult;
 import kd.bos.form.control.AttachmentPanel;
+import kd.bos.form.events.AfterDoOperationEventArgs;
 import kd.bos.form.events.BeforeDoOperationEventArgs;
 import kd.bos.form.operate.FormOperate;
 import kd.bos.form.plugin.AbstractFormPlugin;
+import kd.bos.servicehelper.operation.SaveServiceHelper;
+import kd.bos.servicehelper.user.UserServiceHelper;
 import kd.hr.hbp.common.util.HRStringUtils;
 import nckd.jxccl.hr.sdm.common.SanDingConstant;
 
@@ -29,4 +34,26 @@ public class SanDingTaskFormPlugin extends AbstractFormPlugin {
             }
         }
     }
+
+    @Override
+    public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) {
+        super.afterDoOperation(afterDoOperationEventArgs);
+
+        String operateKey = afterDoOperationEventArgs.getOperateKey();
+        switch (operateKey) {
+            case SanDingConstant.SUBMIT_OP:
+                setSubmitter(afterDoOperationEventArgs);
+        }
+    }
+
+    private void setSubmitter(AfterDoOperationEventArgs afterDoOperationEventArgs) {
+        OperationResult operationResult = afterDoOperationEventArgs.getOperationResult();
+        if (!operationResult.isSuccess() || operationResult.getSuccessPkIds().isEmpty()) {
+            return;
+        }
+
+        DynamicObject dataEntity = getModel().getDataEntity();
+        dataEntity.set(SanDingConstant.NCKD_SUBMITTER_KEY, UserServiceHelper.getCurrentUserId());
+        SaveServiceHelper.save(new DynamicObject[]{dataEntity});
+    }
 }