From 435e3366a85f797ce02008698c28c9a8ca73b4a6 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期二, 08 十月 2024 10:10:24 +0800
Subject: [PATCH] UI定义复制粘贴树查询接口,按钮复制粘贴接口

---
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java |    1 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/UIManagerController.java                                  |   52 +++++-
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UICloneVO.java                                             |   40 +++++
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java                                       |   48 +++++
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLDefinationVO.java                                        |   20 --
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java                               |  303 +++++++++++++++++++++++++++++++++++--
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsAttributeServiceImpl.java                             |    3 
 7 files changed, 412 insertions(+), 55 deletions(-)

diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLDefinationVO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLDefinationVO.java
index b364cdc..f20c2b4 100644
--- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLDefinationVO.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLDefinationVO.java
@@ -107,21 +107,6 @@
     private String linkType = "";
 
     /**
-     * 鏍硅妭鐐规樉绀鸿〃杈惧紡
-     */
-    private String showExpressionRoot = "";
-
-    /**
-     * 鏍戣妭鐐规樉绀鸿〃杈惧紡
-     */
-    private String showExpression = "";
-
-    /**
-     * 鍙傜収鏍戣缃�
-     */
-    private String refTreeSet = "";
-
-    /**
      * 鏄惁鏄剧ず鍥炬爣
      */
     private String isShowImage = "";
@@ -202,11 +187,6 @@
      * 鍏宠仈瀛怳I
      */
     private String subUILayout = "";
-
-    /**
-     * UI瀹氫箟
-     */
-    private String uiLayout;
 
     /**
      * 缂栧彿
diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UICloneVO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UICloneVO.java
new file mode 100644
index 0000000..cd3d952
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UICloneVO.java
@@ -0,0 +1,40 @@
+package com.vci.pagemodel;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * UI瀹氫箟涓敤鍒扮殑鍏嬮殕瀵硅薄
+ * @author ludc
+ * @date 2024/9/30 12:16
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class UICloneVO {
+
+    /**
+     * 婧愬璞′富閿�
+     */
+    private String sourceOId;
+
+    /**
+     * 鐩爣涓婚敭
+     */
+    private String toOId;
+
+    /**
+     * 鍏嬮殕瀵硅薄鍚嶇О
+     */
+    private String cloneObjName;
+
+    /**
+     * 鍏朵粬鍏嬮殕鍙傛暟
+     */
+    private Map<String,String> cloneParam = new HashMap<>();
+
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java
index 1fcb587..b60237c 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java
@@ -685,6 +685,7 @@
         }
         return BaseResult.success();
     }
