From ac3f3629a261770f573f27e5e23f7ec19d096c2a Mon Sep 17 00:00:00 2001
From: xiejun <xiejun@vci-tech.com>
Date: 星期三, 04 九月 2024 18:29:05 +0800
Subject: [PATCH] UI授权功能查询

---
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/RoleRightVO.java              |  137 +++++++++++++
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebPortalVIController.java   |   12 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/UIManagerController.java     |   20 +
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/model/RoleRightDO.java                  |  142 ++++++++++++++
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java          |   11 +
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java |    6 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java  |  236 ++++++++++++++++++++++
 7 files changed, 550 insertions(+), 14 deletions(-)

diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/model/RoleRightDO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/model/RoleRightDO.java
new file mode 100644
index 0000000..6c1fb38
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/model/RoleRightDO.java
@@ -0,0 +1,142 @@
+package com.vci.model;
+
+import com.vci.starter.web.annotation.Transient;
+import com.vci.starter.web.annotation.VciBtmType;
+import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 鐘舵�佹睜
+ * @author weidy
+ * @date 2022-2-15
+ */
+@VciBtmType(name = "UIAuthor",text = "UI鏉冮檺",tableName = "PLROLERIGHT",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
+@Transient
+public class RoleRightDO implements Serializable {
+    private static final long serialVersionUID = -5073244242126466800L;
+    /**
+     * ID
+     */
+    private String id = "";
+    /**
+     *瑙掕壊ID
+     */
+    private String roleId = "";
+    /**
+     * 妯″潡ID
+     */
+    private String funcId = "";
+    /**
+     * 鏉冮檺鍊�
+     */
+    private long rightValue = -1;
+    /**
+     * 鏉冮檺绫诲瀷锛岃秴绾х鐞嗗憳缁欑鐞嗗憳鎺堟潈涓�1锛岀鐞嗗憳缁欐櫘閫氱敤鎴锋巿鏉冧负2
+     */
+    private short rightType = -1;
+
+    /**鏂板鏁版嵁鍒涘缓鑰咃紝淇敼鑰咃紝鍒涘缓鏃堕棿锛屼慨鏀规椂闂达紝鎺堟潈鑰�***/
+    private String createUser = "";
+    private Date createTime = new Date();
+    private String licensor = "";
+    private String modifyUser = "";
+    private Date modifyTime = new Date();
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getRoleId() {
+        return roleId;
+    }
+
+    public void setRoleId(String roleId) {
+        this.roleId = roleId;
+    }
+
+    public String getFuncId() {
+        return funcId;
+    }
+
+    public void setFuncId(String funcId) {
+        this.funcId = funcId;
+    }
+
+    public long getRightValue() {
+        return rightValue;
+    }
+
+    public void setRightValue(long rightValue) {
+        this.rightValue = rightValue;
+    }
+
+    public short getRightType() {
+        return rightType;
+    }
+
+    public void setRightType(short rightType) {
+        this.rightType = rightType;
+    }
+
+    public String getCreateUser() {
+        return createUser;
+    }
+
+    public void setCreateUser(String createUser) {
+        this.createUser = createUser;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getLicensor() {
+        return licensor;
+    }
+
+    public void setLicensor(String licensor) {
+        this.licensor = licensor;
+    }
+
+    public String getModifyUser() {
+        return modifyUser;
+    }
+
+    public void setModifyUser(String modifyUser) {
+        this.modifyUser = modifyUser;
+    }
+
+    public Date getModifyTime() {
+        return modifyTime;
+    }
+
+    public void setModifyTime(Date modifyTime) {
+        this.modifyTime = modifyTime;
+    }
+
+    @Override
+    public String toString() {
+        return "RoleRightDTO{" +
+                "id='" + id + '\'' +
+                ", roleId='" + roleId + '\'' +
+                ", funcId='" + funcId + '\'' +
+                ", rightValue=" + rightValue +
+                ", rightType=" + rightType +
+                ", createUser='" + createUser + '\'' +
+                ", createTime=" + createTime +
+                ", licensor='" + licensor + '\'' +
+                ", modifyUser='" + modifyUser + '\'' +
+                ", modifyTime=" + modifyTime +
+                '}';
+    }
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/RoleRightVO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/RoleRightVO.java
new file mode 100644
index 0000000..3c6ff70
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/RoleRightVO.java
@@ -0,0 +1,137 @@
+package com.vci.pagemodel;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class RoleRightVO implements Serializable {
+
+
+    private static final long serialVersionUID = 2030418807220108229L;
+    /**
+     * ID
+     */
+    private String id = "";
+    /**
+     *瑙掕壊ID
+     */
+    private String roleId = "";
+    /**
+     * 妯″潡ID
+     */
+    private String funcId = "";
+    /**
+     * 鏉冮檺鍊�
+     */
+    private long rightValue = -1;
+    /**
+     * 鏉冮檺绫诲瀷锛岃秴绾х鐞嗗憳缁欑鐞嗗憳鎺堟潈涓�1锛岀鐞嗗憳缁欐櫘閫氱敤鎴锋巿鏉冧负2
+     */
+    private short rightType = -1;
+    /**
+     * 鏉冮檺绫诲瀷
+     */
+    private String rigthTypeText="";
+
+    /**鏂板鏁版嵁鍒涘缓鑰咃紝淇敼鑰咃紝鍒涘缓鏃堕棿锛屼慨鏀规椂闂达紝鎺堟潈鑰�***/
+    private String createUser = "";
+    private String createTime = "";
+    private String licensor = "";
+    private String modifyUser = "";
+    private String modifyTime ="";
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getRoleId() {
+        return roleId;
+    }
+
+    public void setRoleId(String roleId) {
+        this.roleId = roleId;
+    }
+
+    public String getFuncId() {
+        return funcId;
+    }
+
+    public void setFuncId(String funcId) {
+        this.funcId = funcId;
+    }
+
+    public long getRightValue() {
+        return rightValue;
+    }
+
+    public void setRightValue(long rightValue) {
+        this.rightValue = rightValue;
+    }
+
+    public short getRightType() {
+        return rightType;
+    }
+
+    public void setRightType(short rightType) {
+        this.rightType = rightType;
+    }
+
+    public String getCreateUser() {
+        return createUser;
+    }
+
+    public void setCreateUser(String createUser) {
+        this.createUser = createUser;
+    }
+
+    public String getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(String createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getLicensor() {
+        return licensor;
+    }
+
+    public void setLicensor(String licensor) {
+        this.licensor = licensor;
+    }
+
+    public String getModifyUser() {
+        return modifyUser;
+    }
+
+    public void setModifyUser(String modifyUser) {
+        this.modifyUser = modifyUser;
+    }
+
+    public String getModifyTime() {
+        return modifyTime;
+    }
+
+    public void setModifyTime(String modifyTime) {
+        this.modifyTime = modifyTime;
+    }
+
+    @Override
+    public String toString() {
+        return "RoleRightVO{" +
+                "id='" + id + '\'' +
+                ", roleId='" + roleId + '\'' +
+                ", funcId='" + funcId + '\'' +
+                ", rightValue=" + rightValue +
+                ", rightType=" + rightType +
+                ", createUser='" + createUser + '\'' +
+                ", createTime=" + createTime +
+                ", licensor='" + licensor + '\'' +
+                ", modifyUser='" + modifyUser + '\'' +
+                ", modifyTime=" + modifyTime +
+                '}';
+    }
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/UIManagerController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/UIManagerController.java
index 5d143b7..ad4c627 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/UIManagerController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/UIManagerController.java
@@ -7,6 +7,7 @@
 import com.vci.starter.web.annotation.log.VciBusinessLog;
 import com.vci.starter.web.pagemodel.BaseQueryObject;
 import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.Tree;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.web.service.OsBtmServiceI;
 import com.vci.web.service.UIManagerServiceI;
@@ -16,6 +17,7 @@
 import org.springframework.web.bind.annotation.*;
 
 import java.util.Arrays;
+import java.util.List;
 
 /**
  * UI瀹氫箟鎺у埗灞�
@@ -149,6 +151,22 @@
         }
     }
 
-
+    /**
+     * 鏍规嵁瑙掕壊鑾峰彇UI/琛ㄥ崟/鎸夐挳鐨勬潈闄�.
+     * @param baseQueryObject
+     * @return
+     */
+    @GetMapping( "/getUIAuthor")
+    @VciBusinessLog(operateName = "UI鎺堟潈锛堟爲褰㈢粨鏋勶級")
+    public BaseResult getUIAuthor(BaseQueryObject baseQueryObject){
+        try {
+            return BaseResult.dataList( uiManagerService.getUIAuthor(baseQueryObject));
+        }catch (Throwable e) {
+            e.printStackTrace();
+            String exceptionMessage = "UI鎺堟潈鍔犺浇鍑虹幇閿欒锛屽師鍥狅細" + VciBaseUtil.getExceptionMessage(e);
+            logger.error(exceptionMessage);
+            return BaseResult.fail(exceptionMessage);
+        }
+    }
 
 }
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebPortalVIController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebPortalVIController.java
index c14d6ed..6471de0 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebPortalVIController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebPortalVIController.java
@@ -32,10 +32,11 @@
 import java.util.List;
 
 /**
- * 鍏紡鎺у埗鍣�
+ * 琛ㄥ崟/琛ㄦ牸鎺у埗鍣�
  * @author weidy
  * @date 2022-2-11
  */
+@VciBusinessLog(modelName="琛ㄥ崟/琛ㄦ牸鎺у埗鍣�",notStore=true)
 @RestController
 @RequestMapping("/portalVIController")
 public class WebPortalVIController {
@@ -95,7 +96,7 @@
 
     }
     /**
-     * 涓氬姟绫诲瀷鍒犻櫎
+     * 琛ㄥ崟/table鍒犻櫎
      * btmTypeDTO 涓氬姟绫诲瀷瀵硅薄
      * @return 鍒犻櫎缁撴灉
      */
@@ -112,7 +113,7 @@
         }
     }
     /**
-     * 涓氬姟绫诲瀷鍒犻櫎
+     * 琛ㄥ崟/table鍒犻櫎
      * btmTypeDTO 涓氬姟绫诲瀷瀵硅薄
      * @return 鍒犻櫎缁撴灉
      */
@@ -128,8 +129,11 @@
             return BaseResult.fail(exceptionMessage);
         }
     }
