From 07f9df507b87e9f317f70b176106b492a73f20f5 Mon Sep 17 00:00:00 2001 From: zhangzhiguo <421587375@qq.com> Date: Mon, 25 Aug 2025 11:08:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A0=E5=90=88=E5=90=8C=E4=BB=98=E6=AC=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PublicreimbursebillNoContractPlugin.java | 105 +++++++++++++++++- .../operate/PublicBillContractCkOp.java | 17 ++- 2 files changed, 120 insertions(+), 2 deletions(-) diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/PublicreimbursebillNoContractPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/PublicreimbursebillNoContractPlugin.java index 1093ccc..6d2b0cb 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/PublicreimbursebillNoContractPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/PublicreimbursebillNoContractPlugin.java @@ -5,25 +5,37 @@ import kd.bos.bill.BillShowParameter; import kd.bos.bill.OperationStatus; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.LocaleString; +import kd.bos.dataentity.metadata.IDataEntityProperty; import kd.bos.dataentity.resource.ResManager; import kd.bos.entity.datamodel.IDataModel; +import kd.bos.entity.datamodel.events.ChangeData; +import kd.bos.entity.datamodel.events.PropertyChangedArgs; import kd.bos.form.FormShowParameter; +import kd.bos.form.control.AttachmentPanel; import kd.bos.form.events.AfterDoOperationEventArgs; import kd.bos.form.events.PreOpenFormEventArgs; import kd.bos.form.events.SetFilterEvent; +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.form.operate.FormOperate; import kd.bos.list.ListShowParameter; import kd.bos.list.plugin.AbstractListPlugin; +import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.QueryServiceHelper; import org.apache.commons.lang.StringUtils; +import java.util.ArrayList; import java.util.EventObject; +import java.util.List; /** * 对公报销单无合同列表插件 */ -public class PublicreimbursebillNoContractPlugin extends AbstractBillPlugIn { +public class PublicreimbursebillNoContractPlugin extends AbstractBillPlugIn implements BeforeF7SelectListener { private static boolean editTitle = false; @@ -50,6 +62,21 @@ public class PublicreimbursebillNoContractPlugin extends AbstractBillPlugIn { if(isec){ this.getView().setFormTitle(new LocaleString("无合同付款申请单")); } + BillShowParameter bsp=(BillShowParameter)this.getView().getFormShowParameter(); + if(bsp.getStatus()!=OperationStatus.ADDNEW){ + if(isec){ + DynamicObject costcompany = (DynamicObject) this.getModel().getValue("costcompany"); + if(costcompany!=null){ + long id = costcompany.getLong("id"); + QFilter numberFilter = new QFilter("fiaccountorg", QCP.equals,id); + DynamicObject[] project = BusinessDataServiceHelper.load("ec_project", "number,name", new QFilter[]{numberFilter}); + if(project != null && project.length==1){ + long projectId = project[0].getLong("id"); + this.getModel().setValue("zcgj_ec_project", project[0]); + } + } + } + } } @Override @@ -77,4 +104,80 @@ public class PublicreimbursebillNoContractPlugin extends AbstractBillPlugIn { billShowParameter.setCaption(ResManager.loadKDString("无合同付款申请单", "PublicReimAssetBillEdit_1", "fi-er-formplugin", new Object[0])); }*/ } + + @Override + public void propertyChanged(PropertyChangedArgs e) { + super.propertyChanged(e); + String name = e.getProperty().getName(); + boolean isec=(boolean)this.getModel().getValue("zcgj_isec"); + if(isec){ + if(name.equals("costcompany")){ + ChangeData changeData = e.getChangeSet()[0]; + DynamicObject costcompany = (DynamicObject)changeData.getNewValue(); + if(costcompany!=null){ + long id = costcompany.getLong("id"); + QFilter numberFilter = new QFilter("fiaccountorg", QCP.equals,id); + DynamicObject[] project = BusinessDataServiceHelper.load("ec_project", "number,name", new QFilter[]{numberFilter}); + if(project != null && project.length==1){ + long projectId = project[0].getLong("id"); + this.getModel().setValue("zcgj_ec_project", project[0]); + } + } + } + } + } + + @Override + public void registerListener(EventObject e) { + super.registerListener(e); + boolean isec=(boolean)this.getModel().getValue("zcgj_isec"); + if(isec){ + RefBillEdit zcgj_materialinbill = this.getView().getControl("zcgj_materialinbill");//入库单 + zcgj_materialinbill.addBeforeF7SelectListener(this); + + RefBillEdit zcgj_maintenanceack = this.getView().getControl("zcgj_maintenanceack");//设备维修确认单 + zcgj_maintenanceack.addBeforeF7SelectListener(this); + } + } + + @Override + public void beforeF7Select(BeforeF7SelectEvent beforeF7SelectEvent) { + ListShowParameter formShowParameter = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter(); + IDataEntityProperty property = beforeF7SelectEvent.getProperty();//过滤字段信息 + String propertyName = property.getName();//过滤字段标识 + + if("zcgj_materialinbill".equals(propertyName)){ //费用承担公司过滤 + DynamicObject billpayerid = (DynamicObject)this.getModel().getValue("billpayerid"); + DynamicObject costcompany = (DynamicObject)this.getModel().getValue("costcompany"); + if(billpayerid!=null && costcompany!=null){ + Long payerid = billpayerid.getLong("id"); + Long companyId = costcompany.getLong("id"); + List qFilter = new ArrayList<>(); + qFilter.add(new QFilter("supplier", QCP.equals, payerid)); + qFilter.add(new QFilter("fiaccountorg", QCP.equals, companyId)); + qFilter.add(new QFilter("billstatus", QCP.equals, "C")); + formShowParameter.getListFilterParameter().setQFilters(qFilter); + }else{ + this.getView().showTipNotification("费用承担公司或往来单位不能为空"); + beforeF7SelectEvent.setCancel(true); + } + }else if("zcgj_maintenanceack".equals(propertyName)){ + DynamicObject billpayerid = (DynamicObject)this.getModel().getValue("billpayerid"); + DynamicObject costcompany = (DynamicObject)this.getModel().getValue("costcompany"); + if(billpayerid!=null && costcompany!=null){ + Long payerid = billpayerid.getLong("id"); + Long companyId = costcompany.getLong("id"); + List qFilter = new ArrayList<>(); + qFilter.add(new QFilter("entryentity.zcgj_supplier", QCP.equals, payerid)); + qFilter.add(new QFilter("zcgj_accountorg", QCP.equals, companyId)); + qFilter.add(new QFilter("zcgj_maintype", QCP.equals, "10")); + qFilter.add(new QFilter("billstatus", QCP.equals, "C")); + formShowParameter.getListFilterParameter().setQFilters(qFilter); + }else{ + this.getView().showTipNotification("费用承担公司或往来单位不能为空"); + beforeF7SelectEvent.setCancel(true); + } + } + } + } diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/PublicBillContractCkOp.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/PublicBillContractCkOp.java index a638654..22a39ec 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/PublicBillContractCkOp.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/PublicBillContractCkOp.java @@ -30,6 +30,7 @@ public class PublicBillContractCkOp extends AbstractOperationServicePlugIn { e.getFieldKeys().add("zcgj_invoiceremark");//特殊说明 e.getFieldKeys().add("zcgj_nocontract");//合同付款类型 无合同付款 NOCONTRACT , 合同付款 CONTRACT e.getFieldKeys().add("contractentry");//关联合同 + e.getFieldKeys().add("zcgj_bizype");//业务类型 } @Override @@ -53,6 +54,21 @@ public class PublicBillContractCkOp extends AbstractOperationServicePlugIn { if(OrgCheckUtils.isKS(costcompanyId)){ boolean isec = dataEntity.getBoolean("zcgj_isec"); if(isec){ + String bisType = dataEntity.getString("zcgj_bizype"); + //物资采购 WZCG + if("WZCG".equals(bisType)){ + DynamicObjectCollection entry = dataEntity.getDynamicObjectCollection("zcgj_materialinbillentry"); //入库单 + if((entry == null || entry.isEmpty())){ + this.addFatalErrorMessage(extendedDataEntity, String.format("业务类型为物资采购时,入库单分录不能为空!")); + } + }else if("SBWX".equals(bisType)){//设备维修 SBWX + DynamicObjectCollection entry = dataEntity.getDynamicObjectCollection("zcgj_maintenanceackentry"); //入库单 + if((entry == null || entry.isEmpty())){ + this.addFatalErrorMessage(extendedDataEntity, String.format("业务类型为设备维修时,维修确认单分录不能为空!")); + } + } + //其他工程款 QTGCK 不交易 + }else{ String nocontract = dataEntity.getString("zcgj_nocontract"); if("CONTRACT".equals(nocontract)){ //如果是合同付款 DynamicObjectCollection contractentry = dataEntity.getDynamicObjectCollection("contractentry"); @@ -62,7 +78,6 @@ public class PublicBillContractCkOp extends AbstractOperationServicePlugIn { } } } - } } }