From 1bd3f83051d337eae494bc291f5450add6e48689 Mon Sep 17 00:00:00 2001 From: xuhaihui <2098865055@qq.com> Date: Fri, 28 Nov 2025 10:27:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=87=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form/EntCostSplitEditPluginExt.java | 285 ++++++++++++++++++ 1 file changed, 285 insertions(+) create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EntCostSplitEditPluginExt.java diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EntCostSplitEditPluginExt.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EntCostSplitEditPluginExt.java new file mode 100644 index 0000000..fb047a9 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EntCostSplitEditPluginExt.java @@ -0,0 +1,285 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// +package zcgj.zcdev.zcdev.pr.plugin.form; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.EventObject; +import java.util.Iterator; +import java.util.List; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.dataentity.resource.ResManager; +import kd.bos.dataentity.utils.StringUtils; +import kd.bos.entity.EntityMetadataCache; +import kd.bos.entity.datamodel.events.AfterDeleteRowEventArgs; +import kd.bos.entity.datamodel.events.ChangeData; +import kd.bos.entity.datamodel.events.PropertyChangedArgs; +import kd.bos.entity.property.EntryProp; +import kd.bos.form.events.ClosedCallBackEvent; +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.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.ec.basedata.common.enums.ProjectStatusEnum; +import kd.ec.basedata.common.utils.EcNumberHelper; +import kd.ec.basedata.common.utils.OpenPageUtils; +import kd.ec.cost.formplugin.AbstractEccoBillPlugin; + +public class EntCostSplitEditPluginExt extends AbstractEccoBillPlugin implements BeforeF7SelectListener { + private static final String PROJECT = "project"; + private static final String EC_PROJECT = "ec_project"; + + public EntCostSplitEditPluginExt() { + } + + public void afterCreateNewData(EventObject e) { + super.afterCreateNewData(e); + Object period = this.getModel().getValue("period"); + if (period == null) { + Calendar now = Calendar.getInstance(); + int year = now.get(1); + int month = now.get(2) + 1; + QFilter qFilter = new QFilter("periodyear", "=", year); + qFilter.and(new QFilter("periodnumber", "=", month)); + DynamicObject[] periods = BusinessDataServiceHelper.load("bd_period", "periodyear,periodquarter", new QFilter[]{qFilter}); + if (periods != null && periods.length > 0) { + this.getModel().setValue("period", periods[0].getPkValue()); + } + } + + } + + public void beforeF7Select(BeforeF7SelectEvent arg0) { + String name = arg0.getProperty().getName(); + int row = arg0.getRow(); + ListShowParameter parameter = (ListShowParameter) arg0.getFormShowParameter(); + if (StringUtils.equals(name, "project")) { + List qFilters = parameter.getListFilterParameter().getQFilters(); + qFilters.add(new QFilter("status", "!=", ProjectStatusEnum.CLOSED.getValue())); + qFilters.add(new QFilter("status", "!=", ProjectStatusEnum.FINISH.getValue())); + } else { + QFilter qFilter; + DynamicObject project; + if (StringUtils.equals(name, "cbs")) { + arg0.setCancel(true); + project = (DynamicObject) this.getModel().getValue("project", row); + if (project == null) { + this.getView().showMessage(ResManager.loadKDString("请先选择工程项目。", "EntCostSplitEditPlugin_0", "ec-ecco-formplugin", new Object[0])); + arg0.setCancel(true); + return; + } + + qFilter = new QFilter("project", "=", project.getPkValue()); + qFilter = qFilter.and(new QFilter("isleaf", "=", true)); + parameter.getListFilterParameter().setFilter(qFilter); + parameter.setFormId("bos_listf7"); + this.getView().showForm(parameter); + } else { + QFilter projectFilter; + DynamicObject org; + if (StringUtils.equals(name, "boq")) { + project = (DynamicObject) this.getModel().getValue("project", row); + if (project == null) { + this.getView().showMessage(ResManager.loadKDString("请先选择工程项目。", "EntCostSplitEditPlugin_0", "ec-ecco-formplugin", new Object[0])); + arg0.setCancel(true); + return; + } + + org = (DynamicObject) this.getModel().getValue("unitproject", row); + projectFilter = new QFilter("isleaf", "=", true); + if (org != null) { + projectFilter.and(new QFilter("unitproject", "=", org.getPkValue())); + } else { + projectFilter.and(new QFilter("project", "=", project.getPkValue())); + } + + parameter.getListFilterParameter().getQFilters().add(projectFilter); + QFilter unitProLeftFilter = new QFilter("project", "=", project.getPkValue()); + List filterList = new ArrayList(); + filterList.add(unitProLeftFilter); + if (org != null) { + filterList.add(new QFilter("unitproject", "=", org.getPkValue())); + } + + parameter.getTreeFilterParameter().setQFilters(filterList); + } else if (StringUtils.equals(name, "costaccount")) { + project = (DynamicObject) this.getModel().getValue("project", row); + if (project == null) { + this.getView().showMessage(ResManager.loadKDString("请先选择工程项目。", "EntCostSplitEditPlugin_0", "ec-ecco-formplugin", new Object[0])); + arg0.setCancel(true); + return; + } + + qFilter = new QFilter("isleaf", "=", true); + parameter.getListFilterParameter().getQFilters().add(qFilter); + } else if (StringUtils.equals(name, "unitproject")) { + project = (DynamicObject) this.getModel().getValue("project", row); + org = this.getModel().getDataEntity().getDynamicObject("org"); + if (project != null) { + project = BusinessDataServiceHelper.loadSingle(project.getPkValue(), "ec_project"); + projectFilter = new QFilter("parent", "=", project.getPkValue()); + DynamicObject proOrg = project.getDynamicObject("projectorg"); + if (proOrg != null && !org.getPkValue().equals(proOrg.getPkValue())) { + projectFilter.and(new QFilter("responsibleorg", "=", org.getPkValue())); + } + + parameter.getListFilterParameter().getQFilters().add(projectFilter); + } else { + this.getView().showMessage(ResManager.loadKDString("请先选择工程项目。", "EntCostSplitEditPlugin_0", "ec-ecco-formplugin", new Object[0])); + arg0.setCancel(true); + } + } else if (StringUtils.equals(name, "resource")) { + project = (DynamicObject) this.getModel().getValue("project", row); + if (project != null) { + int entryEntityRowIndex = this.getModel().getEntryCurrentRowIndex("entryentity"); + DynamicObject var10000 = (DynamicObject) this.getModel().getValue("unitproject", entryEntityRowIndex); + String editOnUnit = project.getString("boqmode"); + String costControl = project.getString("costcontrol"); + new ArrayList(); + } else { + this.getView().showMessage(ResManager.loadKDString("请先选择工程项目。", "EntCostSplitEditPlugin_0", "ec-ecco-formplugin", new Object[0])); + arg0.setCancel(true); + } + } + } + } + + } + + public void registerListener(EventObject e) { + super.registerListener(e); + BasedataEdit project = (BasedataEdit) this.getControl("project"); + project.addBeforeF7SelectListener(this); + BasedataEdit cbs = (BasedataEdit) this.getControl("cbs"); + cbs.addBeforeF7SelectListener(this); + BasedataEdit boq = (BasedataEdit) this.getControl("boq"); + boq.addBeforeF7SelectListener(this); + BasedataEdit ca = (BasedataEdit) this.getControl("costaccount"); + ca.addBeforeF7SelectListener(this); + BasedataEdit unitPro = (BasedataEdit) this.getControl("unitproject"); + unitPro.addBeforeF7SelectListener(this); + BasedataEdit resource = (BasedataEdit) this.getControl("resource"); + resource.addBeforeF7SelectListener(this); + BasedataEdit proj = (BasedataEdit) this.getView().getControl("project"); + if (proj != null) { + proj.addBeforeF7ViewDetailListener((beforeF7ViewDetailEvent) -> { + beforeF7ViewDetailEvent.setCancel(true); + this.getView().showForm(OpenPageUtils.buildBillShowParam(beforeF7ViewDetailEvent.getPkId(), "ec_project")); + }); + } + + } + + public void propertyChanged(PropertyChangedArgs e) { + super.propertyChanged(e); + ChangeData changeData = e.getChangeSet()[0]; + String name = e.getProperty().getName(); + int rowIndex = changeData.getRowIndex(); + DynamicObject cbs; + DynamicObject project; + switch (name) { + case "costamount": + this.onCostAmountChange(); + break; + case "resource": + this.getModel().setValue("cbs", (Object) null, rowIndex); + this.getModel().setValue("costaccount", (Object) null, rowIndex); + DynamicObject resourceItem = (DynamicObject) changeData.getNewValue(); + if (null != resourceItem) { + cbs = resourceItem.getDynamicObject("cbs"); + if (null != cbs) { + Long cbsId = (Long) cbs.getPkValue(); + project = (DynamicObject) this.getModel().getValue("project", rowIndex); + if (project != null) { + Long projectId = (Long) project.getPkValue(); + QFilter qFilter = new QFilter("project", "=", projectId); + qFilter.and(new QFilter("enterprisecbs", "=", cbsId)); + qFilter.and(new QFilter("isleaf", "=", "1")); + DynamicObject proCbs = BusinessDataServiceHelper.loadSingle("ec_ecbd_pro_cbs", "id", new QFilter[]{qFilter}); + this.getModel().setValue("cbs", proCbs, rowIndex); + } + } + + this.getModel().setValue("costaccount", resourceItem.getDynamicObject("ca"), rowIndex); + } + break; + case "unitproject": + this.getModel().setValue("boq", (Object) null, rowIndex); + break; + case "boq": + cbs = (DynamicObject) changeData.getNewValue(); + DynamicObject unitPro = (DynamicObject) this.getModel().getValue("unitproject", rowIndex); + if (cbs != null && unitPro == null) { + project = cbs.getDynamicObject("unitproject"); + if (project != null) { + this.getModel().beginInit(); + this.getModel().setValue("unitproject", project.getPkValue(), rowIndex); + this.getModel().endInit(); + this.getView().updateView("unitproject", rowIndex); + } + } + break; + case "project": + this.getModel().setValue("boq", (Object) null, rowIndex); + this.getModel().setValue("cbs", (Object) null, rowIndex); + this.getModel().setValue("unitproject", (Object) null, rowIndex); + this.getModel().setValue("costaccount", (Object) null, rowIndex); + this.getModel().setValue("costamount", (Object) null, rowIndex); + this.getModel().setValue("resource", (Object) null, rowIndex); + this.getModel().setValue("costqty", (Object) null, rowIndex); + } + + } + + public void afterDeleteRow(AfterDeleteRowEventArgs e) { + EntryProp entryProp = e.getEntryProp(); + if (entryProp != null && StringUtils.equals("entryentity", entryProp.getName())) { + this.updateTotalCostAmt(); + } + + } + + private void onCostAmountChange() { + this.updateTotalCostAmt(); + } + + private void updateTotalCostAmt() { + DynamicObjectCollection entryEntity = this.getModel().getEntryEntity("entryentity"); + BigDecimal totalCostAmount = new BigDecimal(0); + + BigDecimal costAmount; + for (Iterator var3 = entryEntity.iterator(); var3.hasNext(); totalCostAmount = EcNumberHelper.add(totalCostAmount, costAmount)) { + DynamicObject dynamicObject = (DynamicObject) var3.next(); + costAmount = dynamicObject.getBigDecimal("costamount"); + } + + this.getView().getModel().setValue("totalcostamt", totalCostAmount); + } + + public void closedCallBack(ClosedCallBackEvent closedcallbackevent) { + super.closedCallBack(closedcallbackevent); + String actionID = closedcallbackevent.getActionId(); + int row = this.getModel().getEntryCurrentRowIndex("entryentity"); + if ("projectcbs".equals(actionID) && closedcallbackevent.getReturnData() != null) { + List selectList = (ArrayList) closedcallbackevent.getReturnData(); + if (selectList == null || selectList.size() < 1) { + return; + } + + for (int i = 0; i < selectList.size(); ++i) { + DynamicObject cbsInfo = BusinessDataServiceHelper.loadSingle(selectList.get(i), EntityMetadataCache.getDataEntityType("ec_ecbd_pro_cbs")); + if (null != cbsInfo) { + this.getModel().setValue("cbs", cbsInfo.getPkValue(), row); + } + } + } + + } +}