diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/PeriodCostBillCbsPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/PeriodCostBillCbsPlugin.java new file mode 100644 index 0000000..d2c5c60 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/PeriodCostBillCbsPlugin.java @@ -0,0 +1,79 @@ +package zcgj.zcdev.zcdev.pr.plugin.form; + +import kd.bos.bill.AbstractBillPlugIn; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.entity.datamodel.events.PropertyChangedArgs; +import kd.bos.form.field.BasedataEdit; +import kd.bos.form.field.RefBillEdit; +import kd.bos.form.field.events.BeforeF7SelectEvent; +import kd.bos.form.field.events.BeforeF7SelectListener; +import kd.bos.isc.util.misc.StringUtil; +import kd.bos.list.ListShowParameter; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; + +import java.util.ArrayList; +import java.util.EventObject; +import java.util.List; + +/** + * 工序期间成本预算表单插件 + * 说明:通过项目与期间带出工序成本预算字段内容 + **/ +public class PeriodCostBillCbsPlugin extends AbstractBillPlugIn implements BeforeF7SelectListener { + @Override + public void registerListener(EventObject e) { + super.registerListener(e); + RefBillEdit refBillEdit = getView().getControl("zcgj_aimcostbill");//工序成本预算 + refBillEdit.addBeforeF7SelectListener(this); + } + + @Override + public void propertyChanged(PropertyChangedArgs e) { + super.propertyChanged(e); + String key = e.getProperty().getName(); + if (StringUtil.equals(key, "project") || StringUtil.equals(key, "period")) { + //项目、期间 + DynamicObject project = (DynamicObject) this.getModel().getValue("project");//项目 + DynamicObject period = (DynamicObject) this.getModel().getValue("period");//期间 + if (project != null && period != null) { + int periodYear = (int) period.get("periodyear");//期间-年度 + String periodValue = String.valueOf(periodYear - 2024); + + QFilter filter = new QFilter("project", "=", project.getPkValue()); + filter.and(new QFilter("zcgj_periodyear", "=", periodValue)); + filter.and(new QFilter("isenable", "=", true)); + DynamicObject ecco_aimcostbillcbs = BusinessDataServiceHelper.loadSingle("ecco_aimcostbillcbs", "id", new QFilter[]{filter});//工序成本预算 + this.getModel().setValue("zcgj_aimcostbill", ecco_aimcostbillcbs); + } else { + this.getModel().setValue("zcgj_aimcostbill", null); + } + } + } + + @Override + public void beforeF7Select(BeforeF7SelectEvent beforeF7SelectEvent) { + ListShowParameter formShowParameter = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter(); + List qFilter = new ArrayList<>(); + DynamicObject project = (DynamicObject) this.getModel().getValue("project");//项目 + DynamicObject period = (DynamicObject) this.getModel().getValue("period");//期间 + if (project != null && period != null) { + int periodYear = (int) period.get("periodyear");//期间-年度 + String periodValue = String.valueOf(periodYear - 2024); + + QFilter filter = new QFilter("project", "=", project.getPkValue()); + filter.and(new QFilter("zcgj_periodyear", "=", periodValue)); + filter.and(new QFilter("isenable", "=", true)); + DynamicObject ecco_aimcostbillcbs = BusinessDataServiceHelper.loadSingle("ecco_aimcostbillcbs", "id", new QFilter[]{filter});//工序成本预算 + if (ecco_aimcostbillcbs != null) { + qFilter.add(new QFilter("id", QCP.equals, ecco_aimcostbillcbs.get("id"))); + } else { + qFilter.add(new QFilter("id", QCP.equals, 123456)); + } + } else { + qFilter.add(new QFilter("id", QCP.equals, 123456)); + } + formShowParameter.getListFilterParameter().setQFilters(qFilter); + } +}