From 69f6865e4744094d657a538e9c013cb9d97df01a Mon Sep 17 00:00:00 2001 From: ludc Date: 星期三, 09 十月 2024 17:03:01 +0800 Subject: [PATCH] 在线用户统计报错修改,UI上下文三个克隆接口测试完成上传 --- Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java | 757 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 729 insertions(+), 28 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 5da58ec..dd92d2d 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,8 @@ 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.*; import com.vci.dto.RoleRightDTO; @@ -20,7 +22,7 @@ import com.vci.starter.web.pagemodel.DataGrid; import com.vci.starter.web.pagemodel.SessionInfo; import com.vci.starter.web.util.*; -import com.vci.web.redis.RedisService; +import com.vci.starter.web.redis.RedisService; import com.vci.web.service.OsBtmServiceI; import com.vci.web.service.UIManagerServiceI; import com.vci.web.util.*; @@ -42,6 +44,7 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; import java.util.regex.Pattern; +import java.util.stream.Stream; /** * UI瀹氫箟鏈嶅姟鐣岄潰鐩稿叧鎺ュ彛 @@ -84,6 +87,11 @@ * 瀵煎叆鏁版嵁鐨剆heet闆嗗悎 */ private final String IMPORTUIKEY = "importUIKey:"; + + /** + * 褰撳墠鐧诲綍鐢ㄦ埛鐨勪俊鎭� + */ + private SessionInfo sessionInfo = null; /** * 鎺掑簭姣旇緝鍣� @@ -138,7 +146,7 @@ } /** - * ton閫氳繃涓氬姟绫诲瀷鍜屽悕绉版煡璇� + * 閫氳繃涓氬姟绫诲瀷鍜屽悕绉版煡璇� * @param btemName * @param context * @return @@ -1048,9 +1056,9 @@ pdVO.getShowType(), pdVO.getLinkType(), pdVO.getQueryTemplateName(), - pdVO.getShowExpressionRoot(), - pdVO.getShowExpression(), - pdVO.getRefTreeSet(), + pdVO.getRootContent(), + pdVO.getShowAbs(), + pdVO.getShowLinkAbs(), pdVO.getSeparator(), pdVO.getExpandMode() ); @@ -1063,8 +1071,8 @@ case "6": UILayoutComptCheckInput ulci = new UILayoutComptCheckInput( pdVO.getSearchTarger(), - pdVO.getShowType(), - pdVO.getUiLayout(), + pdVO.getSubUIObjType(), + pdVO.getSubUILayout(), pdVO.getQueryTemplateName(), pdVO.getQryType() ); @@ -1165,9 +1173,9 @@ pdVO.getShowType(), pdVO.getLinkType(), pdVO.getQueryTemplateName(), - pdVO.getShowExpressionRoot(), - pdVO.getShowExpression(), - pdVO.getRefTreeSet(), + pdVO.getRootContent(), + pdVO.getShowAbs(), + pdVO.getShowLinkAbs(), pdVO.getSeparator(), pdVO.getExpandMode() ); @@ -1180,8 +1188,8 @@ case "6": UILayoutComptCheckInput ulci = new UILayoutComptCheckInput( pdVO.getSearchTarger(), - pdVO.getShowType(), - pdVO.getUiLayout(), + pdVO.getSubUIObjType(), + pdVO.getSubUILayout(), pdVO.getQueryTemplateName(), pdVO.getQryType() ); @@ -1223,15 +1231,17 @@ PLTabButton[] plTabButtons = platformClientUtil.getUIService().getPLTabButtonsByTableOId(pageDefinationOid); buttonList = Arrays.asList(plTabButtons); List<PLTabButtonVO> plTabButtonVOList = this.tabButton2TabButtonVOS(buttonList); + List<PLTabButtonVO> returnButtonVOList = new ArrayList<>(); PLTabButtonVO plTabButtonVO = new PLTabButtonVO(); for(int i = 0; i < plTabButtonVOList.size(); i++){ plTabButtonVO = plTabButtonVOList.get(i); if(plTabButtonVO.getParentOid().equals("")){ plTabButtonVO.setChildren(plTabButtonVO2Children(plTabButtonVOList,plTabButtonVO.getOId())); + returnButtonVOList.add(plTabButtonVO); } } - return plTabButtonVOList; + return returnButtonVOList; } catch (Exception e) { e.printStackTrace(); throw new VciBaseException("鍔犺浇椤电鍖哄煙鎸夐挳閰嶇疆淇℃伅寮傚父锛�" + e.getMessage()); @@ -1274,7 +1284,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); @@ -1302,6 +1312,10 @@ )); plTabButtonVO.setButtonParams(parameterMap); } + if(Func.isNotBlank(tabButtonDO.plActionOId)){ + PLAction actionInfo = platformClientUtil.getUIService().getPLActionById(tabButtonDO.plActionOId); + plTabButtonVO.setActionName(Func.isNotEmpty(actionInfo) ? actionInfo.plName:""); + } return plTabButtonVO; } @@ -1318,7 +1332,7 @@ continue; } if(plTabButtonVO.getParentOid().equals(plOid)){ - plTabButtonVO.setChildren(plTabButtonVO2Children(plTabButtonVOList,plOid)); + plTabButtonVO.setChildren(plTabButtonVO2Children(plTabButtonVOList,plTabButtonVO.getOId())); plTabButtonVOS.add(plTabButtonVO); } } @@ -1334,7 +1348,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(); @@ -1359,7 +1373,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("鎸夐挳閰嶇疆娣诲姞澶辫触锛�"); } @@ -1370,7 +1384,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("鎸夐挳閰嶇疆淇敼澶辫触锛�"); } @@ -1427,8 +1441,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()){ @@ -1442,7 +1465,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(); @@ -1455,7 +1478,6 @@ } } } - return true; } /** @@ -1464,7 +1486,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){ @@ -1480,7 +1502,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)){ @@ -1505,7 +1527,7 @@ if(success == false) { return BaseResult.fail("淇敼澶辫触锛�"); } - return BaseResult.fail("淇敼鎴愬姛锛�"); + return BaseResult.success("淇敼鎴愬姛锛�"); } /** @@ -1692,7 +1714,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); @@ -2178,7 +2200,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()); @@ -2198,7 +2220,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(),"")); @@ -2266,7 +2288,7 @@ * @param obj * @throws PLException */ - public void checkCodeName(PLUILayout obj) throws PLException { + private void checkCodeName(PLUILayout obj) throws PLException { PLUILayout[] plUILayouts = platformClientUtil.getUIService().getPLUILayoutsByRelatedType(obj.plRelatedType); int length = plUILayouts.length; String code = obj.plCode; @@ -2332,6 +2354,685 @@ return res; } + /** + * 涓氬姟绫诲瀷銆佹簮瀵硅薄绫诲瀷銆侀《灞傝妭鐐规樉绀虹被鍨嬬瓑閮借皟鐢ㄨ繖涓帴鍙f煡璇� + * @param baseQueryObject + * @return + * @throws PLException + */ + public DataGrid<BizType> getBtmDatasByPage(BaseQueryObject baseQueryObject) throws PLException{ + BizType[] btmNames = null; + int start = baseQueryObject.getPage(); + int end = baseQueryObject.getLimit(); + //鍏ㄦ煡鐨勬儏鍐� + /*if(limit != -1){ + start = baseQueryObject.getPage() <= 1 ? 1 : (page - 1) * limit + 1; + end = baseQueryObject.getPage() <= 1 ? limit : (page * limit); + }*/ + + String where = " 1=1 "; + String text = ""; + Map<String, String> conditionMap = baseQueryObject.getConditionMap(); + if(Func.isNotEmpty(conditionMap)){ + //杩囨护鏉′欢 + String filterInputValue = conditionMap.get("filterInputValue"); + if(Func.isNotBlank(filterInputValue)){ + where += String.format(" and (bt.name like '%%%s%%' or bt.label like '%%%s%%')", text, text); + } + } + + String fromWhere = String.format(" from plbtmtype bt where %s ", where); + String fromWhereOrderBy = String.format(" %s order by bt.name", fromWhere); + String sql = ""; + if(end != -1){ + sql = sql+String.format("select * from(" + + " select row_.*,rownum rownum_ from( " + + " select bt.name, bt.label %s" + + " ) row_ " + + ") where rownum_ >= %d and rownum_ <= %d ", fromWhereOrderBy, start, end); + }else{ + sql = sql+String.format( + "select bt.name, bt.label %s", fromWhereOrderBy); + } + List<BizType> list = new LinkedList<BizType>(); + String[][] kvss = platformClientUtil.getQueryService().queryBySqlWithoutKey(sql); + for(String[] kvs : kvss){ + BizType bi = new BizType(); + bi.name = kvs[0]; + bi.label = kvs[1]; + list.add(bi); + } + btmNames = list.toArray(new BizType[]{}); + + sql = String.format("select count(1) count_ %s", fromWhere); + kvss = platformClientUtil.getQueryService().queryBySqlWithoutKey(sql); + int total = Integer.valueOf(kvss[0][0]); + + DataGrid<BizType> res = new DataGrid<>(); + res.setData(Arrays.asList(btmNames)); + res.setTotal(total); + return res; + } + + /** + * 鏌ヨ閾炬帴绫诲瀷涓嬫媺 + * @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 + * @throws PLException + */ + public DataGrid<PLUILayout> getUILayoutDatasByPage(BaseQueryObject baseQueryObject) throws PLException{ + PLUILayout[] datas = null; + int start = baseQueryObject.getPage(); + int end = baseQueryObject.getLimit(); + /*int start = baseQueryObject.getPage() <= 1 ? 1 : (baseQueryObject.getPage() - 1) * baseQueryObject.getLimit() + 1; + int end = baseQueryObject.getPage() <= 1 ? baseQueryObject.getLimit() : (baseQueryObject.getPage() * baseQueryObject.getLimit());*/ + + String where = " 1=1 "; + Map<String, String> conditionMap = baseQueryObject.getConditionMap(); + if(Func.isNotEmpty(conditionMap)){ + //閫夋嫨鐨勫璞$被鍨� + String selectBtmType = conditionMap.get("selectBtmType"); + if(selectBtmType != null){ + where += String.format(" and ui.PLRELATEDTYPE = '%s' ", selectBtmType); + } + //杩囨护鏉′欢 + String filterInputValue = conditionMap.get("filterInputValue"); + if(Func.isNotBlank(filterInputValue)){ + where += String.format(" and (ui.plname like '%%%s%%') ", filterInputValue, filterInputValue); + } + } + String fromWhere = String.format(" from PLUILAYOUT ui where %s ", where); + String fromWhereOrderBy = String.format(" %s order by ui.plname", fromWhere); + String sql = ""; + if(end != -1){ + sql = String.format("select * from(" + + " select row_.*,rownum rownum_ from( " + + " select ui.plname, ui.plcode %s" + + " ) row_ " + + ") where rownum_ >= %d and rownum_ <= %d ", fromWhereOrderBy, start, end); + }else{ + sql = String.format("select ui.plname, ui.plcode %s", fromWhereOrderBy); + } + List<PLUILayout> list = new LinkedList<PLUILayout>(); + String[][] kvss = platformClientUtil.getQueryService().queryBySqlWithoutKey(sql); + for(String[] kvs : kvss){ + PLUILayout bi = new PLUILayout(); + bi.plName = kvs[0]; + bi.plCode = kvs[1]; + list.add(bi); + } + datas = list.toArray(new PLUILayout[0]); + + sql = String.format("select count(1) count_ %s", fromWhere); + kvss = platformClientUtil.getQueryService().queryBySqlWithoutKey(sql); + int total = Integer.valueOf(kvss[0][0]); + + DataGrid<PLUILayout> res = new DataGrid<PLUILayout>(); + res.setData(Arrays.asList(datas)); + res.setTotal(total); + return res; + } + + /** + * 閫夋嫨妯℃澘涓嬫媺鏌ヨ锛坱emplateType涓鸿〃鏍笺�佽〃鍗曘�佹爲琛ㄦ椂鐨勯�夋嫨瀵硅薄涓嬫媺鏌ヨ锛� + * @param baseQueryObject + * @return + * @throws PLException + */ + public DataGrid<PortalVI> getPortalVIDatasByPage(BaseQueryObject baseQueryObject) throws PLException{ + PortalVI[] datas = null; + + int start = baseQueryObject.getPage(); + int end = baseQueryObject.getLimit(); + /*int start = baseQueryObject.getPage() <= 1 ? 1 : (baseQueryObject.getPage() - 1) * baseQueryObject.getLimit() + 1; + int end = baseQueryObject.getPage() <= 1 ? baseQueryObject.getLimit() : (baseQueryObject.getPage() * baseQueryObject.getLimit());*/ + + String where = " 1=1 "; + + Map<String, String> conditionMap = baseQueryObject.getConditionMap(); + if(Func.isNotEmpty(conditionMap)){ + //閫夋嫨鐨勬簮瀵硅薄鎴栬�呮槸閫夋嫨鐨勭埗鑺傜偣鏄剧ず绫诲瀷 + String selectBtmType = conditionMap.get("selectBtmType"); + if(selectBtmType != null){ + where += String.format(" and vi.typename = '%s' ", selectBtmType); + } + /*if(getPopupDialog().getPortalVIType() != null){ + where += String.format(" and vi.vitype = %d ", getPopupDialog().getPortalVIType().getIntVal()); + }*/ + //杩囨护鏉′欢 + String filterInputValue = conditionMap.get("filterInputValue"); + if(Func.isNotBlank(filterInputValue)){ + where += String.format(" and (vi.viname like '%%%s%%') ", filterInputValue, filterInputValue); + } + } + + String fromWhere = String.format(" from plportalvi vi where %s ", where); + String fromWhereOrderBy = String.format(" %s order by vi.viname", fromWhere); + String sql = ""; + if(end != -1){ + sql = String.format("select * from(" + + " select row_.*,rownum rownum_ from( " + + " select vi.viname,vi.vitype %s" + + " ) row_ " + + ") where rownum_ >= %d and rownum_ <= %d ", fromWhereOrderBy, start, end); + }else{ + sql = String.format("select vi.viname,vi.vitype %s", fromWhereOrderBy); + } + List<PortalVI> list = new LinkedList<>(); + String[][] kvss = platformClientUtil.getQueryService().queryBySqlWithoutKey(sql); + for(String[] kvs : kvss){ + PortalVI bi = new PortalVI(); + bi.viName = kvs[0]; + bi.viType = Short.valueOf(kvs[1]); + list.add(bi); + } + datas = list.toArray(new PortalVI[]{}); + + sql = String.format("select count(1) count_ %s", fromWhere); + kvss = platformClientUtil.getQueryService().queryBySqlWithoutKey(sql); + int total = Integer.valueOf(kvss[0][0]); + + DataGrid<PortalVI> res = new DataGrid<>(); + res.setData(Arrays.asList(datas)); + res.setTotal(total); + return res; + } + + /** + * 鏌ヨ妯℃澘涓嬫媺鏌ヨ + * @param baseQueryObject + * @return + * @throws PLException + */ + public DataGrid<QTInfo> getQTInfoDatasByPage(BaseQueryObject baseQueryObject) throws PLException{ + QTInfo[] datas = null; + + int start = baseQueryObject.getPage(); + int end = baseQueryObject.getLimit(); + /*int start = baseQueryObject.getPage() <= 1 ? 1 : (baseQueryObject.getPage() - 1) * baseQueryObject.getLimit() + 1; + int end = baseQueryObject.getPage() <= 1 ? baseQueryObject.getLimit() : (baseQueryObject.getPage() * baseQueryObject.getLimit());*/ + + String where = " 1=1 "; + + Map<String, String> conditionMap = baseQueryObject.getConditionMap(); + if(Func.isNotEmpty(conditionMap)){ + //閫夋嫨鐨勬簮瀵硅薄鎴栬�呮槸閫夋嫨鐨勭埗鑺傜偣鏄剧ず绫诲瀷 + String selectBtmType = conditionMap.get("selectBtmType"); + if(selectBtmType != null){ + where += String.format(" and qt.btmname = '%s' ", selectBtmType); + } + //杩囨护鏉′欢 + String filterInputValue = conditionMap.get("filterInputValue"); + if(Func.isNotBlank(filterInputValue)){ + where += String.format(" and (qt.qtname like '%%%s%%') ", filterInputValue, filterInputValue); + } + } + + String fromWhere = String.format(" from PL_QTEMPLATE qt where %s ", where); + String fromWhereOrderBy = String.format(" %s order by qt.qtname ", fromWhere); + String sql = ""; + if(end != -1){ + sql = String.format("select * from(" + + " select row_.*,rownum rownum_ from( " + + " select qt.qtname,qt.btmname %s" + + " ) row_ " + + ") where rownum_ >= %d and rownum_ <= %d ", fromWhereOrderBy, start, end); + }else{ + sql = String.format("select qt.qtname,qt.btmname %s", fromWhereOrderBy); + } + List<QTInfo> list = new LinkedList<QTInfo>(); + String[][] kvss = platformClientUtil.getQueryService().queryBySqlWithoutKey(sql); + for(String[] kvs : kvss){ + QTInfo bi = new QTInfo(); + bi.qtName = kvs[0]; + bi.btmName = kvs[1]; + list.add(bi); + } + datas = list.toArray(new QTInfo[]{}); + + sql = String.format("select count(1) count_ %s", fromWhere); + kvss = platformClientUtil.getQueryService().queryBySqlWithoutKey(sql); + int total = Integer.valueOf(kvss[0][0]); + + DataGrid<QTInfo> res = new DataGrid<QTInfo>(); + res.setData(Arrays.asList(datas)); + res.setTotal(total); + 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 clonetabPage(UICloneVO uiCloneVO) throws Throwable { + VciBaseUtil.alertNotNull(uiCloneVO,"鍏嬮殕瀵硅薄",uiCloneVO.getFromOId(),"婧愬叧鑱旂殑UI瀹氫箟瀵硅薄鐨勪富閿�"); + //婧愬叧鑱斿璞$殑涓婚敭(UI瀹氫箟鐨勪富閿�) + String fromOId = uiCloneVO.getFromOId(); + //鍏嬮殕鍒伴偅涓猆I瀹氫箟涓� + String toOId = uiCloneVO.getToOId(); + //琚厠闅嗙殑瀵硅薄涓婚敭 + Map<String, String> cloneParamMap = uiCloneVO.getCloneParam(); + String sourceOId = cloneParamMap.get("sourceOId"); + if(Func.isBlank(sourceOId)){ + return BaseResult.fail("鏈粠璇锋眰鍙傛暟涓幏鍙栧埌锛屾簮瀵硅薄涓婚敭锛侊紒"); + } + //鍒ゆ柇鏄惁鏈夌洰鏍囦富閿紝濡傛灉娌℃湁灏辫鏄庢槸鍏嬮殕鍒板綋鍓嶉〉绛句笅 + if(Func.isBlank(toOId)){ + toOId = fromOId; + } + //鏌ヨ琚厠闅嗙殑椤电瀹氫箟 + PLTabPage tabPage = this.platformClientUtil.getUIService().getPLTabPageById(sourceOId); + if(Func.isEmpty(tabPage) || Func.isBlank(tabPage.plOId)){ + return BaseResult.fail("鏍规嵁婧愬璞′富閿湭鏌ヨ鍒版簮瀵硅薄锛岃鍒锋柊鍚庨噸璇曪紒锛�"); + } + //鍦ㄥ厠闅嗙殑鐩爣UI瀹氫箟涓嬪悓涓�鍖哄煙杩涜椤电鍚嶇О銆佺紪鍙枫�佸簭鍙锋煡閲嶅鐞� + String copyObjName = tabPage.plName;//鍚嶇О + String copyObjCode = tabPage.plCode;//缂栧彿 + String copyObjSeq = String.valueOf(tabPage.plSeq);//搴忓彿 + PLTabPage[] tabPages = platformClientUtil.getUIService().getTabPagesByContextIdAndType(toOId, tabPage.plAreaType);//鍚屼竴鍖哄煙涓嬬殑 + if (Func.isNotEmpty(tabPages)) { + Map<String, Short> toTabPageDefMap = Arrays.stream(tabPages).collect(Collectors.toMap(item -> item.plName, item -> item.plSeq)); + //while寰幆鍑簍oPageDefMap涓嶅瓨鍦ㄧ殑澶嶅埗瀵硅薄鍚� + int i = 1; + int i1 = 1; + String name = tabPage.plName; + while(true){ + copyObjName = name + "_copy(" + i++ + ")"; + if (!toTabPageDefMap.containsValue(copyObjName)) { + break; + } + } + Set<String> tabPageCodes = Arrays.stream(tabPages).map(item -> item.plCode).collect(Collectors.toSet()); + String code = tabPage.plCode; + while(true){ + copyObjCode = code + "_copy(" + i1++ + ")"; + if (!tabPageCodes.contains(copyObjCode)) { + break; + } + } + //鑾峰彇鍒皏alues鐨勬渶澶у�� + Short currentSeq = toTabPageDefMap.values().stream().max(Comparator.naturalOrder()).get(); + copyObjSeq = String.valueOf(currentSeq+1); + } + //淇敼鍏宠仈鐨刄I瀹氫箟涓婚敭銆佸悕绉般�佺紪鍙枫�佸簭鍙� + tabPage.plContextOId = toOId; + //鏂扮殑鍏嬮殕瀵硅薄涓婚敭 + String newOId = ObjectUtility.getNewObjectID36(); + tabPage.plOId = newOId; + tabPage.plName = copyObjName; + tabPage.plCode = copyObjCode; + tabPage.plSeq = Short.parseShort(copyObjSeq); + if(Func.isEmpty(sessionInfo)){ + sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); + } + tabPage.plCreateUser = sessionInfo.getUserId(); + tabPage.plModifyUser = sessionInfo.getUserId(); + long currentTimeMillis = System.currentTimeMillis(); + tabPage.plCreateTime = currentTimeMillis; + tabPage.plModifyTime = currentTimeMillis; + boolean resTabPage = this.platformClientUtil.getUIService().savePLTabPage(tabPage); + if(!resTabPage){ + return BaseResult.fail("椤甸潰瀹氫箟淇濆瓨澶辫触锛侊紒"); + } + //淇濆瓨鎴愬姛闇�瑕佽�冭檻鍒颁箣鍓嶄笉瀛樺湪鐨勫尯鍩燂紝鍏嬮殕涔嬪悗瀛樺湪浜嗗氨闇�瑕佹敼鍙樺搴斿尯鍩熺殑鏍囪瘑 + PLUILayout pluiLayout = this.platformClientUtil.getUIService().getPLUILayoutById(toOId); + if(Func.isNotEmpty(pluiLayout)){ + if(tabPage.plAreaType == 1){ + //瀵艰埅鍖� + pluiLayout.plIsShowNavigator = 1; + }else if(tabPage.plAreaType == 2){ + //鎺у埗鍖� + pluiLayout.plIsShowForm = 1; + }else { + //鎿嶄綔鍖� + pluiLayout.plIsShowTab = 1; + } + } + this.platformClientUtil.getUIService().updatePLUILayout(pluiLayout); + + //鏌ヨ椤甸潰瀹氫箟 + PLPageDefination[] pageDefinations = platformClientUtil.getUIService().getPLPageDefinationsByPageContextOId(sourceOId); + if (Func.isEmpty(pageDefinations)) { + return BaseResult.success("椤电瀹氫箟鍏嬮殕鎴愬姛锛侊紒"); + } + String oldPageDefOId = ""; + boolean resPageDef = false; + for (int i = 0; i < pageDefinations.length; i++) { + PLPageDefination pageDef = pageDefinations[i]; + pageDef.plTabPageOId = newOId; + String newPageDefOId = ObjectUtility.getNewObjectID36(); + oldPageDefOId = pageDef.plOId;//璁板綍涓嬫棫鐨勪富閿� + pageDef.plOId = newPageDefOId; + resPageDef = platformClientUtil.getUIService().savePLPageDefination(pageDef); + if(!resPageDef){ + return BaseResult.success("鍏嬮殕椤甸潰瀹氫箟鍑洪敊锛侊紒"); + } + //鏌ヨ鎸夐挳杩涜淇濆瓨 + List<PLTabButtonVO> tabButtons = this.getTabButtons(oldPageDefOId); + if(Func.isNotEmpty(tabButtons)){ + tabButtons.stream().forEach(buttonVO->{ + try { + this.modifyButtonOIdsAndCopy(buttonVO,newPageDefOId,ObjectUtility.getNewObjectID36()); + } catch (PLException e) { + e.printStackTrace(); + String exceptionMessage = "鍏嬮殕鎸夐挳閰嶇疆鏃跺嚭鐜伴敊璇紝鍘熷洜锛�"+VciBaseUtil.getExceptionMessage(e); + logger.error(exceptionMessage); + throw new VciBaseException(exceptionMessage); + } + }); + } + } + return BaseResult.success("椤电瀹氫箟鍏嬮殕鎴愬姛锛侊紒"); + } + + /** + * 鍏嬮殕椤甸潰瀹氫箟 + * @param uiCloneVO + * @return + * @throws Throwable + */ + @Override + public BaseResult clonePageDef(UICloneVO uiCloneVO) throws Throwable { + VciBaseUtil.alertNotNull(uiCloneVO,"鍏嬮殕瀵硅薄",uiCloneVO.getFromOId(),"婧愬叧鑱斿璞$殑涓婚敭"); + //婧愬叧鑱斿璞$殑涓婚敭 + String fromOId = uiCloneVO.getFromOId(); + //鍏嬮殕鍒伴偅涓〉绛句笅锛歵abOid + String toOId = uiCloneVO.getToOId(); + //琚厠闅嗙殑瀵硅薄涓婚敭 + Map<String, String> cloneParamMap = uiCloneVO.getCloneParam(); + String sourceOId = cloneParamMap.get("sourceOId"); + if(Func.isBlank(sourceOId)){ + return BaseResult.fail("鏈粠璇锋眰鍙傛暟涓幏鍙栧埌锛屾簮瀵硅薄涓婚敭锛侊紒"); + } + //鍒ゆ柇鏄惁鏈夌洰鏍囦富閿紝濡傛灉娌℃湁灏辫鏄庢槸鍏嬮殕鍒板綋鍓嶉〉绛句笅 + if(Func.isBlank(toOId)){ + toOId = fromOId; + } + //鏌ヨ琚厠闅嗙殑椤甸潰瀹氫箟瀵硅薄 + PLPageDefination pageDefination = this.platformClientUtil.getUIService().getPLPageDefinationById(sourceOId); + if(Func.isEmpty(pageDefination) || Func.isBlank(pageDefination.plOId)){ + return BaseResult.fail("鏍规嵁婧愬璞′富閿湭鏌ヨ鍒版簮瀵硅薄锛岃鍒锋柊鍚庨噸璇曪紒锛�"); + } + + String copyObjName = "";//鍚嶇О + String copyObjSeq = "";//缂栧彿 + //鍏嬮殕涔嬪墠鏌ラ噸鐩爣鍏宠仈瀵硅薄涓嬬殑瀵硅薄鍚嶇О鍜岀紪鍙峰垽閲嶅鐞� + PLPageDefination[] pageDefinations = this.platformClientUtil.getUIService().getPLPageDefinationsByPageContextOId(toOId); + if (Func.isNotEmpty(pageDefinations)) { + Map<String, Short> toPageDefMap = Arrays.stream(pageDefinations).collect(Collectors.toMap(item -> item.name, item -> item.seq)); + //while寰幆鍑簍oPageDefMap涓嶅瓨鍦ㄧ殑澶嶅埗瀵硅薄鍚� + int i = 1; + String name = pageDefination.name; + while(true){ + copyObjName = name + "_copy(" + i++ + ")"; + if (!toPageDefMap.containsValue(copyObjName)) { + break; + } + } + + //鑾峰彇鍒皏alues鐨勬渶澶у�� + Short currentSeq = toPageDefMap.values().stream().max(Comparator.naturalOrder()).get(); + copyObjSeq = String.valueOf(currentSeq+1); + } + //淇敼鍏宠仈鐨勯〉绛句富閿拰鍚嶇О缂栧彿 + pageDefination.plTabPageOId = toOId; + String newOId = ObjectUtility.getNewObjectID36(); + pageDefination.plOId = newOId; + pageDefination.name = copyObjName; + pageDefination.seq = Short.parseShort(copyObjSeq); + //淇濆瓨椤甸潰瀹氫箟 + boolean resPageDef = platformClientUtil.getUIService().savePLPageDefination(pageDefination); + if(!resPageDef){ + return BaseResult.fail("椤电瀹氫箟淇濆瓨澶辫触锛侊紒"); + } + //鏌ヨ椤甸潰涓嬬殑鎸夐挳 + List<PLTabButtonVO> tabButtonVOS = this.getTabButtons(sourceOId); + if(Func.isEmpty(tabButtonVOS)){ + return BaseResult.success("椤甸潰瀹氫箟鍏嬮殕鎴愬姛锛侊紒"); + } + //鍒濆鍖杝essionInfo灞炴�� + if(Func.isEmpty(sessionInfo)){ + sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); + } + //寰幆鍏嬮殕鎸夐挳锛堝悓鏃朵細瀵规寜閽殑鐖跺瓙绾у叧绯诲拰鎸夐挳涓嬬殑鍙傛暟杩涜淇濆瓨锛� + tabButtonVOS.stream().forEach(buttonVO->{ + try { + this.modifyButtonOIdsAndCopy(buttonVO,newOId,ObjectUtility.getNewObjectID36()); + } catch (PLException e) { + e.printStackTrace(); + String exceptionMessage = "鍏嬮殕鎸夐挳閰嶇疆鏃跺嚭鐜伴敊璇紝鍘熷洜锛�"+VciBaseUtil.getExceptionMessage(e); + logger.error(exceptionMessage); + throw new VciBaseException(exceptionMessage); + } + }); + return BaseResult.success("椤甸潰瀹氫箟鍏嬮殕鎴愬姛锛侊紒"); + } + + /** + * 鍏嬮殕鎸夐挳锛堝瓨鍦ㄧ埗瀛愮粨鏋勫叧绯汇�佸叧鑱旀暟鎹寜閽弬鏁帮級 + * @param uiCloneVO + * @return + * @throws Throwable + */ + @Override + public BaseResult cloneTabButton(UICloneVO uiCloneVO) throws Throwable { + VciBaseUtil.alertNotNull(uiCloneVO,"鍏嬮殕瀵硅薄",uiCloneVO.getFromOId(),"婧愬叧鑱斿璞′富閿�"); + String fromOId = uiCloneVO.getFromOId(); + String toOId = uiCloneVO.getToOId(); + //鍏堟煡璇㈡簮瀵硅薄 + //PLTabButton tabButton = platformClientUtil.getUIService().getPLTabButtonById(fromOId); + String sourceOId = uiCloneVO.getCloneParam().get("sourceOId"); + if(Func.isBlank(sourceOId)){ + return BaseResult.fail("鏈粠璇锋眰鍙傛暟涓幏鍙栧埌锛屾簮瀵硅薄涓婚敭锛侊紒"); + } + //鍒ゆ柇鏄惁鏈夌洰鏍囦富閿紝濡傛灉娌℃湁灏辫鏄庢槸鍏嬮殕鍒板綋鍓嶉〉闈笅 + if(Func.isBlank(toOId)){ + toOId = fromOId; + } + //鍒ゆ柇鍓嶇鏄惁浼犱簡鍏嬮殕鍚嶈繃鏉ワ紙鎸夐挳杩欒竟涓嶉渶瑕佸悕绉般�佺紪鍙峰垽閲嶏紝鎵�浠ヨ繖涓�鍧楀効閫昏緫蹇界暐锛� + //鎸夐挳鍏锋湁鐖跺瓙绾у叧绯伙紝鎵�浠ヨ繕闇�瑕佸仛oid鍜宲arentOId澶勭悊 + List<PLTabButtonVO> tabButtons = this.getTabButtons(fromOId);//TODO:杩欏効娑夊強鍒拌浆VO鎿嶄綔鍜屽瓙鎸夐挳鏌ヨ鐨勬搷浣滄墍浠ュ緢鎱� + PLTabButtonVO filterTabButton = tabButtons.stream() + .filter(item -> item.getOId().equals(sourceOId)).findFirst().orElse(null); + if(Func.isEmpty(filterTabButton)){ + return BaseResult.fail("鏍规嵁婧愬璞′富閿湭鏌ヨ鍒版簮瀵硅薄锛岃鍒锋柊鍚庨噸璇曪紒锛�"); + } + if(Func.isEmpty(sessionInfo)){ + sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); + } + + //鏀瑰彉button瀵硅薄鐨刼id鍜宲arentOId + this.modifyButtonOIdsAndCopy(filterTabButton,toOId,ObjectUtility.getNewObjectID36()); + + return BaseResult.success("鎸夐挳澶嶅埗鎴愬姛锛�"); + } + + /** + * 淇敼oId鍜宲arentOid锛屼笉鏀瑰彉鐖跺瓙绾э紙oid鍙樻崲parentOId涔熼渶瑕佽窡鐫�鍙樻崲锛夌粨鏋勶紝骞朵繚瀛樻寜閽拰鍏跺弬鏁� + * @param button 闇�瑕佷慨鏀逛富閿繚瀛樼殑鎸夐挳瀵硅薄 + * @param toOId 鎸夐挳鍏宠仈鐨勯〉闈㈠畾涔塷id + * @param newOId 鏂扮殑鎸夐挳瀵硅薄涓婚敭 + * @throws PLException + */ + private void modifyButtonOIdsAndCopy(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 + child.setParentOid(button.getOId()); // 纭繚瀛愬璞$殑parentOid鎸囧悜褰撳墠鐨刼id + modifyButtonOIdsAndCopy(child,toOId, ObjectUtility.getNewObjectID36()); + } + } + } + + /** + * 鑾峰彇椤电杩欎竴灞傜殑鍏宠仈鏁版嵁 + * @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)); + } 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) 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