| | |
| | | import java.util.concurrent.atomic.AtomicInteger; |
| | | import java.util.stream.Collectors; |
| | | import java.util.regex.Pattern; |
| | | import java.util.stream.Stream; |
| | | |
| | | /** |
| | | * UI定义服务界面相关接口 |
| | |
| | | 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()); |
| | |
| | | continue; |
| | | } |
| | | if(plTabButtonVO.getParentOid().equals(plOid)){ |
| | | plTabButtonVO.setChildren(plTabButtonVO2Children(plTabButtonVOList,plOid)); |
| | | plTabButtonVO.setChildren(plTabButtonVO2Children(plTabButtonVOList,plTabButtonVO.getOId())); |
| | | plTabButtonVOS.add(plTabButtonVO); |
| | | } |
| | | } |
| | |
| | | if(success == false) { |
| | | return BaseResult.fail("修改失败!"); |
| | | } |
| | | return BaseResult.fail("修改成功!"); |
| | | return BaseResult.success("修改成功!"); |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | public DataGrid<BizType> getBtmDatasByPage(BaseQueryObject baseQueryObject) throws PLException{ |
| | | BizType[] btmNames = null; |
| | | int start = baseQueryObject.getPage() <= 1 ? 1 : (baseQueryObject.getPage() - 1) * baseQueryObject.getLimit() + 1; |
| | | int end = baseQueryObject.getPage() <= 1 ? baseQueryObject.getLimit() : (baseQueryObject.getPage() * baseQueryObject.getLimit()); |
| | | |
| | | 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 = ""; |
| | |
| | | |
| | | String fromWhere = String.format(" from plbtmtype bt where %s ", where); |
| | | String fromWhereOrderBy = String.format(" %s order by bt.name", fromWhere); |
| | | String 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); |
| | | 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){ |
| | |
| | | */ |
| | | public DataGrid<PLUILayout> getUILayoutDatasByPage(BaseQueryObject baseQueryObject) throws PLException{ |
| | | PLUILayout[] datas = null; |
| | | int start = baseQueryObject.getPage() <= 1 ? 1 : (baseQueryObject.getPage() - 1) * baseQueryObject.getLimit() + 1; |
| | | int end = baseQueryObject.getPage() <= 1 ? baseQueryObject.getLimit() : (baseQueryObject.getPage() * baseQueryObject.getLimit()); |
| | | 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 fromWhere = String.format(" from PLUILAYOUT ui where %s ", where); |
| | | String fromWhereOrderBy = String.format(" %s order by ui.plname", fromWhere); |
| | | String 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); |
| | | 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){ |
| | |
| | | */ |
| | | public DataGrid<PortalVI> getPortalVIDatasByPage(BaseQueryObject baseQueryObject) throws PLException{ |
| | | PortalVI[] datas = null; |
| | | int start = baseQueryObject.getPage() <= 1 ? 1 : (baseQueryObject.getPage() - 1) * baseQueryObject.getLimit() + 1; |
| | | int end = baseQueryObject.getPage() <= 1 ? baseQueryObject.getLimit() : (baseQueryObject.getPage() * baseQueryObject.getLimit()); |
| | | |
| | | 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 "; |
| | | |
| | |
| | | |
| | | String fromWhere = String.format(" from plportalvi vi where %s ", where); |
| | | String fromWhereOrderBy = String.format(" %s order by vi.viname", fromWhere); |
| | | String 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); |
| | | 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){ |
| | |
| | | */ |
| | | public DataGrid<QTInfo> getQTInfoDatasByPage(BaseQueryObject baseQueryObject) throws PLException{ |
| | | QTInfo[] datas = null; |
| | | int start = baseQueryObject.getPage() <= 1 ? 1 : (baseQueryObject.getPage() - 1) * baseQueryObject.getLimit() + 1; |
| | | int end = baseQueryObject.getPage() <= 1 ? baseQueryObject.getLimit() : (baseQueryObject.getPage() * baseQueryObject.getLimit()); |
| | | |
| | | 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 "; |
| | | |
| | |
| | | |
| | | String fromWhere = String.format(" from PL_QTEMPLATE qt where %s ", where); |
| | | String fromWhereOrderBy = String.format(" %s order by qt.qtname ", fromWhere); |
| | | String 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); |
| | | 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){ |
| | |
| | | } |
| | | |
| | | /** |
| | | * 克隆页签 |
| | | * @param uiCloneVO |
| | | * @return |
| | | * @throws Throwable |
| | | */ |
| | | @Override |
| | | public BaseResult clonetabPage(UICloneVO uiCloneVO) throws Throwable { |
| | | VciBaseUtil.alertNotNull(uiCloneVO,"克隆对象",uiCloneVO.getFromOId(),"源关联的UI定义对象的主键"); |
| | | //源关联对象的主键(UI定义的主键) |
| | | String fromOId = uiCloneVO.getFromOId(); |
| | | //克隆到那个UI定义下 |
| | | 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循环出toPageDefMap不存在的复制对象名 |
| | | 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; |
| | | } |
| | | } |
| | | //获取到values的最大值 |
| | | Short currentSeq = toTabPageDefMap.values().stream().max(Comparator.naturalOrder()).get(); |
| | | copyObjSeq = String.valueOf(currentSeq+1); |
| | | } |
| | | //修改关联的UI定义主键、名称、编号、序号 |
| | | 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(); |
| | | //克隆到那个页签下:tabOid |
| | | 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循环出toPageDefMap不存在的复制对象名 |
| | | int i = 1; |
| | | String name = pageDefination.name; |
| | | while(true){ |
| | | copyObjName = name + "_copy(" + i++ + ")"; |
| | | if (!toPageDefMap.containsValue(copyObjName)) { |
| | | break; |
| | | } |
| | | } |
| | | |
| | | //获取到values的最大值 |
| | | 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("页面定义克隆成功!!"); |
| | | } |
| | | //初始化sessionInfo属性 |
| | | 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 |
| | |
| | | */ |
| | | @Override |
| | | public BaseResult cloneTabButton(UICloneVO uiCloneVO) throws Throwable { |
| | | VciBaseUtil.alertNotNull(uiCloneVO,"克隆对象",uiCloneVO.getSourceOId(),"源对象主键"); |
| | | String fromOId = uiCloneVO.getSourceOId(); |
| | | VciBaseUtil.alertNotNull(uiCloneVO,"克隆对象",uiCloneVO.getFromOId(),"源关联对象主键"); |
| | | String fromOId = uiCloneVO.getFromOId(); |
| | | String toOId = uiCloneVO.getToOId(); |
| | | //先查询源对象 |
| | | //PLTabButton tabButton = platformClientUtil.getUIService().getPLTabButtonById(fromOId); |
| | | String sourceTableOId = uiCloneVO.getCloneParam().get("sourceTableOId"); |
| | | if(Func.isBlank(sourceTableOId)){ |
| | | return BaseResult.fail("未从请求参数中获取到,源对象关联的页面定义主键!!"); |
| | | String sourceOId = uiCloneVO.getCloneParam().get("sourceOId"); |
| | | if(Func.isBlank(sourceOId)){ |
| | | return BaseResult.fail("未从请求参数中获取到,源对象主键!!"); |
| | | } |
| | | //判断是否有目标主键,如果没有就说明是克隆到当前页面下 |
| | | if(Func.isBlank(toOId)){ |
| | | toOId = sourceTableOId; |
| | | toOId = fromOId; |
| | | } |
| | | //判断前端是否传了克隆名过来(按钮这边不需要名称、编号判重,所以这一块儿逻辑忽略) |
| | | //按钮具有父子级关系,所以还需要做oid和parentOId处理 |
| | | List<PLTabButtonVO> tabButtons = this.getTabButtons(sourceTableOId); |
| | | List<PLTabButtonVO> tabButtons = this.getTabButtons(fromOId);//TODO:这儿涉及到转VO操作和子按钮查询的操作所以很慢 |
| | | PLTabButtonVO filterTabButton = tabButtons.stream() |
| | | .filter(item -> item.getOId().equals(fromOId)).findFirst().orElse(null); |
| | | .filter(item -> item.getOId().equals(sourceOId)).findFirst().orElse(null); |
| | | if(Func.isEmpty(filterTabButton)){ |
| | | return BaseResult.fail("根据源对象主键未查询到源对象,请刷新后重试!!"); |
| | | } |
| | |
| | | } |
| | | |
| | | //改变button对象的oid和parentOId |
| | | this.modifyButtonIdsAndCopy(filterTabButton,toOId,ObjectUtility.getNewObjectID36()); |
| | | this.modifyButtonOIdsAndCopy(filterTabButton,toOId,ObjectUtility.getNewObjectID36()); |
| | | |
| | | return BaseResult.success("按钮复制成功!"); |
| | | } |
| | | |
| | | /** |
| | | * 修改oId和parentOid,不改变父子级(oid变换parentOId也需要跟着变换)结构,并保存按钮和其参数 |
| | | * @param button |
| | | * @param newOId |
| | | * @param button 需要修改主键保存的按钮对象 |
| | | * @param toOId 按钮关联的页面定义oid |
| | | * @param newOId 新的按钮对象主键 |
| | | * @throws PLException |
| | | */ |
| | | private void modifyButtonIdsAndCopy(PLTabButtonVO button,String toOId, String newOId) throws PLException { |
| | | private void modifyButtonOIdsAndCopy(PLTabButtonVO button,String toOId, String newOId) throws PLException { |
| | | if (button == null) { |
| | | return; |
| | | } |
| | |
| | | // 递归遍历子节点 |
| | | if (button.getChildren() != null) { |
| | | for (PLTabButtonVO child : button.getChildren()) { |
| | | |
| | | // 子对象的 parentOid 设置为当前节点的新oid |
| | | modifyButtonIdsAndCopy(child,toOId, ObjectUtility.getNewObjectID36()); |
| | | child.setParentOid(button.getOId()); // 确保子对象的parentOid指向当前的oid |
| | | modifyButtonOIdsAndCopy(child,toOId, ObjectUtility.getNewObjectID36()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 克隆页签 |
| | | * @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; |
| | | } |
| | | |
| | | /** |
| | |
| | | tabTree.setParentId(uiLayoutOid); |
| | | if(!level.equalsIgnoreCase("tab")){ |
| | | try { |
| | | tabTree.setChildren(this.getPageDefChildren(tabPage.plOId,level)); |
| | | tabTree.setChildren(this.getPageDefChildren(tabPage.plOId)); |
| | | } catch (PLException e) { |
| | | e.printStackTrace(); |
| | | String exceptionMessage = "查询页面定义时出现错误:"+VciBaseUtil.getExceptionMessage(e); |
| | |
| | | * 获取页面定义这一层的关联数据 |
| | | * @return |
| | | */ |
| | | private List<Tree> getPageDefChildren(String tabPageOid,String level) throws PLException { |
| | | private List<Tree> getPageDefChildren(String tabPageOid) throws PLException { |
| | | List<Tree> pageDefChildren = new ArrayList<>(); |
| | | if(Func.isNotBlank(tabPageOid)){ |
| | | PLPageDefination[] pageDefs = platformClientUtil.getUIService().getPLPageDefinationsByPageContextOId(tabPageOid); |