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/web/service/impl/UIManagerServiceImpl.java | 303 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 280 insertions(+), 23 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 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