From 4e39c9b86641ec1335af1afec22eb4c02691cd6e Mon Sep 17 00:00:00 2001 From: xuhaihui <2098865055@qq.com> Date: Fri, 7 Nov 2025 13:50:44 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=94=AF=E5=87=BA=E5=90=88?= =?UTF-8?q?=E5=90=8C=E7=BB=93=E7=AE=97=E6=8C=89=E5=85=A5=E5=BA=93=E8=BF=90?= =?UTF-8?q?=E8=B4=B9=E7=BB=93=E7=AE=97=E9=80=BB=E8=BE=91=EF=BC=8C=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E5=88=A0=E9=99=A4=E5=90=88=E5=90=8C=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E9=A1=B9=E4=B8=AD=E7=9A=84=E5=BD=93=E6=9C=9F=E5=90=88=E5=90=8C?= =?UTF-8?q?=E8=AE=A1=E9=87=8F=E9=87=91=E9=A2=9D=E8=A1=8C=EF=BC=8C=E6=92=A4?= =?UTF-8?q?=E9=94=80=E5=8F=8D=E5=AE=A1=E6=A0=B8=E6=96=B0=E5=A2=9E=E5=90=88?= =?UTF-8?q?=E5=90=8C=E6=94=AF=E4=BB=98=E9=A1=B9=E4=B8=AD=E7=9A=84=E5=BD=93?= =?UTF-8?q?=E6=9C=9F=E5=90=88=E5=90=8C=E8=AE=A1=E9=87=8F=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E8=A1=8C=E9=80=BB=E8=BE=91=E5=92=8C=E5=88=B7=E6=96=B0=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/form/CostAllocatorBillPlugin.java | 12 ++++- .../form/OutContractSettleEditPluginExt.java | 20 +++++++- .../plugin/operate/OutContractSubmitOp.java | 47 +++++++++++++++++++ .../operate/OutContractUnSubmitUnAuditOp.java | 42 +++++++++++++++++ 4 files changed, 119 insertions(+), 2 deletions(-) create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/OutContractSubmitOp.java create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/OutContractUnSubmitUnAuditOp.java diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/CostAllocatorBillPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/CostAllocatorBillPlugin.java index 52a0c23..f6b2632 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/CostAllocatorBillPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/CostAllocatorBillPlugin.java @@ -6,7 +6,9 @@ import kd.bos.dataentity.metadata.dynamicobject.DynamicObjectType; import kd.bos.entity.datamodel.events.ChangeData; import kd.bos.entity.datamodel.events.PropertyChangedArgs; import kd.bos.form.control.events.ItemClickEvent; +import kd.bos.form.events.AfterDoOperationEventArgs; import kd.bos.form.plugin.AbstractFormPlugin; +import kd.bos.list.BillList; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; @@ -28,7 +30,15 @@ public class CostAllocatorBillPlugin extends AbstractFormPlugin { this.addItemClickListeners("payitemdetaitoolap");//合同支付项明细工具栏 this.addItemClickListeners("entrytoolbar1");//入库单明细工具栏 } - + @Override + public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) { + super.afterDoOperation(afterDoOperationEventArgs); + String operateKey = afterDoOperationEventArgs.getOperateKey(); + if (operateKey.equals("submit") || operateKey.equals("unsubmit") || operateKey.equals("unaudit")) { + // 刷新列表 + this.getView().invokeOperation("refresh"); + } + } @Override public void itemClick(ItemClickEvent evt) { super.itemClick(evt); diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/OutContractSettleEditPluginExt.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/OutContractSettleEditPluginExt.java index 1de3132..16c78b2 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/OutContractSettleEditPluginExt.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/OutContractSettleEditPluginExt.java @@ -347,6 +347,10 @@ public class OutContractSettleEditPluginExt extends AbstractBillPlugIn implement protected void sumMaterialInAmountToItemEntry() { this.getModel().updateCache(); + Object contract = this.getModel().getValue("contract");//合同名称 + if (contract == null) { + return; + } DynamicObjectCollection materialInEntry = this.getModel().getEntryEntity("materialinentry");//入库单分录 if (materialInEntry != null && materialInEntry.size() != 0) { BigDecimal amount = BigDecimal.ZERO;//入库单明细-材料不含税金额汇总 @@ -574,10 +578,24 @@ public class OutContractSettleEditPluginExt extends AbstractBillPlugIn implement //二开添加逻辑↓ } else if (StringUtils.equals(name, "zcgj_transset")) { //按入库运费结算 + Object contract = this.getModel().getValue("contract");//合同名称 + if (contract == null) { + return; + } + boolean issettlebymatin = (boolean) this.getModel().getValue("issettlebymatin");//按入库单结算 + boolean zcgj_transset = (boolean) changeData.getNewValue();//按入库运费结算新值 + DynamicObject transSettleItem1 = this.getModel().getEntryRowEntity("itementry", 1); + DynamicObject payItem1 = transSettleItem1.getDynamicObject("payitem");//合同支付项-名称 + boolean hasSettleTrans1 = "YFJS".equals(payItem1.getString("number")); + if (!issettlebymatin && !zcgj_transset && hasSettleTrans1) { + this.getModel().setValue("oftaxamount", BigDecimal.ZERO, 1);//合同支付项-价税合计 + this.getModel().setValue("amount", BigDecimal.ZERO, 1);//合同支付项-金额 + this.getModel().deleteEntryRow("itementry", 1); + return; + } this.autoFetch(); this.sumMaterialInAmountToItemEntry(); SettleUpdateAmtUtils.calAllTypeAmount(this.getModel()); - Boolean zcgj_transset = (Boolean) changeData.getNewValue();//按入库运费结算新值 DynamicObjectCollection materialInEntry = this.getModel().getEntryEntity("materialinentry");//入库单分录 if (materialInEntry != null && materialInEntry.size() != 0) { BigDecimal amount = BigDecimal.ZERO;//入库单明细-材料不含税金额汇总 diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/OutContractSubmitOp.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/OutContractSubmitOp.java new file mode 100644 index 0000000..81de1ba --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/OutContractSubmitOp.java @@ -0,0 +1,47 @@ +package zcgj.zcdev.zcdev.pr.plugin.operate; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.entity.plugin.AbstractOperationServicePlugIn; +import kd.bos.entity.plugin.args.AfterOperationArgs; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.operation.SaveServiceHelper; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +/** + * 支出合同结算提交操作插件 + */ +public class OutContractSubmitOp extends AbstractOperationServicePlugIn { + + @Override + public void afterExecuteOperationTransaction(AfterOperationArgs e) { + super.afterExecuteOperationTransaction(e); + DynamicObject[] dataEntities = e.getDataEntities(); + List modifiedEntities = new ArrayList<>(); + for (DynamicObject model : dataEntities) { + long id = model.getLong("id"); + QFilter f1 = new QFilter("id", "=", id); + DynamicObject ec_out_contract_settle = BusinessDataServiceHelper.loadSingle("ec_out_contract_settle", new QFilter[]{f1});//支出合同结算 + boolean zcgj_transset = ec_out_contract_settle.getBoolean("zcgj_transset");//按入库运费结算 + if (zcgj_transset) { + DynamicObjectCollection itemEntryCollection = ec_out_contract_settle.getDynamicObjectCollection("itementry");//支付项分录 + if (itemEntryCollection != null && itemEntryCollection.size() > 0) { + Iterator iterator = itemEntryCollection.iterator();//迭代器 + while (iterator.hasNext()) { + DynamicObject itemEntry = iterator.next(); + DynamicObject payItem1 = itemEntry.getDynamicObject("payitem");//合同支付项-名称 + boolean hasSettleTrans1 = "HTJL".equals(payItem1.getString("number")); + if (hasSettleTrans1) { + iterator.remove();//注意一定要用迭代器remove + } + } + } + } + SaveServiceHelper.save(new DynamicObject[]{ec_out_contract_settle});//保存 + } + } +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/OutContractUnSubmitUnAuditOp.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/OutContractUnSubmitUnAuditOp.java new file mode 100644 index 0000000..080528f --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/OutContractUnSubmitUnAuditOp.java @@ -0,0 +1,42 @@ +package zcgj.zcdev.zcdev.pr.plugin.operate; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.dataentity.metadata.dynamicobject.DynamicObjectType; +import kd.bos.entity.plugin.AbstractOperationServicePlugIn; +import kd.bos.entity.plugin.args.AfterOperationArgs; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.operation.SaveServiceHelper; + +/** + * 支出合同结算撤销反审核操作插件 + */ +public class OutContractUnSubmitUnAuditOp extends AbstractOperationServicePlugIn { + @Override + public void afterExecuteOperationTransaction(AfterOperationArgs e) { + super.afterExecuteOperationTransaction(e); + DynamicObject[] dataEntities = e.getDataEntities(); + for (DynamicObject model : dataEntities) { + long id = model.getLong("id"); + QFilter f1 = new QFilter("id", "=", id); + DynamicObject ec_out_contract_settle = BusinessDataServiceHelper.loadSingle("ec_out_contract_settle", new QFilter[]{f1});//支出合同结算 + boolean zcgj_transset = ec_out_contract_settle.getBoolean("zcgj_transset");//按入库运费结算 + if (zcgj_transset) { + DynamicObjectCollection itemEntryCollection = ec_out_contract_settle.getDynamicObjectCollection("itementry");//支付项分录 + if (itemEntryCollection != null && itemEntryCollection.size() > 0) { + DynamicObject itemEntry = itemEntryCollection.get(0); + DynamicObject payItem1 = itemEntry.getDynamicObject("payitem");//合同支付项-名称 + boolean hasSettleTrans1 = "YFJS".equals(payItem1.getString("number")); + if (hasSettleTrans1) { + DynamicObjectType entrytype = ec_out_contract_settle.getDynamicObjectCollection("itementry").getDynamicObjectType(); + DynamicObject newItemEntry = new DynamicObject(entrytype); + newItemEntry.set("payitem", "506427748873442304"); + itemEntryCollection.add(0, newItemEntry); + } + } + } + SaveServiceHelper.save(new DynamicObject[]{ec_out_contract_settle});//保存 + } + } +}