Browse Source

共享审核插件:离开共享节点时反写单据共享审核人

tanya 3 weeks ago
parent
commit
40dee7fd00

+ 50 - 0
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/common/constant/ErReimBurseBillConstant.java

@@ -0,0 +1,50 @@
+package nckd.jimin.jyyy.fi.common.constant;
+
+public interface ErReimBurseBillConstant extends BillConstant{
+
+    String ENTITYID = "er_dailyreimbursebill";
+
+    /**
+     * 共享审核人
+     */
+    String KEY_NCKD_TASKAPPROVER = "nckd_taskapprover";
+    /**
+     * 交票人
+     */
+    String KEY_NCKD_HANDIN_PERSON = "nckd_handin_person";
+    /**
+     * 交票时间
+     */
+    String KEY_NCKD_HANDIN_DATE = "nckd_handin_date";
+    /**
+     * 收票人
+     */
+    String KEY_NCKD_RECEIPT_PERSON = "nckd_receipt_person";
+
+    /**
+     * 收票时间
+     */
+    String KEY_NCKD_RECEIPT_DATE = "nckd_receipt_date";
+
+    /**
+     * 快递单号
+     */
+    String KEY_NCKD_TRACKING_NUMBER = "nckd_tracking_number";
+
+    String KEY_COSTCOMPANY = "costcompany";
+
+    interface OPERATE{
+        /**
+         * 交票操作
+         */
+        String HANDIN_TICKET = "nckd_handin_ticket";
+
+        /**
+         * 收票操作
+         */
+        String RECEIVE_TICKET = "nckd_receive_ticket";
+
+    }
+
+
+}

+ 56 - 0
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/plugin/workflow/TaskApproverWorkflowPlugin.java

@@ -0,0 +1,56 @@
+package nckd.jimin.jyyy.fi.plugin.workflow;
+
+
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.metadata.dynamicobject.DynamicObjectType;
+import kd.bos.dataentity.resource.ResManager;
+import kd.bos.entity.EntityMetadataCache;
+import kd.bos.logging.BizLog;
+import kd.bos.orm.query.QCP;
+import kd.bos.orm.query.QFilter;
+import kd.bos.servicehelper.BusinessDataServiceHelper;
+import kd.bos.servicehelper.operation.SaveServiceHelper;
+import kd.bos.workflow.api.AgentExecution;
+import kd.bos.workflow.engine.extitf.IWorkflowPlugin;
+import nckd.jimin.jyyy.fi.common.constant.ErReimBurseBillConstant;
+
+import java.util.List;
+
+/**
+ * 共享审核节点设置审核人
+ */
+public class TaskApproverWorkflowPlugin implements IWorkflowPlugin {
+
+    @Override
+    public void notify(AgentExecution e) {
+        IWorkflowPlugin.super.notify(e);
+        String businessKey = e.getBusinessKey();
+        String entityNumber = e.getEntityNumber();
+        updateBillTaskApprover(businessKey,entityNumber);
+    }
+
+    /**
+     * 更新共享审核人
+     * @param billId
+     * @param formId
+     */
+    protected void updateBillTaskApprover(Object billId,String formId){
+        DynamicObjectType entityType = EntityMetadataCache.getDataEntityType(formId);
+        if(!entityType.getProperties().containsKey(ErReimBurseBillConstant.KEY_NCKD_TASKAPPROVER)){
+            BizLog.log(String.format("单据类型【%1&s】没有共享审核人字段,无需更新",formId));
+            return;
+        }
+
+        DynamicObject billInfo = BusinessDataServiceHelper.loadSingle(billId, formId, String.join(",",ErReimBurseBillConstant.KEY_NCKD_TASKAPPROVER,"billno"));
+
+        // 按完成时间倒叙,取最晚的一条 如果共享被驳回,再次审核通过时反写
+        DynamicObject[] taskTaskhistories = BusinessDataServiceHelper.load("task_taskhistory", "billnumber,id,apprevalmessage,personid,tasktypeid,state", new QFilter[]{
+                new QFilter("billnumber", QCP.equals,billInfo.getString("billno"))
+        },"completetime desc");
+
+        if(taskTaskhistories.length > 0){
+            billInfo.set(ErReimBurseBillConstant.KEY_NCKD_TASKAPPROVER,taskTaskhistories[0].getDynamicObject("personid"));
+            SaveServiceHelper.save(new DynamicObject[]{ billInfo });
+        }
+    }
+}