From 41030db6be08eefbcebe89739e071495895bad1d Mon Sep 17 00:00:00 2001 From: zhangzhiguo <421587375@qq.com> Date: Thu, 18 Sep 2025 13:47:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=A5=E5=BA=93=E5=8D=95=E5=87=BA=E5=BA=93?= =?UTF-8?q?=E5=8D=95=E5=AE=A1=E6=89=B9=E4=BA=BA=E6=A0=A1=E9=AA=8C=E6=8F=92?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/operate/MaterialinCheckFlowOp.java | 82 +++++++++++++++++++ .../operate/MaterialoutCheckFlowOp.java | 82 +++++++++++++++++++ 2 files changed, 164 insertions(+) create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/MaterialinCheckFlowOp.java create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/MaterialoutCheckFlowOp.java diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/MaterialinCheckFlowOp.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/MaterialinCheckFlowOp.java new file mode 100644 index 0000000..e171f1d --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/MaterialinCheckFlowOp.java @@ -0,0 +1,82 @@ +package zcgj.zcdev.zcdev.pr.plugin.operate; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.entity.ExtendedDataEntity; +import kd.bos.entity.plugin.AbstractOperationServicePlugIn; +import kd.bos.entity.plugin.AddValidatorsEventArgs; +import kd.bos.entity.plugin.PreparePropertysEventArgs; +import kd.bos.entity.validate.AbstractValidator; +import kd.bos.logging.Log; +import kd.bos.logging.LogFactory; +import kd.bos.servicehelper.user.UserServiceHelper; +import kd.bos.servicehelper.workflow.WorkflowServiceHelper; +import kd.bos.workflow.component.approvalrecord.IApprovalRecordGroup; + +import java.util.List; + +/** + * 入库单 + * 判断当前审批人是否为提交人 + * 综合岗和项目经理发起的报销,本人点提交提示必须执行转交 + */ +public class MaterialinCheckFlowOp extends AbstractOperationServicePlugIn { + private static final Log log = LogFactory.getLog(MaterialinCheckFlowOp.class); + @Override + public void onPreparePropertys(PreparePropertysEventArgs e) { + super.onPreparePropertys(e); +// e.getFieldKeys().add("formid"); + e.getFieldKeys().add("id"); + e.getFieldKeys().add("zcgj_reqperson");//入库物资申请人 + //e.getFieldKeys().add("creator"); + } + + @Override + public void onAddValidators(AddValidatorsEventArgs e) { + super.onAddValidators(e); + e.getValidators().add(new MaterialinCheckFlowOp.ValidatorExt()); + } + + class ValidatorExt extends AbstractValidator { + @Override + public void validate() { + ExtendedDataEntity[] extendedDataEntities = this.getDataEntities(); + Long currentUserId = UserServiceHelper.getCurrentUserId(); + for (ExtendedDataEntity extendedDataEntity : extendedDataEntities) { + DynamicObject dataEntity = extendedDataEntity.getDataEntity(); + String billId = dataEntity.getString("id"); +// String formid = dataEntity.getString("formid");//源 + String formid = dataEntity.getDynamicObjectType().getName(); + //String formid = "zcgj_test_01"; + //获取报销人 + DynamicObject applier = dataEntity.getDynamicObject("zcgj_reqperson"); + //DynamicObject applier = dataEntity.getDynamicObject("creator"); + Long applierId = applier.getLong("id"); + boolean isOk = true; + //所有审批记录,从审批记录中获取已经审批过的人 + List allApprovalRecords = WorkflowServiceHelper.getApprovalRecords(formid, billId, true); + if(allApprovalRecords!=null){ + for (IApprovalRecordGroup allApprovalRecord : allApprovalRecords) { + String groupDecisionType = allApprovalRecord.getGroupDecisionType(); + //过滤提交的和待分配的任务 + log.info("ApprovalCheckFlowOp: 操作节点编码:"+groupDecisionType); + if("submit".equals(groupDecisionType) + ||"approve".equals(groupDecisionType)){ //获取每个节点的审批类型 提交:submit + log.info("ApprovalCheckFlowOp: approve 申请人:"+applierId); + //Long userId = allApprovalRecord.getChildren().get(0).getUserId();//获取每个节点的审批人 + log.info("ApprovalCheckFlowOp: approve 审批人:"+currentUserId); + if(applierId.equals(currentUserId) ){//如果审批不是申请人,则可以进行审批操作 + isOk = false; + } + } + } + if(!isOk){ + this.addFatalErrorMessage(extendedDataEntity, "当前审批人为单据物资申请人,无法进行审批操作,请转给他人进行审批!"); + return; + } + } + } + } + } + + +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/MaterialoutCheckFlowOp.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/MaterialoutCheckFlowOp.java new file mode 100644 index 0000000..86ac9a5 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/MaterialoutCheckFlowOp.java @@ -0,0 +1,82 @@ +package zcgj.zcdev.zcdev.pr.plugin.operate; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.entity.ExtendedDataEntity; +import kd.bos.entity.plugin.AbstractOperationServicePlugIn; +import kd.bos.entity.plugin.AddValidatorsEventArgs; +import kd.bos.entity.plugin.PreparePropertysEventArgs; +import kd.bos.entity.validate.AbstractValidator; +import kd.bos.logging.Log; +import kd.bos.logging.LogFactory; +import kd.bos.servicehelper.user.UserServiceHelper; +import kd.bos.servicehelper.workflow.WorkflowServiceHelper; +import kd.bos.workflow.component.approvalrecord.IApprovalRecordGroup; + +import java.util.List; + +/** + * 出库单 + * 判断当前审批人是否为提交人 + * 综合岗和项目经理发起的报销,本人点提交提示必须执行转交 + */ +public class MaterialoutCheckFlowOp extends AbstractOperationServicePlugIn { + private static final Log log = LogFactory.getLog(MaterialoutCheckFlowOp.class); + @Override + public void onPreparePropertys(PreparePropertysEventArgs e) { + super.onPreparePropertys(e); +// e.getFieldKeys().add("formid"); + e.getFieldKeys().add("id"); + e.getFieldKeys().add("zcgj_outbound_by");//出库申请人 + //e.getFieldKeys().add("creator"); + } + + @Override + public void onAddValidators(AddValidatorsEventArgs e) { + super.onAddValidators(e); + e.getValidators().add(new MaterialoutCheckFlowOp.ValidatorExt()); + } + + class ValidatorExt extends AbstractValidator { + @Override + public void validate() { + ExtendedDataEntity[] extendedDataEntities = this.getDataEntities(); + Long currentUserId = UserServiceHelper.getCurrentUserId(); + for (ExtendedDataEntity extendedDataEntity : extendedDataEntities) { + DynamicObject dataEntity = extendedDataEntity.getDataEntity(); + String billId = dataEntity.getString("id"); +// String formid = dataEntity.getString("formid");//源 + String formid = dataEntity.getDynamicObjectType().getName(); + //String formid = "zcgj_test_01"; + //获取报销人 + DynamicObject applier = dataEntity.getDynamicObject("zcgj_outbound_by"); + //DynamicObject applier = dataEntity.getDynamicObject("creator"); + Long applierId = applier.getLong("id"); + boolean isOk = true; + //所有审批记录,从审批记录中获取已经审批过的人 + List allApprovalRecords = WorkflowServiceHelper.getApprovalRecords(formid, billId, true); + if(allApprovalRecords!=null){ + for (IApprovalRecordGroup allApprovalRecord : allApprovalRecords) { + String groupDecisionType = allApprovalRecord.getGroupDecisionType(); + //过滤提交的和待分配的任务 + log.info("ApprovalCheckFlowOp: 操作节点编码:"+groupDecisionType); + if("submit".equals(groupDecisionType) + ||"approve".equals(groupDecisionType)){ //获取每个节点的审批类型 提交:submit + log.info("ApprovalCheckFlowOp: approve 申请人:"+applierId); + //Long userId = allApprovalRecord.getChildren().get(0).getUserId();//获取每个节点的审批人 + log.info("ApprovalCheckFlowOp: approve 审批人:"+currentUserId); + if(applierId.equals(currentUserId) ){//如果审批不是申请人,则可以进行审批操作 + isOk = false; + } + } + } + if(!isOk){ + this.addFatalErrorMessage(extendedDataEntity, "当前审批人为单据物资申请人,无法进行审批操作,请转给他人进行审批!"); + return; + } + } + } + } + } + + +}