From b18f245d85908e6873984fa251072b7f4e975ded Mon Sep 17 00:00:00 2001 From: weiyunlong Date: Fri, 6 Dec 2024 15:48:56 +0800 Subject: [PATCH] =?UTF-8?q?(=E6=B6=89=E5=8F=8A=E5=8F=98=E6=9B=B4,=E5=B7=A5?= =?UTF-8?q?=E7=A8=8B=E6=8C=87=E4=BB=A4,=E5=A5=96=E5=8A=B1=E6=89=A3?= =?UTF-8?q?=E6=AC=BE)--=E6=A0=B9=E6=8D=AE=E4=BE=9B=E5=BA=94=E5=95=86?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E8=8E=B7=E5=8F=96=E8=81=94=E7=B3=BB=E4=BA=BA?= =?UTF-8?q?=EF=BC=8C=E5=B9=B6=E6=B7=BB=E5=8A=A0=E5=88=B0=E4=BC=A0=E9=98=85?= =?UTF-8?q?=E4=BA=BA=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repc/iwork/IWorkParticipantPlugin.java | 118 ++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 main/java/shkd/repc/iwork/IWorkParticipantPlugin.java diff --git a/main/java/shkd/repc/iwork/IWorkParticipantPlugin.java b/main/java/shkd/repc/iwork/IWorkParticipantPlugin.java new file mode 100644 index 0000000..f845d94 --- /dev/null +++ b/main/java/shkd/repc/iwork/IWorkParticipantPlugin.java @@ -0,0 +1,118 @@ +package shkd.repc.iwork; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.workflow.api.AgentExecution; +import kd.bos.workflow.api.WorkflowElement; +import kd.bos.workflow.engine.extitf.IWorkflowPlugin; + +import java.util.List; + +public class IWorkParticipantPlugin implements IWorkflowPlugin { + + @Override + public List calcUserIds(AgentExecution execution) { + List currentApprover = execution.getCurrentApprover(); // 获取当前节点的审批人 + + String businessKey = execution.getBusinessKey(); // 单据的BusinessKey(业务ID) + String entityNumber = execution.getEntityNumber(); // 单据实体编码 + DynamicObject entity = BusinessDataServiceHelper.loadSingle(businessKey, entityNumber); + + + //recon_designchgbill(涉及变更) 供应商:designunit(设计单位) + //recon_chgauditorderbill(工程指令) 供应商:construnit(施工单位) + //recon_rewarddeductbill(奖励扣款) 供应商存在分录:rewarddeductentry(奖惩单分录) 供应商:entry_supplier(供应商) + + if (entity != null) { + switch (entityNumber) { + case "recon_designchgbill": + getApprover(entity, currentApprover, "designunit"); + break; + case "recon_chgauditorderbill": + getApprover(entity, currentApprover, "construnit"); + break; + case "recon_rewarddeductbill": + getApprovers(entity, currentApprover, "rewarddeductentry", "entry_supplier"); + break; + default: + // 处理未定义的实体编码的情况(可选) + break; + } + } + + return currentApprover; + } + + /** + * 根据供应商名称获取联系人,并添加到传阅人中 + * @param entity 当前单据 + * @param currentApprover 当前审批人 + * @param supplierTitle 供应商标识 + * @return + */ + public static List getApprover(DynamicObject entity, List currentApprover, String supplierTitle) { + if (entity != null) { + DynamicObject preSupplier = entity.getDynamicObject(supplierTitle); + if (preSupplier != null) { + preSupplier = BusinessDataServiceHelper.loadSingle(preSupplier.getPkValue(), "resm_official_supplier"); // 正式供应商 + DynamicObjectCollection entryLinkmans = preSupplier.getDynamicObjectCollection("entry_linkman"); // 联系人 + + for (DynamicObject entryLinkman : entryLinkmans) { + if (entryLinkman.getBoolean("isopenaccount")) { + String contactPerson = entryLinkman.getString("contactperson"); // 名字 + addUserToApprover(contactPerson, currentApprover); + } + } + } + } + return currentApprover; + } + + /** + * 根据供应商名称获取联系人,并添加到传阅人中 + * @param entity 当前单据 + * @param currentApprover 当前审批人 + * @param supplierEntry 供应商分录标识 + * @param supplierTitle 供应商标识 + * @return + */ + public static List getApprovers(DynamicObject entity, List currentApprover, String supplierEntry, String supplierTitle) { + if (entity != null) { + DynamicObjectCollection collections = entity.getDynamicObjectCollection(supplierEntry); + for (DynamicObject collection : collections) { + DynamicObject preSupplier = collection.getDynamicObject(supplierTitle); + if (preSupplier != null) { + preSupplier = BusinessDataServiceHelper.loadSingle(preSupplier.getPkValue(), "resm_official_supplier"); // 正式供应商 + DynamicObjectCollection entryLinkmans = preSupplier.getDynamicObjectCollection("entry_linkman"); // 联系人 + + for (DynamicObject entryLinkman : entryLinkmans) { + if (entryLinkman.getBoolean("isopenaccount")) { + String contactPerson = entryLinkman.getString("contactperson"); // 名字 + addUserToApprover(contactPerson, currentApprover); + } + } + } + } + } + return currentApprover; + } + + /** + * 将用户添加到当前审批人列表中 + * @param contactPerson 联系人姓名 + * @param currentApprover 当前审批人列表 + */ + private static void addUserToApprover(String contactPerson, List currentApprover) { + if (contactPerson != null && !contactPerson.isEmpty()) { + QFilter qFilter = new QFilter("name", QCP.equals, contactPerson); + DynamicObject bosUser = BusinessDataServiceHelper.loadSingle("bos_user", new QFilter[]{qFilter}); + if (bosUser != null) { + currentApprover.add(bosUser.getLong("id")); + } + } + } + +}