From d1a7de5f5c9ad730afb13eaa9631d5952a079d4b Mon Sep 17 00:00:00 2001 From: xuhaihui <2098865055@qq.com> Date: Tue, 16 Sep 2025 11:16:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=87=E8=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pr/plugin/form/DepotEditPluginExt.java | 123 ++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/DepotEditPluginExt.java diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/DepotEditPluginExt.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/DepotEditPluginExt.java new file mode 100644 index 0000000..e100b80 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/DepotEditPluginExt.java @@ -0,0 +1,123 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package zcgj.zcdev.zcdev.pr.plugin.form; + +import java.util.EventObject; +import kd.bos.bill.AbstractBillPlugIn; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.resource.ResManager; +import kd.bos.dataentity.utils.StringUtils; +import kd.bos.entity.BasedataEntityType; +import kd.bos.entity.EntityMetadataCache; +import kd.bos.form.field.BasedataEdit; +import kd.bos.form.field.FieldEdit; +import kd.bos.form.field.events.AfterF7SelectEvent; +import kd.bos.form.field.events.AfterF7SelectListener; +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.basedata.BaseDataRefrenceHelper; +import kd.ec.basedata.common.utils.OpenPageUtils; + +public class DepotEditPluginExt extends AbstractBillPlugIn implements BeforeF7SelectListener, AfterF7SelectListener { + private static final String PROJECT = "project"; + private static final String EC_PROJECT = "ec_project"; + + public DepotEditPluginExt() { + } + + public void afterCreateNewData(EventObject e) { + super.afterCreateNewData(e); + } + + public void registerListener(EventObject e) { + super.registerListener(e); + BasedataEdit projectEdit = (BasedataEdit)this.getView().getControl("project"); + projectEdit.addBeforeF7SelectListener(this); + projectEdit.addAfterF7SelectListener(this); + BasedataEdit unitProjectEdit = (BasedataEdit)this.getView().getControl("unitProject"); + unitProjectEdit.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 beforeF7Select(BeforeF7SelectEvent paramBeforeF7SelectEvent) { + String propName = paramBeforeF7SelectEvent.getProperty().getName(); + if (!StringUtils.equals(propName, "project") && StringUtils.equals("unitproject", propName)) { + ListShowParameter parameter = (ListShowParameter)paramBeforeF7SelectEvent.getFormShowParameter(); + DynamicObject org = (DynamicObject)this.getModel().getValue("org"); + Long orgId = (Long)org.getPkValue(); + DynamicObject project = (DynamicObject)this.getModel().getValue("project"); + if (project == null) { + return; + } + + QFilter projectFilter = new QFilter("parent", "=", project.getPkValue()); + parameter.getListFilterParameter().getQFilters().add(projectFilter); + Long projectOrgId = (Long)project.getDynamicObject("projectorg").getPkValue(); + if (projectOrgId.equals(orgId)) { + return; + } + + QFilter orgFilter = new QFilter("responsibleorg", "=", org.getPkValue()); + parameter.getListFilterParameter().getQFilters().add(orgFilter); + } + + } + + public void afterF7Select(AfterF7SelectEvent afterF7SelectEvent) { + FieldEdit fieldEdit = (FieldEdit)afterF7SelectEvent.getSource(); + if (StringUtils.equals("project", fieldEdit.getKey())) { + this.getModel().setValue("unitproject", (Object)null); + this.setUnitProject(); + this.getView().updateView("unitproject"); + } + + } + + public void afterBindData(EventObject e) { + super.afterBindData(e); + Object pkValue = this.getModel().getDataEntity().getPkValue(); + if (pkValue != null) { + boolean isRefrenced = BaseDataRefrenceHelper.isRefrenced((BasedataEntityType)EntityMetadataCache.getDataEntityType("ecma_depot"), pkValue); + if (isRefrenced) { + this.getView().setEnable(false, new String[]{"project"}); + } + } + + this.getModel().setValue("instruction", this.getInstruction()); + this.setUnitProject(); + } + + protected void setUnitProject() { + DynamicObject project = (DynamicObject)this.getModel().getValue("project"); + FieldEdit unitProjectEdit = (FieldEdit)this.getView().getControl("unitproject"); + if (project == null) { + this.getView().setEnable(false, new String[]{"unitproject"}); + unitProjectEdit.setMustInput(false); + } else { + boolean editOnUnit = project.getBoolean("editonunit"); + if (editOnUnit) { + this.getView().setEnable(true, new String[]{"unitproject"}); + } else { + unitProjectEdit.setMustInput(false); + this.getView().setEnable(false, new String[]{"unitproject"}); + } + + } + } + + protected String getInstruction() { + return ResManager.loadKDString("本软件按加权平均计算各种材料的当前库存和出库单价(材料需规格型号、单位、批次相同);如不需使用加权平均计算,请结合使用入库、出库单的批次功能。 加权平均的计算范围首先按工程项目,再按仓库,即:属于同一个工程项目的仓库(可能多个仓库),在本工程项目内一并计算;仓库没有设置工程项目时,每种材料在本仓库范围内均独立加权平均计算。 为保证单价计算的准确性,请初始设置仓库时就明确相关范围,中途修改会导致因为计算范围的调整,单价出错。", "DepotEditPlugin_0", "ec-ecma-formplugin", new Object[0]); + } +}