From 547c9ae214e26ab0c0a1c618ee2fb77d40085dfd Mon Sep 17 00:00:00 2001 From: xuhaihui <2098865055@qq.com> Date: Mon, 25 Aug 2025 14:30:56 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=AC=BE=E7=94=B3=E8=AF=B7=E5=8D=95?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=8F=92=E4=BB=B6=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form/paymentApplicationListPlugin.java | 75 ++++++++++++++++--- 1 file changed, 64 insertions(+), 11 deletions(-) diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/paymentApplicationListPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/paymentApplicationListPlugin.java index 1170baa..4ea6ac0 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/paymentApplicationListPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/paymentApplicationListPlugin.java @@ -1,20 +1,16 @@ package zcgj.zcdev.zcdev.fs.plugin.form; import kd.bos.context.RequestContext; +import kd.bos.dataentity.entity.DynamicObject; import kd.bos.filter.FilterColumn; -import kd.bos.form.FormShowParameter; -import kd.bos.form.IFormView; -import kd.bos.form.container.Tab; -import kd.bos.form.container.TabPage; -import kd.bos.form.control.Control; import kd.bos.form.events.FilterContainerInitArgs; import kd.bos.form.field.events.BeforeFilterF7SelectEvent; import kd.bos.list.ListShowParameter; import kd.bos.list.plugin.AbstractListPlugin; -import kd.bos.mvc.SessionManager; +import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.user.UserServiceHelper; -import kd.sdk.plugin.Plugin; import java.util.ArrayList; import java.util.List; @@ -31,7 +27,7 @@ public class paymentApplicationListPlugin extends AbstractListPlugin { super.filterContainerInit(args); ListShowParameter param = (ListShowParameter) this.getView().getFormShowParameter(); String appId = param.getAppId(); - if (!appId.equals("dhc")) { + if (appId == null || !appId.equals("dhc")) { return; } List commonFilterColumns = args.getCommonFilterColumns(); @@ -40,24 +36,81 @@ public class paymentApplicationListPlugin extends AbstractListPlugin { if ("zcgj_org.name".equals(fieldName)) { String userid = RequestContext.get().getUserId();//获取当前用户id long userMainOrgId = UserServiceHelper.getUserMainOrgId(Long.parseLong(userid)); - commonFilterColumn.setDefaultValue(String.valueOf(userMainOrgId)); + QFilter[] qFilter = new QFilter[]{new QFilter("id", QCP.equals, userMainOrgId)}; + DynamicObject org = BusinessDataServiceHelper.loadSingle("bos_adminorg", qFilter);//行政组织 + DynamicObject orgPattern = org.getDynamicObject("orgpattern");//组织形态 + + // 如果组织形态为空或不是部门形态,直接设置默认值 + if (orgPattern == null || !orgPattern.getString("number").equals("Orgform06")) { + commonFilterColumn.setDefaultValue(String.valueOf(userMainOrgId)); + return; + } + + // 向上查找直到找到非部门形态的上级组织 + DynamicObject currentOrg = org; + DynamicObject parentOrg = null; + while (true) { + DynamicObject structure = currentOrg.getDynamicObjectCollection("structure").get(0); + parentOrg = structure.getDynamicObject("viewparent"); + + QFilter[] parentFilters = new QFilter[]{new QFilter("number", QCP.equals, parentOrg.getString("number"))}; + DynamicObject parentOrgDetail = BusinessDataServiceHelper.loadSingle("bos_adminorg", parentFilters); + DynamicObject parentOrgPattern = parentOrgDetail.getDynamicObject("orgpattern"); + + // 如果上级组织不是部门,则设置为默认值 + if (!parentOrgPattern.getString("number").equals("Orgform06")) { + commonFilterColumn.setDefaultValue(String.valueOf(parentOrgDetail.getPkValue())); + return; + } + + currentOrg = parentOrgDetail; + } } } } + @Override public void filterContainerBeforeF7Select(BeforeFilterF7SelectEvent evt) { super.filterContainerBeforeF7Select(evt); String key = evt.getFieldName(); ListShowParameter param = (ListShowParameter) this.getView().getFormShowParameter(); String appId = param.getAppId(); - if (!appId.equals("dhc")) { + if (appId == null || !appId.equals("dhc")) { return; } if ("zcgj_org.id".equals(key)) { String userid = RequestContext.get().getUserId();//获取当前用户id List ids = UserServiceHelper.getOrgsUserJoin(Long.parseLong(userid));//获取用户所有部门id - evt.addCustomQFilter(new QFilter("id", QFilter.in, ids)); + List ids2 = new ArrayList<>(); + for (Long userMainOrgId : ids) { + QFilter[] qFilter = new QFilter[]{new QFilter("id", QCP.equals, userMainOrgId)}; + DynamicObject org = BusinessDataServiceHelper.loadSingle("bos_adminorg", qFilter);//行政组织 + DynamicObject orgPattern = org.getDynamicObject("orgpattern");//组织形态 + if (orgPattern == null || !orgPattern.getString("number").equals("Orgform06")) { + ids2.add(userMainOrgId); + continue; // 继续处理下一个组织,而不是跳出循环 + } + DynamicObject currentOrg = org; + DynamicObject parentOrg = null; + while (true) { + DynamicObject structure = currentOrg.getDynamicObjectCollection("structure").get(0); + parentOrg = structure.getDynamicObject("viewparent"); + + QFilter[] parentFilters = new QFilter[]{new QFilter("number", QCP.equals, parentOrg.getString("number"))}; + DynamicObject parentOrgDetail = BusinessDataServiceHelper.loadSingle("bos_adminorg", parentFilters); + DynamicObject parentOrgPattern = parentOrgDetail.getDynamicObject("orgpattern"); + + // 如果上级组织不是部门,则添加到结果列表并退出当前组织的查找循环 + if (!parentOrgPattern.getString("number").equals("Orgform06")) { + ids2.add((Long) parentOrgDetail.getPkValue()); + break; // 只是跳出当前组织的查找循环,而不是整个for循环 + } + + currentOrg = parentOrgDetail; + } + } + evt.addCustomQFilter(new QFilter("id", QFilter.in, ids2)); } } }