diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/JhkmglBillPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/JhkmglBillPlugin.java new file mode 100644 index 0000000..4069ee5 --- /dev/null +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/JhkmglBillPlugin.java @@ -0,0 +1,118 @@ +package shkd.sys.sys.plugin.form; + +import kd.bos.bill.AbstractBillPlugIn; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.dataentity.utils.StringUtils; +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.logging.Log; +import kd.bos.logging.LogFactory; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.sdk.plugin.Plugin; + +import java.util.ArrayList; +import java.util.EventObject; + +/** + * 付款处理表单插件 + * 计划科目过滤 + */ +public class JhkmglBillPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener { + private static final Log logger = LogFactory.getLog(JhkmglBillPlugin.class); + + @Override + public void registerListener(EventObject e) { + super.registerListener(e); + // 侦听-基础资料选择按钮 + BasedataEdit shkd_jhkm = this.getView().getControl("shkd_jhkm"); + shkd_jhkm.addBeforeF7SelectListener(this); + } + + @Override + public void beforeF7Select(BeforeF7SelectEvent beforeF7SelectEvent) { + // 获取点击的基础资料字段按钮的基础资料标识 + String propertyName = beforeF7SelectEvent.getProperty().getName(); + // 都是这样获取对象,然后通过此对象设置过滤条件 + ListShowParameter formShowParameter = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter(); + // 判断点击的按钮是否是我们想要过滤的基础资料 + if (StringUtils.equals("shkd_jhkm", propertyName)) { + String entityName = this.getModel().getDataEntityType().getName(); + DynamicObject[] dynamicObjects = null; + DynamicObject dynamicObj = null; + DynamicObject org = (DynamicObject) this.getModel().getValue("org"); + String org_name = org.getString("name"); + boolean result = false; + if ("cas_paybill".equals(entityName)) { + dynamicObjects = BusinessDataServiceHelper.load("shkd_jhkmsypz", "id,shkd_syzz,shkd_sydj", + new QFilter("shkd_sydj", QCP.equals, "付款处理").toArray()); + for (DynamicObject dynamicObject : dynamicObjects) { + Object shkdSyzz = dynamicObject.get("shkd_syzz"); + if (shkdSyzz != null && org_name.equals(shkdSyzz.toString())) { + dynamicObj = dynamicObject; + result = true; + break; + } + } + + if (!result) { + dynamicObjects = BusinessDataServiceHelper.load("shkd_jhkmsypz", "id,shkd_syzz,shkd_sydj", + new QFilter("shkd_sydj", QCP.equals, "付款处理") + .and(new QFilter("shkd_syzz", QCP.equals, "其他公司")).toArray()); + if (dynamicObjects != null && dynamicObjects.length == 1) { + dynamicObj = dynamicObjects[0]; + } + } + } + + if ("cas_recbill".equals(entityName)) { + dynamicObjects = BusinessDataServiceHelper.load("shkd_jhkmsypz", "id,shkd_syzz,shkd_sydj", + new QFilter("shkd_sydj", QCP.equals, "收款处理").toArray()); + for (DynamicObject dynamicObject : dynamicObjects) { + Object shkdSyzz = dynamicObject.get("shkd_syzz"); + if (shkdSyzz != null && org_name.equals(shkdSyzz.toString())) { + dynamicObj = dynamicObject; + result = true; + break; + } + } + + if (!result) { + dynamicObjects = BusinessDataServiceHelper.load("shkd_jhkmsypz", "id,shkd_syzz,shkd_sydj", + new QFilter("shkd_sydj", QCP.equals, "收款处理") + .and(new QFilter("shkd_syzz", QCP.equals, "其他公司")).toArray()); + if (dynamicObjects != null && dynamicObjects.length == 1) { + dynamicObj = dynamicObjects[0]; + } + } + } + + if (dynamicObj != null) { + DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(dynamicObj.getPkValue(), dynamicObj.getDynamicObjectType().getName()); + DynamicObject shkdSytx = dynamicObject.getDynamicObject("shkd_sytx"); + DynamicObjectCollection shkdSyjhkms = dynamicObject.getDynamicObjectCollection("shkd_syjhkm"); + ArrayList syjhkmNumberList = new ArrayList<>(); + ArrayList syjhkmpPrentrList = new ArrayList<>(); + for (DynamicObject shkdSyjhkm : shkdSyjhkms) { + syjhkmNumberList.add(shkdSyjhkm.getDynamicObject("fbasedataid").getString("number")); + syjhkmpPrentrList.add(shkdSyjhkm.getDynamicObject("fbasedataid").getDynamicObject("parent").getString("number")); + } + + QFilter qFilter1 = new QFilter("bodysystem", QCP.equals, shkdSytx.getPkValue()); + QFilter qFilter2 = new QFilter("number", QCP.in, syjhkmNumberList); + formShowParameter.getListFilterParameter().getQFilters().add(qFilter1.and(qFilter2));// formShowParameter + //设置F7列表左树的过滤条件 + QFilter qFilter3 = new QFilter("number", QCP.equals, "AC-SYS-009-029"); + QFilter qFilter4 = new QFilter("dimtype", QCP.equals, "Period"); + formShowParameter.getTreeFilterParameter().getQFilters().add(qFilter4); + } else { + beforeF7SelectEvent.setCancel(true); + logger.info("组织名称:{},未查到符合条件的计划科目配置", org_name); + } + } + } +} \ No newline at end of file diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/FkclBillPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/JhkmpzBillPlugin.java similarity index 50% rename from sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/FkclBillPlugin.java rename to sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/JhkmpzBillPlugin.java index 2e3c535..1a84ad0 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/FkclBillPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/JhkmpzBillPlugin.java @@ -2,6 +2,7 @@ package shkd.sys.sys.plugin.form; import kd.bos.bill.AbstractBillPlugIn; import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.dataentity.utils.StringUtils; import kd.bos.form.field.BasedataEdit; import kd.bos.form.field.events.BeforeF7SelectEvent; @@ -14,50 +15,43 @@ import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.sdk.plugin.Plugin; +import java.util.ArrayList; import java.util.EventObject; -import java.util.List; /** - * 付款处理表单插件 - * 计划科目过滤 + * 计划科目配置表单插件 + * */ -public class FkclBillPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener { - private static final Log logger = LogFactory.getLog(FkclBillPlugin.class); +public class JhkmpzBillPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener { + private static final Log logger = LogFactory.getLog(JhkmpzBillPlugin.class); @Override public void registerListener(EventObject e) { super.registerListener(e); // 侦听-基础资料选择按钮 - BasedataEdit shkd_jhkm = this.getView().getControl("shkd_jhkm"); + BasedataEdit shkd_jhkm = this.getView().getControl("shkd_syjhkm"); shkd_jhkm.addBeforeF7SelectListener(this); } + @Override public void beforeF7Select(BeforeF7SelectEvent beforeF7SelectEvent) { + DynamicObject dataEntity = this.getModel().getDataEntity(true); // 获取点击的基础资料字段按钮的基础资料标识 String propertyName = beforeF7SelectEvent.getProperty().getName(); // 都是这样获取对象,然后通过此对象设置过滤条件 ListShowParameter formShowParameter = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter(); // 判断点击的按钮是否是我们想要过滤的基础资料 - if (StringUtils.equals("shkd_jhkm", propertyName)) { + String org_name = ""; + QFilter qFilter1 = null; + if (StringUtils.equals("shkd_syjhkm", propertyName)) { logger.info("点击基础资料按钮:{}", propertyName); - DynamicObject org = (DynamicObject) this.getModel().getValue("org"); - String org_name = org.getString("name"); - logger.info("组织名称:{}", org_name); - QFilter qFilter1 = null; - if ("四川能源发展集团有限责任公司".equals(org_name)) { - DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("fpm_bodysysmanage", "id,number", new QFilter("number", QCP.equals, "SYS-008").toArray()); - if (dynamicObjects != null && dynamicObjects.length > 0) { - DynamicObject company = dynamicObjects[0]; - logger.info("体系:{}", company); - qFilter1 = new QFilter("bodysystem", QCP.equals, company.getPkValue()); - } - } else { - DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("fpm_bodysysmanage", "id,number", new QFilter("number", QCP.equals, "SYS-009").toArray()); - if (dynamicObjects != null && dynamicObjects.length > 0) { - DynamicObject company = dynamicObjects[0]; - logger.info("体系:{}", company); - qFilter1 = new QFilter("bodysystem", QCP.equals, company.getPkValue()); - } + // 使用体系 + DynamicObject shkdSytx = dataEntity.getDynamicObject("shkd_sytx"); + DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("fpm_bodysysmanage", "id,number", new QFilter("id", QCP.equals, shkdSytx.getPkValue()).toArray()); + if (dynamicObjects != null && dynamicObjects.length > 0) { + DynamicObject company = dynamicObjects[0]; + logger.info("体系:{}", company); + qFilter1 = new QFilter("bodysystem", QCP.equals, company.getPkValue()); } // 获取列表的过滤条件,然后再赋值过滤条件 formShowParameter.getListFilterParameter().setFilter(qFilter1);