diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/PaymentapplyGeneralPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/PaymentapplyGeneralPlugin.java index 6eecda6..85f4b7d 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/PaymentapplyGeneralPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/PaymentapplyGeneralPlugin.java @@ -4,24 +4,28 @@ import kd.bos.bill.AbstractBillPlugIn; import kd.bos.bill.BillShowParameter; import kd.bos.bill.OperationStatus; import kd.bos.dataentity.entity.DynamicObject; -import kd.bos.entity.datamodel.events.ChangeData; +import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.entity.datamodel.events.PropertyChangedArgs; -import kd.bos.permission.api.HasPermOrgResult; -import kd.bos.servicehelper.org.OrgUnitServiceHelper; -import kd.bos.servicehelper.permission.PermissionServiceHelper; -import kd.bos.servicehelper.user.UserServiceHelper; +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.mvc.bill.BillView; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.QueryServiceHelper; import kd.sdk.plugin.Plugin; +import java.util.ArrayList; import java.util.EventObject; -import java.util.HashSet; import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; /** * 1:付款申请单通用插件 */ -public class PaymentapplyGeneralPlugin extends AbstractBillPlugIn implements Plugin { +public class PaymentapplyGeneralPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener { + + @Override public void afterBindData(EventObject e) { @@ -114,4 +118,51 @@ public class PaymentapplyGeneralPlugin extends AbstractBillPlugIn implements Plu }*/ } + @Override + public void registerListener(EventObject e) { + super.registerListener(e); + //仅针对矿山下组织下的逻辑 + BasedataEdit expenseitem = this.getControl("zcgj_expenseitem"); //费用项目 + if (expenseitem != null) { + expenseitem.addBeforeF7SelectListener(this); + } + + } + + @Override + public void beforeF7Select(BeforeF7SelectEvent beforeF7SelectEvent) { + String name = beforeF7SelectEvent.getProperty().getName(); + String billFormId = ((BillView) this.getView()).getFormId();//单据标识 + if("ec_paymentapply".equals(billFormId)){//付款申请单 + if (name.equals("zcgj_expenseitem")) { //科目分类根据科目分类基础资料过滤 + int row = beforeF7SelectEvent.getRow(); + DynamicObjectCollection dynamicObjectCollection = this.getModel().getDataEntity(true).getDynamicObjectCollection("entryentity"); + if (dynamicObjectCollection != null) { + String paymenttype = dynamicObjectCollection.get(row).getString("paymenttype");//支付类型 + if("PREPAYMENT".equals(paymenttype)){ + QFilter biztypefilter = new QFilter("zcgj_biztype", QCP.equals, "50"); //过滤业务单据为支出财务确认单 + //分录过滤 + //使用BusinessDataServiceHelper.load查出来的数据,返回的是符合条件的整单,即使只有分录中的某一行符合条件,也会返回整张单包括其他分录行的数据 + //使用 QueryServiceHelper.query查出来的数据只会包含符合条件的分录行,不含其他行数据 + DynamicObjectCollection accountfeeEntries = QueryServiceHelper.query("zcgj_accountfee", + "zcgj_entryentity.zcgj_fee.number", new QFilter[]{biztypefilter});//费用与科目分类单 + List numbers = new ArrayList<>(); + if (accountfeeEntries != null) { + for (DynamicObject dynamicObject : accountfeeEntries) { + String zcgjAccounttypeNumber = dynamicObject.getString("zcgj_entryentity.zcgj_fee.number"); + if (zcgjAccounttypeNumber != null) { + numbers.add(zcgjAccounttypeNumber); + } + } + } + QFilter qFilter = new QFilter("number", QCP.in, numbers); + ListShowParameter formShowParameter = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter(); + formShowParameter.getListFilterParameter().getQFilters().add(qFilter); + } + + } + } + } + + } }