diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/OutContractFinaceConfirmePlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/OutContractFinaceConfirmePlugin.java index 4be8394..35d1b87 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/OutContractFinaceConfirmePlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/OutContractFinaceConfirmePlugin.java @@ -15,6 +15,10 @@ import kd.bos.form.ShowType; import kd.bos.form.control.EntryGrid; import kd.bos.form.events.HyperLinkClickEvent; import kd.bos.form.events.HyperLinkClickListener; +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.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; @@ -31,7 +35,7 @@ import java.util.List; /** * 支出合同确认单插件 */ -public class OutContractFinaceConfirmePlugin extends AbstractBillPlugIn implements Plugin, HyperLinkClickListener { +public class OutContractFinaceConfirmePlugin extends AbstractBillPlugIn implements Plugin, HyperLinkClickListener, BeforeF7SelectListener { @Override @@ -108,6 +112,9 @@ public class OutContractFinaceConfirmePlugin extends AbstractBillPlugIn impleme if(newValue!=null){ initData(newValue.getLong("id")); } + }else if(StringUtils.equals(name, "zcgj_expenseitem")){ //费用项目发生改变时,清空科目分类 + int rowIndex = changeData.getRowIndex(); + this.getModel().setValue("zcgj_accounttype",null,rowIndex); } @@ -148,6 +155,16 @@ public class OutContractFinaceConfirmePlugin extends AbstractBillPlugIn impleme super.registerListener(e); EntryGrid control = this.getControl("zcgj_entryentity"); control.addHyperClickListener(this); + + BasedataEdit contractprocess = this.getControl("zcgj_cbs"); //承包工序 + if(contractprocess != null) { + contractprocess.addBeforeF7SelectListener(this); + } + + BasedataEdit accounttype = this.getControl("zcgj_accounttype"); //科目分类 + if(accounttype != null) { + accounttype.addBeforeF7SelectListener(this); + } } @Override @@ -219,4 +236,58 @@ public class OutContractFinaceConfirmePlugin extends AbstractBillPlugIn impleme } return BigDecimal.ZERO; } + + + + + @Override + public void beforeF7Select(BeforeF7SelectEvent beforeF7SelectEvent) { + String name = beforeF7SelectEvent.getProperty().getName(); + if(name.equals("zcgj_cbs")) {//工序根据项目过滤 + Object projectObj = this.getModel().getValue("zcgj_project"); + if(projectObj instanceof DynamicObject){ + DynamicObject project = (DynamicObject) projectObj; + QFilter qFilter = new QFilter("project.id", QCP.equals, project.getLong("id")); + QFilter treeFilter = new QFilter("project.number", QCP.equals, project.getString("number")); + ListShowParameter showParameter = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter(); + showParameter.getListFilterParameter().getQFilters().add(qFilter); + showParameter.getTreeFilterParameter().getQFilters().add(treeFilter); + } + + }else if(name.equals("zcgj_accounttype")){ //科目分类根据科目分类基础资料过滤 + int row = beforeF7SelectEvent.getRow(); + System.out.println(); + DynamicObjectCollection dynamicObjectCollection = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_expenseitementry"); + if(dynamicObjectCollection!=null){ + DynamicObject zcgjExpenseitem = dynamicObjectCollection.get(row).getDynamicObject("zcgj_expenseitem"); + if(zcgjExpenseitem!=null){ + QFilter filter = new QFilter("zcgj_entryentity.zcgj_fee",QCP.equals,zcgjExpenseitem.getLong("id")); + //分录过滤 + //使用BusinessDataServiceHelper.load查出来的数据,返回的是符合条件的整单,即使只有分录中的某一行符合条件,也会返回整张单包括其他分录行的数据 + //使用 QueryServiceHelper.query查出来的数据只会包含符合条件的分录行,不含其他行数据 + DynamicObjectCollection accountfeeEntries = QueryServiceHelper.query("zcgj_accountfee", "zcgj_entryentity.zcgj_accounttype.number", new QFilter[]{filter}); + List numbers = new ArrayList<>(); + if(accountfeeEntries!=null){ + for (DynamicObject dynamicObject : accountfeeEntries) { + String zcgjAccounttypeNumber = dynamicObject.getString("zcgj_entryentity.zcgj_accounttype.number"); + if(zcgjAccounttypeNumber!=null){ + numbers.add(zcgjAccounttypeNumber); + } + } + } + + QFilter qFilter = new QFilter("number", QCP.in, numbers); + QFilter treeFilter = new QFilter("number", QCP.in, numbers); + ListShowParameter showParameter = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter(); + showParameter.getListFilterParameter().getQFilters().add(qFilter); + }else{ + this.getView().showErrorNotification("请选择费用项目!"); + beforeF7SelectEvent.setCancel(true); + } + + } + + } + + } }