package fi.em.formPlugin; import kd.bos.bill.AbstractBillPlugIn; import kd.bos.context.RequestContext; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; 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.permission.api.HasPermOrgResult; import kd.bos.servicehelper.user.UserServiceHelper; import kd.sdk.plugin.Plugin; import org.apache.commons.lang.StringUtils; import java.util.ArrayList; import java.util.EventObject; import java.util.List; public class BusinessPdF7FormPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener { @Override public void registerListener(EventObject e) { super.registerListener(e); // 侦听基础资料字段的事件 BasedataEdit fieldEdit = this.getView().getControl("nckd_basedatafield18"); BasedataEdit fieldEdit1 = this.getView().getControl("nckd_orgfield1"); fieldEdit.addBeforeF7SelectListener(this); fieldEdit1.addBeforeF7SelectListener(this); } @Override public void beforeF7Select(BeforeF7SelectEvent beforeF7SelectEvent) { String fieldKey = beforeF7SelectEvent.getProperty().getName(); if (StringUtils.equals(fieldKey, "nckd_basedatafield18")){ List numberList = new ArrayList<>(); DynamicObjectCollection dynamicObjectCollections = this.getModel().getEntryEntity("nckd_entryentity61121"); for (DynamicObject dynamicObject : dynamicObjectCollections) { DynamicObject fin = dynamicObject.getDynamicObject("nckd_basedatafield18"); if (fin != null) { String number = fin.getString("number"); numberList.add(number); } } if (numberList.size() > 0) { QFilter qFilter = new QFilter("number", QCP.not_in, numberList); // 表过滤条件 ListShowParameter showParameter = (ListShowParameter)beforeF7SelectEvent.getFormShowParameter(); showParameter.setShowApproved(false); showParameter.getListFilterParameter().setFilter(qFilter); } } else if (StringUtils.equals(fieldKey, "nckd_orgfield1")) { long lUserId = Long.parseLong(RequestContext.get().getUserId()); HasPermOrgResult hasPermOrgResult = UserServiceHelper.getUserChangeAbleOrg(lUserId, true); List getHasPermOrgs = hasPermOrgResult.getHasPermOrgs(); // 表过滤条件 QFilter qFilter = new QFilter("id", QCP.in, getHasPermOrgs); ListShowParameter showParameter = (ListShowParameter)beforeF7SelectEvent.getFormShowParameter(); showParameter.getListFilterParameter().setFilter(qFilter); } } }