From 986aa62ed00bee39363bab41b4eeb8259d446efd Mon Sep 17 00:00:00 2001 From: ludc <ludc@vci-tech.com> Date: 星期四, 16 一月 2025 18:20:32 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java | 226 +++++++++++++++++++++++++++++++------------------------- 1 files changed, 124 insertions(+), 102 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 2301d4a..e6b6c33 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,38 +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 com.vci.web.utility.UIDataFetcher; -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 */ @@ -846,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; } @@ -877,7 +876,7 @@ } /** - * 淇敼鍖哄煙鏁版嵁 + * 淇敼鍖哄煙锛堥〉绛撅級鏁版嵁 * @param plTabPage * @return */ @@ -894,7 +893,7 @@ } /** - * 鍒犻櫎鍖哄煙鏁版嵁 + * 鍒犻櫎鍖哄煙锛堥〉绛撅級鏁版嵁 * @param oids * @return */ @@ -1074,6 +1073,7 @@ break; } + d.setNavigatorType(pdVO.getNavigatorType()); d = setEventDataToPLDefination(d,pdVO); //杞瑇ml璧嬪�煎埌plDefination涓� pd.plDefination = UITools.getPLDefinationText(d); @@ -1190,7 +1190,7 @@ d = ulci.getNewPLDefination(d); break; } - + d.setNavigatorType(pdVO.getNavigatorType()); d = setEventDataToPLDefination(d,pdVO); pd.plDefination = UITools.getPLDefinationText(d); @@ -1365,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("鎸夐挳閰嶇疆娣诲姞澶辫触锛�"); } @@ -1376,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("鎸夐挳閰嶇疆淇敼澶辫触锛�"); } @@ -1386,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銆戣寖鍥村唴銆�"); } @@ -1466,7 +1465,7 @@ platformClientUtil.getUIService().savePLCommandParameter(plCommandParameter); } catch (PLException e) { e.printStackTrace(); - throw new VciBaseException("淇濆瓨鎸夐挳淇℃伅鏃跺彂鐢熷紓甯革細"+ e.getMessage()); + throw new VciBaseException("淇濆瓨鎸夐挳鍙傛暟鏃跺彂鐢熷紓甯革細"+ e.getMessage()); } } } @@ -1697,14 +1696,11 @@ 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, List<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); @@ -1712,7 +1708,6 @@ rootNode.setExpanded(true); List<Tree> childList=new ArrayList<>(); - //long startTime = System.currentTimeMillis(); 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]); @@ -1721,19 +1716,12 @@ bizTypeTree.setParentId(rootNode.getOid()); bizTypeTree.setParentName(rootNode.getText()); bizTypeTree.setParentBtmName(bizTypes[i].name); - - //long startTime1 = System.currentTimeMillis(); - List<PLUILayout> contextList = uiDataFetcher.getContext(bizTypes[i].name); - //long endTime1 = System.currentTimeMillis(); - //System.out.println("============================================鑾峰彇UI瀹氫箟鏁版嵁寮曟搸鑰楁椂锛�"+((endTime1-startTime1)/1000)+"s"); - + 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); } - //long endTime = System.currentTimeMillis(); - //System.out.println("============================================UI瀹氫箟鏍戣绠楀畬姣曡�楁椂锛�"+((endTime-startTime)/1000)+"s"); rootNode.setChildren(childList); treeList.add(rootNode); return treeList; @@ -1741,21 +1729,27 @@ /** * 鏍规嵁瑙掕壊涓婚敭鑾峰彇宸叉巿鏉冪殑淇℃伅 - * @param roleId + * @param roleId 濡傛灉roleId涓嶄紶锛屽氨浼氳幏鍙栧綋鍓嶇櫥褰曠殑鐢ㄦ埛鐨勫悕绉版煡璇㈡潈闄� * @return * @throws PLException */ - /* @Override - public Map<String,RoleRightVO> getRightListByRoleId(String roleId) throws PLException { - VciBaseUtil.alertNotNull(roleId,"鏌ヨ鏉′欢瑙掕壊涓婚敭"); - String userName = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(); - RoleRightInfo[] 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; - }*/ + @Override + public Map<String, List<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, List<RoleRightVO>> roleRightVOMap = roleRightVOList.stream().collect(Collectors.groupingBy(RoleRightVO::getFuncId, + Collectors.mapping(e ->e, Collectors.toList()))); + return roleRightVOMap; + } - /*** + /** * UI鎺堟潈 * @param uiAuthorDTO * @return @@ -1764,7 +1758,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(); @@ -1774,34 +1768,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()); } /** @@ -1811,39 +1828,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(),""));//鍒涘缓鏃堕棿 @@ -1863,7 +1881,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); } } @@ -1872,16 +1890,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) { @@ -1918,9 +1938,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); } } } @@ -1964,14 +1984,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); @@ -1991,12 +2011,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);//绱鍔犱笂鍚勪釜鎿嶄綔鐨勬潈闄愬�� } } @@ -2126,7 +2147,7 @@ * @param contextList * @param isShowCheckBox */ - private void setChildNode(List<Tree> parentTree, List<PLUILayout>contextList,Map<String,RoleRightVO> roleRightVOMap, boolean isShowCheckBox){ + private void setChildNode(List<Tree> parentTree, List<PLUILayout>contextList,Map<String, List<RoleRightVO>> roleRightVOMap, boolean isShowCheckBox){ Optional.ofNullable(parentTree).orElseGet(()->new ArrayList<>()).stream().forEach(pTree -> { Object funcObj = pTree.getData(); List<Tree> chiledTreeList = new ArrayList<>(); @@ -2205,8 +2226,8 @@ PLTabButton plTabButton = (PLTabButton) funcObj; String id = plTabButton.plTableOId; if(roleRightVOMap.containsKey(id)){ - RoleRightVO roleRightVO = roleRightVOMap.get(id); - Long rightValue = roleRightVO.getRightValue(); + RoleRightVO roleRightVO = roleRightVOMap.get(id).get(0); + Long rightValue = roleRightVO.getRightValue(); int nodeValue = plTabButton.plSeq; if (nodeValue >= 0 && nodeValue <= 63) { long preValue = (rightValue >> nodeValue) & 1; @@ -3322,11 +3343,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)}); @@ -3511,7 +3531,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; @@ -3584,6 +3604,7 @@ d.setSearchTarger(searchTarger); d.setShowType(btmType); d.setTemplateId(txtVIName); + d.setOrientation("positive"); d.setQueryTemplateName(txtQTName); d.setExpandCols(expandCols); d.setExpandMode(expandMode); @@ -3681,6 +3702,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()); @@ -3696,7 +3718,7 @@ return res; } // 閾炬帴绫诲瀷涓嶄负绌烘椂锛岄渶瑕佸悓鏃舵鏌ラ摼鎺ョ被鍨嬪強閾炬帴绫诲瀷涓嬬殑鏌ヨ妯℃澘鏄惁鏈夋晥 - if(Func.isBlank(linkType)){ + if(Func.isNotBlank(linkType)){ if(!(super.checkLinkTypeTxtIsOk("閾炬帴绫诲瀷", linkType,false))){ res = false; return res; -- Gitblit v1.9.3