+
     /**
-     *
+     * 琛ㄥ崟/table鍏嬮殕
+     * @param portalVIDTOList clong瀵硅薄
+     * @return
      */
     @PostMapping("/clone")
     @VciBusinessLog(operateName = "鍏嬮殕琛ㄥ崟/琛ㄦ牸")
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java
index a554efb..0001abd 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java
@@ -3,11 +3,15 @@
 import com.vci.corba.common.PLException;
 import com.vci.corba.portal.data.PLUILayout;
 import com.vci.pagemodel.PLUILayoutCloneVO;
+import com.vci.starter.web.exception.VciBaseException;
 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.Tree;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
+import java.util.List;
 
 /**
  * @author ludc
@@ -59,4 +63,11 @@
      */
     void expUiContextData(String[] oids, HttpServletResponse response) throws PLException, IOException;
 
+    /**
+     * 鑾峰彇UI鏉冮檺鏍�
+     * @param baseQueryObject
+     * @return
+     * @throws VciBaseException
+     */
+     List<Tree> getUIAuthor(BaseQueryObject baseQueryObject)throws Exception;
 }
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java
index f6ed246..5db621e 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java
@@ -168,6 +168,9 @@
         }
         PortalVIVO portalVIVO=new PortalVIVO();
         PortalVI portalVI=  platformClientUtil.getPortalService().getPortalVIById(id);
