From 829b738ea089c781ac4ee299110e48d21f48e442 Mon Sep 17 00:00:00 2001 From: xuhaihui <2098865055@qq.com> Date: Fri, 26 Sep 2025 11:13:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=81=E4=B8=9A=E6=88=90=E6=9C=AC=E6=A0=B8?= =?UTF-8?q?=E7=AE=97=E8=A1=A8=E5=8D=95=E6=8F=92=E4=BB=B6=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=9A=E7=82=B9=E5=87=BB=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8F=96=E6=95=B0=E6=8C=89=E9=92=AE=E8=8E=B7=E5=8F=96=E6=A0=B8?= =?UTF-8?q?=E7=AE=97=E4=BD=99=E9=A2=9D=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/form/EntCostSplitBillPlugin.java | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EntCostSplitBillPlugin.java diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EntCostSplitBillPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EntCostSplitBillPlugin.java new file mode 100644 index 0000000..967a4ad --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EntCostSplitBillPlugin.java @@ -0,0 +1,75 @@ +package zcgj.zcdev.zcdev.pr.plugin.form; + +import kd.bos.bill.AbstractBillPlugIn; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.dataentity.metadata.dynamicobject.DynamicObjectType; +import kd.bos.form.events.BeforeDoOperationEventArgs; +import kd.bos.form.operate.FormOperate; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.QueryServiceHelper; + +import java.util.EventObject; + +/** + * 企业成本核算表单插件 + * 说明:1:点击自动取数按钮获取核算余额表 + */ +public class EntCostSplitBillPlugin extends AbstractBillPlugIn { + @Override + public void registerListener(EventObject e) { + super.registerListener(e); + } + + public void beforeDoOperation(BeforeDoOperationEventArgs args) { + super.beforeDoOperation(args); + FormOperate formOperate = (FormOperate) args.getSource(); + if ("autogetdata".equals(formOperate.getOperateKey())) { + //自动取数 + Object org = this.getModel().getValue("org");//所属组织 + if (org == null) { + this.getView().showTipNotification("请选择组织"); + return; + } + Object period = this.getModel().getValue("period");//期间 + if (period == null) { + this.getView().showTipNotification("请选择期间"); + return; + } + DynamicObject org1 = (DynamicObject) org;//所属组织 + DynamicObject period1 = (DynamicObject) period;//期间 + DynamicObjectCollection entryCollection = this.getModel().getDataEntity(true).getDynamicObjectCollection("entryentity");//企业费用成本分摊明细分录 + DynamicObjectType entryType = entryCollection.getDynamicObjectType(); + if (entryCollection.size() > 0) { + entryCollection.clear(); + } + QFilter filter = new QFilter("zcgj_org", QCP.equals, org1.getPkValue());//核算组织 + filter.and(new QFilter("zcgj_period", QCP.equals, period1.getPkValue()));//期间 + filter.and(new QFilter("zcgj_isnew", QCP.equals, true));//是否最新 + DynamicObjectCollection rptAssistBalanceGxCollection = QueryServiceHelper.query("zcgj_rpt_assistbalancegx", + "id,zcgj_account,zcgj_processname", + new QFilter[]{filter});//核算维度余额取数表(矿山工序维度) + + for (DynamicObject rptAssistBalanceGx : rptAssistBalanceGxCollection) { + QFilter filter1 = new QFilter("zcgj_entryentity.zcgj_accountview", QCP.equals, rptAssistBalanceGx.get("zcgj_account"));//科目 + filter1.and(new QFilter("zcgj_org", QCP.equals, org1.getPkValue()));//组织 + DynamicObject zcgj_accountcost = QueryServiceHelper.queryOne("zcgj_accountcost", + "id,zcgj_entryentity.zcgj_costtype,zcgj_entryentity.zcgj_sectype", + new QFilter[]{filter1});//会计科目与成本项目 + + DynamicObject newEntry = new DynamicObject(entryType); + QFilter[] qFilters = new QFilter[]{new QFilter("name", QCP.equals, rptAssistBalanceGx.get("zcgj_processname"))}; + DynamicObject ec_ecbd_pro_cbs = BusinessDataServiceHelper.loadSingle("ec_ecbd_pro_cbs", "id", qFilters);//项目工序 + if (ec_ecbd_pro_cbs != null) { + newEntry.set("cbs", ec_ecbd_pro_cbs.getPkValue()); + } + newEntry.set("costtype", zcgj_accountcost.get("zcgj_entryentity.zcgj_costtype")); + newEntry.set("zcgj_sectype", zcgj_accountcost.get("zcgj_entryentity.zcgj_sectype")); + entryCollection.add(newEntry); + } + this.getView().updateView("entryentity");//刷新分录 + } + } +}