From 3e8ce035a5c536f24aadd213e563927ca4b25b96 Mon Sep 17 00:00:00 2001 From: xuhaihui <2098865055@qq.com> Date: Wed, 4 Jun 2025 15:57:22 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BB=98=E6=AC=BE=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E5=8D=95=EF=BC=88=E5=B7=A5=E7=A8=8B=E9=80=A0=E4=BB=B7=EF=BC=89?= =?UTF-8?q?=E5=8D=95=E6=8D=AE=E6=95=B4=E5=8D=95=E5=A4=8D=E5=88=B6=E5=90=8E?= =?UTF-8?q?=E5=B0=86=E5=8D=95=E4=BD=8D=E5=90=8D=E7=A7=B0=E5=8A=A0=E4=B8=8A?= =?UTF-8?q?-=E5=A4=8D=E5=88=B6=E5=B0=BE=E7=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zcdev/pr/plugin/form/PaymentapplyCopyPlugin.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/PaymentapplyCopyPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/PaymentapplyCopyPlugin.java index 06b1295..51aa730 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/PaymentapplyCopyPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/PaymentapplyCopyPlugin.java @@ -109,7 +109,7 @@ public class PaymentapplyCopyPlugin extends AbstractBillPlugIn implements Plugin srcBillNo = this.getView().getParentView().getPageCache().get("srcBillNo");//列表获取的缓存信息 } QFilter f2 = new QFilter("billno", QCP.equals, srcBillNo); - DynamicObject ec_paymentapply = BusinessDataServiceHelper.loadSingle("ec_paymentapply", "id,entryentity,entryentity.bankaccount", new QFilter[]{f2}); + DynamicObject ec_paymentapply = BusinessDataServiceHelper.loadSingle("ec_paymentapply", "id,billname,entryentity,entryentity.bankaccount", new QFilter[]{f2}); if (ec_paymentapply != null) { DynamicObjectCollection entryEntityCollection = ec_paymentapply.getDynamicObjectCollection("entryentity");//合同付款信息分录 for (int i = 0; i < entryEntityCollection.size(); i++) { @@ -117,6 +117,12 @@ public class PaymentapplyCopyPlugin extends AbstractBillPlugIn implements Plugin String bankAccount = entryEntity.getString("bankaccount");//收款账号 this.getModel().setValue("bankaccount", bankAccount, i); } + String billName = ec_paymentapply.getString("billname");//单位名称 + if (billName != null) { + this.getModel().setValue("billname", billName + "-复制"); + } else { + this.getModel().setValue("billname", "-复制"); + } } } } From 26a8c8ad302128b250b0f8da740074756e384a14 Mon Sep 17 00:00:00 2001 From: zhangzhiguo Date: Wed, 4 Jun 2025 16:15:02 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=94=AF=E5=87=BA=E5=90=88=E5=90=8C?= =?UTF-8?q?=E7=BB=93=E7=AE=97=E5=86=B2=E9=94=80=E5=8D=95=E7=94=9F=E6=88=90?= =?UTF-8?q?=E6=94=B6=E5=85=A5=E5=90=88=E5=90=8C=E7=BB=93=E7=AE=97=E5=86=B2?= =?UTF-8?q?=E9=94=80=E5=8D=95=E5=8A=9F=E8=83=BD=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OutContractSettleUnauditCheckOp.java | 57 ++++++++++++ ...tContractSettleReversalWorkFlowPlugin.java | 89 +++++++++++++++++++ 2 files changed, 146 insertions(+) create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/OutContractSettleUnauditCheckOp.java create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/workflow/OutContractSettleReversalWorkFlowPlugin.java diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/OutContractSettleUnauditCheckOp.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/OutContractSettleUnauditCheckOp.java new file mode 100644 index 0000000..9516cee --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/OutContractSettleUnauditCheckOp.java @@ -0,0 +1,57 @@ +package zcgj.zcdev.zcdev.pr.plugin.operate; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +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.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; + +import java.math.BigDecimal; + +/** + * 支出合同结算冲销单反审核校验是否生成收入合同冲销单 + */ +public class OutContractSettleUnauditCheckOp extends AbstractOperationServicePlugIn { + + @Override + public void onPreparePropertys(PreparePropertysEventArgs e) { + super.onPreparePropertys(e); + e.getFieldKeys().add("zcgj_is_reversabillid"); + e.getFieldKeys().add("billno"); + + //e.getFieldKeys().add("contract.zcgj_pricetype"); + } + + @Override + public void onAddValidators(AddValidatorsEventArgs e) { + super.onAddValidators(e); + //当前所在的组织是属于矿山下的 + e.getValidators().add(new ValidatorExt()); + } + + class ValidatorExt extends AbstractValidator { + @Override + public void validate() { + ExtendedDataEntity[] extendedDataEntities = this.getDataEntities(); + for (ExtendedDataEntity extendedDataEntity : extendedDataEntities) { + DynamicObject dataEntity = extendedDataEntity.getDataEntity(); + String billId = dataEntity.getString("id"); + String billno = dataEntity.getString("billno"); + //冲销单据 + boolean isReversabillid = dataEntity.getBoolean("zcgj_is_reversabillid"); + if (isReversabillid) { + DynamicObject[] load = BusinessDataServiceHelper.load("ec_in_contract_settle", "id,zcgj_reversabillid", new QFilter[]{new QFilter("zcgj_ec_outsettleid", QCP.equals, billId)}); + if (load != null && load.length > 0) { + this.addFatalErrorMessage(extendedDataEntity, "支出合同结算冲销单【"+billno+"】存在收入合同结算冲销单,请删除收入合同结算冲销单后再进行反审核操作。"); + + } + } + } + } + } +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/workflow/OutContractSettleReversalWorkFlowPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/workflow/OutContractSettleReversalWorkFlowPlugin.java new file mode 100644 index 0000000..03ec750 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/workflow/OutContractSettleReversalWorkFlowPlugin.java @@ -0,0 +1,89 @@ +package zcgj.zcdev.zcdev.pr.plugin.workflow; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.entity.operate.result.OperationResult; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.coderule.CodeRuleServiceHelper; +import kd.bos.servicehelper.operation.SaveServiceHelper; +import kd.bos.workflow.api.AgentExecution; +import kd.bos.workflow.engine.extitf.IWorkflowPlugin; + +import java.math.BigDecimal; + +/** + * 支出合同结算单-冲销审核通过工作流插件 + */ +public class OutContractSettleReversalWorkFlowPlugin implements IWorkflowPlugin { + + @Override + public void notify(AgentExecution execution) { + String eventName = execution.getEventName(); + String businessKey = execution.getBusinessKey(); + String entityNumber = execution.getEntityNumber(); + DynamicObject outContractSettle = BusinessDataServiceHelper.loadSingle(businessKey, entityNumber); + //如果时冲销单据 + boolean isReversabillid = outContractSettle.getBoolean("zcgj_is_reversabillid"); + if(isReversabillid) { + //收入合同 + DynamicObject contractInfo = outContractSettle.getDynamicObject("zcgj_in_contract"); + //收入合同结算 + DynamicObject inContractSettle =BusinessDataServiceHelper.newDynamicObject("ec_in_contract_settle"); + + inContractSettle.set("contract",contractInfo); + inContractSettle.set("org", outContractSettle.getDynamicObject("org")); + inContractSettle.set("billstatus","C"); + inContractSettle.set("begindate",outContractSettle.getDate("begindate")); + inContractSettle.set("enddate",outContractSettle.getDate("enddate")); + inContractSettle.set("period",outContractSettle.getDynamicObject("period")); + inContractSettle.set("zcgj_jscustomer",contractInfo.getDynamicObject("parta")); + inContractSettle.set("contattr",outContractSettle.getDynamicObject("contattr")); + inContractSettle.set("project",outContractSettle.getDynamicObject("project")); + inContractSettle.set("conttotaloftaxamount",outContractSettle.getBigDecimal("conttotaloftaxamount")); + inContractSettle.set("description",outContractSettle.getString("description")); + inContractSettle.set("currency",outContractSettle.getString("currency")); + String number = CodeRuleServiceHelper.getNumber("ec_in_contract_settle", inContractSettle, null); + inContractSettle.set("paydirection","in"); + inContractSettle.set("billno",number); + inContractSettle.set("billname", outContractSettle.getString("billname")); + inContractSettle.set("zcgj_ec_outsettleid", outContractSettle.getLong("id")); + inContractSettle.set("taxrate", outContractSettle.getDynamicObject("taxrate")); + inContractSettle.set("isonlist", outContractSettle.getBoolean("isonlist")); + inContractSettle.set("conttotaloftaxamount", outContractSettle.getBoolean("conttotaloftaxamount")); + inContractSettle.set("zcgj_is_reversabillid", true); + + DynamicObject payitem = BusinessDataServiceHelper.loadSingle("ec_payitem", new QFilter[]{new QFilter("number", QCP.equals,"HTCX")}); + + DynamicObjectCollection itementry = outContractSettle.getDynamicObjectCollection("itementry"); + DynamicObjectCollection entryEntity = inContractSettle.getDynamicObjectCollection("itementry"); + + BigDecimal settleamount = BigDecimal.ZERO; + BigDecimal taxamount = BigDecimal.ZERO; + BigDecimal settleoftaxamount = BigDecimal.ZERO; + for (DynamicObject dynamicObject : itementry) { + DynamicObject item = entryEntity.addNew(); + item.set("payitem",payitem); + BigDecimal oftaxamount = dynamicObject.getBigDecimal("oftaxamount"); + item.set("oftaxamount",oftaxamount); + BigDecimal amount = dynamicObject.getBigDecimal("amount"); + item.set("amount",amount); + item.set("rate",dynamicObject.getBigDecimal("rate")); + BigDecimal taxamt = dynamicObject.getBigDecimal("taxamt"); + item.set("taxamt",taxamt); + item.set("remark",dynamicObject.getString("remark")); + + settleamount = settleamount.add(amount); + taxamount = taxamount.add(taxamt); + settleoftaxamount = settleoftaxamount.add(oftaxamount); + } + inContractSettle.set("settleamount",settleamount); + inContractSettle.set("taxamount",taxamount); + inContractSettle.set("settleoftaxamount",settleoftaxamount); + + OperationResult ecInContractSettle = SaveServiceHelper.saveOperate("ec_in_contract_settle", new DynamicObject[]{inContractSettle}, null);//支出合同实体 + } + IWorkflowPlugin.super.notify(execution); + } +}