package fi.em.formPlugin; import kd.bos.bill.AbstractBillPlugIn; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.entity.datamodel.events.ChangeData; import kd.bos.entity.datamodel.events.PropertyChangedArgs; import kd.bos.exception.KDBizException; 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; import kd.sdk.plugin.Plugin; import org.apache.commons.lang.StringUtils; import java.math.BigDecimal; import java.util.*; public class YwclF7ListtenerFromPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener { private final static String nckd_orgv="nckd_orgv";//收款资金组织 private final static String nckd_skzh="nckd_skzh";//收款账户 private final static String nckd_orgvs="nckd_orgvs";//付款资金组织 private final static String nckd_skzhs="nckd_skzhs";//付款账户 private final static String nckd_payeraccbanknum="nckd_payeraccbanknum";//调拨付款账户 private final static String nckd_payeeaccbanknum="nckd_payeeaccbanknum";//调拨收款账户 private final static String nckd_payeebanknumlb="nckd_payeebanknumlb";//收款信息修改付款账号 private final static String nckd_payeebanknumlbs="nckd_payeebanknumlbs";//付款信息修改收款账号 private final static String nckd_basedatafield="nckd_basedatafield";//资产报废编号 private final static String nckd_basedatafield5="nckd_basedatafield5";//资产编号 private final static String nckd_orgfield4="nckd_orgfield4";//付款信息修改收款账号111 private final static String nckd_basedatafield16="nckd_basedatafield16";//财务事物卡片 private final static String nckd_basedatafield19="nckd_basedatafield19";//被拆分资产 private final static String nckd_orgfield6="nckd_orgfield6";//被拆分资产使用部门 private final static String nckd_basedatafield14="nckd_basedatafield14";//转出资产明细 private final static String nckd_basedatafield13="nckd_basedatafield13";//转入资产明细 private final static String nckd_basedatafield18="nckd_basedatafield18";//资产盘点 private final static String nckd_basedatafield21="nckd_basedatafield21";//资产变更明细 private final static String nckd_orgfield8="nckd_orgfield8";//资产变更明细使用后部门 @Override public void registerListener(EventObject e) { super.registerListener(e); // 侦听基础资料字段的事件 BasedataEdit fieldEdit1 = this.getView().getControl(nckd_skzh); fieldEdit1.addBeforeF7SelectListener(this); BasedataEdit fieldEdit2 = this.getView().getControl(nckd_skzhs); fieldEdit2.addBeforeF7SelectListener(this); BasedataEdit fieldEdit3 = this.getView().getControl(nckd_payeraccbanknum); fieldEdit3.addBeforeF7SelectListener(this); BasedataEdit fieldEdit4 = this.getView().getControl(nckd_payeeaccbanknum); fieldEdit4.addBeforeF7SelectListener(this); BasedataEdit fieldEdit5 = this.getView().getControl(nckd_payeebanknumlb); fieldEdit5.addBeforeF7SelectListener(this); BasedataEdit fieldEdit6 = this.getView().getControl(nckd_payeebanknumlbs); fieldEdit6.addBeforeF7SelectListener(this); BasedataEdit fieldEdit7 = this.getView().getControl(nckd_basedatafield); fieldEdit7.addBeforeF7SelectListener(this); BasedataEdit fieldEdit8 = this.getView().getControl(nckd_basedatafield5); fieldEdit8.addBeforeF7SelectListener(this); BasedataEdit fieldEdit9 = this.getView().getControl(nckd_orgfield4); fieldEdit9.addBeforeF7SelectListener(this); BasedataEdit fieldEdit10 = this.getView().getControl(nckd_basedatafield16); fieldEdit10.addBeforeF7SelectListener(this); BasedataEdit fieldEdit11 = this.getView().getControl(nckd_basedatafield19); fieldEdit11.addBeforeF7SelectListener(this); BasedataEdit fieldEdit12 = this.getView().getControl(nckd_orgfield6); fieldEdit12.addBeforeF7SelectListener(this); BasedataEdit fieldEdit13 = this.getView().getControl(nckd_basedatafield14); fieldEdit13.addBeforeF7SelectListener(this); BasedataEdit fieldEdit14 = this.getView().getControl(nckd_basedatafield13); fieldEdit14.addBeforeF7SelectListener(this); BasedataEdit fieldEdit15 = this.getView().getControl(nckd_basedatafield18); fieldEdit15.addBeforeF7SelectListener(this); BasedataEdit fieldEdit16 = this.getView().getControl(nckd_basedatafield21); fieldEdit16.addBeforeF7SelectListener(this); BasedataEdit fieldEdit17 = this.getView().getControl(nckd_orgfield8); fieldEdit17.addBeforeF7SelectListener(this); } @Override public void beforeF7Select(BeforeF7SelectEvent beforeF7SelectEvent) { String fieldKey = beforeF7SelectEvent.getProperty().getName(); int row = beforeF7SelectEvent.getRow(); if (StringUtils.equals(fieldKey, nckd_skzh)){ this.getQFilter(beforeF7SelectEvent,nckd_skzh); } if (StringUtils.equals(fieldKey, nckd_skzhs)){ this.getQFilter(beforeF7SelectEvent,nckd_skzhs); } if (StringUtils.equals(fieldKey, nckd_payeraccbanknum)){ this.getQFilters(beforeF7SelectEvent,nckd_payeraccbanknum); } if (StringUtils.equals(fieldKey, nckd_payeeaccbanknum)){ this.getQFilters(beforeF7SelectEvent,nckd_payeeaccbanknum); } if (StringUtils.equals(fieldKey, nckd_basedatafield)){ this.getQFiltersbf(beforeF7SelectEvent,nckd_basedatafield); } if (StringUtils.equals(fieldKey, nckd_basedatafield5)){ this.getQFilterdczc(beforeF7SelectEvent,nckd_basedatafield5); } if (StringUtils.equals(fieldKey, nckd_orgfield4)){ this.getQFilterdrzc(beforeF7SelectEvent,nckd_orgfield4); } if (StringUtils.equals(fieldKey, nckd_basedatafield16)){ this.getQFilterdczc(beforeF7SelectEvent,nckd_basedatafield16); } if (StringUtils.equals(fieldKey, nckd_basedatafield19)){ this.getQFilterdczc(beforeF7SelectEvent,nckd_basedatafield19); } if (StringUtils.equals(fieldKey, nckd_orgfield6)){ this.getQFilterdrzc(beforeF7SelectEvent,nckd_orgfield6); } if (StringUtils.equals(fieldKey, nckd_basedatafield14)){ this.getQFilterdczc(beforeF7SelectEvent,nckd_basedatafield14); } if (StringUtils.equals(fieldKey, nckd_basedatafield13)){ this.getQFilterdczc(beforeF7SelectEvent,nckd_basedatafield13); } if (StringUtils.equals(fieldKey, nckd_basedatafield18)){ this.getQFilterdczc(beforeF7SelectEvent,nckd_basedatafield18); } if (StringUtils.equals(fieldKey, nckd_basedatafield21)){ this.getQFilterdczc(beforeF7SelectEvent,nckd_basedatafield21); } if (StringUtils.equals(fieldKey, nckd_orgfield8)){ this.getQFilterdrzc(beforeF7SelectEvent,nckd_orgfield8); } } private void getQFilter(BeforeF7SelectEvent arg0, String type) { DynamicObject data = (DynamicObject)this.getModel().getValue(nckd_orgv) ; if(type.equals(nckd_skzh)){ DynamicObject skdata = (DynamicObject)this.getModel().getValue(nckd_orgv) ; if(skdata ==null){ throw new KDBizException("收款信息资金组织为空!"); } long orgid = skdata.getLong("id"); QFilter nckd_skzjFilter = new QFilter("id", QCP.equals,orgid); data= BusinessDataServiceHelper.loadSingle("bos_org","id",new QFilter[] {nckd_skzjFilter}); } else if (type.equals(nckd_skzhs)) { DynamicObject fkdata = (DynamicObject)this.getModel().getValue(nckd_orgvs) ; if(fkdata ==null){ throw new KDBizException("付款信息资金组织为空!"); } long orgid = fkdata.getLong("id"); QFilter nckd_skzjFilter = new QFilter("id", QCP.equals,orgid); data= BusinessDataServiceHelper.loadSingle("bos_org","id",new QFilter[] {nckd_skzjFilter}); } QFilter filter; //给基础资料添加过滤 filter = new QFilter("acctstatus", QCP.equals, "normal"); filter.and("company.id", QCP.equals,data.getLong("id")); ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter(); showParameter.getListFilterParameter().setFilter(filter); } private void getQFilters(BeforeF7SelectEvent arg0, String type) { DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_costcompany") ; if(type.equals(nckd_payeraccbanknum)){ DynamicObject skdata = (DynamicObject)this.getModel().getValue("nckd_payorg") ; if(skdata ==null){ throw new KDBizException("调拨明细付款组织为空!"); } long orgid = skdata.getLong("id"); QFilter nckd_skzjFilter = new QFilter("id", QCP.equals,orgid); data= BusinessDataServiceHelper.loadSingle("bos_org","id",new QFilter[] {nckd_skzjFilter}); } else if (type.equals(nckd_payeeaccbanknum)) { DynamicObject fkdata = (DynamicObject)this.getModel().getValue("nckd_payee") ; if(fkdata ==null){ throw new KDBizException("调拨明细收款组织为空!"); } long orgid = fkdata.getLong("id"); QFilter nckd_skzjFilter = new QFilter("id", QCP.equals,orgid); data= BusinessDataServiceHelper.loadSingle("bos_org","id",new QFilter[] {nckd_skzjFilter}); } QFilter filter; //给基础资料添加过滤 filter = new QFilter("acctstatus", QCP.equals, "normal"); filter.and("company.id", QCP.equals,data.getLong("id")); ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter(); showParameter.getListFilterParameter().setFilter(filter); } private void getQFiltersfk(BeforeF7SelectEvent arg0, String type) { DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_costcompany") ; if(type.equals(nckd_payeebanknumlb)){ DynamicObject skdata = (DynamicObject)this.getModel().getValue("nckd_payeenamev") ; if(skdata ==null){ throw new KDBizException("收款信息付款人为空!"); } long orgid = skdata.getLong("id"); QFilter nckd_skzjFilter = new QFilter("id", QCP.equals,orgid); data= BusinessDataServiceHelper.loadSingle("bd_supplier","id",new QFilter[] {nckd_skzjFilter}); } else if (type.equals(nckd_payeebanknumlbs)) { DynamicObject fkdata = (DynamicObject)this.getModel().getValue("nckd_payeenamevs") ; if(fkdata ==null){ throw new KDBizException("付款信息付款人为空!"); } long orgid = fkdata.getLong("id"); QFilter nckd_skzjFilter = new QFilter("id", QCP.equals,orgid); data= BusinessDataServiceHelper.loadSingle("bd_supplier","id",new QFilter[] {nckd_skzjFilter}); } QFilter filter; //给基础资料添加过滤 filter = new QFilter("nckd_id", QCP.equals, data.getLong("id")); ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter(); showParameter.getListFilterParameter().setFilter(filter); } private void getQFiltersbf(BeforeF7SelectEvent arg0, String type) { DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_orgfield") ; if(data ==null){ throw new KDBizException("核算组织为空!"); } String number = data.getString("number"); QFilter filter; //给基础资料添加过滤 filter = new QFilter("assetunit.number", QCP.equals, number); ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter(); showParameter.getListFilterParameter().setFilter(filter); } private void getQFilterdczc(BeforeF7SelectEvent arg0, String type) { String nckdDetailtype = this.getModel().getValue("nckd_detailtype").toString(); if("E".equals(nckdDetailtype)) { DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_orgfield1") ; if(data ==null){ throw new KDBizException("调出组织为空!"); } String number = data.getString("number"); QFilter filter; //给基础资料添加过滤 filter = new QFilter("assetunit.number", QCP.equals, number); ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter(); showParameter.getListFilterParameter().setFilter(filter); }else if ("N".equals(nckdDetailtype)) { DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_orgfield"); if(data ==null){ throw new KDBizException("核算组织为空!"); } String number = data.getString("number"); QFilter filter; //给基础资料添加过滤 filter = new QFilter("org.number", QCP.equals, number); ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter(); showParameter.getListFilterParameter().setFilter(filter); }else if ("P".equals(nckdDetailtype)) { DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_orgfield"); if(data ==null){ throw new KDBizException("核算组织为空!"); } String number = data.getString("number"); QFilter filter; //给基础资料添加过滤 filter = new QFilter("org.number", QCP.equals, number); ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter(); showParameter.getListFilterParameter().setFilter(filter); }else if ("T".equals(nckdDetailtype)) { DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_orgfield"); if(data ==null){ throw new KDBizException("核算组织为空!"); } String number = data.getString("number"); QFilter filter; //给基础资料添加过滤 filter = new QFilter("org.number", QCP.equals, number); ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter(); showParameter.getListFilterParameter().setFilter(filter); }else if ("S".equals(nckdDetailtype)) { DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_orgfield"); if(data ==null){ throw new KDBizException("核算组织为空!"); } String number = data.getString("number"); QFilter filter; //给基础资料添加过滤 filter = new QFilter("org.number", QCP.equals, number); ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter(); showParameter.getListFilterParameter().setFilter(filter); }else if ("Q".equals(nckdDetailtype)) { DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_orgfield"); if(data ==null){ throw new KDBizException("核算组织为空!"); } String number = data.getString("number"); QFilter filter; //给基础资料添加过滤 filter = new QFilter("org.number", QCP.equals, number); ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter(); showParameter.getListFilterParameter().setFilter(filter); }else if ("N".equals(nckdDetailtype)) { } } private void getQFilterdrzc(BeforeF7SelectEvent arg0, String type) { String nckdDetailtype = this.getModel().getValue("nckd_detailtype").toString(); if("E".equals(nckdDetailtype)){ DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_orgfield2") ; if(data ==null){ throw new KDBizException("调入组织为空!"); } long id = data.getLong("id"); QFilter nckd_orgamountFilter = new QFilter("fromorg.id", QCP.equals, id); Map nckd_cas_arbilMap = BusinessDataServiceHelper.loadFromCache("bos_org_orgrelation_dept", new QFilter[]{nckd_orgamountFilter}); HashSet objects = new HashSet<>(); for (Object idkey:nckd_cas_arbilMap.keySet()) { //当前单头 DynamicObject dynamicObject = nckd_cas_arbilMap.get(idkey); Long id1 = dynamicObject.getLong("toorg.id"); objects.add(id1); } QFilter filter = new QFilter("id",QCP.in,objects); //给基础资料添加过滤 ListShowParameter showParameter = (ListShowParameter) arg0.getFormShowParameter(); showParameter.getListFilterParameter().setFilter(filter); }else if ("N".equals(nckdDetailtype)) { DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_orgfield") ; if(data ==null){ throw new KDBizException("核算组织为空!"); } long id = data.getLong("id"); QFilter nckd_orgamountFilter = new QFilter("fromorg.id", QCP.equals, id); Map nckd_cas_arbilMap = BusinessDataServiceHelper.loadFromCache("bos_org_orgrelation_dept", new QFilter[]{nckd_orgamountFilter}); HashSet objects = new HashSet<>(); for (Object idkey:nckd_cas_arbilMap.keySet()) { //当前单头 DynamicObject dynamicObject = nckd_cas_arbilMap.get(idkey); Long id1 = dynamicObject.getLong("toorg.id"); objects.add(id1); } QFilter filter = new QFilter("id",QCP.in,objects); //给基础资料添加过滤 ListShowParameter showParameter = (ListShowParameter) arg0.getFormShowParameter(); showParameter.getListFilterParameter().setFilter(filter); }else if ("T".equals(nckdDetailtype)) { DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_orgfield") ; if(data ==null){ throw new KDBizException("核算组织为空!"); } long id = data.getLong("id"); QFilter nckd_orgamountFilter = new QFilter("fromorg.id", QCP.equals, id); Map nckd_cas_arbilMap = BusinessDataServiceHelper.loadFromCache("bos_org_orgrelation_dept", new QFilter[]{nckd_orgamountFilter}); HashSet objects = new HashSet<>(); for (Object idkey:nckd_cas_arbilMap.keySet()) { //当前单头 DynamicObject dynamicObject = nckd_cas_arbilMap.get(idkey); Long id1 = dynamicObject.getLong("toorg.id"); objects.add(id1); } QFilter filter = new QFilter("id",QCP.in,objects); //给基础资料添加过滤 ListShowParameter showParameter = (ListShowParameter) arg0.getFormShowParameter(); showParameter.getListFilterParameter().setFilter(filter); } } }