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/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java |  133 +++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 118 insertions(+), 15 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 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);
                 }

--
Gitblit v1.9.3