用款申请单列表插件优化
This commit is contained in:
parent
e70d67383b
commit
547c9ae214
|
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue