From 53950f580993cbc996fd0fdc2ae5ef5ee791d69c Mon Sep 17 00:00:00 2001 From: weiyunlong Date: Mon, 21 Apr 2025 14:37:11 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E5=90=88=E5=B9=B6=E6=8E=92=E7=A8=8B?= =?UTF-8?q?=E4=BC=98=E5=8C=96=20--s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../operate/SchedulebillMergeOperation.java | 56 ++++++++++++++++++- 1 file changed, 54 insertions(+), 2 deletions(-) diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/operate/SchedulebillMergeOperation.java b/main/java/shjh/jhzj7/fi/fi/plugin/operate/SchedulebillMergeOperation.java index f31eb6a..764a41c 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/operate/SchedulebillMergeOperation.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/operate/SchedulebillMergeOperation.java @@ -6,6 +6,7 @@ import kd.bos.entity.ExtendedDataEntity; import kd.bos.entity.plugin.AbstractOperationServicePlugIn; import kd.bos.entity.plugin.AddValidatorsEventArgs; import kd.bos.entity.plugin.args.AfterOperationArgs; +import kd.bos.entity.plugin.args.BeforeOperationArgs; import kd.bos.entity.validate.AbstractValidator; import kd.bos.logging.Log; import kd.bos.logging.LogFactory; @@ -18,7 +19,7 @@ import java.math.BigDecimal; import java.util.*; /** - * 排程单据合并 + * 排程单据合并/解除 * 元:shjh_psd_schedulebill_ext * 操作标识:shjh_pcbillhb */ @@ -73,10 +74,38 @@ public class SchedulebillMergeOperation extends AbstractOperationServicePlugIn i }); } + @Override + public void beforeExecuteOperationTransaction(BeforeOperationArgs e) { + super.beforeExecuteOperationTransaction(e); + //重新排程前,将合并状态置为false,并将合并批次号置空(若为二开干预的合并排程单) + String operationKey = e.getOperationKey(); + if ("afreshsche".equals(operationKey)) { + DynamicObject[] dataEntities = e.getDataEntities(); + // 提前加载所有 bill 对象 + DynamicObject[] loadedBills = loadAllBills(dataEntities); + for (DynamicObject loadedBill : loadedBills) { + boolean shjhIshb = loadedBill.getBoolean("shjh_ishb");//是否进行排查单据合并 + if (shjhIshb) { + //通过批次号查找所有同一批的排程单 + String batchnum = loadedBill.getString("batchnum"); + if (!batchnum.isEmpty()) { + DynamicObject[] sameBills = BusinessDataServiceHelper.load("psd_schedulebill","id,batchnum,shjh_ishb", + new QFilter[]{new QFilter("batchnum", "=", batchnum)}); + for (DynamicObject sameBill : sameBills) { + sameBill.set("batchnum", ""); + sameBill.set("shjh_ishb", false); + SaveServiceHelper.save(new DynamicObject[]{sameBill}); + } + } + } + } + } + } + @Override public void afterExecuteOperationTransaction(AfterOperationArgs e) { super.afterExecuteOperationTransaction(e); - //排程任务池列表界面上增加一键合并按钮,点击后,将来源系统为sap的按照合并规则进行合并 + //排程任务池列表界面上增加一键合并按钮,点击后,将来源系统为sap的按照合并规则进行合并 并将合并状态置为true String operationKey = e.getOperationKey(); if ("shjh_pcbillhb".equals(operationKey)) { DynamicObject[] dataEntities = e.getDataEntities(); @@ -107,6 +136,28 @@ public class SchedulebillMergeOperation extends AbstractOperationServicePlugIn i assignBatchNumbersAndSave(map); } } + // 合并解除:若合并批次号不为空,且为二开干预的合并排程单,则将合并批次号置空,并将合并状态置为false + if ("shjh_pcbilljchb".equals(operationKey)) { + DynamicObject[] dataEntities = e.getDataEntities(); + // 提前加载所有 bill 对象 + DynamicObject[] loadedBills = loadAllBills(dataEntities); + for (DynamicObject loadedBill : loadedBills) { + boolean shjhIshb = loadedBill.getBoolean("shjh_ishb");//是否进行排查单据合并 + if (shjhIshb) { + //通过批次号查找所有同一批的排程单 + String batchnum = loadedBill.getString("batchnum"); + if (!batchnum.isEmpty()) { + DynamicObject[] sameBills = BusinessDataServiceHelper.load("psd_schedulebill","id,batchnum,shjh_ishb", + new QFilter[]{new QFilter("batchnum", "=", batchnum)}); + for (DynamicObject sameBill : sameBills) { + sameBill.set("batchnum", ""); + sameBill.set("shjh_ishb", false); + SaveServiceHelper.save(new DynamicObject[]{sameBill}); + } + } + } + } + } } @@ -143,6 +194,7 @@ public class SchedulebillMergeOperation extends AbstractOperationServicePlugIn i long l = System.currentTimeMillis(); for (DynamicObject bill : v) { bill.set("batchnum", "" + l); + bill.set("shjh_ishb", true); } SaveServiceHelper.save(v.toArray(new DynamicObject[0])); });