成本中心过滤
This commit is contained in:
parent
a4b6374aae
commit
11219db0fb
|
|
@ -7,10 +7,13 @@ import kd.bos.form.events.SetFilterEvent;
|
||||||
import kd.bos.list.plugin.AbstractListPlugin;
|
import kd.bos.list.plugin.AbstractListPlugin;
|
||||||
import kd.bos.orm.query.QCP;
|
import kd.bos.orm.query.QCP;
|
||||||
import kd.bos.orm.query.QFilter;
|
import kd.bos.orm.query.QFilter;
|
||||||
|
import kd.bos.permission.api.HasPermOrgResult;
|
||||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||||
|
import kd.bos.servicehelper.permission.PermissionServiceHelper;
|
||||||
import kd.bos.servicehelper.user.UserServiceHelper;
|
import kd.bos.servicehelper.user.UserServiceHelper;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 成本中心列表扩展插件
|
* 成本中心列表扩展插件
|
||||||
|
|
@ -25,18 +28,38 @@ public class BosCostcenterListExtendPlugin extends AbstractListPlugin {
|
||||||
if (id == 100000) {
|
if (id == 100000) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
List<QFilter> qFilters = e.getQFilters();
|
//1.获取当前用户所有权限的组织编码
|
||||||
QFilter q1 = new QFilter("accountorg.id", QCP.equals, id);
|
HasPermOrgResult userHasPermOrgs = PermissionServiceHelper.getUserHasPermOrgs(RequestContext.get().getCurrUserId(),true);
|
||||||
DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(id, "bos_org");
|
List<Long> hasPermOrgs = userHasPermOrgs.getHasPermOrgs();
|
||||||
if (null!=dynamicObject){
|
boolean hasAllOrgPerm = userHasPermOrgs.hasAllOrgPerm();
|
||||||
String number = dynamicObject.getString("number");
|
if (hasAllOrgPerm){
|
||||||
if (number!=null && !"".equals(number)){
|
return;
|
||||||
q1.or(new QFilter("shjh_comids",QCP.like,number));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
List<QFilter> listQF = Lists.newArrayList();
|
|
||||||
listQF.add(q1);
|
|
||||||
qFilters.addAll(listQF);
|
|
||||||
|
|
||||||
|
Set<String> orgNumbers = hasPermOrgs.stream()
|
||||||
|
.map(orgId -> BusinessDataServiceHelper.loadSingle(orgId, "bos_org"))
|
||||||
|
.filter(Objects::nonNull)
|
||||||
|
.map(org -> org.getString("number"))
|
||||||
|
.filter(Objects::nonNull)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
|
if (!orgNumbers.isEmpty()) {
|
||||||
|
// 核算组织条件
|
||||||
|
QFilter q1 = new QFilter("accountorg.id", QCP.in, hasPermOrgs);
|
||||||
|
|
||||||
|
// 跨公司组织条件
|
||||||
|
QFilter crossOrgFilter = orgNumbers.stream()
|
||||||
|
.map(orgNum -> new QFilter("shjh_comids", QCP.like, "%" + orgNum + "%"))
|
||||||
|
.reduce((filter1, filter2) -> filter1.or(filter2))
|
||||||
|
.orElse(null);
|
||||||
|
|
||||||
|
// 组合条件
|
||||||
|
QFilter finalFilter = crossOrgFilter != null ?
|
||||||
|
q1.or(crossOrgFilter) : q1;
|
||||||
|
|
||||||
|
e.addCustomQFilter(finalFilter);
|
||||||
|
}else {
|
||||||
|
e.getQFilters().add(new QFilter("id", QCP.is_null, null)); // 强制返回空
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue