From 1615c6851b507867f9090f8cafcb1a32d1dad6bc Mon Sep 17 00:00:00 2001
From: xiejun <xiejun@vci-tech.com>
Date: 星期五, 06 九月 2024 12:09:57 +0800
Subject: [PATCH] 表单表格功能添加

---
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/model/PRMItemDO.java                    |   15 +
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/RoleRightDTO.java                   |  123 +++++++++++++
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/UIManagerController.java     |   18 ++
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/model/RoleRightDO.java                  |    6 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java          |   10 +
 Source/plt-web/plt-web-parent/plt-web/src/main/resources/application-dev.yml                            |    4 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PRMItemVO.java                |   14 +
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java |   32 +++
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/tt.xml                     |   58 ++++++
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PRMItemDTO.java                     |   14 +
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/UIAuthorDTO.java                    |   73 ++++++++
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java  |  133 +++++++++++++-
 12 files changed, 478 insertions(+), 22 deletions(-)

diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PRMItemDTO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PRMItemDTO.java
index 73670f7..11387e0 100644
--- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PRMItemDTO.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PRMItemDTO.java
@@ -141,6 +141,11 @@
      * 鏋氫妇鍊�
      */
     private List<String> itemValueList = null;
+    /***
+     * 鏋氫妇鍊奸泦鍚�
+     */
+    private List<KeyValue> itemKeyValueList=new ArrayList<>();
+
     /**
      *涓�绾у弬鐓�
      */
@@ -695,6 +700,14 @@
 //    }
 
 
+    public List<KeyValue> getItemKeyValueList() {
+        return itemKeyValueList;
+    }
+
+    public void setItemKeyValueList(List<KeyValue> itemKeyValueList) {
+        this.itemKeyValueList = itemKeyValueList;
+    }
+
     @Override
     public String toString() {
         return "PRMItemDTO{" +
@@ -729,6 +742,7 @@
                 ", itemScript='" + itemScript + '\'' +
                 ", itemTips='" + itemTips + '\'' +
                 ", itemValueList=" + itemValueList +
+                ", itemKeyValueList=" + itemKeyValueList +
                 ", itemListTable='" + itemListTable + '\'' +
                 ", itemListTxt='" + itemListTxt + '\'' +
                 ", itemListVal='" + itemListVal + '\'' +
diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/RoleRightDTO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/RoleRightDTO.java
new file mode 100644
index 0000000..4e3b571
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/RoleRightDTO.java
@@ -0,0 +1,123 @@
+package com.vci.dto;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * UI鏉冮檺
+ * @author xiej
+ * @date 2024-09-05
+ */
+public class RoleRightDTO implements Serializable {
+
+
+    private static final long serialVersionUID = 2956142041726150499L;
+
+    /**
+     * 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;
+    }
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/UIAuthorDTO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/UIAuthorDTO.java
new file mode 100644
index 0000000..6dfa82d
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/UIAuthorDTO.java
@@ -0,0 +1,73 @@
+package com.vci.dto;
+
+import com.vci.starter.web.pagemodel.Tree;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+/**
+ * 鎺堟潈瀵硅薄
+ * @author xiej
+ * @date 2024-09-05
+ */
+public class UIAuthorDTO implements Serializable {
+    private static final long serialVersionUID = -1996329568646378902L;
+    /**
+     *瑙掕壊ID
+     */
+    private String roleId;
+    /**
+     *涓氬姟绫诲瀷
+     */
+    private String type;
+    /**
+     *涓婁笅鏂�
+     */
+    private String context;
+    /**
+     * 鎺堟潈鐨勮妭鐐�
+     */
+    List<Tree> selectTreeList;
+
+    public String getRoleId() {
+        return roleId;
+    }
+
+    public void setRoleId(String roleId) {
+        this.roleId = roleId;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getContext() {
+        return context;
+    }
+
+    public void setContext(String context) {
+        this.context = context;
+    }
+
+    public List<Tree> getSelectTreeList() {
+        return selectTreeList;
+    }
+
+    public void setSelectTreeList(List<Tree> selectTreeList) {
+        this.selectTreeList = selectTreeList;
+    }
+
+    @Override
+    public String toString() {
+        return "UIAuthorDTO{" +
+                "roleId='" + roleId + '\'' +
+                ", type='" + type + '\'' +
+                ", context='" + context + '\'' +
+                ", selectTreeList=" + selectTreeList +
+                '}';
+    }
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/model/PRMItemDO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/model/PRMItemDO.java
index c758bb8..24ffb05 100644
--- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/model/PRMItemDO.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/model/PRMItemDO.java
@@ -127,7 +127,10 @@
      * 鏋氫妇鍊�
      */
     private List<String> itemValueList = null;
-
+    /***
+     * 鏋氫妇鍊奸泦鍚�
+     */
+    private List<KeyValue> itemKeyValueList=new ArrayList<>();
     /**
      *涓�绾у弬鐓�
      */
@@ -664,6 +667,15 @@
     public void setItemDateFormat(String itemDateFormat) {
         this.itemDateFormat = itemDateFormat;
     }
+
+    public List<KeyValue> getItemKeyValueList() {
+        return itemKeyValueList;
+    }
+
+    public void setItemKeyValueList(List<KeyValue> itemKeyValueList) {
+        this.itemKeyValueList = itemKeyValueList;
+    }
+
     @Override
     public String toString() {
         return "PRMItemDO{" +
@@ -693,6 +705,7 @@
                 ", itemScript='" + itemScript + '\'' +
                 ", itemTips='" + itemTips + '\'' +
                 ", itemValueList=" + itemValueList +
+                ", itemKeyValueList=" + itemKeyValueList +
                 ", itemListTable='" + itemListTable + '\'' +
                 ", itemListTxt='" + itemListTxt + '\'' +
                 ", itemListVal='" + itemListVal + '\'' +
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
index 6c1fb38..a2af5d9 100644
--- 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
@@ -8,9 +8,9 @@
 import java.util.Date;
 
 /**
- * 鐘舵�佹睜
- * @author weidy
- * @date 2022-2-15
+ * UI鏉冮檺
+ * @author xiej
+ * @date 2024-09-05
  */
 @VciBtmType(name = "UIAuthor",text = "UI鏉冮檺",tableName = "PLROLERIGHT",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
 @Transient
diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PRMItemVO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PRMItemVO.java
index 667ea91..8632263 100644
--- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PRMItemVO.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PRMItemVO.java
@@ -144,7 +144,10 @@
      * 鏋氫妇鍊�
      */
     private List<String> itemValueList = null;
-
+    /***
+     * 鏋氫妇鍊奸泦鍚�
+     */
+    private List<KeyValue> itemKeyValueList=new ArrayList<>();
 
     /**
      *涓�绾у弬鐓�
@@ -633,6 +636,14 @@
         this.itemSearchFieldList = itemSearchFieldList;
     }
 
+    public List<KeyValue> getItemKeyValueList() {
+        return itemKeyValueList;
+    }
+
+    public void setItemKeyValueList(List<KeyValue> itemKeyValueList) {
+        this.itemKeyValueList = itemKeyValueList;
+    }
+
     @Override
     public String toString() {
         return "PRMItemVO{" +
@@ -667,6 +678,7 @@
                 ", itemScript='" + itemScript + '\'' +
                 ", itemTips='" + itemTips + '\'' +
                 ", itemValueList=" + itemValueList +
+                ", itemKeyValueList=" + itemKeyValueList +
                 ", itemListTable='" + itemListTable + '\'' +
                 ", itemListTxt='" + itemListTxt + '\'' +
                 ", itemListVal='" + itemListVal + '\'' +
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 ad4c627..c4f3896 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
@@ -3,6 +3,8 @@
 import com.vci.corba.common.PLException;
 import com.vci.corba.portal.data.PLUILayout;
 import com.vci.dto.OsBtmTypeDTO;
+import com.vci.dto.RoleRightDTO;
+import com.vci.dto.UIAuthorDTO;
 import com.vci.pagemodel.PLUILayoutCloneVO;
 import com.vci.starter.web.annotation.log.VciBusinessLog;
 import com.vci.starter.web.pagemodel.BaseQueryObject;
@@ -169,4 +171,20 @@
         }
     }
 
+    /***
+     * @param selectTreeList 鍕鹃�夌殑闇�瑕佷繚瀛樼殑鏁版嵁瀵硅薄
+     * @return
+     */
+    @PostMapping( "/authorizedUI")
+    @VciBusinessLog(operateName = "UI鎺堟潈")
+    public BaseResult authorizedUI(UIAuthorDTO uiAuthorDTO){
+        try {
+            return uiManagerService.authorizedUI(uiAuthorDTO)?BaseResult.success("鎺堟潈鎴愬姛!"):BaseResult.fail("鎺堟潈澶辫触锛�");
+        }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/service/UIManagerServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java
index 0001abd..f81e881 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
@@ -2,6 +2,8 @@
 
 import com.vci.corba.common.PLException;
 import com.vci.corba.portal.data.PLUILayout;
+import com.vci.dto.RoleRightDTO;
+import com.vci.dto.UIAuthorDTO;
 import com.vci.pagemodel.PLUILayoutCloneVO;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.BaseQueryObject;
@@ -70,4 +72,12 @@
      * @throws VciBaseException
      */
      List<Tree> getUIAuthor(BaseQueryObject baseQueryObject)throws Exception;
+
+    /***
+     * UI鎺堟潈
+     * @param uiAuthorDTO
+     * @return
+     * @throws Exception
+     */
+    public boolean authorizedUI(UIAuthorDTO uiAuthorDTO)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 5db621e..36e1356 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
@@ -988,6 +988,15 @@
         prmItemDO.setItemHttpPathField(prmItemDTO.getItemHttpPathField());
         if(viType==PortalVIType.Table.getIntVal()) {//濡傛灉鏄〃鏍�
             initTableConfigDTOO2DOData(prmItemDO,prmItemDTO);
+        }else{
+            List<String> itemValueList=new ArrayList<>();
+            List<KeyValue> keyValueList=prmItemDTO.getItemKeyValueList();
+            Optional.ofNullable(keyValueList).orElseGet(()->new ArrayList<>()).stream().forEach(keyValue -> {
+              String value=  keyValue.getValue()+"{"+keyValue.getKey()+"}";
+                itemValueList.add(value);
+            });
+            prmItemDO.setItemValueList(itemValueList);
+
         }
         return prmItemDO;
     }
@@ -1052,8 +1061,20 @@
         prmItemVO.setItemIsHttpSave(prmItemDO.getItemIsHttpSave());
         prmItemVO.setItemHttpVolumnPath(prmItemDO.getItemHttpVolumnPath());
         prmItemVO.setItemHttpPathField(prmItemDO.getItemHttpPathField());
+
         if(viType==PortalVIType.Table.getIntVal()) {//濡傛灉鏄〃鏍�
             initTableConfigDOO2VOData(prmItemVO,prmItemDO);
+        }else{
+          List<String> enumList=  prmItemDO.getItemValueList();
+          List<KeyValue>itemKeyValueList=new ArrayList<>();
+            Optional.ofNullable(enumList).orElseGet(()->new ArrayList<>()).stream().forEach(enumValue->{
+             List<String> keyValueList=  VciBaseUtil.str2List(VciBaseUtil.removeComma(enumValue,"}"),"\\{");
+                KeyValue keyValue=new KeyValue();
+                keyValue.setKey(keyValueList.get(1));
+                keyValue.setValue(keyValueList.get(0));
+                itemKeyValueList.add(keyValue);
+            });
+            prmItemVO.setItemKeyValueList(itemKeyValueList);
         }
         return prmItemVO;
     }
@@ -1120,6 +1141,17 @@
         prmItemDTO.setItemHttpPathField(prmItemDO.getItemHttpPathField());
         if(viType==PortalVIType.Table.getIntVal()) {//濡傛灉鏄〃鏍�
             initTableConfigDOO2VOData(prmItemDTO,prmItemDO);
+        }else{
+            List<String> enumList=  prmItemDO.getItemValueList();
+            List<KeyValue>itemKeyValueList=new ArrayList<>();
+            Optional.ofNullable(enumList).orElseGet(()->new ArrayList<>()).stream().forEach(enumValue->{
+                List<String> keyValueList=  VciBaseUtil.str2List(VciBaseUtil.removeComma(enumValue,"}"),"\\{");
+                KeyValue keyValue=new KeyValue();
+                keyValue.setKey(keyValueList.get(1));
+                keyValue.setValue(keyValueList.get(0));
+                itemKeyValueList.add(keyValue);
+            });
+            prmItemDTO.setItemKeyValueList(itemKeyValueList);
         }
         return prmItemDTO;
     }
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 98d2f58..4dc9c1c 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
@@ -8,15 +8,14 @@
 import com.vci.corba.omd.btm.BizType;
 import com.vci.corba.portal.PortalService;
 import com.vci.corba.portal.data.*;
+import com.vci.dto.RoleRightDTO;
+import com.vci.dto.UIAuthorDTO;
 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.pagemodel.*;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.starter.web.util.VciDateUtil;
 import com.vci.starter.web.util.WebThreadLocalUtil;
@@ -111,16 +110,31 @@
     /**
      * ton閫氳繃涓氬姟绫诲瀷鍜屽悕绉版煡璇�
      * @param btemName
-     * @param code
+     * @param context
      * @return
      * @throws PLException
      */
-    public List<PLUILayout> getUIContextDataByBtName(String btemName,String code) throws PLException {
+    public List<PLUILayout> getUIContextDataByBtName(String btemName,String context) throws PLException {
+        VciBaseUtil.alertNotNull(btemName,"涓氬姟绫诲瀷");
         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());
+        List<String> contextList= VciBaseUtil.str2List(context);
+        if(StringUtils.isNotBlank(context)){
+            contextList=VciBaseUtil.str2List(context);
+        }else{
+            contextList.add("");
         }
+        contextList.stream().forEach(code->{
+            PLUILayout[]  pluiLayouts= new PLUILayout[0];
+            try {
+                pluiLayouts = platformClientUtil.getUIService().getPLUILayoutEntityByTypeAndCode(btemName,code);
+            } catch (PLException e) {
+                e.printStackTrace();
+            }
+            if(pluiLayouts!=null&&pluiLayouts.length>0) {
+                pluiLayoutList.addAll(Arrays.stream(pluiLayouts).collect(Collectors.toList()));
+            }
+        });
+
         return pluiLayoutList;
     }
 
@@ -319,17 +333,93 @@
             bizTypeTree.setParentId(rootNode.getOid());
             bizTypeTree.setParentName(rootNode.getText());
             bizTypeTree.setShowCheckbox(true);
+            bizTypeTree.setParentBtmName(bizTypes[i].name);
             childList.add(bizTypeTree);
-            List<PLUILayout>contextList=getUIContextDataByBtName(bizTypes[i].name,context);
-            List<Tree> btmChildList=new ArrayList<>();
-            btmChildList.add(bizTypeTree);
-            setChildNode(btmChildList,contextList,roleRightVOMap,showCheckBox);
+            if(roleRightVOMap.containsKey(bizTypes[i].oid)){
+                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;
     }
 
+    @Override
+    public boolean authorizedUI(UIAuthorDTO uiAuthorDTO) throws Exception {
+        boolean res=false;
+        if(uiAuthorDTO==null||CollectionUtil.isEmpty(uiAuthorDTO.getSelectTreeList())){
+            throw  new VciBaseException("璇烽�夋嫨鑺傜偣杩涜鎺堟潈!");
+        }
+        BaseQueryObject treeQueryObject=new BaseQueryObject();
+        Map<String,String> conditionMap = new HashMap<>();
+        conditionMap.put("roleId",uiAuthorDTO.getRoleId());
+        conditionMap.put("type",uiAuthorDTO.getType());
+        conditionMap.put("context",uiAuthorDTO.getContext());
+        conditionMap.put("showCheckBox","true");
+        treeQueryObject.setConditionMap(conditionMap);
+        List<Tree> treeList=this.getUIAuthor(treeQueryObject);
+        HashMap<String,Tree> allTreeMap=new HashMap<>();
+        if(!CollectionUtil.isEmpty(treeList)){
+            convertTreeDOO2Map(treeList,allTreeMap);
+            List<RoleRightDTO> roleRightDTOList=new ArrayList<>();
+            List<Tree>  selectTreeList= uiAuthorDTO.getSelectTreeList();
+            getRoleRightDTOS(uiAuthorDTO.getRoleId(),selectTreeList,allTreeMap,roleRightDTOList);
+        }
+        return res;
+    }
+
+    private void getRoleRightDTOS(String roleOid,List<Tree>  selectTreeList,HashMap<String,Tree> allTreeMap,  List<RoleRightDTO> roleRightDTOList){
+        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) {//
+
+
+            }else if (data instanceof PLTabButton) {//鎸夐挳
+
+            }
+        });
+
+
+
+    }
+
+    /**
+     *
+     * @param treeList 鏍戣妭鐐�
+     * @param allTreeMap锛屾墍鏈夌殑鑺傜偣
+     */
+    private void convertTreeDOO2Map(List<Tree> treeList,Map<String,Tree> allTreeMap){
+        Optional.ofNullable(treeList).orElseGet(()->new ArrayList<Tree>()).stream().forEach(tree -> {
+            List<Tree> childTreeList= tree.getChildren();
+            allTreeMap.put(tree.getOid(),tree);
+            if(!CollectionUtil.isEmpty(childTreeList)){
+                convertTreeDOO2Map(childTreeList,allTreeMap);
+            }
+        });
+    }
     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();
@@ -340,6 +430,7 @@
                     contextList.stream().forEach(context->{
                         Tree childTree=new Tree(context.plOId,context.plName+"("+context.plCode+")",context);
                         childTree.setParentName(pTree.getText());
+                        childTree.setParentBtmName(pTree.getParentBtmName());
                         childTree.setParentId(pTree.getOid());
                         childTree.setLevel(pTree.getLevel()+1);
                         childTree.setShowCheckbox(isShowCheckBox);
@@ -364,6 +455,7 @@
                         Tree childTree=new Tree(plTabPage.plOId,plTabPage.plName,plTabPage);
                         childTree.setParentName(pTree.getText());
                         childTree.setParentId(pTree.getOid());
+                        childTree.setParentBtmName(pTree.getParentBtmName());
                         childTree.setLevel(pTree.getLevel()+1);
                         childTree.setShowCheckbox(isShowCheckBox);
                         chiledTreeList.add(childTree);
@@ -385,6 +477,7 @@
                             Tree childTree=new Tree(plPageDefination.plOId,plPageDefination.name,plPageDefination);
                             childTree.setParentName(pTree.getText());
                             childTree.setParentId(pTree.getOid());
+                            childTree.setParentBtmName(pTree.getParentBtmName());
                             childTree.setLevel(pTree.getLevel()+1);
                             childTree.setShowCheckbox(isShowCheckBox);
                             chiledTreeList.add(childTree);
@@ -409,6 +502,7 @@
                             Tree childTree=new Tree(plTabButton.plOId,plTabButton.plLabel,plTabButton);
                             childTree.setParentName(pTree.getText());
                             childTree.setParentId(pTree.getOid());
+                            childTree.setParentBtmName(pTree.getParentBtmName());
                             childTree.setLevel(pTree.getLevel()+1);
                             childTree.setShowCheckbox(isShowCheckBox);
                             childTree.setLeaf(true);
@@ -424,9 +518,18 @@
                 }
 
             }else if (funcObj instanceof PLTabButton) {//鎸夐挳
-                String id = ((PLTabButton) funcObj).plTableOId;
+                PLTabButton plTabButton= (PLTabButton) funcObj;
+                String id =plTabButton.plTableOId;
                 if(roleRightVOMap.containsKey(id)){
-                    pTree.setChecked(true);
+                    RoleRightVO roleRightVO = roleRightVOMap.get(id);
+                    Long rightValue =  roleRightVO.getRightValue();
+                    int nodeValue = plTabButton.plSeq;
+                    if (nodeValue >= 0 && nodeValue <= 63) {
+                        long preValue = (rightValue >> nodeValue) & 1;
+                        if (preValue == 1) {
+                            pTree.setChecked(true);
+                        }
+                    }
                 }else{
                     pTree.setChecked(false);
                 }
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/tt.xml b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/tt.xml
new file mode 100644
index 0000000..77520d7
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/tt.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<JD_DATASET>
+    <JD_SHOWCOLS>3</JD_SHOWCOLS>
+    <JD_FORMQTNAME></JD_FORMQTNAME>
+    <JD_ITEM>
+        <JD_field></JD_field>
+        <JD_or></JD_or>
+        <JD_eq></JD_eq>
+        <JD_trim></JD_trim>
+        <JD_dbl>0</JD_dbl>
+        <JD_cut></JD_cut>
+        <JD_inObj>assignedpartform</JD_inObj>
+        <JD_addFilter>test闄勫姞鏌ヨ鏉′欢</JD_addFilter>
+        <JD_outType></JD_outType>
+        <JD_pageSize>10</JD_pageSize>
+        <JD_imgWH>60,</JD_imgWH>
+        <JD_outFields>workcontextoid.productnumber,isexpire,partoid.name</JD_outFields>
+        <JD_keyFields></JD_keyFields>
+        <JD_bat></JD_bat>
+        <JD_txf></JD_txf>
+        <JD_name></JD_name>
+        <JD_type></JD_type>
+        <JD_value></JD_value>
+        <JD_showExpression></JD_showExpression>
+        <JD_dateFormat></JD_dateFormat>
+        <JD_cols></JD_cols>
+        <JD_rows></JD_rows>
+        <JD_style></JD_style>
+        <JD_script></JD_script>
+        <JD_tips></JD_tips>
+        <JD_valuelist></JD_valuelist>
+        <JD_listTable></JD_listTable>
+        <JD_listTxt></JD_listTxt>
+        <JD_listVal></JD_listVal>
+        <JD_isEditable></JD_isEditable>
+        <JD_EditableProgram></JD_EditableProgram>
+        <JD_qtName></JD_qtName>
+        <JD_isRequired></JD_isRequired>
+        <JD_seniorQueryCols></JD_seniorQueryCols>
+        <JD_seniorQueryColsCounts></JD_seniorQueryColsCounts>
+        <JD_hrefFields></JD_hrefFields>
+        <JD_hrefConf></JD_hrefConf>
+        <JD_queryRefFields></JD_queryRefFields>
+        <JD_customClass></JD_customClass>
+        <JD_ctrlDisplyCol></JD_ctrlDisplyCol>
+        <JD_ctrlDisplyCondition></JD_ctrlDisplyCondition>
+        <JD_isHttpSave></JD_isHttpSave>
+        <JD_httpVolumnPath></JD_httpVolumnPath>
+        <JD_httpPathField></JD_httpPathField>
+        <JD_editCondition></JD_editCondition>
+        <JD_isNavigatorExpand>true</JD_isNavigatorExpand>
+        <JD_isShowFolder>true</JD_isShowFolder>
+        <JD_parentFolderName>father</JD_parentFolderName>
+        <JD_filterColWidth>250</JD_filterColWidth>
+        <JD_QuerySql></JD_QuerySql>
+        <JD_right></JD_right>
+    </JD_ITEM>
+</JD_DATASET>
\ No newline at end of file
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/resources/application-dev.yml b/Source/plt-web/plt-web-parent/plt-web/src/main/resources/application-dev.yml
index 0ac1964..c541904 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/resources/application-dev.yml
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/resources/application-dev.yml
@@ -6,7 +6,7 @@
   private-token-key: vciweb20210212
 ###tomcat鐩稿叧鐨勯厤缃�
 server:
-  port: 12000
+  port: 12005
   servlet:
     context-path: /web
   tomcat:
@@ -42,7 +42,7 @@
     host: localhost  # ip鍦板潃
     database: 2  # redis鏁版嵁搴�  0-15
     port: 6379  # 绔彛鍙�
-    password: 123456 # 鏃犲瘑鐮佷笉濉�
+    password: foobared # 鏃犲瘑鐮佷笉濉�
     timeout: 30000s   # 杩炴帴瓒呮椂鏃堕棿 锛堥粯璁�1澶╋級
     lettuce:
       shutdown-timeout: 100ms # 鍏抽棴瓒呮椂鏃堕棿 榛樿 100ms

--
Gitblit v1.9.3