用款申请单列表插件优化

This commit is contained in:
xuhaihui 2025-08-25 14:30:56 +08:00
parent e70d67383b
commit 547c9ae214
1 changed files with 64 additions and 11 deletions

View File

@ -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<FilterColumn> 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<Long> ids = UserServiceHelper.getOrgsUserJoin(Long.parseLong(userid));//获取用户所有部门id
evt.addCustomQFilter(new QFilter("id", QFilter.in, ids));
List<Long> 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));
}
}
}