From 19ec0269a9ce3a57ccfcd1d36585bb1c31977b60 Mon Sep 17 00:00:00 2001 From: ludc <ludc@vci-tech.com> Date: 星期五, 10 一月 2025 10:25:22 +0800 Subject: [PATCH] ui定义为树或树表时默认设置orientation为positive --- Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java | 461 +++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 286 insertions(+), 175 deletions(-) diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java index dd92d2d..572c517 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java @@ -17,37 +17,35 @@ import com.vci.starter.poi.util.ExcelUtil; import com.vci.starter.web.exception.VciBaseException; import com.vci.starter.web.pagemodel.*; -import com.vci.starter.web.pagemodel.BaseQueryObject; -import com.vci.starter.web.pagemodel.BaseResult; -import com.vci.starter.web.pagemodel.DataGrid; -import com.vci.starter.web.pagemodel.SessionInfo; -import com.vci.starter.web.util.*; import com.vci.starter.web.redis.RedisService; +import com.vci.starter.web.util.*; +import com.vci.starter.web.util.Lcm.BeanUtil; +import com.vci.starter.web.util.Lcm.CollectionUtil; +import com.vci.starter.web.util.Lcm.Func; import com.vci.web.service.OsBtmServiceI; import com.vci.web.service.UIManagerServiceI; -import com.vci.web.util.*; -import com.vci.web.util.BeanUtil; -import org.apache.commons.lang3.StringUtils; -import com.vci.web.util.Func; import com.vci.web.util.PlatformClientUtil; +import com.vci.web.util.RightControlUtil; import com.vci.web.util.UITools; +import com.vci.web.utility.UIDataFetcher; import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; + import javax.annotation.Resource; import java.io.File; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; -import java.util.stream.Collectors; import java.util.regex.Pattern; -import java.util.stream.Stream; +import java.util.stream.Collectors; /** - * UI瀹氫箟鏈嶅姟鐣岄潰鐩稿叧鎺ュ彛 + * UI瀹氫箟绠$悊鏈嶅姟鐣岄潰鐩稿叧鎺ュ彛 * @author ludc * @date 2024/8/28 17:05 */ @@ -89,9 +87,9 @@ private final String IMPORTUIKEY = "importUIKey:"; /** - * 褰撳墠鐧诲綍鐢ㄦ埛鐨勪俊鎭� + * ui瀹氫箟鏁版嵁寮曟搸 */ - private SessionInfo sessionInfo = null; + private UIDataFetcher uiDataFetcher = null; /** * 鎺掑簭姣旇緝鍣� @@ -100,16 +98,6 @@ @Override public int compare(PLUILayout o1, PLUILayout o2) { return o1.plCode.compareTo(o2.plCode); - } - }; - - /** - * 鎺掑簭姣旇緝鍣� - */ - private Comparator<PLDefinationVO> pageDefinationComparator = new Comparator<PLDefinationVO>() { - @Override - public int compare(PLDefinationVO o1, PLDefinationVO o2) { - return new Integer(o1.getSeq()).compareTo(new Integer(o2.getSeq())); } }; @@ -162,7 +150,7 @@ contextList.add(""); } contextList.stream().forEach(code->{ - PLUILayout[] pluiLayouts= new PLUILayout[0]; + PLUILayout[] pluiLayouts= new PLUILayout[0]; try { pluiLayouts = platformClientUtil.getUIService().getPLUILayoutEntityByTypeAndCode(btemName,code); } catch (PLException e) { @@ -855,15 +843,17 @@ } /** - * 鏍规嵁涓婁笅鏂嘔D鍜屽尯鍩熺被鍨嬶紝鎸夐『搴忚幏鍙栧綋鍓嶅尯鍩熺殑tab椤� + * 鏍规嵁涓婁笅鏂嘔D鍜屽尯鍩燂紙椤电锛夌被鍨嬶紝鎸夐『搴忚幏鍙栧綋鍓嶅尯鍩熺殑tab椤� */ @Override public DataGrid getTabByContextIdAndType(String contextId, int areaType) throws PLException { VciBaseUtil.alertNotNull(contextId,"涓婁笅鏂囦富閿�",areaType,"鍖哄煙绫诲瀷"); PLTabPage[] plTabPages = platformClientUtil.getUIService().getTabPagesByContextIdAndType(contextId, (short) areaType); + List<PLTabPage> tabPageList = Arrays.stream(plTabPages).sorted(((o1, o2) -> Math.toIntExact(o1.plSeq - o2.plSeq))) + .collect(Collectors.toList()); DataGrid dataGrid = new DataGrid(); dataGrid.setTotal(plTabPages.length); - dataGrid.setData(Arrays.asList(plTabPages)); + dataGrid.setData(tabPageList); return dataGrid; } @@ -886,7 +876,7 @@ } /** - * 淇敼鍖哄煙鏁版嵁 + * 淇敼鍖哄煙锛堥〉绛撅級鏁版嵁 * @param plTabPage * @return */ @@ -903,7 +893,7 @@ } /** - * 鍒犻櫎鍖哄煙鏁版嵁 + * 鍒犻櫎鍖哄煙锛堥〉绛撅級鏁版嵁 * @param oids * @return */ @@ -1083,6 +1073,7 @@ break; } + d.setNavigatorType(pdVO.getNavigatorType()); d = setEventDataToPLDefination(d,pdVO); //杞瑇ml璧嬪�煎埌plDefination涓� pd.plDefination = UITools.getPLDefinationText(d); @@ -1199,7 +1190,7 @@ d = ulci.getNewPLDefination(d); break; } - + d.setNavigatorType(pdVO.getNavigatorType()); d = setEventDataToPLDefination(d,pdVO); pd.plDefination = UITools.getPLDefinationText(d); @@ -1374,7 +1365,7 @@ */ @Override public BaseResult addTabButton(PLTabButtonVO tabButtonVO) { - boolean res = this.saveOrUpdateTapButton(tabButtonVO, true); + boolean res = this.saveOrUpdateTabButton(tabButtonVO, true); return res ? BaseResult.success("鎸夐挳閰嶇疆娣诲姞鎴愬姛锛�"):BaseResult.success("鎸夐挳閰嶇疆娣诲姞澶辫触锛�"); } @@ -1385,7 +1376,7 @@ */ @Override public BaseResult updateTabButton(PLTabButtonVO tabButtonVO) { - boolean res = this.saveOrUpdateTapButton(tabButtonVO, false); + boolean res = this.saveOrUpdateTabButton(tabButtonVO, false); return res ? BaseResult.success("鎸夐挳閰嶇疆淇敼鎴愬姛锛�"):BaseResult.success("鎸夐挳閰嶇疆淇敼澶辫触锛�"); } @@ -1395,11 +1386,10 @@ * @return */ @Override - public boolean saveOrUpdateTapButton(PLTabButtonVO tabButtonVO,boolean isAdd){ - VciBaseUtil.alertNotNull(tabButtonVO,"鎸夐挳閰嶇疆瀵硅薄",tabButtonVO.getLabel(),"鍙傛暟鍚嶇О"); + public boolean saveOrUpdateTabButton(PLTabButtonVO tabButtonVO,boolean isAdd){ + VciBaseUtil.alertNotNull(tabButtonVO,"鎸夐挳閰嶇疆瀵硅薄",tabButtonVO.getLabel(),"鍙傛暟鍚嶇О",tabButtonVO.getTableOId(),"椤甸潰瀹氫箟涓婚敭"); //妫�鏌ュ綋鍓嶆坊鍔犵殑鍒楄〃鏄惁閲嶅锛屼絾鏄繖鍎垮彧鏀寔鍗曟潯鏁版嵁淇濆瓨锛屾墍鏈夊綋鍓嶅垪琛ㄥ垽閲嶅彲浠ュ墠绔潵鍋� //String btnParamValidate = this.geCheckRes(); - if (tabButtonVO.getSeq() < 1 || tabButtonVO.getSeq() > 63) { throw new VciBaseException("鎸夊簭鍙疯秴鍑鸿寖鍥达紝璇蜂慨鏀癸紝鎸夐挳銆愮紪鍙枫�戝彧鑳藉湪銆�1-63銆戣寖鍥村唴銆�"); } @@ -1453,6 +1443,7 @@ */ private void saveButtonParams(LinkedHashMap<String, String> buttonParams,String tabButtonOid) throws VciBaseException{ if(Func.isNotEmpty(buttonParams)) { + SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); Iterator<Map.Entry<String, String>> iterator = buttonParams.entrySet().iterator(); while(iterator.hasNext()){ Map.Entry<String, String> next = iterator.next(); @@ -1474,7 +1465,7 @@ platformClientUtil.getUIService().savePLCommandParameter(plCommandParameter); } catch (PLException e) { e.printStackTrace(); - throw new VciBaseException("淇濆瓨鎸夐挳淇℃伅鏃跺彂鐢熷紓甯革細"+ e.getMessage()); + throw new VciBaseException("淇濆瓨鎸夐挳鍙傛暟鏃跺彂鐢熷紓甯革細"+ e.getMessage()); } } } @@ -1705,40 +1696,58 @@ String type = StringUtils.isBlank(conditionMap.get("type")) ? "" : conditionMap.get("type"); String context = StringUtils.isBlank(conditionMap.get("context")) ? "" : conditionMap.get("context"); boolean showCheckBox = Boolean.parseBoolean(conditionMap.get("showCheckBox")); - Map<String,RoleRightVO> roleRightVOMap=new HashMap<>(); + Map<String,RoleRightVO> roleRightVOMap = new HashMap<>(); if(StringUtils.isNotBlank(roleId)){ - String userName= WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(); - RoleRightInfo[] rightInfos= platformClientUtil.getFrameworkService().getRoleRightList(roleId,userName); - List<RoleRightVO> roleRightVOList=roleRightDOO2VOS(Arrays.asList(rightInfos)); - roleRightVOMap=roleRightVOList.stream().collect(Collectors.toMap(RoleRightVO::getFuncId,roleRightVO ->roleRightVO,(oldValue,newOldValue)->oldValue)); + roleRightVOMap = this.getRoleRightMap(roleId); } - BizType[] bizTypes=osBtmServiceI.getBizTypes(type); + BizType[] bizTypes = osBtmServiceI.getBizTypes(type); List<Tree> treeList=new ArrayList<>(); Tree rootNode =new Tree("root","鍔熻兘妯″潡","root"); rootNode.setLevel(0); rootNode.setShowCheckbox(true); rootNode.setExpanded(true); List<Tree> childList=new ArrayList<>(); + + uiDataFetcher = new UIDataFetcher(); for (int i = 0; i < bizTypes.length; i++) { Tree bizTypeTree = new Tree(bizTypes[i].oid,bizTypes[i].name,bizTypes[i]);//(btmItems[i].label+" ["+ btmItems[i].name+"]", btmItems[i]); bizTypeTree.setLevel(1); bizTypeTree.setShowCheckbox(true); bizTypeTree.setParentId(rootNode.getOid()); bizTypeTree.setParentName(rootNode.getText()); - bizTypeTree.setShowCheckbox(true); bizTypeTree.setParentBtmName(bizTypes[i].name); - childList.add(bizTypeTree); - List<PLUILayout>contextList=getUIContextDataByBtName(bizTypes[i].name,context); - List<Tree> btmChildList=new ArrayList<>(); + List<PLUILayout> contextList = uiDataFetcher.getContext(bizTypes[i].name/*+context*/); + List<Tree> btmChildList = new ArrayList<>(); btmChildList.add(bizTypeTree); setChildNode(btmChildList,contextList,roleRightVOMap,showCheckBox); + childList.add(bizTypeTree); } rootNode.setChildren(childList); treeList.add(rootNode); return treeList; } - /*** + /** + * 鏍规嵁瑙掕壊涓婚敭鑾峰彇宸叉巿鏉冪殑淇℃伅 + * @param roleId 濡傛灉roleId涓嶄紶锛屽氨浼氳幏鍙栧綋鍓嶇櫥褰曠殑鐢ㄦ埛鐨勫悕绉版煡璇㈡潈闄� + * @return + * @throws PLException + */ + @Override + public Map<String,RoleRightVO> getRoleRightMap(String roleId) throws PLException { + RoleRightInfo[] rightInfos = null; + String userName = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(); + if(Func.isBlank(roleId)){ + rightInfos = platformClientUtil.getFrameworkService().getRoleRightByUserName(userName); + }else{ + rightInfos = platformClientUtil.getFrameworkService().getRoleRightList(roleId,userName); + } + List<RoleRightVO> roleRightVOList = roleRightDOO2VOS(Arrays.asList(rightInfos)); + Map<String,RoleRightVO> roleRightVOMap = roleRightVOList.stream().collect(Collectors.toMap(RoleRightVO::getFuncId,roleRightVO ->roleRightVO,(oldValue,newOldValue)->oldValue)); + return roleRightVOMap; + } + + /** * UI鎺堟潈 * @param uiAuthorDTO * @return @@ -1747,7 +1756,7 @@ @Override public boolean authorizedUI(UIAuthorDTO uiAuthorDTO) throws Exception { boolean res=false; - if(uiAuthorDTO==null||CollectionUtil.isEmpty(uiAuthorDTO.getSelectTreeList())){ + if(uiAuthorDTO==null|| CollectionUtil.isEmpty(uiAuthorDTO.getSelectTreeList())){ throw new VciBaseException("璇烽�夋嫨鑺傜偣杩涜鎺堟潈!"); } BaseQueryObject treeQueryObject=new BaseQueryObject(); @@ -1757,34 +1766,57 @@ conditionMap.put("context",uiAuthorDTO.getContext()); conditionMap.put("showCheckBox","true"); treeQueryObject.setConditionMap(conditionMap); - List<Tree> treeList=this.getUIAuthor(treeQueryObject); - HashMap<String,Tree> allTreeMap=new HashMap<>(); - Map<String,RoleRightDTO> roleRightVOMap=new HashMap<>(); + List<Tree> treeList = this.getUIAuthor(treeQueryObject); + HashMap<String,Tree> allTreeMap = new HashMap<>(); + //Map<String,RoleRightDTO> roleRightVOMap = new HashMap<>(); if(!CollectionUtil.isEmpty(treeList)){ - if(StringUtils.isNotBlank(uiAuthorDTO.getRoleId())){ - String userName= WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(); - RoleRightInfo[] rightInfos= platformClientUtil.getFrameworkService().getRoleRightList(uiAuthorDTO.getRoleId(),userName); - List<RoleRightVO> roleRightVOList=roleRightDOO2VOS(Arrays.asList(rightInfos)); - roleRightVOMap=roleRightVOList.stream().collect(Collectors.toMap(RoleRightVO::getFuncId,roleRightVO ->roleRightVOO2DTO(roleRightVO),(oldValue,newValue)->oldValue)); - } + /*if(StringUtils.isNotBlank(uiAuthorDTO.getRoleId())){ + String userName = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(); + RoleRightInfo[] rightInfos = platformClientUtil.getFrameworkService().getRoleRightList(uiAuthorDTO.getRoleId(),userName); + List<RoleRightVO> roleRightVOList = roleRightDOO2VOS(Arrays.asList(rightInfos)); + roleRightVOMap = roleRightVOList.stream().collect(Collectors.toMap(RoleRightVO::getFuncId,roleRightVO ->roleRightVOO2DTO(roleRightVO),(oldValue,newValue)->oldValue)); + }*/ + convertTreeDOO2Map(treeList,allTreeMap); - List<RoleRightDTO> roleRightDTOList=new ArrayList<>(); - List<Tree> selectTreeList= uiAuthorDTO.getSelectTreeList(); - getSelectedRoleRightObjs(uiAuthorDTO.getRoleId(),selectTreeList,allTreeMap,roleRightVOMap,roleRightDTOList); + List<RoleRightDTO> roleRightDTOList = new ArrayList<>(); + List<Tree> selectTreeList = uiAuthorDTO.getSelectTreeList(); + List<Tree> filterSelectTreeList = this.authTreeListConvert(selectTreeList); + //杩囨护鍑洪�夋嫨鐨勬寜閽� + List<String> checkButtonList = selectTreeList.stream() + .filter(item -> item.getData() instanceof PLTabButton || item.isLeaf()) + .map(item -> item.getOid()).collect(Collectors.toList()); + + getSelectedRoleRightObjs(uiAuthorDTO.getRoleId(),filterSelectTreeList,checkButtonList,allTreeMap,roleRightDTOList); SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); String currentUserName = sessionInfo.getUserId(); - boolean isDeveloper= rightControlUtil.isDeveloper(currentUserName); - List<RoleRightInfo> roleRightInfoList= roleRightDTOO2InfoS(roleRightDTOList); - UserEntityInfo info=new UserEntityInfo(); + //boolean isDeveloper = rightControlUtil.isDeveloper(currentUserName); + List<RoleRightInfo> roleRightInfoList = roleRightDTOO2InfoS(roleRightDTOList); + UserEntityInfo info = new UserEntityInfo(); info.modules="UI鎺堟潈"; - info.userName=currentUserName; + info.userName = currentUserName; try { - res= platformClientUtil.getFrameworkService().saveRoleRight(roleRightInfoList.toArray(new RoleRightInfo[]{}),uiAuthorDTO.getRoleId(),currentUserName,info); + res = platformClientUtil.getFrameworkService().saveRoleRight(roleRightInfoList.toArray(new RoleRightInfo[]{}),uiAuthorDTO.getRoleId(),currentUserName,info); }catch (PLException e){ - throw new Exception("淇濆瓨澶辫触锛�"+e.getMessage()); + throw new Exception("淇濆瓨澶辫触锛�" + e.getMessage()); } } return res; + } + + /** + * 鑾峰彇绛涢�夊悗鐨勬暟鎹� + * @param selectTreeList + */ + private List<Tree> authTreeListConvert(List<Tree> selectTreeList){ + // 鍒涘缓涓�涓寘鍚彟涓�涓泦鍚堜腑婊¤冻鏉′欢鐨� oid 鐨勯泦鍚� + List<String> validOids = selectTreeList.stream() + .filter(Tree::isChecked) // checked 涓� true + .map(Tree::getOid) // 鎻愬彇 oid + .collect(Collectors.toList()); + + return selectTreeList.stream() + .filter(tree -> tree.isChecked() && !validOids.contains(tree.getParentId())) // 杩囨护鏉′欢 + .collect(Collectors.toList()); } /** @@ -1794,39 +1826,40 @@ * @param allTreeMap * @param roleRightDTOList */ - private void getSelectedRoleRightObjs(String roleOid,List<Tree> selectTreeList,HashMap<String,Tree> allTreeMap,Map<String,RoleRightDTO> allRoleRightDTOMap, List<RoleRightDTO> roleRightDTOList){ - Date date=new Date(); - Map<String,RoleRightDTO> roleRightDTOMap=new HashMap<>(); + private void getSelectedRoleRightObjs(String roleOid, List<Tree> selectTreeList, List<String> checkButtonList, HashMap<String,Tree> allTreeMap, List<RoleRightDTO> roleRightDTOList){ + Map<String,RoleRightDTO> roleRightDTOMap = new HashMap<>(); + if(!CollectionUtil.isEmpty(selectTreeList)){ selectTreeList.stream().forEach(tree -> { - String oid=tree.getOid(); + String oid = tree.getOid(); if(allTreeMap.containsKey(oid)){ - tree= allTreeMap.get(oid); - Object data= tree.getData(); + tree = allTreeMap.get(oid); + Object data = tree.getData(); if (data instanceof String) { - getRightValue(roleOid, tree, allTreeMap, false, roleRightDTOMap);//鍚戜笅鑾峰彇鎵�鏈夋ā鍧楃殑鏉冮檺鍊� + getRightValue(roleOid, tree, allTreeMap, checkButtonList,false, roleRightDTOMap);//鍚戜笅鑾峰彇鎵�鏈夋ā鍧楃殑鏉冮檺鍊� } else if (!(data instanceof PLTabButton)) {//涓氬姟绫诲瀷 - getRightValue(roleOid, tree, allTreeMap, true, roleRightDTOMap);//鍚戜笂澶勭悊 - getRightValue(roleOid, tree, allTreeMap, false, roleRightDTOMap);//鍚戜笅澶勭悊锛堝寘鍚綋鍓嶈妭鐐癸級 + getRightValue(roleOid, tree, allTreeMap, checkButtonList, true, roleRightDTOMap);//鍚戜笂澶勭悊 + getRightValue(roleOid, tree, allTreeMap, checkButtonList, false, roleRightDTOMap);//鍚戜笅澶勭悊锛堝寘鍚綋鍓嶈妭鐐癸級 } else if (data instanceof PLTabButton) {//鎸夐挳 String parrentId=tree.getParentId(); if(allTreeMap.containsKey(parrentId)){ SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); String currentUserName = sessionInfo.getUserId(); - boolean isDeveloper= rightControlUtil.isDeveloper(currentUserName); + boolean isDeveloper = rightControlUtil.isDeveloper(currentUserName); Tree parentNode= allTreeMap.get(parrentId); String funcId = parentNode.getOid(); - getRightValue(roleOid,tree, allTreeMap, true, roleRightDTOMap);//鍚戜笂澶勭悊璇ユ搷浣滅埗绾х殑涓婄骇妯″潡鏉冮檺(涓嶅寘鍚埗鑺傜偣) + getRightValue(roleOid, parentNode, allTreeMap, checkButtonList, true, roleRightDTOMap);//鍚戜笂澶勭悊璇ユ搷浣滅埗绾х殑涓婄骇妯″潡鏉冮檺(涓嶅寘鍚埗鑺傜偣) if(!roleRightDTOMap.containsKey(funcId)){ RoleRightDTO roleRightDTO = new RoleRightDTO(); roleRightDTO.setId(ObjectUtility.getNewObjectID36());//涓婚敭 roleRightDTO.setFuncId(funcId); if(isDeveloper) { - roleRightDTO.setRightType((short) 1);//鏉冮檺绫诲瀷 鏉冮檺绫诲瀷锛岃秴绾х鐞嗗憳缁欑鐞嗗憳鎺堟潈涓�1锛岀鐞嗗憳缁欐櫘閫氱敤鎴锋巿鏉冧负2 + //鏉冮檺绫诲瀷 鏉冮檺绫诲瀷锛岃秴绾х鐞嗗憳缁欑鐞嗗憳鎺堟潈涓�1锛岀鐞嗗憳缁欐櫘閫氱敤鎴锋巿鏉冧负2 + roleRightDTO.setRightType((short) 1); }else{ roleRightDTO.setRightType((short) 2); } - roleRightDTO.setRightValue(1);// 鏉冮檺鍊硷紝娌℃湁鎿嶄綔鐨勬ā鍧楁潈闄愬�煎瓨鍌ㄤ负0 + roleRightDTO.setRightValue(countRightValue(parentNode,checkButtonList,false));// 鏉冮檺鍊硷紝娌℃湁鎿嶄綔鐨勬ā鍧楁潈闄愬�煎瓨鍌ㄤ负0 roleRightDTO.setRoleId(roleOid);//瑙掕壊ID roleRightDTO.setCreateUser(currentUserName);//鍒涘缓鑰� roleRightDTO.setCreateTime(VciDateUtil.date2Str(new Date(),""));//鍒涘缓鏃堕棿 @@ -1846,7 +1879,7 @@ }); /* allRoleRightDTOMap.putAll(roleRightDTOMap.entrySet().stream() .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry:: getValue)));*/ - List<RoleRightDTO> newRoleRightDTOList=Optional.ofNullable(roleRightDTOMap).orElseGet(()->new HashMap<String,RoleRightDTO>()).values().stream().collect(Collectors.toList()); + List<RoleRightDTO> newRoleRightDTOList = Optional.ofNullable(roleRightDTOMap).orElseGet(()->new HashMap<String,RoleRightDTO>()).values().stream().collect(Collectors.toList()); roleRightDTOList.addAll(newRoleRightDTOList); } } @@ -1855,16 +1888,18 @@ * 鑾峰彇鏉冮檺 * @param isUp 鏄惁鏄悜涓婅幏鍙栵紝濡傛灉鏄悜涓婅幏鍙栵紝浼犺繘鏉ョ殑蹇呯劧鏄ā鍧楄妭鐐癸紝涓斾笂绾фā鍧楀繀鐒舵槸娌℃湁閫変腑 */ - private void getRightValue(String roleId,Tree node,HashMap<String,Tree> allTreeMap,boolean isUp,Map<String,RoleRightDTO> rightMap){ + private void getRightValue(String roleId,Tree node,Map<String,Tree> allTreeMap,List<String> checkButton,boolean isUp,Map<String,RoleRightDTO> rightMap){ SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); String currentUserName = sessionInfo.getUserId(); boolean isDeveloper= rightControlUtil.isDeveloper(currentUserName); String id=ObjectUtility.getNewObjectID36(); Object data=node.getData(); if(isUp) {//鍚戜笂鑾峰彇锛屽瓨鍌ㄦ瘡涓笂绾фā鍧楃殑鏉冮檺鍊� - while (!"root".equals(node.getData())){ - data=node.getData(); - String oid=node.getOid(); + String parentId = node.getParentId(); + Tree parentNode = allTreeMap.get(parentId); + while (!"root".equals(parentNode.getData())){ + data=parentNode.getData(); + String oid=parentNode.getOid(); if(allTreeMap.containsKey(oid)){ String funcId = ""; if (data instanceof BizType) { @@ -1901,9 +1936,9 @@ if(!rightMap.containsKey(funcId)){ rightMap.put(funcId, roleRightDTO); } - oid= node.getParentId(); + oid = parentNode.getParentId(); if(allTreeMap.containsKey(oid)) { - node=allTreeMap.get(oid); + parentNode = allTreeMap.get(oid); } } } @@ -1947,14 +1982,14 @@ } for (int i = 0; i < node.getChildren().size(); i++) { //瀵规瘡涓瓙鍚戜笅閫掑綊閬嶅巻 - getRightValue(roleId, node.getChildren().get(i), allTreeMap, false, rightMap); + getRightValue(roleId, node.getChildren().get(i), allTreeMap, checkButton,false, rightMap); } } else { if (!rightMap.containsKey(funcId)) { RoleRightDTO roleRightDTO = new RoleRightDTO(); roleRightDTO.setFuncId(funcId); roleRightDTO.setRightType((short) 2); // 璁剧疆UI鏉冮檺 - roleRightDTO.setRightValue(countRightValue(node, true));//娌℃湁鎿嶄綔鐨勬ā鍧楁潈闄愬�煎瓨鍌ㄤ负0 + roleRightDTO.setRightValue(countRightValue(node, checkButton,true));//娌℃湁鎿嶄綔鐨勬ā鍧楁潈闄愬�煎瓨鍌ㄤ负0 roleRightDTO.setRoleId(roleId); roleRightDTO.setCreateUser(currentUserName); @@ -1974,12 +2009,13 @@ * @param isAll 鏄惁瀛愮骇鍏ㄩ儴閫変腑 * @return */ - private long countRightValue(Tree node,boolean isAll){ + private long countRightValue(Tree node,List<String> checkButton,boolean isAll){ long value = 0; - for(int i = 0;i < node.getChildren().size();i++){ + for(int i = 0; i < node.getChildren().size(); i++){ Tree childNode = (Tree)node.getChildren().get(i); - if(isAll && node.getData() instanceof PLTabButton ){ - PLTabButton obj = (PLTabButton)node.getData(); + //node.getData() instanceof PLTabButton杩欏効搴旇鎹㈡垚鏄惁鏄�変腑鐨勬寜閽妭鐐� + if(isAll || checkButton.contains(node.getOid())){ + PLTabButton obj = (PLTabButton)childNode.getData(); value += (long)Math.pow(2, obj.plSeq);//绱鍔犱笂鍚勪釜鎿嶄綔鐨勬潈闄愬�� } } @@ -2001,22 +2037,21 @@ }); } - /*** + /** * 閬嶅巻瀛愯妭鐐� * @param parentTree * @param contextList * @param roleRightVOMap * @param isShowCheckBox */ - private void setChildNode(List<Tree> parentTree, List<PLUILayout>contextList,Map<String,RoleRightVO> roleRightVOMap,boolean isShowCheckBox){ - Optional.ofNullable(parentTree).orElseGet(()->new ArrayList<Tree>()).stream().forEach(pTree -> { - Object funcObj= pTree.getData(); - List<Tree> chiledTreeList=new ArrayList<>(); + private void setChildNode_old(List<Tree> parentTree, List<PLUILayout>contextList,Map<String,RoleRightVO> roleRightVOMap,boolean isShowCheckBox){ + Optional.ofNullable(parentTree).orElseGet(()->new ArrayList<>()).stream().forEach(pTree -> { + Object funcObj = pTree.getData(); + List<Tree> chiledTreeList = new ArrayList<>(); if (funcObj instanceof BizType) {//涓氬姟绫诲瀷 - BizType bizType = (BizType) funcObj; if(!CollectionUtil.isEmpty(contextList)) { contextList.stream().forEach(context->{ - Tree childTree=new Tree(context.plOId,context.plName+"("+context.plCode+")",context); + Tree childTree = new Tree(context.plOId,context.plName+"("+context.plCode+")",context); childTree.setParentName(pTree.getText()); childTree.setParentBtmName(pTree.getParentBtmName()); childTree.setParentId(pTree.getOid()); @@ -2027,19 +2062,13 @@ pTree.setChildren(chiledTreeList); } if(!CollectionUtil.isEmpty(chiledTreeList)) { - setChildNode(chiledTreeList, contextList, roleRightVOMap, isShowCheckBox); + setChildNode_old(chiledTreeList, contextList, roleRightVOMap, isShowCheckBox); } }else if (funcObj instanceof PLUILayout){//UI PLUILayout context = (PLUILayout) funcObj; - PLTabPage[] pages = new PLTabPage[0]; - try { - pages = platformClientUtil.getUIService().getPLTabPagesByPageDefinationOId(context.plOId); - } catch (PLException e) { - e.printStackTrace(); - } - if(pages!=null&&pages.length>0){ - List<PLTabPage> plTabPageList= Arrays.stream(pages).collect(Collectors.toList()); - plTabPageList.stream().forEach(plTabPage -> { + List<PLTabPage> pageList = uiDataFetcher.getTabs(context.plOId); + if(Func.isNotEmpty(pageList)){ + pageList.stream().forEach(plTabPage -> { Tree childTree=new Tree(plTabPage.plOId,plTabPage.plName,plTabPage); childTree.setParentName(pTree.getText()); childTree.setParentId(pTree.getOid()); @@ -2048,69 +2077,155 @@ childTree.setShowCheckbox(isShowCheckBox); chiledTreeList.add(childTree); }); + } + if(!CollectionUtil.isEmpty(chiledTreeList)) { + setChildNode_old(chiledTreeList, contextList, roleRightVOMap, isShowCheckBox); + } + pTree.setChildren(chiledTreeList); + }else if (funcObj instanceof PLTabPage) {//涓婁笅鏂� + PLTabPage plTabPage = (PLTabPage) funcObj; + List<PLPageDefination> pageDefinationList = uiDataFetcher.getComopnent(plTabPage.plOId); + if(Func.isNotEmpty(pageDefinationList)){ + pageDefinationList.stream().forEach(plPageDefination -> { + Tree childTree=new Tree(plPageDefination.plOId,plPageDefination.name,plPageDefination); + childTree.setParentName(pTree.getText()); + childTree.setParentId(pTree.getOid()); + childTree.setParentBtmName(pTree.getParentBtmName()); + childTree.setLevel(pTree.getLevel()+1); + childTree.setShowCheckbox(isShowCheckBox); + chiledTreeList.add(childTree); + }); pTree.setChildren(chiledTreeList); } if(!CollectionUtil.isEmpty(chiledTreeList)) { - setChildNode(chiledTreeList, contextList, roleRightVOMap, isShowCheckBox); + setChildNode_old(chiledTreeList, contextList, roleRightVOMap, isShowCheckBox); } - - }else if (funcObj instanceof PLTabPage) {//涓婁笅鏂� - PLTabPage plTabPage = (PLTabPage) funcObj; - List<PLPageDefination>plPageDefinationList=new ArrayList<>(); - try { - PLPageDefination[] pLPageDefinations = platformClientUtil.getUIService().getPLPageDefinationsByPageContextOId(plTabPage.plOId); - if(pLPageDefinations!=null&&pLPageDefinations.length>0){ - plPageDefinationList= Arrays.stream(pLPageDefinations).collect(Collectors.toList()); - plPageDefinationList.stream().forEach(plPageDefination -> { - Tree childTree=new Tree(plPageDefination.plOId,plPageDefination.name,plPageDefination); - childTree.setParentName(pTree.getText()); - childTree.setParentId(pTree.getOid()); - childTree.setParentBtmName(pTree.getParentBtmName()); - childTree.setLevel(pTree.getLevel()+1); - childTree.setShowCheckbox(isShowCheckBox); - chiledTreeList.add(childTree); - }); - pTree.setChildren(chiledTreeList); - } - if(!CollectionUtil.isEmpty(chiledTreeList)) { - setChildNode(chiledTreeList, contextList, roleRightVOMap, isShowCheckBox); - } - } catch (PLException e) { - e.printStackTrace(); - } - - }else if (funcObj instanceof PLPageDefination) {// + }else if (funcObj instanceof PLPageDefination) { PLPageDefination plPageDefination = (PLPageDefination) funcObj; - try { - List<PLTabButton>plTabButtonList=new ArrayList<>(); - PLTabButton[] pLTabButtons = platformClientUtil.getUIService().getPLTabButtonsByTableOId(plPageDefination.plOId); - if(pLTabButtons!=null&&pLTabButtons.length>0){ - plTabButtonList= Arrays.stream(pLTabButtons).collect(Collectors.toList()); - plTabButtonList.stream().forEach(plTabButton -> { - Tree childTree=new Tree(plTabButton.plOId,plTabButton.plLabel,plTabButton); - childTree.setParentName(pTree.getText()); - childTree.setParentId(pTree.getOid()); - childTree.setParentBtmName(pTree.getParentBtmName()); - childTree.setLevel(pTree.getLevel()+1); - childTree.setShowCheckbox(isShowCheckBox); - childTree.setLeaf(true); - chiledTreeList.add(childTree); - }); - pTree.setChildren(chiledTreeList); - } - if(!CollectionUtil.isEmpty(chiledTreeList)) { - setChildNode(chiledTreeList, contextList, roleRightVOMap, isShowCheckBox); - } - } catch (PLException e) { - e.printStackTrace(); + List<PLTabButton> pLTabButtonList = uiDataFetcher.getButtons(plPageDefination.plOId); + if(Func.isNotEmpty(pLTabButtonList)){ + pLTabButtonList.stream().forEach(plTabButton -> { + Tree childTree=new Tree(plTabButton.plOId,plTabButton.plLabel,plTabButton); + childTree.setParentName(pTree.getText()); + childTree.setParentId(pTree.getOid()); + childTree.setParentBtmName(pTree.getParentBtmName()); + childTree.setLevel(pTree.getLevel()+1); + childTree.setShowCheckbox(isShowCheckBox); + childTree.setLeaf(true); + chiledTreeList.add(childTree); + }); + pTree.setChildren(chiledTreeList); } - + if(!CollectionUtil.isEmpty(chiledTreeList)) { + setChildNode_old(chiledTreeList, contextList, roleRightVOMap, isShowCheckBox); + } }else if (funcObj instanceof PLTabButton) {//鎸夐挳 - PLTabButton plTabButton= (PLTabButton) funcObj; - String id =plTabButton.plTableOId; + PLTabButton plTabButton = (PLTabButton) funcObj; + String id = plTabButton.plTableOId; if(roleRightVOMap.containsKey(id)){ RoleRightVO roleRightVO = roleRightVOMap.get(id); Long rightValue = roleRightVO.getRightValue(); + int nodeValue = plTabButton.plSeq; + if (nodeValue >= 0 && nodeValue <= 63) { + long preValue = (rightValue >> nodeValue) & 1; + if (preValue == 1) { + pTree.setChecked(true); + } + } + }else{ + pTree.setChecked(false); + } + } + }); + } + + /** + * 閬嶅巻瀛愯妭鐐� + * @param parentTree + * @param contextList + * @param isShowCheckBox + */ + private void setChildNode(List<Tree> parentTree, List<PLUILayout>contextList,Map<String,RoleRightVO> roleRightVOMap, boolean isShowCheckBox){ + Optional.ofNullable(parentTree).orElseGet(()->new ArrayList<>()).stream().forEach(pTree -> { + Object funcObj = pTree.getData(); + List<Tree> chiledTreeList = new ArrayList<>(); + if (funcObj instanceof BizType) {//涓氬姟绫诲瀷 + if(!CollectionUtil.isEmpty(contextList)) { + contextList.stream().forEach(context->{ + Tree childTree = new Tree(context.plOId,context.plName+"("+context.plCode+")",context); + childTree.setParentName(pTree.getText()); + childTree.setParentBtmName(pTree.getParentBtmName()); + childTree.setParentId(pTree.getOid()); + childTree.setLevel(pTree.getLevel()+1); + childTree.setShowCheckbox(isShowCheckBox); + chiledTreeList.add(childTree); + }); + pTree.setChildren(chiledTreeList); + } + if(!CollectionUtil.isEmpty(chiledTreeList)) { + setChildNode(chiledTreeList, contextList,roleRightVOMap, isShowCheckBox); + } + }else if (funcObj instanceof PLUILayout){//UI + PLUILayout context = (PLUILayout) funcObj; + List<PLTabPage> pageList = uiDataFetcher.getTabs(context.plOId); + if(Func.isNotEmpty(pageList)){ + pageList.stream().forEach(plTabPage -> { + Tree childTree=new Tree(plTabPage.plOId,plTabPage.plName,plTabPage); + childTree.setParentName(pTree.getText()); + childTree.setParentId(pTree.getOid()); + childTree.setParentBtmName(pTree.getParentBtmName()); + childTree.setLevel(pTree.getLevel()+1); + childTree.setShowCheckbox(isShowCheckBox); + chiledTreeList.add(childTree); + }); + } + if(!CollectionUtil.isEmpty(chiledTreeList)) { + setChildNode(chiledTreeList, contextList,roleRightVOMap, isShowCheckBox); + } + pTree.setChildren(chiledTreeList); + }else if (funcObj instanceof PLTabPage) {//涓婁笅鏂� + PLTabPage plTabPage = (PLTabPage) funcObj; + List<PLPageDefination> pageDefinationList = uiDataFetcher.getComopnent(plTabPage.plOId); + if(Func.isNotEmpty(pageDefinationList)){ + pageDefinationList.stream().forEach(plPageDefination -> { + Tree childTree=new Tree(plPageDefination.plOId,plPageDefination.name,plPageDefination); + childTree.setParentName(pTree.getText()); + childTree.setParentId(pTree.getOid()); + childTree.setParentBtmName(pTree.getParentBtmName()); + childTree.setLevel(pTree.getLevel()+1); + childTree.setShowCheckbox(isShowCheckBox); + chiledTreeList.add(childTree); + }); + pTree.setChildren(chiledTreeList); + } + if(!CollectionUtil.isEmpty(chiledTreeList)) { + setChildNode(chiledTreeList, contextList,roleRightVOMap, isShowCheckBox); + } + }else if (funcObj instanceof PLPageDefination) { + PLPageDefination plPageDefination = (PLPageDefination) funcObj; + List<PLTabButton> pLTabButtonList = uiDataFetcher.getButtons(plPageDefination.plOId); + if(Func.isNotEmpty(pLTabButtonList)){ + pLTabButtonList.stream().forEach(plTabButton -> { + Tree childTree=new Tree(plTabButton.plOId,plTabButton.plLabel,plTabButton); + childTree.setParentName(pTree.getText()); + childTree.setParentId(pTree.getOid()); + childTree.setParentBtmName(pTree.getParentBtmName()); + childTree.setLevel(pTree.getLevel()+1); + childTree.setShowCheckbox(isShowCheckBox); + childTree.setLeaf(true); + chiledTreeList.add(childTree); + }); + pTree.setChildren(chiledTreeList); + } + if(!CollectionUtil.isEmpty(chiledTreeList)) { + setChildNode(chiledTreeList, contextList,roleRightVOMap, isShowCheckBox); + } + }else if (funcObj instanceof PLTabButton) {//鎸夐挳 + PLTabButton plTabButton = (PLTabButton) funcObj; + String id = plTabButton.plTableOId; + if(roleRightVOMap.containsKey(id)){ + RoleRightVO roleRightVO = roleRightVOMap.get(id); + Long rightValue = roleRightVO.getRightValue(); int nodeValue = plTabButton.plSeq; if (nodeValue >= 0 && nodeValue <= 63) { long preValue = (rightValue >> nodeValue) & 1; @@ -2759,9 +2874,7 @@ tabPage.plName = copyObjName; tabPage.plCode = copyObjCode; tabPage.plSeq = Short.parseShort(copyObjSeq); - if(Func.isEmpty(sessionInfo)){ - sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); - } + SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); tabPage.plCreateUser = sessionInfo.getUserId(); tabPage.plModifyUser = sessionInfo.getUserId(); long currentTimeMillis = System.currentTimeMillis(); @@ -2888,9 +3001,7 @@ return BaseResult.success("椤甸潰瀹氫箟鍏嬮殕鎴愬姛锛侊紒"); } //鍒濆鍖杝essionInfo灞炴�� - if(Func.isEmpty(sessionInfo)){ - sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); - } + SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); //寰幆鍏嬮殕鎸夐挳锛堝悓鏃朵細瀵规寜閽殑鐖跺瓙绾у叧绯诲拰鎸夐挳涓嬬殑鍙傛暟杩涜淇濆瓨锛� tabButtonVOS.stream().forEach(buttonVO->{ try { @@ -2934,9 +3045,7 @@ if(Func.isEmpty(filterTabButton)){ return BaseResult.fail("鏍规嵁婧愬璞′富閿湭鏌ヨ鍒版簮瀵硅薄锛岃鍒锋柊鍚庨噸璇曪紒锛�"); } - if(Func.isEmpty(sessionInfo)){ - sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); - } + SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); //鏀瑰彉button瀵硅薄鐨刼id鍜宲arentOId this.modifyButtonOIdsAndCopy(filterTabButton,toOId,ObjectUtility.getNewObjectID36()); @@ -2958,6 +3067,7 @@ // 淇敼褰撳墠鑺傜偣鐨刼Id button.setOId(newOId); + SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); //寮�濮嬩繚瀛樻寜閽拰鍙傛暟 button.setCreateUser(sessionInfo.getUserId()); button.setModifyUser(sessionInfo.getUserId()); @@ -3231,11 +3341,10 @@ */ protected boolean checkQTIsExist(String tip, String txtQTName, String txtType) throws PLException { boolean res = false; - String sql = "select count(1) count_ from PL_QTEMPLATE qt " + "where qt.btmname ='" + txtType.trim() + "' " + "and qt.qtname='" + txtQTName.trim() + "'"; - + res = checkCountNotEqualZero(sql); if(!res){ throw new PLException("500", new String[]{String.format("%s %s 鏃犳晥锛�", tip, txtQTName)}); @@ -3420,7 +3529,7 @@ */ private boolean checkLinkTypeInputIsOk(String txtVIName/*閫夋嫨鐨勬ā鏉�*/,String txtQTName/*鏌ヨ妯℃澘*/,String btmType) throws PLException { boolean res = false; - if(!(this.checkBtmTypeTxtIsOk("鐩爣瀵硅薄", linkType,true))){ + if(!(this.checkLinkTypeTxtIsOk("鐩爣瀵硅薄", linkType,true))){ res = false; } else if(!(this.checkPortalVITxtIsOk("閫夋嫨妯℃澘", txtVIName, linkType,true))){ res = false; @@ -3493,6 +3602,7 @@ d.setSearchTarger(searchTarger); d.setShowType(btmType); d.setTemplateId(txtVIName); + d.setOrientation("positive"); d.setQueryTemplateName(txtQTName); d.setExpandCols(expandCols); d.setExpandMode(expandMode); @@ -3590,6 +3700,7 @@ d.setShowType(btmType); d.setLinkType(linkType); d.setTemplateId(queryTemplateName); + d.setOrientation("positive"); d.setRootContent(showExpressionRoot.trim()); d.setShowAbs(showExpression.trim()); d.setShowLinkAbs(refTreeSet.trim()); @@ -3605,7 +3716,7 @@ return res; } // 閾炬帴绫诲瀷涓嶄负绌烘椂锛岄渶瑕佸悓鏃舵鏌ラ摼鎺ョ被鍨嬪強閾炬帴绫诲瀷涓嬬殑鏌ヨ妯℃澘鏄惁鏈夋晥 - if(Func.isBlank(linkType)){ + if(Func.isNotBlank(linkType)){ if(!(super.checkLinkTypeTxtIsOk("閾炬帴绫诲瀷", linkType,false))){ res = false; return res; -- Gitblit v1.9.3