EAS列表过滤
2022/2/9 23:16:59
本文主要是介绍EAS列表过滤,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
@Override
protected IQueryExecutor getQueryExecutor(IMetaDataPK pk,
EntityViewInfo viewInfo) {
EntityViewInfo botpFilter = getBOTPFilter();
SorterItemCollection sorterItems = viewInfo.getSorter();// 获取排序条件 EntityViewInfo evi = viewInfo; FilterInfo filter2 = new FilterInfo(); if(botpFilter != null){ // 针对botp使用原始条件 filter2 = viewInfo.getFilter(); }else{ // 当前登录人 Object number = SysContext.getSysContext().getCurrentUserInfo().get("number"); if(number == null) number = ""; Object personID = SysContext.getSysContext().getCurrentUserInfo().getId(); // 当前登录组织 Object orgID = SysContext.getSysContext().getCurrentOrgUnit().getId(); FilterItemCollection collection = viewInfo.getFilter().getFilterItems(); // 1.针对user if("user".equalsIgnoreCase(number.toString())){ // 剔除组织过滤条件 if(collection != null){ int size = collection.size(); // 将组织过滤条件剔除 for(int i = 0;i < size; i++){ String val = collection.get(i).toString(); if(collection.get(i).toString().indexOf("FICompany.id") < 0 & collection.get(i).toString().indexOf("CU.id") < 0){ filter2.getFilterItems().add(collection.get(i)); } } } }else{ FilterInfo filter3 = new FilterInfo(); String val = ""; int j = 0;//次标记用来记录条件的 or and int k = 0;//假如在前台加上过滤条件,那么cu.id将不是第一个条件,应该用and连接,用k记录他是不是第一个条件 StringBuffer buffer = new StringBuffer(); // 2.针对普通用户 if(collection != null){ int size = collection.size(); // 将组织过滤条件剔除 for(int i = 0;i < size; i++){ val = collection.get(i).toString(); if(val.indexOf("id in") < 0){ filter3.getFilterItems().add(collection.get(i)); if(val.indexOf("CU.id") >= 0){ if(j == 0) buffer.append("#"+j); else if(j > 0){ if(k == 0 && j > 0){ // 有通用过滤 buffer.append(" and #"+j); }else{ // 无通用过滤 buffer.append(" or #"+j); } } k++; }else{ if(j == 0) buffer.append("#"+j); else if(j > 0){ buffer.append(" and #"+j); } } j++; } } String mask = buffer.toString(); System.out.println(mask); filter3.setMaskString(mask); } Set params = new HashSet(); String sql = "Select FID from CT_Ass_AssetStoreIn where CFFICompanyID in ("; sql += "Select t1.FID deptID from "; sql += " T_ORG_BaseUnit t1 "; sql += " inner join CT_Ass_CusPermissionEntry t2 on t1.FID = t2.CFDeptId "; sql += " inner join CT_Ass_CusPermission t3 on t2.FParentID = t3.FID "; sql += " where (t1.fid ='"+orgID+"' or t1.FPARENTID = '"+orgID+"') and t3.CFPersonID = "; sql += "(select FPersonId from T_PM_User where FID = '"+personID+"')"; sql += ")"; //sql = "{Call proc_wmq_CtlDB('"+orgID+"','"+personID+"',14)}"; ISQLExecutor se=SQLExecutorFactory.getRemoteInstance(sql); IRowSet rowSet = null; try { rowSet =se.executeSQL(); while(rowSet.next()){ params.add(rowSet.getString("FID")); // 需要动态获取的ID } // 过滤 ,多个filter默认是and 当需条件为or时,如下 if(params.size() < 1){ params.add(""); } }catch(Exception sqlEE){ sqlEE.printStackTrace(); } filter2.getFilterItems().add( new FilterItemInfo("id", params, CompareType.INCLUDE)); try { filter2.mergeFilter(filter3, "and"); } catch (BOSException e) { e.printStackTrace(); } } } evi.setSorter(sorterItems); evi.setFilter(filter2); IQueryExecutor queryExecutor = super.getQueryExecutor(pk, evi); return queryExecutor; }
这篇关于EAS列表过滤的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?
- 2024-05-09企业src漏洞挖掘-有意思的命令执行