+        if(portalVI==null||StringUtils.isBlank(portalVI.id)){
+            throw new VciBaseException("鏍规嵁涓婚敭鏈煡璇㈠埌鏁版嵁");
+        }
         portalVIVO=portalVIDOO2VO(portalVI);
         return portalVIVO;
     }
@@ -640,7 +643,7 @@
         boolean flag = false;
         String labelName=PortalVIType.Form.getName();
         try {
-            VciBaseUtil.alertNotNull(portalVIDTO.getViName(),"鍚嶇О涓嶈兘涓虹┖锛�");
+            VciBaseUtil.alertNotNull(portalVIDTO.getViName(),"鍚嶇О");
             if(portalVIDTO.getPrm()==null||portalVIDTO.getPrm().getPrmItemList()==null||portalVIDTO.getPrm().getPrmItemList().size()==0){
                 throw  new Throwable(labelName+"锛屾湭璁剧疆");
             }
@@ -1258,7 +1261,6 @@
     private List<String> getRefFormVIName(String refFormOid){
         List<String> keyList=new ArrayList<>();
         try {
-
             PortalVI refFormVI = UITools.getService().getPortalVIById(refFormOid);
             PortalVIVO portalVIVO= portalVIDOO2VO(refFormVI);
             if(portalVIVO!=null&&portalVIVO.getPrm().getPrmItemList().size()>0){
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 9a1b63a..98d2f58 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
@@ -4,19 +4,27 @@
 import com.vci.client.mw.ClientContextVariable;
 import com.vci.common.utility.ObjectUtility;
 import com.vci.corba.common.PLException;
+import com.vci.corba.framework.data.RoleRightInfo;
+import com.vci.corba.omd.btm.BizType;
 import com.vci.corba.portal.PortalService;
 import com.vci.corba.portal.data.*;
+import com.vci.frameworkcore.compatibility.SmRoleQueryServiceI;
+import com.vci.pagemodel.OsBtmTypeVO;
 import com.vci.pagemodel.PLUILayoutCloneVO;
+import com.vci.pagemodel.RoleRightVO;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.BaseQueryObject;
 import com.vci.starter.web.pagemodel.DataGrid;
 import com.vci.starter.web.pagemodel.SessionInfo;
+import com.vci.starter.web.pagemodel.Tree;
 import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.util.VciDateUtil;
 import com.vci.starter.web.util.WebThreadLocalUtil;
+import com.vci.web.service.OsBtmServiceI;
 import com.vci.web.service.UIManagerServiceI;
-import com.vci.web.util.Func;
-import com.vci.web.util.PlatformClientUtil;
-import com.vci.web.util.UITools;
+import com.vci.web.util.*;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.ss.formula.functions.T;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
@@ -24,10 +32,9 @@
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * UI瀹氫箟鏈嶅姟鐣岄潰鐩稿叧鎺ュ彛
@@ -42,6 +49,18 @@
      */
     @Resource
     private PlatformClientUtil platformClientUtil;
+    /**
+     * 瑙掕壊
+     */
+    @Resource
+    private SmRoleQueryServiceI smRoleQueryServiceI;
+
+    /**
+     * 涓氬姟绫诲瀷
+     */
+    @Resource
+    private OsBtmServiceI osBtmServiceI;
+
     /**
      * 鏃ュ織
      */
@@ -87,6 +106,22 @@
         List<PLUILayout> pluiLayouts = Arrays.asList(res);
         dataGrid.setData(pluiLayouts);
         return dataGrid;
+    }
+
+    /**
+     * ton閫氳繃涓氬姟绫诲瀷鍜屽悕绉版煡璇�
+     * @param btemName
+     * @param code
+     * @return
+     * @throws PLException
+     */
+    public List<PLUILayout> getUIContextDataByBtName(String btemName,String code) throws PLException {
+        List<PLUILayout> pluiLayoutList=new ArrayList<>();
+        PLUILayout[]  pluiLayouts=   platformClientUtil.getUIService().getPLUILayoutEntityByTypeAndCode(btemName,code);
+        if(pluiLayouts!=null&&pluiLayouts.length>0){
+            pluiLayoutList= Stream.of(pluiLayouts).collect(Collectors.toList());
+        }
+        return pluiLayoutList;
     }
 
     /**
@@ -247,6 +282,193 @@
     }
 
     /**
+     * 鑾峰彇UI鎺堟潈鏍�
+     * @param treeQueryObject
+     * @return
+     * @throws Exception
+     */
+    @Override
+    public List<Tree> getUIAuthor(BaseQueryObject treeQueryObject) throws Exception {
+
+        Map<String, String> conditionMap = treeQueryObject.getConditionMap();
+        if (conditionMap == null) {
+            conditionMap = new HashMap<>();
+        }
+        String roleId = StringUtils.isBlank(conditionMap.get("roleId")) ? "" : conditionMap.get("roleId");
+        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<>();
+        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));
+        }
+        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<>();
+        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);
+            childList.add(bizTypeTree);
+            List<PLUILayout>contextList=getUIContextDataByBtName(bizTypes[i].name,context);
+            List<Tree> btmChildList=new ArrayList<>();
+            btmChildList.add(bizTypeTree);
+            setChildNode(btmChildList,contextList,roleRightVOMap,showCheckBox);
+        }
+        rootNode.setChildren(childList);
+        treeList.add(rootNode);
+        return treeList;
+    }
+
+    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<>();
+            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);
+                        childTree.setParentName(pTree.getText());
+                        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;
+                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 -> {
+                        Tree childTree=new Tree(plTabPage.plOId,plTabPage.plName,plTabPage);
+                        childTree.setParentName(pTree.getText());
+                        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 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.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) {//
+                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.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();
+                }
+
+            }else if (funcObj instanceof PLTabButton) {//鎸夐挳
+                String id = ((PLTabButton) funcObj).plTableOId;
+                if(roleRightVOMap.containsKey(id)){
+                    pTree.setChecked(true);
+                }else{
+                    pTree.setChecked(false);
+                }
+            }
+        });
+    }
+    /**
+     * UI瑙掕壊瀵硅薄杞崲
+     * @param infos
+     * @return
+     */
+    private List<RoleRightVO> roleRightDOO2VOS(List<RoleRightInfo> infos){
+        List<RoleRightVO> roleRightVOS=new ArrayList<>();
+        Optional.ofNullable(infos).orElseGet(()->new ArrayList<>()).stream().forEach(info -> {
+            RoleRightVO vo=roleRightDOO2VO(info);
+            roleRightVOS.add(vo);
+        });
+
+        return roleRightVOS;
+    }
+
+    /**
+     * UI瑙掕壊瀵硅薄杞崲
+     * @param info
+     * @return
+     */
+    private RoleRightVO roleRightDOO2VO(RoleRightInfo info){
+        RoleRightVO vo=new RoleRightVO();
+        vo.setId(info.id);
+        vo.setCreateTime(VciDateUtil.date2Str(VciDateUtil.long2Date(info.createTime),""));
+        vo.setCreateUser(info.createUser);
+        vo.setRoleId(info.roleId);
+        vo.setRightType(info.rightType);
+        vo.setLicensor(info.licensor);
+        vo.setRightValue(info.rightValue);
+        vo.setFuncId(info.funcId);
+        vo.setModifyTime(VciDateUtil.date2Str(VciDateUtil.long2Date(info.modifyTime),""));
+        vo.setModifyUser(info.modifyUser);
+        return vo;
+    }
+
+    /**
      * 鎺у埗鍖鸿妭鐐瑰強鍏跺瓙鑺傜偣鐨勫厠闅�
      * @param obj
      */

--
Gitblit v1.9.3