成本中心过滤
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