From 7563a3106b2517528088986b7fd533111c7a401e Mon Sep 17 00:00:00 2001 From: xuhaihui <2098865055@qq.com> Date: Tue, 30 Dec 2025 17:36:02 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=94=B6=E5=85=A5=E8=B4=A2=E5=8A=A1?= =?UTF-8?q?=E7=A1=AE=E8=AE=A4=E4=B8=8A=E6=8B=89=E5=90=88=E5=90=8C=E5=B1=A5?= =?UTF-8?q?=E7=BA=A6=E4=B8=8E=E5=AE=A1=E6=A0=B8=E5=8F=8D=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E5=8F=8D=E5=86=99=E9=87=91=E9=A2=9D=E7=AD=89=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form/InContractFinaceConfirmePlugin.java | 44 ++++++++++++ .../operate/FinaceConfirmRevWriteAmtOp.java | 69 +++++++++++++++++++ .../FinanceConfirmPerfRecordsPlugin.java | 34 +++++++++ 3 files changed, 147 insertions(+) create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/FinaceConfirmRevWriteAmtOp.java create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/other/FinanceConfirmPerfRecordsPlugin.java diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/InContractFinaceConfirmePlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/InContractFinaceConfirmePlugin.java index 4952a6a..2f5f9d7 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/InContractFinaceConfirmePlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/InContractFinaceConfirmePlugin.java @@ -14,6 +14,8 @@ import kd.bos.form.FormShowParameter; import kd.bos.form.IPageCache; import kd.bos.form.ShowType; import kd.bos.form.control.EntryGrid; +import kd.bos.form.control.events.BeforeItemClickEvent; +import kd.bos.form.control.events.ItemClickEvent; import kd.bos.form.events.HyperLinkClickEvent; import kd.bos.form.events.HyperLinkClickListener; import kd.bos.form.field.RefBillEdit; @@ -151,8 +153,48 @@ public class InContractFinaceConfirmePlugin extends AbstractBillPlugIn implement }else if(StringUtils.equals(name, "zcgj_ec_in_contract_sett")){ DynamicObject newValue = (DynamicObject)changeData.getNewValue(); initData(newValue.getLong("id")); + } else if (StringUtils.equals(name, "zcgj_bolttype")) { + //冲销类型 + Object newValue = changeData.getNewValue();//新值 + DynamicObjectCollection zcgj_expensereversal = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_expensereversal");//冲销支出结算分录 + DynamicObjectCollection zcgj_performrec = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_performrec");//冲销履约记录分录 + if (newValue == null || newValue.equals("30")) { + zcgj_expensereversal.clear(); + zcgj_performrec.clear(); + } else if (newValue.equals("10")) { + zcgj_expensereversal.clear(); + } else if (newValue.equals("20")) { + zcgj_performrec.clear(); + } + this.getView().updateView("zcgj_expensereversal"); + this.getView().updateView("zcgj_performrec"); + } else if (StringUtils.equals(name, "zcgj_contract")) { + //合同名称 + DynamicObjectCollection zcgj_expensereversal = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_expensereversal");//冲销支出结算分录 + DynamicObjectCollection zcgj_performrec = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_performrec");//冲销履约记录分录 + zcgj_expensereversal.clear(); + zcgj_performrec.clear(); + this.getView().updateView("zcgj_expensereversal"); + this.getView().updateView("zcgj_performrec"); } + } + @Override + public void itemClick(ItemClickEvent evt) { + super.itemClick(evt); + } + + @Override + public void beforeItemClick(BeforeItemClickEvent evt) { + super.beforeItemClick(evt); + if (StringUtils.equals("zcgj_drawzcht", evt.getItemKey()) || StringUtils.equals("zcgj_drawlyjl", evt.getItemKey())) { + //冲销支出结算和冲销履约记录分录的增行按钮 + Object zcgj_contract = this.getModel().getValue("zcgj_contract");//合同名称 + if (zcgj_contract == null) { + this.getView().showErrorNotification("请先选择合同名称"); + evt.setCancel(true); + } + } } protected void ofTaxAmountChanged(ChangeData changeData) { @@ -195,6 +237,8 @@ public class InContractFinaceConfirmePlugin extends AbstractBillPlugIn implement if(outContractSett != null) { outContractSett.addBeforeF7SelectListener(this); } + this.addItemClickListeners("zcgj_entrytoolbar111"); + this.addItemClickListeners("zcgj_entrytoolbar1111"); } @Override diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/FinaceConfirmRevWriteAmtOp.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/FinaceConfirmRevWriteAmtOp.java new file mode 100644 index 0000000..dc7c542 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/FinaceConfirmRevWriteAmtOp.java @@ -0,0 +1,69 @@ +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.PreparePropertysEventArgs; +import kd.bos.entity.plugin.args.EndOperationTransactionArgs; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.operation.SaveServiceHelper; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +/** + * 收入财务确认单反写收入合同履约记录已冲销金额 + */ + +public class FinaceConfirmRevWriteAmtOp extends AbstractOperationServicePlugIn { + + public void onPreparePropertys(PreparePropertysEventArgs e) { + e.getFieldKeys().add("zcgj_performrec"); + e.getFieldKeys().add("zcgj_performrec.zcgj_thisreversalamount"); + e.getFieldKeys().add("zcgj_performrec.zcgj_performrecid"); + e.getFieldKeys().add("zcgj_bolttype"); + } + + @Override + public void endOperationTransaction(EndOperationTransactionArgs e) { + String operationKey = e.getOperationKey(); + DynamicObject[] dataEntities = e.getDataEntities(); + switch (operationKey) { + case "audit"://审核 + updateInApplyReversaAmt(dataEntities, true); + break; + case "unaudit"://反审核 + updateInApplyReversaAmt(dataEntities, false); + break; + } + } + + protected void updateInApplyReversaAmt(DynamicObject[] dataEntities, boolean isAudit) { + for (DynamicObject dataEntity : dataEntities) { + String zcgj_bolttype = dataEntity.getString("zcgj_bolttype");//冲销类型 + if ("10".equals(zcgj_bolttype)) { + //冲销合同履约记录 + DynamicObjectCollection PerFormRecCollection = dataEntity.getDynamicObjectCollection("zcgj_performrec");//冲销履约记录分录 + for (DynamicObject perFormRec : PerFormRecCollection) { + BigDecimal zcgj_thisreversalamount = perFormRec.getBigDecimal("zcgj_thisreversalamount");//本次冲销金额 + long zcgj_performrecid = perFormRec.getLong("zcgj_performrecid");//来源单据id-收入合同履约记录id + QFilter[] qFilters = new QFilter[]{new QFilter("id", QCP.equals, zcgj_performrecid)}; + DynamicObject ec_in_perFormRecords = BusinessDataServiceHelper.loadSingle("ec_in_performrecords", "id,zcgj_taxperformflot", qFilters);//收入合同履约记录 + BigDecimal zcgj_taxperformflot = ec_in_perFormRecords.getBigDecimal("zcgj_taxperformflot");//含税履约金额(已冲销) + if (isAudit) { + zcgj_taxperformflot = zcgj_taxperformflot.add(zcgj_thisreversalamount); + } else { + zcgj_taxperformflot = zcgj_taxperformflot.subtract(zcgj_thisreversalamount); + } + ec_in_perFormRecords.set("zcgj_taxperformflot", zcgj_taxperformflot);//含税履约金额(已冲销) + SaveServiceHelper.save(new DynamicObject[]{ec_in_perFormRecords}); + } + } else if ("20".equals(zcgj_bolttype)) { + //冲销业主支出结算 + } + } + } +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/other/FinanceConfirmPerfRecordsPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/other/FinanceConfirmPerfRecordsPlugin.java new file mode 100644 index 0000000..70d5a89 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/other/FinanceConfirmPerfRecordsPlugin.java @@ -0,0 +1,34 @@ +package zcgj.zcdev.zcdev.pr.plugin.other; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.entity.botp.plugin.AbstractConvertPlugIn; +import kd.bos.entity.botp.plugin.args.AfterBuildDrawFilterEventArgs; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; + +import java.util.ArrayList; +import java.util.List; + +/** + * 收入财务确认上拉收入合同履约记录botp插件 + */ +public class FinanceConfirmPerfRecordsPlugin extends AbstractConvertPlugIn { + @Override + public void afterBuildDrawFilter(AfterBuildDrawFilterEventArgs e) { + //选单过滤 + super.afterBuildDrawFilter(e); + DynamicObject targetDataEntity = e.getTargetDataEntity();//当前数据包 + DynamicObjectCollection perFormRecCollection = targetDataEntity.getDynamicObjectCollection("zcgj_performrec");//冲销履约记录分录 + List ids = new ArrayList<>(); + for (DynamicObject perFormRec : perFormRecCollection) { + long zcgj_performrecid = perFormRec.getLong("zcgj_performrecid"); + ids.add(zcgj_performrecid); + } + QFilter filter = new QFilter("id", QCP.not_in, ids); + DynamicObject zcgj_contract = targetDataEntity.getDynamicObject("zcgj_contract");//合同名称 + long contractId = zcgj_contract.getLong("id"); + filter = filter.and(new QFilter("contract", QCP.equals, contractId)); + e.setPlugFilter(filter); + } +} From be9ffd555b18e1d605c812e4a8c06dee14c799fb Mon Sep 17 00:00:00 2001 From: xuhaihui <2098865055@qq.com> Date: Tue, 30 Dec 2025 18:10:42 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=94=B6=E5=85=A5=E8=B4=A2=E5=8A=A1?= =?UTF-8?q?=E7=A1=AE=E8=AE=A4=E4=B8=8A=E6=8B=89=E5=90=88=E5=90=8C=E5=B1=A5?= =?UTF-8?q?=E7=BA=A6=E4=B8=8E=E5=AE=A1=E6=A0=B8=E5=8F=8D=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E5=8F=8D=E5=86=99=E9=87=91=E9=A2=9D=E7=AD=89=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pr/plugin/operate/FinaceConfirmRevWriteAmtOp.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/FinaceConfirmRevWriteAmtOp.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/FinaceConfirmRevWriteAmtOp.java index dc7c542..56e2dad 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/FinaceConfirmRevWriteAmtOp.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/FinaceConfirmRevWriteAmtOp.java @@ -21,10 +21,10 @@ import java.util.List; public class FinaceConfirmRevWriteAmtOp extends AbstractOperationServicePlugIn { public void onPreparePropertys(PreparePropertysEventArgs e) { - e.getFieldKeys().add("zcgj_performrec"); - e.getFieldKeys().add("zcgj_performrec.zcgj_thisreversalamount"); - e.getFieldKeys().add("zcgj_performrec.zcgj_performrecid"); - e.getFieldKeys().add("zcgj_bolttype"); + e.getFieldKeys().add("zcgj_performrec");//冲销履约记录分录 + e.getFieldKeys().add("zcgj_performrec.zcgj_thisreversalamount");//本次冲销金额 + e.getFieldKeys().add("zcgj_performrec.zcgj_performrecid");//来源单据id-收入合同履约记录id + e.getFieldKeys().add("zcgj_bolttype");//冲销类型 } @Override From 836a8a32013de4c5815c820db2f5f1078f6c48c8 Mon Sep 17 00:00:00 2001 From: xuhaihui <2098865055@qq.com> Date: Tue, 30 Dec 2025 18:32:26 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=B7=B2=E5=86=B2=E9=94=80=E9=87=91?= =?UTF-8?q?=E9=A2=9D=E7=A9=BF=E9=80=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form/InContractFinaceConfirmePlugin.java | 57 +++++++++++++------ 1 file changed, 40 insertions(+), 17 deletions(-) diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/InContractFinaceConfirmePlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/InContractFinaceConfirmePlugin.java index 2f5f9d7..6ffa113 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/InContractFinaceConfirmePlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/InContractFinaceConfirmePlugin.java @@ -26,6 +26,7 @@ import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.permission.api.HasPermOrgResult; import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.QueryServiceHelper; import kd.bos.servicehelper.permission.PermissionServiceHelper; import kd.ec.contract.common.enums.DirectionEnum; import kd.sdk.plugin.Plugin; @@ -239,30 +240,52 @@ public class InContractFinaceConfirmePlugin extends AbstractBillPlugIn implement } this.addItemClickListeners("zcgj_entrytoolbar111"); this.addItemClickListeners("zcgj_entrytoolbar1111"); + EntryGrid entryGrid = this.getView().getControl("zcgj_performrec");//冲销履约记录 + entryGrid.addHyperClickListener(this); } @Override public void hyperLinkClick(HyperLinkClickEvent hyperLinkClickEvent) { String fieldName = hyperLinkClickEvent.getFieldName(); - EntryGrid entryGrid = getView().getControl("zcgj_entryentity"); - int[] selectRows = entryGrid.getSelectRows(); - if(selectRows != null && selectRows.length == 1){ - DynamicObjectCollection dynamicObjectCollection = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_entryentity"); - DynamicObject dynamicObject = dynamicObjectCollection.get(selectRows[0]); - DynamicObject zcgjInvoice = dynamicObject.getDynamicObject("zcgj_invoice"); - long invoiceId = zcgjInvoice.getLong("id"); - if(invoiceId != 0){ - //弹出发票详情 - BillShowParameter showParameter = new BillShowParameter(); - showParameter.setPkId(invoiceId); - showParameter.setFormId("ec_out_invoice"); - showParameter.getOpenStyle().setShowType(ShowType.MainNewTabPage); //打开方式 - getView().showForm(showParameter); + if (StringUtils.equals(fieldName, "zcgj_invoice")) { + EntryGrid entryGrid = getView().getControl("zcgj_entryentity"); + int[] selectRows = entryGrid.getSelectRows(); + if (selectRows != null && selectRows.length == 1) { + DynamicObjectCollection dynamicObjectCollection = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_entryentity"); + DynamicObject dynamicObject = dynamicObjectCollection.get(selectRows[0]); + DynamicObject zcgjInvoice = dynamicObject.getDynamicObject("zcgj_invoice"); + long invoiceId = zcgjInvoice.getLong("id"); + if (invoiceId != 0) { + //弹出发票详情 + BillShowParameter showParameter = new BillShowParameter(); + showParameter.setPkId(invoiceId); + showParameter.setFormId("ec_out_invoice"); + showParameter.getOpenStyle().setShowType(ShowType.MainNewTabPage); //打开方式 + getView().showForm(showParameter); + } + } else { + this.getView().showTipNotification("请选择一条发票数据。"); } - }else{ - this.getView().showTipNotification("请选择一条发票数据。"); + } else if (StringUtils.equals(fieldName, "zcgj_reversedamount")) { + //冲销履约记录-已冲销金额 + List dailyLoanBillDataIds = new ArrayList<>(); + int rowIndex = hyperLinkClickEvent.getRowIndex(); + DynamicObjectCollection perFormRecCollection = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_performrec");//冲销履约记录 + DynamicObject perFormRec = perFormRecCollection.get(rowIndex); + long zcgj_performrecid = perFormRec.getLong("zcgj_performrecid"); + QFilter filter = new QFilter("zcgj_performrec.zcgj_performrecid", QCP.equals, zcgj_performrecid); + filter.and(new QFilter("billstatus", QCP.equals, "C")); + DynamicObjectCollection zcgj_ec_in_finaceconfirms = QueryServiceHelper.query("zcgj_ec_in_finaceconfirm", "id", new QFilter[]{filter}); + for (DynamicObject zcgj_ec_in_finaceconfirm : zcgj_ec_in_finaceconfirms) { + dailyLoanBillDataIds.add((Long) zcgj_ec_in_finaceconfirm.get("id")); + } + ListShowParameter listShowParameter = new ListShowParameter(); + listShowParameter.setFormId("bos_list"); //列表界面 + listShowParameter.setBillFormId("zcgj_ec_in_finaceconfirm"); //单据的标识 + listShowParameter.getOpenStyle().setShowType(ShowType.MainNewTabPage); + dailyLoanBillDataIds.forEach(listShowParameter::addLinkQueryPkId); + this.getView().showForm(listShowParameter); } - } @Override