From ea83eb5a9eae062d721933cbe03251f6d0d524e6 Mon Sep 17 00:00:00 2001 From: xuhaihui <2098865055@qq.com> Date: Tue, 10 Jun 2025 17:55:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=98=E6=AC=BE=E7=94=B3=E8=AF=B7=E5=8D=95?= =?UTF-8?q?=E4=BA=8C=E5=BC=80=E4=BE=9B=E5=BA=94=E5=95=86-=E9=93=B6?= =?UTF-8?q?=E8=A1=8C=E4=BF=A1=E6=81=AF=E5=BC=B9=E7=AA=97=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form/PaymentApplySupplierPlugin.java | 92 ++++++++++++++++++- .../plugin/form/SupplierPayerBillPlugin.java | 67 ++++++++++++++ 2 files changed, 155 insertions(+), 4 deletions(-) create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/SupplierPayerBillPlugin.java diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/PaymentApplySupplierPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/PaymentApplySupplierPlugin.java index d98348e..9de0dc4 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/PaymentApplySupplierPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/PaymentApplySupplierPlugin.java @@ -1,5 +1,9 @@ package zcgj.zcdev.zcdev.pr.plugin.form; +import kd.bos.algo.DataSet; +import kd.bos.algo.JoinDataSet; +import kd.bos.algo.JoinType; +import kd.bos.algo.Row; import kd.bos.bill.AbstractBillPlugIn; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; @@ -7,22 +11,101 @@ import kd.bos.entity.datamodel.RowDataEntity; import kd.bos.entity.datamodel.events.AfterAddRowEventArgs; import kd.bos.entity.datamodel.events.ChangeData; import kd.bos.entity.datamodel.events.PropertyChangedArgs; +import kd.bos.form.*; +import kd.bos.form.control.Button; +import kd.bos.form.control.Control; +import kd.bos.form.events.ClosedCallBackEvent; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.QueryServiceHelper; +import kd.sdk.plugin.Plugin; +import org.apache.commons.lang3.StringUtils; import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.EventObject; +import java.util.HashMap; +import java.util.Iterator; // 付款申请(项目资金) -// 1:供应商赋值收款银行和收款账号 +// 1:供应商-银行信息弹窗逻辑和赋值 // 2:关联业务单据(取用入库单)中的供应商赋值给分录中的供应商 // 3:入库单-含税总运费+材料含税总金额赋值给付款申请单中应付字段 -public class PaymentApplySupplierPlugin extends AbstractBillPlugIn { +public class PaymentApplySupplierPlugin extends AbstractBillPlugIn implements Plugin { + + @Override + public void registerListener(EventObject e) { + super.registerListener(e); + this.addClickListeners("zcgj_payeraccountname");//收款账户 + } + + @Override + public void click(EventObject evt) { + super.click(evt); + String zcgj_payeraccountname = this.getView().getControl("zcgj_payeraccountname").getKey();//收款账户 + if (!StringUtils.isEmpty(zcgj_payeraccountname)) { + DynamicObject zcgj_supplier1 = (DynamicObject) this.getModel().getValue("zcgj_supplier1");//供应商 + if (zcgj_supplier1 == null){ + this.getView().showErrorNotification("请先选择供应商"); + return; + } + Object masterid = zcgj_supplier1.get("masterid"); + if (masterid != null) { + HashMap cusMap = new HashMap<>(); + Long id = (Long) zcgj_supplier1.get("masterid"); + QFilter qFilter = new QFilter("id", QCP.equals, id); + DataSet ds1 = QueryServiceHelper.queryDataSet("test1", "bd_supplier", + "entry_bank.bankaccount bc,entry_bank.bank bid,entry_bank.accountname bn", + new QFilter[]{qFilter}, null); + DataSet ds2 = QueryServiceHelper.queryDataSet("test2", "bd_bebank", "id,name", null, null); + JoinDataSet js = ds1.join(ds2, JoinType.LEFT); + DataSet finish = js.on("bid", "id").select(new String[]{"bc", "bn"}, new String[]{"name"}).finish(); + Iterator iterator = finish.iterator(); + ArrayList list = new ArrayList<>(); + while (iterator.hasNext()) { + HashMap mapSub = new HashMap<>(); + Row row = iterator.next(); + String value1 = row.getString("bc"); + String value2 = row.getString("bn"); + String value3 = row.getString("name"); + mapSub.put("bc", value1); + mapSub.put("bn", value2); + mapSub.put("name", value3); + list.add(mapSub); + } + cusMap.put("test", list); + FormShowParameter formShowParameter = new FormShowParameter(); + formShowParameter.setCaption("供应商-银行信息"); + OpenStyle openStyle = formShowParameter.getOpenStyle(); + formShowParameter.setFormId("zcgj_supplier_payer"); + formShowParameter.setCustomParams(cusMap); + formShowParameter.setCloseCallBack(new CloseCallBack(this, "zcgj_payeraccountname"));//付款申请-收款账户 + StyleCss styleCss = new StyleCss(); + styleCss.setHeight("300"); + styleCss.setWidth("1000"); + openStyle.setShowType(ShowType.Modal); + openStyle.setInlineStyleCss(styleCss); + this.getView().showForm(formShowParameter); + } + } + } + + @Override + public void closedCallBack(ClosedCallBackEvent closedCallBackEvent) { + super.closedCallBack(closedCallBackEvent); + String actionId = closedCallBackEvent.getActionId(); + DynamicObject returnData = (DynamicObject) closedCallBackEvent.getReturnData(); + if (actionId.equals("zcgj_payeraccountname") && returnData != null) { + this.getModel().setValue("zcgj_payeraccountname", returnData.getString("zcgj_accountname"));//账户名称/收款账户 + this.getModel().setValue("zcgj_payerbank1", returnData.getString("zcgj_bankaccount"));//银行账号/收款银行 + } + } @Override public void propertyChanged(PropertyChangedArgs e) { String propName = e.getProperty().getName(); - if (propName.equals("zcgj_supplier1")) { +/* if (propName.equals("zcgj_supplier1")) { //供应商 ChangeData[] changeSet = e.getChangeSet(); ChangeData changeData = changeSet[0]; @@ -42,7 +125,8 @@ public class PaymentApplySupplierPlugin extends AbstractBillPlugIn { this.getModel().setValue("zcgj_payerbank", null, rowIndex);//开户银行 this.getModel().setValue("zcgj_payeraccountname", null, rowIndex);//银行账号 } - } else if (propName.equals("zcgj_materialinb")) { + } else*/ + if (propName.equals("zcgj_materialinb")) { //关联业务单据(取用入库单) DynamicObjectCollection itementry = this.getModel().getDataEntity(true).getDynamicObjectCollection("itementry");//非合同付款信息分录 ChangeData[] changeSet = e.getChangeSet(); diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/SupplierPayerBillPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/SupplierPayerBillPlugin.java new file mode 100644 index 0000000..fdc7fee --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/SupplierPayerBillPlugin.java @@ -0,0 +1,67 @@ +package zcgj.zcdev.zcdev.pr.plugin.form; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.form.control.Button; +import kd.bos.form.control.Control; +import kd.bos.form.control.EntryGrid; +import kd.bos.form.plugin.AbstractFormPlugin; +import kd.sdk.plugin.Plugin; + +import java.util.EventObject; +import java.util.List; +import java.util.Map; + +//付款申请单二开的供应商-银行信息弹窗插件 + +public class SupplierPayerBillPlugin extends AbstractFormPlugin implements Plugin { + + @Override + public void registerListener(EventObject e) { + super.registerListener(e); + Button btnok = this.getControl("btnok");//确定 + btnok.addClickListener(this); + } + + @Override + public void afterCreateNewData(EventObject e) { + super.afterCreateNewData(e); + Map customParams = this.getView().getFormShowParameter().getCustomParams(); + Object value = customParams.get("test"); + if (value != null) { + List list = (List) value; + DynamicObjectCollection et = this.getModel().getEntryEntity("zcgj_entryentity");//分录 + list.forEach(r -> { + DynamicObject dynamicObject = et.addNew(); + dynamicObject.set("zcgj_bank", r.getString("name"));//开户银行名称 + dynamicObject.set("zcgj_bankaccount", r.getString("bc"));//银行账号 + dynamicObject.set("zcgj_accountname", r.getString("bn"));//账户名称 + }); + } + } + + @Override + public void click(EventObject evt) { + super.click(evt); + Control source = (Control) evt.getSource(); + if ("btnok".equals(source.getKey())) { + EntryGrid entryGrid = this.getControl("zcgj_entryentity"); + int[] selectRows = entryGrid.getSelectRows(); + int count = selectRows.length; + //分录行数只有一条的时候才能通过接下来两个if + if (count == 0) { + this.getView().showErrorNotification("请选择一条银行信息!"); + return; + } + if (count > 1) { + this.getView().showErrorNotification("只能选择一条银行信息!"); + return; + } + DynamicObjectCollection qeug_entryentity = getModel().getEntryEntity("zcgj_entryentity");//分录 + int vale = getModel().getEntryCurrentRowIndex("zcgj_entryentity");//所选的分录行 + DynamicObject dynamicObject = qeug_entryentity.get(vale); + this.getView().returnDataToParent(dynamicObject); + this.getView().close(); + } + } +}