From 624f60211ab76ab44eeac077f40cc09e1c804c4a Mon Sep 17 00:00:00 2001 From: xuhaihui <2098865055@qq.com> Date: Wed, 3 Dec 2025 16:39:36 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E6=88=90=E6=9C=AC=E6=A0=B8?= =?UTF-8?q?=E7=AE=97=E4=BC=98=E5=8C=96=E8=A1=A8=E5=8D=95=E5=92=8C=E5=AE=A1?= =?UTF-8?q?=E6=A0=B8=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/form/EcEqCostSplitBillPlugin.java | 33 +++++++++++++++---- .../plugin/operate/EcEqCostSplitAuditOp.java | 19 +++++++++-- 2 files changed, 43 insertions(+), 9 deletions(-) diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EcEqCostSplitBillPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EcEqCostSplitBillPlugin.java index 52a70db..7a4fbe5 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EcEqCostSplitBillPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EcEqCostSplitBillPlugin.java @@ -14,13 +14,12 @@ import kd.bos.form.field.BasedataEdit; import kd.bos.form.field.events.BeforeF7SelectEvent; import kd.bos.form.field.events.BeforeF7SelectListener; import kd.bos.list.ListShowParameter; +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.Calendar; -import java.util.EventObject; -import java.util.HashMap; -import java.util.Map; +import java.util.*; /* * 设备成本核算表单插件 @@ -32,9 +31,11 @@ public class EcEqCostSplitBillPlugin extends AbstractBillPlugIn implements Befor @Override public void registerListener(EventObject e) { super.registerListener(e); - BasedataEdit procbs = (BasedataEdit) this.getControl("procbs"); + BasedataEdit procbs = (BasedataEdit) this.getControl("procbs");//成本分解结构 procbs.addBeforeF7SelectListener(this); - EntryGrid control = this.getControl("settlesplitentity"); + BasedataEdit equipment = (BasedataEdit) this.getControl("equipment");//设备名称 + equipment.addBeforeF7SelectListener(this); + EntryGrid control = this.getControl("settlesplitentity");//结算明细 control.addHyperClickListener(this); } @@ -72,10 +73,10 @@ public class EcEqCostSplitBillPlugin extends AbstractBillPlugIn implements Befor } public void beforeF7Select(BeforeF7SelectEvent arg0) { + ListShowParameter parameter = (ListShowParameter) arg0.getFormShowParameter(); String name = arg0.getProperty().getName(); if (StringUtils.equals(name, "procbs")) { //成本分解结构 - ListShowParameter parameter = (ListShowParameter) arg0.getFormShowParameter(); arg0.setCancel(true); DynamicObject project = (DynamicObject) this.getModel().getValue("project");//工程项目 if (project == null) { @@ -89,6 +90,24 @@ public class EcEqCostSplitBillPlugin extends AbstractBillPlugIn implements Befor parameter.getListFilterParameter().setFilter(qFilter); parameter.setFormId("bos_listf7"); this.getView().showForm(parameter); + } else if (StringUtils.equals(name, "equipment")) { + //设备名称 + List qFilter = new ArrayList<>(); + DynamicObject org = (DynamicObject) this.getModel().getValue("org");//所属组织 + + QFilter filter = new QFilter("zcgj_companyblentry.zcgj_org.id", QCP.equals, org.getPkValue()); + DynamicObject companyBelong = BusinessDataServiceHelper.loadSingle("zcgj_companybelong", + "zcgj_headquarters", new QFilter[]{filter});//公司归属区域 + if (companyBelong != null) { + DynamicObject zcgj_headquarters = companyBelong.getDynamicObject("zcgj_headquarters");//本部 + if (zcgj_headquarters != null) { + qFilter.add(new QFilter("org", QCP.equals, zcgj_headquarters.getPkValue())); + qFilter.add(new QFilter("useorg", QCP.equals, zcgj_headquarters.getPkValue())); + } + } + + qFilter.add(new QFilter("useorg", QCP.equals, org.getPkValue())); + parameter.getListFilterParameter().setQFilters(qFilter); } } } diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/EcEqCostSplitAuditOp.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/EcEqCostSplitAuditOp.java index c80e9c4..be7ff41 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/EcEqCostSplitAuditOp.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/EcEqCostSplitAuditOp.java @@ -7,6 +7,7 @@ import kd.bos.entity.plugin.args.AfterOperationArgs; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.QueryServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper; /** @@ -22,6 +23,7 @@ public class EcEqCostSplitAuditOp extends AbstractOperationServicePlugIn { long id = model.getLong("id"); QFilter f1 = new QFilter("id", "=", id); DynamicObject eceq_costsplit = BusinessDataServiceHelper.loadSingle("eceq_costsplit", new QFilter[]{f1});//设备成本核算 + DynamicObject org = eceq_costsplit.getDynamicObject("org");//所属组织 DynamicObjectCollection settleSplitEntityCollection = eceq_costsplit.getDynamicObjectCollection("settlesplitentity");//结算明细 for (DynamicObject settleSplitEntity : settleSplitEntityCollection) { DynamicObjectCollection costSplitEntityCollection = settleSplitEntity.getDynamicObjectCollection("costsplitentity");//成本分摊明细 @@ -30,8 +32,21 @@ public class EcEqCostSplitAuditOp extends AbstractOperationServicePlugIn { if (equipment != null) { String equipmentNumber = equipment.getString("number");//设备编号 QFilter[] qFilters = new QFilter[]{new QFilter("number", QCP.equals, equipmentNumber)}; - DynamicObject eceq_equipinfo = BusinessDataServiceHelper.loadSingle("eceq_equipinfo", "id,zcgj_cbs", qFilters);//设备台账 - eceq_equipinfo.set("zcgj_cbs", costSplitEntity.get("procbs"));//设备台账-工序 + DynamicObject eceq_equipinfo = BusinessDataServiceHelper.loadSingle("eceq_equipinfo", + "id,zcgj_cbs,org,useorg", qFilters);//设备详情 + if (eceq_equipinfo == null) { + continue; + } + QFilter filter = new QFilter("zcgj_companyblentry.zcgj_org.id", QCP.equals, org.getPkValue()); + filter.and(new QFilter("zcgj_headquarters", QCP.equals, eceq_equipinfo.getDynamicObject("org").getPkValue())); + filter.and(new QFilter("zcgj_headquarters", QCP.equals, eceq_equipinfo.getDynamicObject("useorg").getPkValue())); + DynamicObject companyBelong = QueryServiceHelper.queryOne("zcgj_companybelong", + "id", new QFilter[]{filter});//公司归属区域 + if (companyBelong != null) { + eceq_equipinfo.set("useorg", org);//设备详情-使用组织 + } + eceq_equipinfo.set("zcgj_cbs", costSplitEntity.get("procbs"));//设备详情-工序 + SaveServiceHelper.save(new DynamicObject[]{eceq_equipinfo});//保存 } }