+
     /**
      * 鑾峰彇鎵�鎺堟潈鐨勬ā鍧楁潈闄�
      * @param roleName 鎼滅储鐨勮鑹�
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 547d42d..f3707d7 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
@@ -397,7 +397,6 @@
         }
     }
 
-
     /**
      * 涓氬姟绫诲瀷涓嬫媺鏌ヨ
      * @param baseQueryObject selectBtmType 閫夋嫨鐨勬簮瀵硅薄,甯﹀垎椤典俊鎭�
@@ -412,6 +411,25 @@
         }catch (Throwable e) {
             e.printStackTrace();
             String exceptionMessage = "涓氬姟绫诲瀷涓嬫媺鏌ヨ鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + VciBaseUtil.getExceptionMessage(e);
+            logger.error(exceptionMessage);
+            return BaseResult.fail(exceptionMessage);
+        }
+    }
+
+    /**
+     * 閾炬帴绫诲瀷涓嬫媺鏌ヨ
+     * @param baseQueryObject selectBtmType 閫夋嫨鐨勬簮瀵硅薄,甯﹀垎椤典俊鎭�
+     * @return
+     * @throws PLException
+     */
+    @GetMapping( "/getLinkDatasByPage")
+    @VciBusinessLog(operateName = "閾炬帴绫诲瀷涓嬫媺鏌ヨ")
+    public BaseResult getLinkDatasByPage(BaseQueryObject baseQueryObject){
+        try {
+            return BaseResult.dataGrid(uiManagerService.getLinkDatasByPage(baseQueryObject));
+        }catch (Throwable e) {
+            e.printStackTrace();
+            String exceptionMessage = "閾炬帴绫诲瀷涓嬫媺鏌ヨ鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + VciBaseUtil.getExceptionMessage(e);
             logger.error(exceptionMessage);
             return BaseResult.fail(exceptionMessage);
         }
@@ -500,9 +518,9 @@
      * @return 淇濆瓨缁撴灉
      */
     @PostMapping("/addTapButton")
-    public BaseResult addTapButton(@RequestBody PLTabButtonVO tabButtonVO){
+    public BaseResult addTabButton(@RequestBody PLTabButtonVO tabButtonVO){
         try {
-            return uiManagerService.addTapButton(tabButtonVO);
+            return uiManagerService.addTabButton(tabButtonVO);
         } catch (Throwable e) {
             e.printStackTrace();
             String exceptionMessage = "鎸夐挳閰嶇疆淇℃伅娣诲姞鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + VciBaseUtil.getExceptionMessage(e);
@@ -516,10 +534,10 @@
      * @param  tabButtonVO
      * @return 淇敼缁撴灉
      */
-    @PutMapping("/updateTapButton")
-    public BaseResult updateTapButton(@RequestBody PLTabButtonVO tabButtonVO){
+    @PutMapping("/updateTapbutton")
+    public BaseResult updateTabButton(@RequestBody PLTabButtonVO tabButtonVO){
         try {
-            return uiManagerService.updateTapButton(tabButtonVO);
+            return uiManagerService.updateTabButton(tabButtonVO);
         } catch (Throwable e) {
             e.printStackTrace();
             String exceptionMessage = "淇敼鎸夐挳閰嶇疆淇℃伅鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + VciBaseUtil.getExceptionMessage(e);
@@ -534,9 +552,9 @@
      * @return
      */
     @DeleteMapping("/deleteTapButton")
-    public BaseResult deleteTapButton(@RequestBody PLTabButtonVO tabButtonVO){
+    public BaseResult deleteTabButton(@RequestBody PLTabButtonVO tabButtonVO){
         try {
-            return uiManagerService.deleteTapButton(tabButtonVO) ? BaseResult.success("鍒犻櫎鍗曚釜鎸夐挳閰嶇疆鎴愬姛锛�"):BaseResult.fail("鍒犻櫎鍗曚釜鎸夐挳閰嶇疆澶辫触锛�");
+            return uiManagerService.deleteTabButton(tabButtonVO) ? BaseResult.success("鍒犻櫎鍗曚釜鎸夐挳閰嶇疆鎴愬姛锛�"):BaseResult.fail("鍒犻櫎鍗曚釜鎸夐挳閰嶇疆澶辫触锛�");
         } catch (PLException e) {
             e.printStackTrace();
             String exceptionMessage = "鍒犻櫎鍗曚釜鎸夐挳閰嶇疆鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + VciBaseUtil.getExceptionMessage(e);
@@ -614,4 +632,22 @@
         }
     }
 
+    /**
+     * 閫氳繃涓氬姟绫诲瀷鑾峰彇UI涓婁笅鏂囧寘鍚叾涓嬪叧鑱旂殑鍖哄煙瀹氫箟>椤甸潰瀹氫箟绛夋墍鏈夊叧鑱旀暟鎹紝褰掔撼鎴恡ree缁撴瀯
+     * @param btmName
+     * @param level
+     * @return
+     */
+    @GetMapping( "/getAllLevelTreeByBtm")
+    public BaseResult getAllLevelTreeByBtm(String btmName,String level){
+        try {
+            return BaseResult.success(uiManagerService.getAllLevelTreeByBtm(btmName,level));
+        }catch (Exception 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 247e847..88b5f2c 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,12 +2,14 @@
 
 import com.vci.corba.common.PLException;
 import com.vci.corba.omd.btm.BizType;
+import com.vci.corba.omd.ltm.LinkType;
 import com.vci.corba.omd.qtm.QTInfo;
 import com.vci.corba.portal.data.PLUILayout;
 import com.vci.corba.portal.data.PLTabPage;
 import com.vci.corba.portal.data.PortalVI;
 import com.vci.pagemodel.PLTabButtonVO;
 import com.vci.pagemodel.PLUILayoutCloneVO;
+import com.vci.pagemodel.UICloneVO;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.BaseQueryObject;
 import com.vci.starter.web.pagemodel.BaseResult;
@@ -162,14 +164,14 @@
      * @param tabButtonVO
      * @return
      */
-    BaseResult addTapButton(PLTabButtonVO tabButtonVO);
+    BaseResult addTabButton(PLTabButtonVO tabButtonVO);
 
     /**
      * 淇敼鎸夐挳閰嶇疆淇℃伅
      * @param tabButtonVO
      * @return
      */
-    BaseResult updateTapButton(PLTabButtonVO tabButtonVO);
+    BaseResult updateTabButton(PLTabButtonVO tabButtonVO);
 
     /**
      * 淇濆瓨鎴栦慨鏀规寜閽厤缃俊鎭�
@@ -183,7 +185,7 @@
      * @param tabButtonVO
      * @return
      */
-    boolean deleteTapButton(PLTabButtonVO tabButtonVO) throws PLException;
+    boolean deleteTabButton(PLTabButtonVO tabButtonVO) throws PLException;
 
     /**
      * 璋冩暣涓轰笅绾ф寜閽�
@@ -224,6 +226,14 @@
     DataGrid<BizType> getBtmDatasByPage(BaseQueryObject baseQueryObject) throws Throwable;
 
     /**
+     * 鏌ヨ閾炬帴绫诲瀷涓嬫媺
+     * @param baseQueryObject
+     * @return
+     * @throws PLException
+     */
+    DataGrid<LinkType> getLinkDatasByPage(BaseQueryObject baseQueryObject) throws Throwable;
+
+    /**
      * UI瀹氫箟涓嬫媺鏌ヨ锛坱emplateType涓篣I瀹氫箟鏃剁殑閫夋嫨瀵硅薄涓嬫媺鏌ヨ锛�
      * @param baseQueryObject selectBtmType 閫夋嫨鐨勬簮瀵硅薄,甯﹀垎椤典俊鎭�
      * @return
@@ -247,4 +257,36 @@
      */
     DataGrid<QTInfo> getQTInfoDatasByPage(BaseQueryObject baseQueryObject)throws Throwable;
 
+    /**
+     * 閫氳繃涓氬姟绫诲瀷鑾峰彇UI涓婁笅鏂囧寘鍚叾涓嬪叧鑱旂殑鍖哄煙瀹氫箟>椤甸潰瀹氫箟绛夋墍鏈夊叧鑱旀暟鎹紝褰掔撼鎴恡ree缁撴瀯
+     * @param btmName 涓氬姟绫诲瀷鍚嶇О
+     * @param level 鏌ヨ鍒伴偅涓眰绾т负姝紙ui銆乼ap銆乸ageDef锛�
+     * @return
+     */
+    Tree getAllLevelTreeByBtm(String btmName,String level) throws PLException;
+
+    /**
+     * 鍏嬮殕鎸夐挳
+     * @param uiCloneVO
+     * @return
+     * @throws Throwable
+     */
+    BaseResult cloneTabButton(UICloneVO uiCloneVO)throws Throwable;
+
+    /**
+     * 鍏嬮殕椤电
+     * @param uiCloneVO
+     * @return
+     * @throws Throwable
+     */
+    BaseResult clonetabPage(UICloneVO uiCloneVO)throws Throwable;
+
+    /**
+     * 鍏嬮殕椤甸潰瀹氫箟
+     * @param uiCloneVO
+     * @return
+     * @throws Throwable
+     */
+    BaseResult clonePageDef(UICloneVO uiCloneVO)throws Throwable;
+
 }
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsAttributeServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsAttributeServiceImpl.java
index 31b4c62..55f843c 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsAttributeServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsAttributeServiceImpl.java
@@ -5,6 +5,7 @@
 import com.vci.client.common.datatype.VTLong;
 import com.vci.client.common.datatype.VTString;
 import com.vci.client.mw.ClientSessionUtility;
+import com.vci.common.utility.ObjectUtility;
 import com.vci.corba.common.PLException;
 import com.vci.corba.omd.atm.AttributeDef;
 import com.vci.corba.omd.ltm.LinkType;
@@ -1197,7 +1198,7 @@
 					}
 					osAttributeDTO.setBtmTypeId(osAttributePO.getEnumId());
 				}
-				osAttributeDTO.setOid(VciBaseUtil.getPk().toUpperCase(Locale.ROOT));
+				osAttributeDTO.setOid(ObjectUtility.getNewObjectID36());
 				osAttributeDTO.setId(osAttributePO.getId());
 				osAttributeDTO.setName(osAttributePO.getName());
 				osAttributeDTO.setDescription(osAttributePO.getDescription());
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 73634cf..1ffa2b2 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
@@ -5,6 +5,7 @@
 import com.vci.corba.common.data.UserEntityInfo;
 import com.vci.corba.framework.data.RoleRightInfo;
 import com.vci.corba.omd.btm.BizType;
+import com.vci.corba.omd.ltm.LinkType;
 import com.vci.corba.omd.qtm.QTInfo;
 import com.vci.corba.portal.PortalService;
 import com.vci.corba.portal.data.*;
@@ -87,6 +88,11 @@
     private final String IMPORTUIKEY = "importUIKey:";
 
     /**
+     * 褰撳墠鐧诲綍鐢ㄦ埛鐨勪俊鎭�
+     */
+    private SessionInfo sessionInfo = null;
+
+    /**
      * 鎺掑簭姣旇緝鍣�
      */
     private Comparator<PLUILayout> pageLayoutComparator = new Comparator<PLUILayout>() {
@@ -139,7 +145,7 @@
     }
 
     /**
-     * ton閫氳繃涓氬姟绫诲瀷鍜屽悕绉版煡璇�
+     * 閫氳繃涓氬姟绫诲瀷鍜屽悕绉版煡璇�
      * @param btemName
      * @param context
      * @return
@@ -1049,9 +1055,9 @@
                     pdVO.getShowType(),
                     pdVO.getLinkType(),
                     pdVO.getQueryTemplateName(),
-                    pdVO.getShowExpressionRoot(),
-                    pdVO.getShowExpression(),
-                    pdVO.getRefTreeSet(),
+                    pdVO.getRootContent(),
+                    pdVO.getShowAbs(),
+                    pdVO.getShowLinkAbs(),
                     pdVO.getSeparator(),
                     pdVO.getExpandMode()
                 );
@@ -1064,8 +1070,8 @@
             case "6":
                 UILayoutComptCheckInput ulci = new UILayoutComptCheckInput(
                     pdVO.getSearchTarger(),
-                    pdVO.getShowType(),
-                    pdVO.getUiLayout(),
+                    pdVO.getSubUIObjType(),
+                    pdVO.getSubUILayout(),
                     pdVO.getQueryTemplateName(),
                     pdVO.getQryType()
                 );
@@ -1166,9 +1172,9 @@
                         pdVO.getShowType(),
                         pdVO.getLinkType(),
                         pdVO.getQueryTemplateName(),
-                        pdVO.getShowExpressionRoot(),
-                        pdVO.getShowExpression(),
-                        pdVO.getRefTreeSet(),
+                        pdVO.getRootContent(),
+                        pdVO.getShowAbs(),
+                        pdVO.getShowLinkAbs(),
                         pdVO.getSeparator(),
                         pdVO.getExpandMode()
                 );
@@ -1181,8 +1187,8 @@
             case "6":
                 UILayoutComptCheckInput ulci = new UILayoutComptCheckInput(
                         pdVO.getSearchTarger(),
-                        pdVO.getShowType(),
-                        pdVO.getUiLayout(),
+                        pdVO.getSubUIObjType(),
+                        pdVO.getSubUILayout(),
                         pdVO.getQueryTemplateName(),
                         pdVO.getQryType()
                 );
@@ -1275,7 +1281,7 @@
         }
         plTabButtonVO.setOId(tabButtonDO.plOId);
         plTabButtonVO.setTableOId(tabButtonDO.plTableOId);
-        plTabButtonVO.setPageOId(tabButtonDO.plPageOId);
+        //plTabButtonVO.setPageOId(tabButtonDO.plPageOId);
         plTabButtonVO.setActionOId(tabButtonDO.plActionOId);
         plTabButtonVO.setLabel(tabButtonDO.plLabel);
         plTabButtonVO.setAreaType(tabButtonDO.plAreaType);
@@ -1339,7 +1345,7 @@
     private PLTabButton tabButtonVO2TabButton(PLTabButton plTabButton,PLTabButtonVO tabButtonVO) {
         plTabButton.plOId = tabButtonVO.getOId();
         plTabButton.plTableOId = tabButtonVO.getTableOId();
-        plTabButton.plPageOId = tabButtonVO.getPageOId();
+        //plTabButton.plPageOId = tabButtonVO.getPageOId();
         plTabButton.plActionOId = tabButtonVO.getActionOId();
         plTabButton.plLabel = tabButtonVO.getLabel();
         plTabButton.plAreaType = tabButtonVO.getAreaType();
@@ -1364,7 +1370,7 @@
      * @return
      */
     @Override
-    public BaseResult addTapButton(PLTabButtonVO tabButtonVO) {
+    public BaseResult addTabButton(PLTabButtonVO tabButtonVO) {
         boolean res = this.saveOrUpdateTapButton(tabButtonVO, true);
         return res ? BaseResult.success("鎸夐挳閰嶇疆娣诲姞鎴愬姛锛�"):BaseResult.success("鎸夐挳閰嶇疆娣诲姞澶辫触锛�");
     }
@@ -1375,7 +1381,7 @@
      * @return
      */
     @Override
-    public BaseResult updateTapButton(PLTabButtonVO tabButtonVO) {
+    public BaseResult updateTabButton(PLTabButtonVO tabButtonVO) {
         boolean res = this.saveOrUpdateTapButton(tabButtonVO, false);
         return res ? BaseResult.success("鎸夐挳閰嶇疆淇敼鎴愬姛锛�"):BaseResult.success("鎸夐挳閰嶇疆淇敼澶辫触锛�");
     }
@@ -1432,8 +1438,17 @@
                 e.printStackTrace();
             }
         }
+        this.saveButtonParams(tabButtonVO.getButtonParams(),plTabButton.plOId);
+        return true;
+    }
 
-        LinkedHashMap<String, String> buttonParams = tabButtonVO.getButtonParams();
+    /**
+     * 鎸夐挳鍙傛暟淇濆瓨
+     * @param buttonParams
+     * @param tabButtonOid
+     * @return
+     */
+    private void saveButtonParams(LinkedHashMap<String, String> buttonParams,String tabButtonOid) throws VciBaseException{
         if(Func.isNotEmpty(buttonParams)) {
             Iterator<Map.Entry<String, String>> iterator = buttonParams.entrySet().iterator();
             while(iterator.hasNext()){
@@ -1447,7 +1462,7 @@
                 Map.Entry<String, String> next = kvItor.next();
                 PLCommandParameter plCommandParameter = new PLCommandParameter();
                 plCommandParameter.plOId = ObjectUtility.getNewObjectID36();
-                plCommandParameter.plCommandOId = plTabButton.plOId;
+                plCommandParameter.plCommandOId = tabButtonOid;
                 plCommandParameter.plKey = next.getKey();
                 plCommandParameter.plValue = next.getValue();
                 plCommandParameter.plCreateUser = sessionInfo.getUserId();
@@ -1460,7 +1475,6 @@
                 }
             }
         }
-        return true;
     }
 
     /**
@@ -1469,7 +1483,7 @@
      * @return
      */
     @Override
-    public boolean deleteTapButton(PLTabButtonVO tabButtonVO) throws PLException {
+    public boolean deleteTabButton(PLTabButtonVO tabButtonVO) throws PLException {
         VciBaseUtil.alertNotNull(tabButtonVO,"鍒犻櫎鐨勬寜閽厤缃璞�");
         boolean success = platformClientUtil.getUIService().deletePLTabButton(this.tabButtonVO2TabButton(new PLTabButton(),tabButtonVO));
         if(success == false){
@@ -1485,7 +1499,7 @@
      */
     @Override
     public BaseResult joinBtn(PLTabButtonVO tabButtonVO) throws PLException {
-        VciBaseUtil.alertNotNull(tabButtonVO,"闇�璋冩暣涓轰笅绾ф寜閽�",tabButtonVO.getTableOId(),"褰撳墠鎸夐挳閰嶇疆鎵�鍦ㄧ殑椤甸潰涓婚敭");
+        VciBaseUtil.alertNotNull(tabButtonVO,"闇�璋冩暣涓轰笅绾ф寜閽殑瀵硅薄",tabButtonVO.getTableOId(),"褰撳墠鎸夐挳閰嶇疆鎵�鍦ㄧ殑椤甸潰涓婚敭");
         //鍚屼竴椤甸潰涓嬬殑鎸夐挳
         List<PLTabButtonVO> plTabButtons = this.getTabButtons(tabButtonVO.getTableOId());
         if(Func.isEmpty(plTabButtons)){
@@ -1697,7 +1711,7 @@
         }
         BizType[] bizTypes=osBtmServiceI.getBizTypes(type);
         List<Tree> treeList=new ArrayList<>();
-        Tree   rootNode =new Tree("root","鍔熻兘妯″潡","root");
+        Tree rootNode =new Tree("root","鍔熻兘妯″潡","root");
         rootNode.setLevel(0);
         rootNode.setShowCheckbox(true);
         rootNode.setExpanded(true);
@@ -2183,7 +2197,7 @@
      * @param vo
      * @return
      */
-    private RoleRightDTO  roleRightVOO2DTO(RoleRightVO vo){
+    private RoleRightDTO roleRightVOO2DTO(RoleRightVO vo){
         RoleRightDTO dto=new RoleRightDTO();
         dto.setId(vo.getId());
         dto.setCreateTime(vo.getCreateTime());
@@ -2203,7 +2217,7 @@
      * @param dto
      * @return
      */
-    private RoleRightInfo  roleRightDTOO2Info(RoleRightDTO dto) throws Exception {
+    private RoleRightInfo roleRightDTOO2Info(RoleRightDTO dto) throws Exception {
         RoleRightInfo info=new RoleRightInfo();
         info.id=StringUtils.isBlank(dto.getId())?"":dto.getId();
         info.createTime=StringUtils.isBlank(dto.getCreateTime())?new Date().getTime():VciDateUtil.getTime(VciDateUtil.str2Date(dto.getCreateTime(),""));
@@ -2388,6 +2402,50 @@
     }
 
     /**
+     * 鏌ヨ閾炬帴绫诲瀷涓嬫媺
+     * @param baseQueryObject
+     * @return
+     * @throws PLException
+     */
+    public DataGrid<LinkType> getLinkDatasByPage(BaseQueryObject baseQueryObject) throws PLException{
+        List<LinkType> list = new ArrayList<>();
+        Map<String, LinkType> map = new HashMap<>();
+        LinkType[] lts = platformClientUtil.getLinkTypeService().getLinkTypes();
+        for (LinkType lt : lts) {
+            Map<String, String> conditionMap = baseQueryObject.getConditionMap();
+            if(Func.isNotEmpty(conditionMap)){
+                //閫夋嫨鐨勫璞$被鍨�
+                String selectBtmType = conditionMap.get("selectBtmType");
+                if(selectBtmType != null){
+                    boolean existFrom = existInArray(selectBtmType, lt.btmItemsFrom);
+                    boolean existTo = existInArray(selectBtmType, lt.btmItemsTo);
+                    if(existFrom || existTo){
+                        if(!map.containsKey(lt.name)){
+                            map.put(lt.name, lt);
+                            list.add(lt);
+                        }
+                    }
+                }
+            }
+        }
+        DataGrid<LinkType> res = new DataGrid<>();
+        res.setData(list);
+        res.setTotal(list.size());
+        return res;
+    }
+
+    private boolean existInArray(String value, String[] values){
+        boolean res = false;
+        for (String string : values) {
+            if(string.equals(value)){
+                res = true;
+                break;
+            }
+        }
+        return res;
+    }
+
+    /**
      * UI瀹氫箟涓嬫媺鏌ヨ锛坱emplateType涓篣I瀹氫箟鏃剁殑UI瀹氫箟涓嬫媺鏌ヨ锛�
      * @param baseQueryObject selectBtmType 閫夋嫨鐨勬簮瀵硅薄,甯﹀垎椤典俊鎭�
      * @return
@@ -2551,6 +2609,205 @@
         return res;
     }
 
+    /**
+     * 閫氳繃涓氬姟绫诲瀷鑾峰彇UI涓婁笅鏂囧寘鍚叾涓嬪叧鑱旂殑鍖哄煙瀹氫箟>椤甸潰瀹氫箟绛夋墍鏈夊叧鑱旀暟鎹紝褰掔撼鎴恡ree缁撴瀯
+     * @param btmName 涓氬姟绫诲瀷鍚嶇О
+     * @param level 鏌ヨ鍒伴偅涓眰绾т负姝紙ui銆乼ab銆乸ageDef锛�
+     * @return
+     */
+    public Tree getAllLevelTreeByBtm(String btmName,String level) throws PLException {
+        VciBaseUtil.alertNotNull(btmName,"涓氬姟绫诲瀷缂栧彿",level,"鏌ヨ灞傜骇");
+        Tree resTree = new Tree();
+        resTree.setText("UI涓婁笅鏂囬�夐」");
+        resTree.setId("UILayout");
+        resTree.setLeaf(false);
+        resTree.setLevel(1);
+        String level1Oid = ObjectUtility.getNewObjectID36();
+        resTree.setOid(level1Oid);
+
+        PLUILayout[] pluiLayouts = platformClientUtil.getUIService().getPLUILayoutsByRelatedType(btmName);
+        if(Func.isEmpty(pluiLayouts)){
+            return resTree;
+        }
+        //鏍规嵁鏌ヨ鐨勫眰绾т笉鍚屽喅瀹氭槸鍚﹁繑鍥�
+        List<Tree> uiChildrenTree = new ArrayList<>();
+        
+        Arrays.stream(pluiLayouts).forEach(item->{
+            Tree uiTree = new Tree();
+            uiTree.setLeaf(level.equals("ui"));
+            uiTree.setLevel(2);
+            uiTree.setId(item.plCode);
+            uiTree.setOid(item.plOId);
+            uiTree.setText(item.plCode + "(" + item.plName + ")");
+            uiTree.setParentId(level1Oid);
+            List<Tree> tabChildren = null;
+            if(!level.equalsIgnoreCase("ui")){
+                try {
+                    tabChildren = this.getTabChildren(item.plOId, level);
+                } catch (PLException e) {
+                    e.printStackTrace();
+                    String exceptionMessage = "鏌ヨ椤电鏃跺嚭鐜伴敊璇細"+VciBaseUtil.getExceptionMessage(e);
+                    logger.error(exceptionMessage);
+                    throw new VciBaseException(exceptionMessage);
+                }
+                uiTree.setChildren(tabChildren);
+            }
+            uiChildrenTree.add(uiTree);
+        });
+
+        resTree.setChildren(uiChildrenTree);
+        return resTree;
+    }
+
+    /**
+     * 鍏嬮殕鎸夐挳锛堝瓨鍦ㄧ埗瀛愮粨鏋勫叧绯汇�佸叧鑱旀暟鎹寜閽弬鏁帮級
+     * @param uiCloneVO
+     * @return
+     * @throws Throwable
+     */
+    @Override
+    public BaseResult cloneTabButton(UICloneVO uiCloneVO) throws Throwable {
+        VciBaseUtil.alertNotNull(uiCloneVO,"鍏嬮殕瀵硅薄",uiCloneVO.getSourceOId(),"婧愬璞′富閿�");
+        String fromOId = uiCloneVO.getSourceOId();
+        String toOId = uiCloneVO.getToOId();
+        //鍏堟煡璇㈡簮瀵硅薄
+        //PLTabButton tabButton = platformClientUtil.getUIService().getPLTabButtonById(fromOId);
+        String sourceTableOId = uiCloneVO.getCloneParam().get("sourceTableOId");
+        if(Func.isBlank(sourceTableOId)){
+            return BaseResult.fail("鏈粠璇锋眰鍙傛暟涓幏鍙栧埌锛屾簮瀵硅薄鍏宠仈鐨勯〉闈㈠畾涔変富閿紒锛�");
+        }
+        //鍒ゆ柇鏄惁鏈夌洰鏍囦富閿紝濡傛灉娌℃湁灏辫鏄庢槸鍏嬮殕鍒板綋鍓嶉〉闈笅
+        if(Func.isBlank(toOId)){
+            toOId = sourceTableOId;
+        }
+        //鍒ゆ柇鍓嶇鏄惁浼犱簡鍏嬮殕鍚嶈繃鏉ワ紙鎸夐挳杩欒竟涓嶉渶瑕佸悕绉般�佺紪鍙峰垽閲嶏紝鎵�浠ヨ繖涓�鍧楀効閫昏緫蹇界暐锛�
+        //鎸夐挳鍏锋湁鐖跺瓙绾у叧绯伙紝鎵�浠ヨ繕闇�瑕佸仛oid鍜宲arentOId澶勭悊
+        List<PLTabButtonVO> tabButtons = this.getTabButtons(sourceTableOId);
+        PLTabButtonVO filterTabButton = tabButtons.stream()
+                .filter(item -> item.getOId().equals(fromOId)).findFirst().orElse(null);
+        if(Func.isEmpty(filterTabButton)){
+            return BaseResult.fail("鏍规嵁婧愬璞′富閿湭鏌ヨ鍒版簮瀵硅薄锛岃鍒锋柊鍚庨噸璇曪紒锛�");
+        }
+        if(Func.isEmpty(sessionInfo)){
+            sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
+        }
+
+        //鏀瑰彉button瀵硅薄鐨刼id鍜宲arentOId
+        this.modifyButtonIdsAndCopy(filterTabButton,toOId,ObjectUtility.getNewObjectID36());
+
+        return BaseResult.success("鎸夐挳澶嶅埗鎴愬姛锛�");
+    }
+
+    /**
+     * 淇敼oId鍜宲arentOid锛屼笉鏀瑰彉鐖跺瓙绾э紙oid鍙樻崲parentOId涔熼渶瑕佽窡鐫�鍙樻崲锛夌粨鏋勶紝骞朵繚瀛樻寜閽拰鍏跺弬鏁�
+     * @param button
+     * @param newOId
+     */
+    private void modifyButtonIdsAndCopy(PLTabButtonVO button,String toOId, String newOId) throws PLException {
+        if (button == null) {
+            return;
+        }
+
+        // 淇敼褰撳墠鑺傜偣鐨刼Id
+        button.setOId(newOId);
+        //寮�濮嬩繚瀛樻寜閽拰鍙傛暟
+        button.setCreateUser(sessionInfo.getUserId());
+        button.setModifyUser(sessionInfo.getUserId());
+        button.setTableOId(toOId);
+        PLTabButton plTabButton = this.tabButtonVO2TabButton(new PLTabButton(), button);
+        boolean res = platformClientUtil.getUIService().savePLTabButton(plTabButton);
+        if(!res){
+            throw new PLException("500",new String[]{"鎸夐挳閰嶇疆澶嶅埗澶辫触锛�"});
+        }
+        this.saveButtonParams(button.getButtonParams(),button.getOId());
+
+        // 閫掑綊閬嶅巻瀛愯妭鐐�
+        if (button.getChildren() != null) {
+            for (PLTabButtonVO child : button.getChildren()) {
+
+                // 瀛愬璞$殑 parentOid 璁剧疆涓哄綋鍓嶈妭鐐圭殑鏂皁id
+                modifyButtonIdsAndCopy(child,toOId, ObjectUtility.getNewObjectID36());
+                child.setParentOid(button.getOId());  // 纭繚瀛愬璞$殑parentOid鎸囧悜褰撳墠鐨刼id
+            }
+        }
+    }
+
+    /**
+     * 鍏嬮殕椤电
+     * @param uiCloneVO
+     * @return
+     * @throws Throwable
+     */
+    @Override
+    public BaseResult clonetabPage(UICloneVO uiCloneVO) throws Throwable {
+        return null;
+    }
+
+    /**
+     * 鍏嬮殕椤甸潰瀹氫箟
+     * @param uiCloneVO
+     * @return
+     * @throws Throwable
+     */
+    @Override
+    public BaseResult clonePageDef(UICloneVO uiCloneVO) throws Throwable {
+        return null;
+    }
+
+    /**
+     * 鑾峰彇椤电杩欎竴灞傜殑鍏宠仈鏁版嵁
+     * @return
+     */
+    private List<Tree> getTabChildren(String uiLayoutOid,String level) throws PLException {
+        List<Tree> tabChildren = new ArrayList<>();
+        if(Func.isNotBlank(uiLayoutOid)){
+            PLTabPage[] tabPages = platformClientUtil.getUIService().getPLTabPagesByPageDefinationOId(uiLayoutOid);
+            Arrays.stream(tabPages).forEach(tabPage->{
+                Tree tabTree = new Tree();
+                tabTree.setLeaf(level.equals("tab"));
+                tabTree.setLevel(2);
+                tabTree.setId(tabPage.plCode);
+                tabTree.setOid(tabPage.plOId);
+                tabTree.setText(tabPage.plCode + "(" + tabPage.plName + ")");
+                tabTree.setParentId(uiLayoutOid);
+                if(!level.equalsIgnoreCase("tab")){
+                    try {
+                        tabTree.setChildren(this.getPageDefChildren(tabPage.plOId,level));
+                    } catch (PLException e) {
+                        e.printStackTrace();
+                        String exceptionMessage = "鏌ヨ椤甸潰瀹氫箟鏃跺嚭鐜伴敊璇細"+VciBaseUtil.getExceptionMessage(e);
+                        logger.error(exceptionMessage);
+                        throw new VciBaseException(exceptionMessage);
+                    }
+                }
+                tabChildren.add(tabTree);
+            });
+        }
+        return tabChildren;
+    }
+
+    /**
+     * 鑾峰彇椤甸潰瀹氫箟杩欎竴灞傜殑鍏宠仈鏁版嵁
+     * @return
+     */
+    private List<Tree> getPageDefChildren(String tabPageOid,String level) throws PLException {
+        List<Tree> pageDefChildren = new ArrayList<>();
+        if(Func.isNotBlank(tabPageOid)){
+            PLPageDefination[] pageDefs = platformClientUtil.getUIService().getPLPageDefinationsByPageContextOId(tabPageOid);
+            Arrays.stream(pageDefs).forEach(pageDef->{
+                Tree tabTree = new Tree();
+                tabTree.setLeaf(true);
+                tabTree.setLevel(2);
+                tabTree.setId(pageDef.name);
+                tabTree.setOid(pageDef.plOId);
+                tabTree.setText(pageDef.name + "(" + pageDef.desc + ")");
+                tabTree.setParentId(tabPageOid);
+                pageDefChildren.add(tabTree);
+            });
+        }
+        return pageDefChildren;
+    }
+
     //鍩虹鍏叡妫�鏌ユ帴鍙�
     private abstract class BaseComptInter {
 

--
Gitblit v1.9.3