From 9c67a9d48ec6a71e2d4edf11fae3f5e802a97bff Mon Sep 17 00:00:00 2001 From: wangting <675591594@qq.com> Date: 星期二, 19 十一月 2024 16:35:30 +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 | 144 ++++++++++++++++++++++++++++------------------- 1 files changed, 86 insertions(+), 58 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..0388ece 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 @@ -1,5 +1,7 @@ package com.vci.web.service.impl; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.vci.common.utility.ObjectUtility; import com.vci.corba.common.PLException; import com.vci.corba.common.data.UserEntityInfo; @@ -39,6 +41,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import javax.swing.tree.TreePath; import java.io.File; import java.util.*; import java.util.concurrent.TimeUnit; @@ -1074,6 +1077,7 @@ break; } + d.setNavigatorType(pdVO.getNavigatorType()); d = setEventDataToPLDefination(d,pdVO); //杞瑇ml璧嬪�煎埌plDefination涓� pd.plDefination = UITools.getPLDefinationText(d); @@ -1190,7 +1194,7 @@ d = ulci.getNewPLDefination(d); break; } - + d.setNavigatorType(pdVO.getNavigatorType()); d = setEventDataToPLDefination(d,pdVO); pd.plDefination = UITools.getPLDefinationText(d); @@ -1365,7 +1369,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 +1380,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 +1390,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 +1469,7 @@ platformClientUtil.getUIService().savePLCommandParameter(plCommandParameter); } catch (PLException e) { e.printStackTrace(); - throw new VciBaseException("淇濆瓨鎸夐挳淇℃伅鏃跺彂鐢熷紓甯革細"+ e.getMessage()); + throw new VciBaseException("淇濆瓨鎸夐挳鍙傛暟鏃跺彂鐢熷紓甯革細"+ e.getMessage()); } } } @@ -1700,11 +1703,11 @@ Map<String,RoleRightVO> roleRightVOMap = new HashMap<>(); if(StringUtils.isNotBlank(roleId)){ String userName = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(); - RoleRightInfo[] rightInfos= platformClientUtil.getFrameworkService().getRoleRightList(roleId,userName); + 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)); } - BizType[] bizTypes=osBtmServiceI.getBizTypes(type); + BizType[] bizTypes = osBtmServiceI.getBizTypes(type); List<Tree> treeList=new ArrayList<>(); Tree rootNode =new Tree("root","鍔熻兘妯″潡","root"); rootNode.setLevel(0); @@ -1721,9 +1724,8 @@ 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); + List<PLUILayout> contextList = uiDataFetcher.getContext(bizTypes[i].name/*+context*/); //long endTime1 = System.currentTimeMillis(); //System.out.println("============================================鑾峰彇UI瀹氫箟鏁版嵁寮曟搸鑰楁椂锛�"+((endTime1-startTime1)/1000)+"s"); @@ -1774,34 +1776,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 +1836,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 +1889,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 +1898,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 +1946,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 +1992,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 +2019,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);//绱鍔犱笂鍚勪釜鎿嶄綔鐨勬潈闄愬�� } } @@ -3322,11 +3351,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 +3539,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; -- Gitblit v1.9.3