From fcfd509a549e5e71b35d6a727aba2a2647aff656 Mon Sep 17 00:00:00 2001 From: ludc Date: 星期二, 10 九月 2024 17:56:12 +0800 Subject: [PATCH] 按钮设计对话框:删除、调整为上级按钮、调整为下级按钮接口上传。 --- Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java | 554 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 509 insertions(+), 45 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 b315dc0..408a5c2 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 @@ -10,9 +10,7 @@ import com.vci.dto.UIAuthorDTO; import com.vci.frameworkcore.compatibility.SmRoleQueryServiceI; import com.vci.model.PLDefination; -import com.vci.pagemodel.PLDefinationVO; -import com.vci.pagemodel.PLUILayoutCloneVO; -import com.vci.pagemodel.RoleRightVO; +import com.vci.pagemodel.*; import com.vci.starter.web.exception.VciBaseException; import com.vci.starter.web.pagemodel.*; import com.vci.starter.web.pagemodel.BaseQueryObject; @@ -33,10 +31,13 @@ import lombok.NoArgsConstructor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; +import javax.swing.*; +import javax.swing.tree.TreePath; import java.io.IOException; import java.util.*; import java.util.stream.Collectors; @@ -55,6 +56,12 @@ */ @Resource private PlatformClientUtil platformClientUtil; + + /*** + * 鏄惁鏄鐞嗗憳 + */ + @Autowired + RightControlUtil rightControlUtil; /** * 涓氬姟绫诲瀷 @@ -439,7 +446,6 @@ return plDefinationVOList; } - /** * 娣诲姞椤甸潰瀹氫箟 * @param pdVO @@ -563,15 +569,25 @@ */ @Override public boolean updatePageDefination(PLDefinationVO pdVO) throws Throwable { - /*PLPageDefination pd = getPageDefination(); - PLDefination d = UITools.getPLDefination(pd.plDefination); + VciBaseUtil.alertNotNull(pdVO,"椤甸潰瀹氫箟瀵硅薄",pdVO.getSeq(),"缂栧彿",pdVO.getName(),"鍚嶇О"); + PLPageDefination pd = new PLPageDefination(); + PLDefination d = new PLDefination(); + BeanUtil.copy(pdVO,d); //涓嶈兘涓虹┖灞炴�ф鏌� if(!this.baseInfoIsOk(pd,true)){ return false; } - setUIValueToObject(pd, d); + pd.name = pdVO.getName().trim(); + pd.seq = Short.valueOf(pdVO.getSeq().trim()); + pd.desc = pdVO.getDescription(); + pd.plType = Short.parseShort(pdVO.getTemplateType()); + + d.setName(pdVO.getName().trim()); + d.setUiParser(pdVO.getUiParser().trim()); + d.setExtAttr(pdVO.getExtAttr().trim()); + d.setTemplateType(pdVO.getTemplateType()); this.newPLDefinationIsOk(pdVO, true); @@ -652,12 +668,333 @@ break; } - d = comptPanel.getNewPLDefination(d); d = setEventDataToPLDefination(d,pdVO); - pd.plDefination = UITools.getPLDefinationText(d);*/ + pd.plDefination = UITools.getPLDefinationText(d); - boolean res = true;//platformClientUtil.getUIService().updatePLPageDefination(pd); + return platformClientUtil.getUIService().updatePLPageDefination(pd); + } + + /** + * 鍒犻櫎椤甸潰瀹氫箟 + * @param oids + * @return + */ + @Override + public boolean delPageDefination(String[] oids) throws PLException { + VciBaseUtil.alertNotNull(oids,"鍒犻櫎鐨勯〉闈㈠畾涔変富閿�"); + boolean res = platformClientUtil.getUIService().deletePLUILayoutByOidsForCascade(oids); return res; + } + + /** + * 鑾峰彇椤电鍖哄煙鎸夐挳閰嶇疆淇℃伅 + * @param pageDefinationOid + * @return + */ + @Override + public List<PLTabButtonVO> getTabButtons(String pageDefinationOid) { + VciBaseUtil.alertNotNull(pageDefinationOid,"椤甸潰瀹氫箟涓婚敭"); + List<PLTabButton> buttonList = new ArrayList<>(); + try { + PLTabButton[] plTabButtons = platformClientUtil.getUIService().getPLTabButtonsByTableOId(pageDefinationOid); + buttonList = Arrays.asList(plTabButtons); + List<PLTabButtonVO> plTabButtonVOList = this.tabButton2TabButtonVOS(buttonList); + PLTabButtonVO plTabButtonVO = new PLTabButtonVO(); + for(int i = 0; i < plTabButtonVOList.size(); i++){ + plTabButtonVO = plTabButtonVOList.get(i); + + if(plTabButtonVO.getParentOid().equals("")){ + plTabButtonVO.setChildren(plTabButtonVO2Children(plTabButtonVOList,plTabButtonVO.getOId())); + } + } + return plTabButtonVOList; + } catch (Exception e) { + e.printStackTrace(); + throw new VciBaseException("鍔犺浇椤电鍖哄煙鎸夐挳閰嶇疆淇℃伅寮傚父锛�" + e.getMessage()); + } + } + + /** + * 澶氫釜鎸夐挳閰嶇疆DO瀵硅薄杞涓猇O瀵硅薄 + * @param listDO + * @return + */ + private List<PLTabButtonVO> tabButton2TabButtonVOS(List<PLTabButton> listDO){ + List<PLTabButtonVO> plTabButtonVOList = new ArrayList<PLTabButtonVO>(); + if(Func.isEmpty(listDO)){ + return plTabButtonVOList; + } + listDO.stream().forEach(item->{ + try { + PLTabButtonVO plTabButtonVO = this.tabButton2TabButtonVO(item); + plTabButtonVOList.add(plTabButtonVO); + } catch (PLException e) { + e.printStackTrace(); + String errorLog = "鎸夐挳閰嶇疆DO TO VO鏃跺嚭鐜伴敊璇紝鍘熷洜锛�"+VciBaseUtil.getExceptionMessage(e); + logger.error(errorLog); + throw new VciBaseException(errorLog); + } + + }); + return plTabButtonVOList; + } + + /** + * 鎸夐挳閰嶇疆DO瀵硅薄杞琕O瀵硅薄 + * @param tabButtonDO + * @return + */ + private PLTabButtonVO tabButton2TabButtonVO(PLTabButton tabButtonDO) throws PLException { + PLTabButtonVO plTabButtonVO = new PLTabButtonVO(); + if(Func.isEmpty(tabButtonDO) && Func.isBlank(tabButtonDO.plOId)){ + return plTabButtonVO; + } + plTabButtonVO.setOId(tabButtonDO.plOId); + plTabButtonVO.setTableOId(tabButtonDO.plTableOId); + plTabButtonVO.setPageOId(tabButtonDO.plPageOId); + plTabButtonVO.setActionOId(tabButtonDO.plActionOId); + plTabButtonVO.setLabel(tabButtonDO.plLabel); + plTabButtonVO.setAreaType(tabButtonDO.plAreaType); + plTabButtonVO.setDesc(tabButtonDO.plDesc); + plTabButtonVO.setSeq(tabButtonDO.plSeq); + plTabButtonVO.setCreateUser(tabButtonDO.plCreateUser); + plTabButtonVO.setCreateTime(tabButtonDO.plCreateTime); + plTabButtonVO.setModifyUser(tabButtonDO.plModifyUser); + plTabButtonVO.setModifyTime(tabButtonDO.plModifyTime); + plTabButtonVO.setLicensOrs(tabButtonDO.plLicensOrs); + plTabButtonVO.setParentOid(tabButtonDO.plParentOid); + plTabButtonVO.setDisplayMode(tabButtonDO.displayMode); + plTabButtonVO.setIconPath(tabButtonDO.iconPath); + plTabButtonVO.setAuthorization(tabButtonDO.authorization); + plTabButtonVO.setShow(tabButtonDO.show); + //鍙傛暟淇℃伅鍥炲~ + PLCommandParameter[] parameters = platformClientUtil.getUIService().getPLCommandParametersByCommandOId(tabButtonDO.plOId); + if(Func.isNotEmpty(parameters)){ + LinkedHashMap<String, String> parameterMap = (LinkedHashMap<String, String>)Arrays.stream(parameters).collect(Collectors.toMap(parm -> parm.plKey, parm -> parm.plValue)); + plTabButtonVO.setButtonParams(parameterMap); + } + return plTabButtonVO; + } + + /** + * 鎸夐挳閰嶇疆瀛愯妭鐐规煡鎵� + * @param plOid + * @param plTabButtonVOList + * @return + */ + private List<PLTabButtonVO> plTabButtonVO2Children(List<PLTabButtonVO> plTabButtonVOList, String plOid){ + ArrayList<PLTabButtonVO> plTabButtonVOS = new ArrayList<>(); + for (PLTabButtonVO plTabButtonVO : plTabButtonVOList) { + if(StringUtils.isBlank(plTabButtonVO.getParentOid())){ + continue; + } + if(plTabButtonVO.getParentOid().equals(plOid)){ + plTabButtonVO.setChildren(plTabButtonVO2Children(plTabButtonVOList,plOid)); + plTabButtonVOS.add(plTabButtonVO); + } + } + return plTabButtonVOS; + } + + /** + * 鎸夐挳閰嶇疆VO瀵硅薄杞珼O瀵硅薄 + * @param tabButtonVO + * @return + * @throws PLException + */ + private PLTabButton tabButtonVO2TabButton(PLTabButton plTabButton,PLTabButtonVO tabButtonVO) { + plTabButton.plOId = tabButtonVO.getOId(); + plTabButton.plTableOId = tabButtonVO.getTableOId(); + plTabButton.plPageOId = tabButtonVO.getPageOId(); + plTabButton.plActionOId = tabButtonVO.getActionOId(); + plTabButton.plLabel = tabButtonVO.getLabel(); + plTabButton.plAreaType = tabButtonVO.getAreaType(); + plTabButton.plDesc = tabButtonVO.getDesc(); + plTabButton.plSeq = tabButtonVO.getSeq(); + plTabButton.plCreateUser = tabButtonVO.getCreateUser(); + plTabButton.plCreateTime = tabButtonVO.getCreateTime(); + plTabButton.plModifyUser = tabButtonVO.getModifyUser(); + plTabButton.plModifyTime = tabButtonVO.getModifyTime(); + plTabButton.plLicensOrs = tabButtonVO.getLicensOrs(); + plTabButton.plParentOid = tabButtonVO.getParentOid(); + plTabButton.displayMode = tabButtonVO.getDisplayMode(); + plTabButton.iconPath = tabButtonVO.getIconPath(); + plTabButton.authorization = tabButtonVO.getAuthorization(); + plTabButton.show = tabButtonVO.getShow(); + return plTabButton; + } + + /** + * 娣诲姞鎸夐挳閰嶇疆淇℃伅 + * @param tabButtonVO + * @return + */ + @Override + public BaseResult addTapButton(PLTabButtonVO tabButtonVO) { + boolean res = this.saveOrUpdateTapButton(tabButtonVO, true); + return res ? BaseResult.success("鎸夐挳閰嶇疆娣诲姞鎴愬姛锛�"):BaseResult.success("鎸夐挳閰嶇疆娣诲姞澶辫触锛�"); + } + + /** + * 淇敼鎸夐挳閰嶇疆淇℃伅 + * @param tabButtonVO + * @return + */ + @Override + public BaseResult updateTapButton(PLTabButtonVO tabButtonVO) { + boolean res = this.saveOrUpdateTapButton(tabButtonVO, false); + return res ? BaseResult.success("鎸夐挳閰嶇疆淇敼鎴愬姛锛�"):BaseResult.success("鎸夐挳閰嶇疆淇敼澶辫触锛�"); + } + + /** + * 淇濆瓨鎴栦慨鏀规寜閽厤缃俊鎭� + * @param tabButtonVO + * @return + */ + @Override + public boolean saveOrUpdateTapButton(PLTabButtonVO tabButtonVO,boolean isAdd){ + VciBaseUtil.alertNotNull(tabButtonVO,"鎸夐挳閰嶇疆瀵硅薄",tabButtonVO.getLabel(),"鍙傛暟鍚嶇О"); + //妫�鏌ュ綋鍓嶆坊鍔犵殑鍒楄〃鏄惁閲嶅锛屼絾鏄繖鍎垮彧鏀寔鍗曟潯鏁版嵁淇濆瓨锛屾墍鏈夊綋鍓嶅垪琛ㄥ垽閲嶅彲浠ュ墠绔潵鍋� + //String btnParamValidate = this.geCheckRes(); + + if (tabButtonVO.getSeq() < 1 || tabButtonVO.getSeq() > 63) { + throw new VciBaseException("鎸夊簭鍙疯秴鍑鸿寖鍥达紝璇蜂慨鏀癸紝鎸夐挳銆愮紪鍙枫�戝彧鑳藉湪銆�1-63銆戣寖鍥村唴銆�"); + } + //褰撳墠鐧诲綍鐢ㄦ埛鐨勪俊鎭� + SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); + //VO2DO + PLTabButton plTabButton = this.tabButtonVO2TabButton(new PLTabButton(), tabButtonVO); + if(isAdd) { + //濡傛灉鏄鍔犳搷浣滐紝鐩存帴鍒涘缓PLTabButton瀵硅薄 + plTabButton.plOId = ObjectUtility.getNewObjectID36(); + plTabButton.plCreateUser = sessionInfo.getUserId(); + plTabButton.plModifyUser = sessionInfo.getUserId(); + } else { + //淇敼鎿嶄綔 + plTabButton.plModifyUser = sessionInfo.getUserId(); + } + + try { + if(isAdd){ + boolean success = platformClientUtil.getUIService().savePLTabButton(plTabButton); + if(success == false) { + throw new VciBaseException("缂栧彿閲嶅锛岀紪鍙峰凡缁忓湪褰撳墠椤电涓嬪瓨鍦紒"); + } + } else if(!isAdd){ + platformClientUtil.getUIService().updatePLTabButton(plTabButton); + } + } catch (Exception e) { + e.printStackTrace(); + String errorLog = "淇濆瓨鎸夐挳淇℃伅鏃跺彂鐢熷紓甯革細" + e.getMessage(); + logger.error(errorLog); + throw new VciBaseException(errorLog); + } + //澶嶇敤浠ュ墠鐨勪唬鐮侊紝瀵逛簬鍙傛暟涓�鏉′竴鏉″垹闄わ紝涓�鏉′竴鏉″垱寤� + //鏁版嵁閲忓強骞跺彂杈冨皯锛屾殏鏃惰繖涔堝鐞嗘病鏈変粈涔堥棶棰� + if(!isAdd) { + try { + platformClientUtil.getUIService().deletePLCommandParameterByTabButtonId(plTabButton.plOId); + } catch (PLException e) { + e.printStackTrace(); + } + } + + LinkedHashMap<String, String> buttonParams = tabButtonVO.getButtonParams(); + if(!buttonParams.isEmpty()) { + Iterator<Map.Entry<String, String>> iterator = buttonParams.entrySet().iterator(); + while(iterator.hasNext()){ + Map.Entry<String, String> next = iterator.next(); + if(StringUtils.isEmpty(next.getKey()) || StringUtils.isEmpty(next.getValue())){ + iterator.remove(); + } + } + if(!buttonParams.isEmpty()){ + Iterator<Map.Entry<String, String>> kvItor = buttonParams.entrySet().iterator(); + while(kvItor.hasNext()){ + Map.Entry<String, String> next = kvItor.next(); + PLCommandParameter plCommandParameter = new PLCommandParameter(); + plCommandParameter.plOId = ObjectUtility.getNewObjectID36(); + plCommandParameter.plCommandOId = plTabButton.plOId; + plCommandParameter.plKey = next.getKey(); + plCommandParameter.plValue = next.getValue(); + plCommandParameter.plCreateUser = sessionInfo.getUserId(); + plCommandParameter.plModifyUser = sessionInfo.getUserId(); + try { + platformClientUtil.getUIService().savePLCommandParameter(plCommandParameter); + } catch (PLException e) { + e.printStackTrace(); + throw new VciBaseException("淇濆瓨鎸夐挳淇℃伅鏃跺彂鐢熷紓甯革細"+ e.getMessage()); + } + } + } + } + return true; + } + + /** + * 鍒犻櫎鍗曚釜鎸夐挳閰嶇疆 + * @param tabButton + * @return + */ + @Override + public boolean deleteTapButton(PLTabButton tabButton) throws PLException { + VciBaseUtil.alertNotNull(tabButton,"鍒犻櫎鐨勬寜閽厤缃璞�"); + boolean success = UITools.getService().deletePLTabButton(tabButton); + if(success == false){ + throw new VciBaseException("璇ユ湁瀛愮骇鎸夐挳锛屼笉鑳藉垹闄わ紒"); + } + return true; + } + + /** + * 璋冩暣涓轰笅绾ф寜閽� + * @param plTabButton + * @return + */ + @Override + public BaseResult joinBtn(PLTabButton plTabButton) throws PLException { + VciBaseUtil.alertNotNull(plTabButton,"闇�璋冩暣涓轰笅绾ф寜閽�",plTabButton.plTableOId,"褰撳墠鎸夐挳閰嶇疆鎵�鍦ㄧ殑椤甸潰涓婚敭"); + //鍚屼竴椤甸潰涓嬬殑鎸夐挳 + List<PLTabButtonVO> plTabButtons = this.getTabButtons(plTabButton.plTableOId); + if(Func.isEmpty(plTabButtons)){ + return BaseResult.fail("鏈幏鍙栧埌鎸夐挳閰嶇疆淇℃伅锛�"); + } + //鑾峰彇褰撳墠瑕佺Щ鍔ㄧ殑鎸夐挳鐨勪笅鏍� + int index = 0; + for (int i = 0; i < plTabButtons.size(); i++) { + if (plTabButtons.get(i).getOId().equals(plTabButton.plOId)) { + index = i; // 鎵惧埌鍚庤褰曚笅鏍� + break; // 鎵惧埌鍚庨��鍑哄惊鐜� + } + } + //褰撻�夋嫨鐨勬寜閽负鏍戠殑绗竴涓妭鐐圭殑鏃跺�欙紝浠栫殑鍏勮妭鐐规槸浠栬嚜宸憋紝瀵艰嚧璋冩暣涓轰笅绾ф寜閽椂鍑洪敊锛屾晠浣滄鍒ゆ柇銆� + if(index == 0){ + return BaseResult.fail("褰撳墠鑺傜偣涓嶅瓨鍦ㄥ厔鑺傜偣锛屾棤娉曡皟鏁翠负涓嬬骇鎸夐挳锛�"); + } + //璁剧疆鐖秈d涓轰笂涓�涓妭鐐圭殑 + plTabButton.plParentOid = plTabButtons.get(index-1).getOId(); + + boolean success = platformClientUtil.getUIService().updatePLTabButton(plTabButton); + if(success == false) { + return BaseResult.fail("淇敼澶辫触锛�"); + } + return BaseResult.fail("淇敼鎴愬姛锛�"); + } + + /** + * 璋冩暣涓轰笂绾ф寜閽� + * @param plTabButton + * @return + */ + @Override + public BaseResult exitBtn(PLTabButton plTabButton) throws PLException { + plTabButton.plParentOid = ""; + + boolean success = platformClientUtil.getUIService().updatePLTabButton(plTabButton); + if(success == false) { + BaseResult.fail("鎾ら攢澶辫触锛�"); + } + return BaseResult.success("鎾ら攢鎴愬姛锛�"); } /** @@ -700,18 +1037,6 @@ } else { res = true; } - return res; - } - - /** - * 鍒犻櫎椤甸潰瀹氫箟 - * @param oids - * @return - */ - @Override - public boolean delPageDefination(String[] oids) throws PLException { - VciBaseUtil.alertNotNull(oids,"鍒犻櫎鐨勯〉闈㈠畾涔変富閿�"); - boolean res = platformClientUtil.getUIService().deletePLUILayoutByOidsForCascade(oids); return res; } @@ -867,6 +1192,12 @@ return treeList; } + /*** + * UI鎺堟潈 + * @param uiAuthorDTO + * @return + * @throws Exception + */ @Override public boolean authorizedUI(UIAuthorDTO uiAuthorDTO) throws Exception { boolean res=false; @@ -882,41 +1213,41 @@ treeQueryObject.setConditionMap(conditionMap); List<Tree> treeList=this.getUIAuthor(treeQueryObject); HashMap<String,Tree> allTreeMap=new HashMap<>(); + Map<String,RoleRightVO> 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 ->roleRightVO)); + } convertTreeDOO2Map(treeList,allTreeMap); List<RoleRightDTO> roleRightDTOList=new ArrayList<>(); List<Tree> selectTreeList= uiAuthorDTO.getSelectTreeList(); - getRoleRightDTOS(uiAuthorDTO.getRoleId(),selectTreeList,allTreeMap,roleRightDTOList); + getSelectedRoleRightObjs(uiAuthorDTO.getRoleId(),selectTreeList,allTreeMap,roleRightDTOList); } return res; } - private void getRoleRightDTOS(String roleOid,List<Tree> selectTreeList,HashMap<String,Tree> allTreeMap, List<RoleRightDTO> roleRightDTOList){ + /** + * + * @param roleOid + * @param selectTreeList + * @param allTreeMap + * @param roleRightDTOList + */ + private void getSelectedRoleRightObjs(String roleOid,List<Tree> selectTreeList,HashMap<String,Tree> allTreeMap, List<RoleRightDTO> roleRightDTOList){ + Date date=new Date(); + Map<String,RoleRightDTO> roleRightDTOMap=new HashMap<>(); selectTreeList.stream().forEach(tree -> { RoleRightDTO roleRightDTO=new RoleRightDTO(); String id=ObjectUtility.getNewObjectID36(); Object data= tree.getData(); - - if (data instanceof BizType) {//涓氬姟绫诲瀷 - BizType bizType=(BizType)data; - roleRightDTO.setId(id);//涓婚敭 - roleRightDTO.setCreateUser(null);//鍒涘缓鑰� - roleRightDTO.setCreateTime(null);//鍒涘缓鏃堕棿 - roleRightDTO.setModifyUser(null);//淇敼鑰� - roleRightDTO.setModifyTime(null);//淇敼鏃堕棿 - roleRightDTO.setRoleId(roleOid);//瑙掕壊ID - roleRightDTO.setRightValue(1);// 鏉冮檺鍊� - roleRightDTO.setRightType((short) -1);//鏉冮檺绫诲瀷 鏉冮檺绫诲瀷锛岃秴绾х鐞嗗憳缁欑鐞嗗憳鎺堟潈涓�1锛岀鐞嗗憳缁欐櫘閫氱敤鎴锋巿鏉冧负2 - roleRightDTO.setFuncId(null); - roleRightDTO.setLicensor(null); - }else if (data instanceof PLUILayout){//UI - - }else if (data instanceof PLTabPage) {//UI涓婁笅鏂� - - - }else if (data instanceof PLPageDefination) {// - - + if(data instanceof String){ + getRightValue(roleOid,tree,allTreeMap,false,roleRightDTOMap);//鍚戜笅鑾峰彇鎵�鏈夋ā鍧楃殑鏉冮檺鍊� + }else if (!(data instanceof PLTabButton)) {//涓氬姟绫诲瀷 + getRightValue(roleOid,tree,allTreeMap,true,roleRightDTOMap);//鍚戜笂澶勭悊 + getRightValue(roleOid,tree,allTreeMap,false,roleRightDTOMap);//鍚戜笅澶勭悊锛堝寘鍚綋鍓嶈妭鐐癸級 }else if (data instanceof PLTabButton) {//鎸夐挳 } @@ -924,6 +1255,138 @@ + } + + /** + * 鑾峰彇鏉冮檺 + * @param isUp 鏄惁鏄悜涓婅幏鍙栵紝濡傛灉鏄悜涓婅幏鍙栵紝浼犺繘鏉ョ殑蹇呯劧鏄ā鍧楄妭鐐癸紝涓斾笂绾фā鍧楀繀鐒舵槸娌℃湁閫変腑 + */ + private void getRightValue(String roleId,Tree node,HashMap<String,Tree> allTreeMap,boolean isUp,Map<String,RoleRightDTO> rightMap){ + SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); + String currentUserName = sessionInfo.getUserId(); + boolean isDeveloper= rightControlUtil.isDeveloper(currentUserName); + String parentOid=node.getParentId(); + if(allTreeMap.containsKey(parentOid)){ + String id=ObjectUtility.getNewObjectID36(); + Tree parentNode =allTreeMap.get(parentOid); + Object parentData= parentNode.getData(); + if(isUp) {//鍚戜笂鑾峰彇锛屽瓨鍌ㄦ瘡涓笂绾фā鍧楃殑鏉冮檺鍊� + while (!"root".equals(parentNode.getData())){ + String funcId = ""; + if (parentData instanceof BizType) { + BizType bizType = (BizType) parentData; + funcId = bizType.name; + } else if (parentData instanceof PLUILayout) { + PLUILayout context = (PLUILayout)parentData; + funcId = context.plOId; + } else if (parentData instanceof PLTabPage) { + PLTabPage tab = (PLTabPage) parentData; + funcId = tab.plOId; + } else if (parentData instanceof PLPageDefination){ + PLPageDefination pageDef = (PLPageDefination) parentData; + funcId = pageDef.plOId; + } else if (parentData instanceof PLTabButton) { + PLTabButton but = (PLTabButton)parentData; + funcId = but.plOId; + } + RoleRightDTO roleRightDTO = new RoleRightDTO(); + roleRightDTO.setId(id);//涓婚敭 + roleRightDTO.setFuncId(funcId); + if(isDeveloper) { + roleRightDTO.setRightType((short) 1);//鏉冮檺绫诲瀷 鏉冮檺绫诲瀷锛岃秴绾х鐞嗗憳缁欑鐞嗗憳鎺堟潈涓�1锛岀鐞嗗憳缁欐櫘閫氱敤鎴锋巿鏉冧负2 + }else{ + roleRightDTO.setRightType((short) 2); + } + roleRightDTO.setRightValue(1);// 鏉冮檺鍊硷紝娌℃湁鎿嶄綔鐨勬ā鍧楁潈闄愬�煎瓨鍌ㄤ负0 + roleRightDTO.setRoleId(roleId);//瑙掕壊ID + roleRightDTO.setCreateUser(currentUserName);//鍒涘缓鑰� + roleRightDTO.setCreateTime(new Date());//鍒涘缓鏃堕棿 + roleRightDTO.setModifyUser(currentUserName);//淇敼鑰� + roleRightDTO.setModifyTime(new Date());//淇敼鏃堕棿 + roleRightDTO.setLicensor(""); + if(!rightMap.containsKey(funcId)){ + rightMap.put(funcId, roleRightDTO); + } + } + }else{ + String funcId = ""; + if(parentData instanceof String){ + funcId = (String)parentData; + } else if (parentData instanceof BizType) { + BizType bizType = (BizType)parentData; + funcId = bizType.name; + } else if (parentData instanceof PLUILayout) { + PLUILayout context = (PLUILayout)parentData; + funcId = context.plOId; + } else if (parentData instanceof PLTabPage) { + PLTabPage tab = (PLTabPage) parentData; + funcId = tab.plOId; + } else if (parentData instanceof PLPageDefination){ + PLPageDefination pageDef = (PLPageDefination) parentData; + funcId = pageDef.plOId; + } else if (parentData instanceof PLTabButton) { + PLTabButton but = (PLTabButton)parentData; + funcId = but.plOId; + } + if(!(parentData instanceof PLPageDefination)) {//瀛愯妭鐐逛笉鏄搷浣� + if(!rightMap.containsKey(funcId)&&!funcId.equals("root")){ + RoleRightDTO roleRightDTO = new RoleRightDTO(); + roleRightDTO.setFuncId(funcId); + if(isDeveloper) { + roleRightDTO.setRightType((short) 1);//鏉冮檺绫诲瀷 鏉冮檺绫诲瀷锛岃秴绾х鐞嗗憳缁欑鐞嗗憳鎺堟潈涓�1锛岀鐞嗗憳缁欐櫘閫氱敤鎴锋巿鏉冧负2 + }else{ + roleRightDTO.setRightType((short) 2); + } + roleRightDTO.setRightValue(0);//娌℃湁鎿嶄綔鐨勬ā鍧楁潈闄愬�煎瓨鍌ㄤ负0 + roleRightDTO.setRoleId(roleId); + roleRightDTO.setCreateUser(currentUserName); + roleRightDTO.setCreateTime(new Date()); + roleRightDTO.setModifyUser(currentUserName); + roleRightDTO.setModifyTime(new Date()); + roleRightDTO.setLicensor(""); + rightMap.put(funcId, roleRightDTO); + } + for(int i = 0;i < parentNode.getChildren().size();i++){ + //瀵规瘡涓瓙鍚戜笅閫掑綊閬嶅巻 + getRightValue(roleId,parentNode.getChildren().get(i),allTreeMap,false,rightMap); + } + }else { + if(!rightMap.containsKey(funcId)){ + RoleRightDTO roleRightDTO = new RoleRightDTO(); + roleRightDTO.setFuncId(funcId); + roleRightDTO.setRightType((short)2); // 璁剧疆UI鏉冮檺 + roleRightDTO.setRightValue(countRightValue(parentNode,true));//娌℃湁鎿嶄綔鐨勬ā鍧楁潈闄愬�煎瓨鍌ㄤ负0 + roleRightDTO.setRoleId(roleId); + + roleRightDTO.setCreateUser(currentUserName); + roleRightDTO.setCreateTime(new Date()); + roleRightDTO.setModifyUser(currentUserName); + roleRightDTO.setModifyTime(new Date()); + roleRightDTO.setLicensor(""); + rightMap.put(funcId, roleRightDTO); + } + } + } + + } + } + + /** + * 浼犲叆鐩存帴鎸傛帴鎿嶄綔鐨勬ā鍧楃殑鑺傜偣,璁$畻璇ヨ妭鐐圭殑鏉冮檺鍊� + * @param node 妯″潡鑺傜偣 + * @param isAll 鏄惁瀛愮骇鍏ㄩ儴閫変腑 + * @return + */ + private long countRightValue(Tree node,boolean isAll){ + long value = 0; + 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(); + value += (long)Math.pow(2, obj.plSeq);//绱鍔犱笂鍚勪釜鎿嶄綔鐨勬潈闄愬�� + } + } + return value; } /** @@ -940,6 +1403,7 @@ } }); } + 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(); -- Gitblit v1.9.3