|
@@ -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 });
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|