成本中心过滤
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.orm.query.QCP; | ||||
| import kd.bos.orm.query.QFilter; | ||||
| import kd.bos.permission.api.HasPermOrgResult; | ||||
| import kd.bos.servicehelper.BusinessDataServiceHelper; | ||||
| import kd.bos.servicehelper.permission.PermissionServiceHelper; | ||||
| 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) { | ||||
|             return; | ||||
|         } | ||||
|         List<QFilter> qFilters = e.getQFilters(); | ||||
|         QFilter q1 = new QFilter("accountorg.id", QCP.equals, id); | ||||
|         DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(id, "bos_org"); | ||||
|         if (null!=dynamicObject){ | ||||
|             String number = dynamicObject.getString("number"); | ||||
|             if (number!=null && !"".equals(number)){ | ||||
|                 q1.or(new QFilter("shjh_comids",QCP.like,number)); | ||||
|         //1.获取当前用户所有权限的组织编码 | ||||
|         HasPermOrgResult userHasPermOrgs = PermissionServiceHelper.getUserHasPermOrgs(RequestContext.get().getCurrUserId(),true); | ||||
|         List<Long> hasPermOrgs = userHasPermOrgs.getHasPermOrgs(); | ||||
|         boolean hasAllOrgPerm = userHasPermOrgs.hasAllOrgPerm(); | ||||
|         if (hasAllOrgPerm){ | ||||
|             return; | ||||
|         } | ||||
|         } | ||||
|         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