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 |  218 +++++++++++++++++++++++++++++------------------------
 1 files changed, 119 insertions(+), 99 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..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,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());
                 }
             }
         }
@@ -1699,12 +1698,9 @@
         boolean showCheckBox = Boolean.parseBoolean(conditionMap.get("showCheckBox"));
         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);
@@ -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,25 @@
 
     /**
      * 鏍规嵁瑙掕壊涓婚敭鑾峰彇宸叉巿鏉冪殑淇℃伅
-     * @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,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
@@ -1764,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();
@@ -1774,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());
     }
 
     /**
@@ -1811,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(),""));//鍒涘缓鏃堕棿
@@ -1863,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);
         }
     }
@@ -1872,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) {
@@ -1918,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);
                     }
                 }
             }
@@ -1964,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);
@@ -1991,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);//绱鍔犱笂鍚勪釜鎿嶄綔鐨勬潈闄愬��
             }
         }
@@ -2206,7 +2225,7 @@
                 String id = plTabButton.plTableOId;
                 if(roleRightVOMap.containsKey(id)){
                     RoleRightVO roleRightVO = roleRightVOMap.get(id);
-                    Long rightValue =  roleRightVO.getRightValue();
+                    Long rightValue = roleRightVO.getRightValue();
                     int nodeValue = plTabButton.plSeq;
                     if (nodeValue >= 0 && nodeValue <= 63) {
                         long preValue = (rightValue >> nodeValue) & 1;
@@ -3322,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)});
@@ -3511,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;
@@ -3584,6 +3602,7 @@
             d.setSearchTarger(searchTarger);
             d.setShowType(btmType);
             d.setTemplateId(txtVIName);
+            d.setOrientation("positive");
             d.setQueryTemplateName(txtQTName);
             d.setExpandCols(expandCols);
             d.setExpandMode(expandMode);
@@ -3681,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());
@@ -3696,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