| | |
| | | package com.vci.web.service.impl; |
| | | |
| | | import com.sun.jnlp.ApiDialog; |
| | | import com.vci.client.mw.ClientContextVariable; |
| | | import com.vci.common.qt.object.QTConstants; |
| | | import com.vci.common.utility.ObjectUtility; |
| | | import com.vci.corba.common.PLException; |
| | | 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; |
| | | import com.vci.dto.UIAuthorDTO; |
| | | import com.vci.frameworkcore.compatibility.SmRoleQueryServiceI; |
| | | import com.vci.pagemodel.OsBtmTypeVO; |
| | | import com.vci.model.PLDefination; |
| | | import com.vci.pagemodel.PLDefinationVO; |
| | | import com.vci.pagemodel.PLUILayoutCloneVO; |
| | | import com.vci.pagemodel.RoleRightVO; |
| | | import com.vci.pagemodel.*; |
| | | import com.vci.starter.poi.bo.*; |
| | | import com.vci.starter.poi.util.ExcelUtil; |
| | | import com.vci.starter.web.exception.VciBaseException; |
| | | import com.vci.starter.web.pagemodel.*; |
| | | import com.vci.starter.web.pagemodel.BaseQueryObject; |
| | | import com.vci.starter.web.pagemodel.BaseResult; |
| | | import com.vci.starter.web.pagemodel.DataGrid; |
| | | import com.vci.starter.web.pagemodel.SessionInfo; |
| | | import com.vci.starter.web.util.VciBaseUtil; |
| | | import com.vci.starter.web.util.VciDateUtil; |
| | | import com.vci.starter.web.util.WebThreadLocalUtil; |
| | | import com.vci.starter.web.redis.RedisService; |
| | | import com.vci.starter.web.util.*; |
| | | import com.vci.starter.web.util.Lcm.BeanUtil; |
| | | import com.vci.starter.web.util.Lcm.CollectionUtil; |
| | | import com.vci.starter.web.util.Lcm.Func; |
| | | import com.vci.web.service.OsBtmServiceI; |
| | | import com.vci.web.service.UIManagerServiceI; |
| | | import com.vci.web.util.*; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.apache.poi.ss.formula.functions.T; |
| | | import com.vci.web.util.Func; |
| | | import com.vci.web.util.PlatformClientUtil; |
| | | import com.vci.web.util.RightControlUtil; |
| | | import com.vci.web.util.UITools; |
| | | import com.vci.web.utility.UIDataFetcher; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.NoArgsConstructor; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import javax.swing.*; |
| | | import javax.swing.text.JTextComponent; |
| | | import java.io.IOException; |
| | | import java.io.File; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | import java.util.stream.Stream; |
| | | import java.util.*; |
| | | import java.util.concurrent.TimeUnit; |
| | | import java.util.concurrent.atomic.AtomicInteger; |
| | | import java.util.regex.Pattern; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * UI定义服务界面相关接口 |
| | | * UI定义管理服务界面相关接口 |
| | | * @author ludc |
| | | * @date 2024/8/28 17:05 |
| | | */ |
| | |
| | | private PlatformClientUtil platformClientUtil; |
| | | |
| | | /** |
| | | * 角色 |
| | | * 缓存工具 |
| | | */ |
| | | @Resource |
| | | private SmRoleQueryServiceI smRoleQueryServiceI; |
| | | private RedisService redisService; |
| | | |
| | | /*** |
| | | * 是否是管理员 |
| | | */ |
| | | @Autowired |
| | | RightControlUtil rightControlUtil; |
| | | |
| | | /** |
| | | * 业务类型 |
| | |
| | | * 日志 |
| | | */ |
| | | private Logger logger = LoggerFactory.getLogger(getClass()); |
| | | |
| | | /** |
| | | * 导入数据的sheet集合 |
| | | */ |
| | | private final String IMPORTUIKEY = "importUIKey:"; |
| | | |
| | | /** |
| | | * ui定义数据引擎 |
| | | */ |
| | | private UIDataFetcher uiDataFetcher = null; |
| | | |
| | | /** |
| | | * 排序比较器 |
| | |
| | | } |
| | | |
| | | /** |
| | | * ton通过业务类型和名称查询 |
| | | * 通过业务类型和名称查询 |
| | | * @param btemName |
| | | * @param context |
| | | * @return |
| | |
| | | public List<PLUILayout> getUIContextDataByBtName(String btemName,String context) throws PLException { |
| | | VciBaseUtil.alertNotNull(btemName,"业务类型"); |
| | | List<PLUILayout> pluiLayoutList=new ArrayList<>(); |
| | | List<String> contextList= VciBaseUtil.str2List(context); |
| | | List<String> contextList= new ArrayList<>(); |
| | | if(StringUtils.isNotBlank(context)){ |
| | | contextList=VciBaseUtil.str2List(context); |
| | | }else{ |
| | | contextList.add(""); |
| | | } |
| | | contextList.stream().forEach(code->{ |
| | | PLUILayout[] pluiLayouts= new PLUILayout[0]; |
| | | PLUILayout[] pluiLayouts= new PLUILayout[0]; |
| | | try { |
| | | pluiLayouts = platformClientUtil.getUIService().getPLUILayoutEntityByTypeAndCode(btemName,code); |
| | | } catch (PLException e) { |
| | |
| | | } |
| | | |
| | | /** |
| | | * 根据勾选的条件获取需要导出的ui上下文树 |
| | | * @param expDatas |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Tree getExpContextTree(List<String> expDatas) { |
| | | VciBaseUtil.alertNotNull(expDatas,"导出查询列表"); |
| | | Tree tree = new Tree(); |
| | | String newObjectID36 = ObjectUtility.getNewObjectID36(); |
| | | tree.setOid(newObjectID36); |
| | | tree.setText("区域"); |
| | | tree.setLevel(0); |
| | | List<Tree> treeList = new ArrayList<>(); |
| | | expDatas.stream().forEach(oid->{ |
| | | try { |
| | | PLUILayout pluiLayout = platformClientUtil.getUIService().getPLUILayoutById(oid); |
| | | if(Func.isNotEmpty(pluiLayout) && Func.isNotBlank(pluiLayout.plOId)){ |
| | | Tree tree1 = new Tree(); |
| | | tree1.setText(pluiLayout.plName); |
| | | tree1.setOid(pluiLayout.plOId); |
| | | tree1.setLevel(1); |
| | | tree1.setParentId(newObjectID36); |
| | | //查询 |
| | | PLTabPage[] plTabPages = platformClientUtil.getUIService().getPLTabPagesByPageDefinationOId(pluiLayout.plOId); |
| | | List<Tree> treeChildrens = new ArrayList<>(); |
| | | Arrays.stream(plTabPages).forEach(item->{ |
| | | Tree tree2 = new Tree(); |
| | | tree2.setLeaf(true); |
| | | tree2.setOid(item.plOId); |
| | | tree2.setText(item.plName); |
| | | tree2.setLevel(2); |
| | | tree2.setParentId(item.plContextOId); |
| | | treeChildrens.add(tree2); |
| | | }); |
| | | tree1.setChildren(treeChildrens); |
| | | treeList.add(tree1); |
| | | } |
| | | } catch (PLException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | }); |
| | | |
| | | tree.setChildren(treeList); |
| | | return tree; |
| | | } |
| | | |
| | | /** |
| | | * 导出ui上下文(勾选的要导出的控制区的数据) |
| | | * oids |
| | | * @return |
| | | */ |
| | | @Override |
| | | public void expUIContextData(String[] oids, HttpServletResponse response) throws PLException, IOException { |
| | | public String expUIContextData(Map<String,String> expConditionMap) throws PLException { |
| | | if(Func.isEmpty(expConditionMap)){ |
| | | throw new PLException("500",new String[]{"请勾选要导出的UI上下文数据!"}); |
| | | } |
| | | //界面没传名称,使用默认导出名称 |
| | | String exportFileName = "UI上下文导出_" + Func.format(new Date(),"yyyy-MM-dd HHmmss.sss"); |
| | | //设置列名 |
| | | /*List<String> columns = Arrays.asList( |
| | | "所属业务类型","名称", "UI上下文", "导航区", "控制区","操作区", |
| | | "页签序号","区域编码","区域名称","是否启用","显示表达式", "UI解析类", |
| | | "扩展属性", "描述","页面设计信息","页面下配置的按钮" |
| | | );*/ |
| | | |
| | | //写excel |
| | | String excelPath = LocalFileUtil.getDefaultTempFolder() + File.separator + exportFileName + ".xls"; |
| | | try { |
| | | new File(excelPath).createNewFile(); |
| | | } catch (Throwable e) { |
| | | throw new VciBaseException(LangBaseUtil.getErrorMsg(e), new String[]{excelPath}, e); |
| | | } |
| | | //设置列 |
| | | List<WriteExcelData> pldDataList = new ArrayList<>(); |
| | | List<WriteExcelData> tpDataList = new ArrayList<>(); |
| | | List<WriteExcelData> pdDataList = new ArrayList<>(); |
| | | List<WriteExcelData> tbDataList = new ArrayList<>(); |
| | | List<WriteExcelData> cpDataList = new ArrayList<>(); |
| | | //设置列头 |
| | | /*for (int index = 0; index < columns.size(); index++) { |
| | | excelDataList.add(new WriteExcelData(0,index, columns.get(index))); |
| | | }*/ |
| | | AtomicInteger pldRow = new AtomicInteger(0); |
| | | AtomicInteger tpRow = new AtomicInteger(0); |
| | | AtomicInteger pdRow = new AtomicInteger(0); |
| | | AtomicInteger tbRow = new AtomicInteger(0); |
| | | AtomicInteger cpRow = new AtomicInteger(0); |
| | | |
| | | expConditionMap.entrySet().stream().forEach(item->{ |
| | | //key存放的ui上下文的id |
| | | try { |
| | | PLUILayout pluiLayout = platformClientUtil.getUIService().getPLUILayoutById(item.getKey()); |
| | | pldDataList.add(new WriteExcelData(pldRow.get(),0, pluiLayout.plOId)); |
| | | pldDataList.add(new WriteExcelData(pldRow.get(),1, pluiLayout.plCode)); |
| | | pldDataList.add(new WriteExcelData(pldRow.get(),2, pluiLayout.plName)); |
| | | pldDataList.add(new WriteExcelData(pldRow.get(),3, pluiLayout.plRelatedType)); |
| | | pldDataList.add(new WriteExcelData(pldRow.get(),4, pluiLayout.plIsShowForm)); |
| | | pldDataList.add(new WriteExcelData(pldRow.get(),5, pluiLayout.plIsShowNavigator)); |
| | | pldDataList.add(new WriteExcelData(pldRow.get(),6, pluiLayout.plIsShowTab)); |
| | | pldRow.getAndIncrement(); |
| | | |
| | | //value中存放的多个以逗号间隔的页签id,通过这个id查询出其下的页面设计和按钮配置 |
| | | List<String> plTabPageOIds = Arrays.asList(item.getValue().split(",")); |
| | | if(Func.isNotEmpty(pluiLayout) && Func.isNotBlank(pluiLayout.plOId) && Func.isNotEmpty(plTabPageOIds)){ |
| | | PLTabPage[] plTabPages = platformClientUtil.getUIService().getPLTabPagesByPageDefinationOId(pluiLayout.plOId); |
| | | List<PLTabPage> filterTabPages = Arrays.stream(plTabPages).filter(plTabPage -> plTabPageOIds.contains(plTabPage.plOId)).collect(Collectors.toList()); |
| | | filterTabPages.stream().forEach(tabPage->{ |
| | | //区域定义 |
| | | tpDataList.add(new WriteExcelData(tpRow.get(),0, tabPage.plOId)); |
| | | tpDataList.add(new WriteExcelData(tpRow.get(),1, tabPage.plSeq)); |
| | | tpDataList.add(new WriteExcelData(tpRow.get(),2, tabPage.plCode)); |
| | | tpDataList.add(new WriteExcelData(tpRow.get(),3, tabPage.plLabel)); |
| | | tpDataList.add(new WriteExcelData(tpRow.get(),4, tabPage.plName)); |
| | | tpDataList.add(new WriteExcelData(tpRow.get(),5, tabPage.plContextOId)); |
| | | tpDataList.add(new WriteExcelData(tpRow.get(),6, tabPage.plAreaType)); |
| | | tpDataList.add(new WriteExcelData(tpRow.get(),7, tabPage.plIsOpen)); |
| | | tpDataList.add(new WriteExcelData(tpRow.get(),8, tabPage.plOpenExpression)); |
| | | tpDataList.add(new WriteExcelData(tpRow.get(),9, tabPage.plUIParser)); |
| | | tpDataList.add(new WriteExcelData(tpRow.get(),10, tabPage.plExtAttr)); |
| | | tpDataList.add(new WriteExcelData(tpRow.get(),11, tabPage.plDesc)); |
| | | tpDataList.add(new WriteExcelData(tpRow.get(),12, tabPage.plLicensOrs)); |
| | | tpRow.getAndIncrement(); |
| | | try { |
| | | PLPageDefination[] plPageDefinations = platformClientUtil.getUIService().getPLPageDefinationsByPageContextOId(tabPage.plOId); |
| | | if(Func.isNotEmpty(plPageDefinations)){ |
| | | //List<PLTabButtonVO> tabButtonsTotal = new ArrayList<>(); |
| | | Arrays.stream(plPageDefinations).forEach(plPageDefination->{ |
| | | pdDataList.add(new WriteExcelData(pdRow.get(),0, plPageDefination.plOId)); |
| | | pdDataList.add(new WriteExcelData(pdRow.get(),1, plPageDefination.plTabPageOId)); |
| | | pdDataList.add(new WriteExcelData(pdRow.get(),2, plPageDefination.plType)); |
| | | pdDataList.add(new WriteExcelData(pdRow.get(),3, plPageDefination.name)); |
| | | pdDataList.add(new WriteExcelData(pdRow.get(),4, plPageDefination.desc)); |
| | | pdDataList.add(new WriteExcelData(pdRow.get(),5, plPageDefination.seq)); |
| | | pdDataList.add(new WriteExcelData(pdRow.get(),6, plPageDefination.plDefination)); |
| | | pdRow.getAndIncrement(); |
| | | //查询按钮 |
| | | try { |
| | | PLTabButton[] tabButtons = platformClientUtil.getUIService().getPLTabButtonsByTableOId(plPageDefination.plOId); |
| | | for (PLTabButton tabButton:tabButtons){ |
| | | tbDataList.add(new WriteExcelData(tbRow.get(),0, tabButton.plOId)); |
| | | tbDataList.add(new WriteExcelData(tbRow.get(),1, tabButton.plTableOId)); |
| | | tbDataList.add(new WriteExcelData(tbRow.get(),2, tabButton.plPageOId)); |
| | | tbDataList.add(new WriteExcelData(tbRow.get(),3, tabButton.plActionOId)); |
| | | tbDataList.add(new WriteExcelData(tbRow.get(),4, tabButton.plLabel)); |
| | | tbDataList.add(new WriteExcelData(tbRow.get(),5, tabButton.plAreaType)); |
| | | tbDataList.add(new WriteExcelData(tbRow.get(),6, tabButton.plDesc)); |
| | | tbDataList.add(new WriteExcelData(tbRow.get(),7, tabButton.plSeq)); |
| | | tbDataList.add(new WriteExcelData(tbRow.get(),8, tabButton.plParentOid)); |
| | | tbDataList.add(new WriteExcelData(tbRow.get(),9, tabButton.displayMode)); |
| | | tbDataList.add(new WriteExcelData(tbRow.get(),10, tabButton.iconPath)); |
| | | tbDataList.add(new WriteExcelData(tbRow.get(),11, tabButton.authorization)); |
| | | tbDataList.add(new WriteExcelData(tbRow.get(),12, tabButton.show)); |
| | | tbRow.getAndIncrement(); |
| | | PLCommandParameter[] parameters = platformClientUtil.getUIService().getPLCommandParametersByCommandOId(tabButton.plOId); |
| | | if(Func.isNotEmpty(parameters)){ |
| | | Arrays.stream(parameters).forEach(param->{ |
| | | cpDataList.add(new WriteExcelData(cpRow.get(),0, param.plOId)); |
| | | cpDataList.add(new WriteExcelData(cpRow.get(),1, param.plCommandOId)); |
| | | cpDataList.add(new WriteExcelData(cpRow.get(),2, param.plKey)); |
| | | cpDataList.add(new WriteExcelData(cpRow.get(),3, param.plValue)); |
| | | cpRow.getAndIncrement(); |
| | | }); |
| | | } |
| | | } |
| | | } catch (PLException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | }); |
| | | } |
| | | } catch (PLException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | }); |
| | | } |
| | | } catch (PLException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | }); |
| | | WriteExcelOption excelOption = new WriteExcelOption(); |
| | | excelOption.addSheetDataList("PlpageLayoutDefnation",pldDataList); |
| | | excelOption.addSheetDataList("Pltabpage",tpDataList); |
| | | excelOption.addSheetDataList("Plpagedefination",pdDataList); |
| | | excelOption.addSheetDataList("Pltabbutton",tbDataList); |
| | | excelOption.addSheetDataList("PlcommondParam",cpDataList); |
| | | ExcelUtil.writeDataToFile(excelPath, excelOption); |
| | | return excelPath; |
| | | } |
| | | |
| | | /** |
| | | * 导入UI上下文 |
| | | * @param file |
| | | * @param isCovered 是否覆盖 |
| | | * @param selectBtm 选择的业务类型 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public BaseResult impUIContextData(MultipartFile file) { |
| | | return null; |
| | | public BaseResult impUIContextData(File file,boolean isCovered,String selectBtm) { |
| | | if(!isCovered){ |
| | | VciBaseUtil.alertNotNull(file,"excel文件"); |
| | | if(!file.exists()){ |
| | | throw new VciBaseException("导入的excel文件不存在,{0}",new String[]{file.getPath()}); |
| | | } |
| | | } |
| | | |
| | | try { |
| | | List<SheetDataSet> sheetDataSets = null; |
| | | SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); |
| | | //是覆盖操作,所以直接读取 |
| | | if(isCovered){ |
| | | sheetDataSets = redisService.getCacheList(IMPORTUIKEY + sessionInfo.getUserId()); |
| | | if(Func.isEmpty(sheetDataSets)){ |
| | | throw new VciBaseException("从缓存中未获取到导入的数据,请刷新后重试!!"); |
| | | } |
| | | }else{ |
| | | //读取excel表 |
| | | ReadExcelOption readExcelOption = new ReadExcelOption(); |
| | | readExcelOption.setReadAllSheet(true); //读取全部的sheet |
| | | sheetDataSets = ExcelUtil.readDataObjectFromExcel(file,SheetDataSet.class,readExcelOption); |
| | | } |
| | | |
| | | PLUILayout[] plpagelayoutdefinations = null; |
| | | |
| | | SheetDataSet plpagelayoutdefnationsheet = sheetDataSets.get(0); |
| | | SheetDataSet pltabpagesheet = sheetDataSets.get(1); |
| | | SheetDataSet plpagedefinationsheet = sheetDataSets.get(2); |
| | | SheetDataSet pltabbuttonsheet = sheetDataSets.get(3); |
| | | SheetDataSet plcommondparamsheet = sheetDataSets.get(4); |
| | | |
| | | Map<PLUILayout,List<PLTabPage>> pdMap = new HashMap<>(); |
| | | Map<PLTabPage,List<PLPageDefination>> tdMap = new HashMap<>(); |
| | | Map<PLPageDefination,List<PLTabButton>> dbMap = new HashMap<>(); |
| | | Map<PLTabButton,List<PLCommandParameter>> bcMap = new HashMap<>(); |
| | | |
| | | List<PLUILayout> plpagelayoutdefinationList = new ArrayList<>(); |
| | | List<PLTabPage> pltabpagelist = new ArrayList<>(); |
| | | List<PLPageDefination> plpagedefinationlist = new ArrayList<>(); |
| | | List<PLTabButton> pltabbuttonlist = new ArrayList<>(); |
| | | List<PLCommandParameter> plcommandparameterlist = new ArrayList<>(); |
| | | |
| | | /*StringBuffer checkplpagelayoutdefination = new StringBuffer(); |
| | | StringBuffer checkplpagelayoutdefinationPlcode = new StringBuffer();*/ |
| | | StringBuffer plActionIDNulls = new StringBuffer(); |
| | | |
| | | //add by caill start 初始化标记 |
| | | int count=0; |
| | | int preCount=0; |
| | | String preOID=""; |
| | | String doublePreOID=""; |
| | | String plpageLayoutDefinationId=""; |
| | | String plPageContextOId=""; |
| | | String plCommandOId=""; |
| | | String plTableOId=""; |
| | | |
| | | //add by caill end |
| | | PLAction[] allPLAction = platformClientUtil.getUIService().getAllPLAction(); |
| | | Map<String,String> relation = null; |
| | | List<SheetRowData> rowData = plpagelayoutdefnationsheet.getRowData(); |
| | | for(int i=0; i<rowData.size(); i++){ |
| | | pltabpagelist = new ArrayList<PLTabPage>(); |
| | | PLUILayout p = new PLUILayout(); |
| | | //HSSFRow readrow = plpagelayoutdefnationsheet.getRowData(); |
| | | Map<Integer, String> dataMap = rowData.get(i).getData(); |
| | | if(Func.isEmpty(dataMap)){ |
| | | break; |
| | | } |
| | | //根据业务类型查询ui上下文 |
| | | plpagelayoutdefinations = platformClientUtil.getUIService().getPLUILayoutsByRelatedType(selectBtm); |
| | | |
| | | p.plOId = ObjectUtility.getNewObjectID36(); |
| | | p.plCode = dataMap.get(1); |
| | | p.plName = dataMap.get(2); |
| | | //add by caill start |
| | | //遍历UI名称 |
| | | for(PLUILayout pd : plpagelayoutdefinations){ |
| | | if(pd.plName.equals(p.plName) && !isCovered){ |
| | | //如果用户选择覆盖,第二次调用就不会传导入文件,所以这里存入缓存 |
| | | redisService.setCacheList(IMPORTUIKEY+sessionInfo.getUserId(),sheetDataSets); |
| | | //设置过期时间为5分钟,因为一般情况下不会说是等太久 |
| | | redisService.expire(IMPORTUIKEY+sessionInfo.getUserId(),5, TimeUnit.MINUTES); |
| | | throw new VciBaseException(pd.plName+"名称已经存在,是否覆盖?"); |
| | | } |
| | | //根据UI上下文做判断 |
| | | if(pd.plCode.equals(p.plCode)){ |
| | | count=1; |
| | | preOID=pd.plOId; //如果UI上下文相同,就把系统中的id赋值给新导入的id |
| | | p.plOId=pd.plOId; |
| | | } |
| | | } |
| | | //add by caill end |
| | | plpageLayoutDefinationId = dataMap.get(0); |
| | | String name = dataMap.get(3); |
| | | p.plRelatedType = dataMap.get(3); |
| | | p.plIsShowNavigator = Short.parseShort(dataMap.get(4)); |
| | | p.plIsShowTab = Short.parseShort(dataMap.get(5)); |
| | | p.plIsShowForm = Short.parseShort(dataMap.get(6)); |
| | | //选择的和导入的业务类型节点不一致 |
| | | if(!selectBtm.equals(name)){ |
| | | throw new VciBaseException("请选择要导入的类型节点名称!"); |
| | | } |
| | | |
| | | plpagelayoutdefinationList.add(p); |
| | | |
| | | //区域定义sheet处理 |
| | | List<SheetRowData> tabPageRowData = pltabpagesheet.getRowData(); |
| | | if(Func.isNotEmpty(tabPageRowData)){ |
| | | for(int j=0; j<tabPageRowData.size(); j++){ |
| | | plpagedefinationlist = new ArrayList<PLPageDefination>(); |
| | | PLTabPage pt = new PLTabPage(); |
| | | Map<Integer, String> tabPageDataMap = tabPageRowData.get(j).getData(); |
| | | if(Func.isEmpty(tabPageDataMap)){ |
| | | break; |
| | | } |
| | | pt.plOId = ObjectUtility.getNewObjectID36(); |
| | | pt.plCode = tabPageDataMap.get(2); |
| | | pt.plName = tabPageDataMap.get(4); |
| | | //add by caill start |
| | | if(count==1) { |
| | | PLTabPage[] PLTabPages = platformClientUtil.getUIService().getPLTabPagesByPageDefinationOId(preOID); |
| | | //遍历控制区表格 |
| | | for(PLTabPage pl : PLTabPages){ |
| | | if(pl.plCode.equals(pt.plCode)){ |
| | | pt.plOId=pl.plOId; //如果控制区表格的编码和导入的编码一样,就把控制区id赋值给新导入的id |
| | | preCount=1; |
| | | doublePreOID=pl.plOId; |
| | | } |
| | | } |
| | | } |
| | | //add by caill end |
| | | pt.plSeq = Short.parseShort(tabPageDataMap.get(1)); |
| | | pt.plLabel = tabPageDataMap.get(3); |
| | | pt.plContextOId = tabPageDataMap.get(5); |
| | | pt.plAreaType = Short.parseShort(tabPageDataMap.get(6)); |
| | | pt.plIsOpen = Short.parseShort(tabPageDataMap.get(7)); |
| | | pt.plOpenExpression = tabPageDataMap.get(8); |
| | | pt.plUIParser = tabPageDataMap.get(9); |
| | | pt.plExtAttr = tabPageDataMap.get(10); |
| | | pt.plDesc = tabPageDataMap.get(11); |
| | | pt.plLicensOrs = tabPageDataMap.get(12); |
| | | plPageContextOId = tabPageDataMap.get(5); |
| | | if(pt.plContextOId.equals(plpageLayoutDefinationId)){ |
| | | pt.plContextOId = p.plOId; |
| | | pltabpagelist.add(pt); |
| | | //页面设计处理 |
| | | List<SheetRowData> pagedefinationRowData = plpagedefinationsheet.getRowData(); |
| | | if(Func.isNotEmpty(pagedefinationRowData)){ |
| | | for(int k=0;k<pagedefinationRowData.size();k++){ |
| | | pltabbuttonlist = new ArrayList<>(); |
| | | PLPageDefination plpagedefination = new PLPageDefination(); |
| | | Map<Integer, String> pagedefinationDataMap = pagedefinationRowData.get(k).getData(); |
| | | |
| | | if(Func.isEmpty(pagedefinationDataMap)){ |
| | | break; |
| | | } |
| | | plpagedefination.plOId = ObjectUtility.getNewObjectID36(); |
| | | plpagedefination.name = pagedefinationDataMap.get(3); |
| | | //add by caill start |
| | | //最后一级的判断 |
| | | if(preCount==1) { |
| | | PLPageDefination[] PLPageDefinations = platformClientUtil.getUIService().getPLPageDefinationsByPageContextOId(doublePreOID); |
| | | for(PLPageDefination plp : PLPageDefinations) { |
| | | if(plp.name.equals(plpagedefination.name)) { |
| | | plpagedefination.plOId=plp.plOId; |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | | //add by caill end |
| | | plpagedefination.plDefination = pagedefinationDataMap.get(6); |
| | | plpagedefination.seq = Short.parseShort(pagedefinationDataMap.get(5)); |
| | | plpagedefination.plTabPageOId = pagedefinationDataMap.get(1); |
| | | plpagedefination.desc = pagedefinationDataMap.get(4); |
| | | plpagedefination.plType = Short.parseShort(pagedefinationDataMap.get(2)); |
| | | plTableOId = pagedefinationDataMap.get(1); |
| | | if(plpagedefination.plTabPageOId.equals(plPageContextOId)){ |
| | | plpagedefination.plTabPageOId = pt.plOId; |
| | | plpagedefinationlist.add(plpagedefination); |
| | | //保存新旧oid的关系,在确定层级关系时使用 |
| | | relation = new HashMap<String,String>(); |
| | | List<SheetRowData> tabbuttonRowData = pltabbuttonsheet.getRowData(); |
| | | if(Func.isNotEmpty(tabbuttonRowData)){ |
| | | for(int a=0;a<tabbuttonRowData.size();a++){ |
| | | Map<Integer, String> tabbuttonDataMap = tabbuttonRowData.get(a).getData(); |
| | | if(Func.isNotEmpty(tabbuttonDataMap)){ |
| | | plCommandOId = tabbuttonDataMap.get(1); |
| | | String newOId = ObjectUtility.getNewObjectID36(); |
| | | relation.put(plCommandOId, newOId); |
| | | } |
| | | } |
| | | for(int a=0;a<tabbuttonRowData.size();a++){ |
| | | plcommandparameterlist = new ArrayList<PLCommandParameter>(); |
| | | PLTabButton plTabButton = new PLTabButton(); |
| | | Map<Integer, String> tabbuttonDataMap = tabbuttonRowData.get(a).getData(); |
| | | if(Func.isEmpty(tabbuttonDataMap)){ |
| | | break; |
| | | } |
| | | plTabButton.plOId = ObjectUtility.getNewObjectID36(); |
| | | plTabButton.plLabel = tabbuttonDataMap.get(4); |
| | | plTabButton.plAreaType = tabbuttonDataMap.get(5); |
| | | plTabButton.plTableOId = tabbuttonDataMap.get(1); |
| | | plTabButton.plSeq = Short.parseShort(tabbuttonDataMap.get(7)); |
| | | String plActionId = ""; |
| | | //PLAction[] allPLAction = Tool.getService().getAllPLAction(); |
| | | for(PLAction action : allPLAction){ |
| | | if((tabbuttonDataMap.get(3)!=null&&!"".equals(tabbuttonDataMap.get(3)) |
| | | )&&(tabbuttonDataMap.get(3).trim().equals(action.plCode.trim())) |
| | | ){ |
| | | plActionId = action.plOId; |
| | | break; |
| | | } |
| | | } |
| | | if(plActionId==null||"".equals(plActionId)){ |
| | | if(!plActionIDNulls.toString().contains(tabbuttonDataMap.get(3))){ |
| | | plActionIDNulls.append("\n\tAction编号:"+tabbuttonDataMap.get(3)); |
| | | } |
| | | } |
| | | plTabButton.plActionOId = plActionId; |
| | | plTabButton.plAreaType = tabbuttonDataMap.get(5); |
| | | plTabButton.plDesc = tabbuttonDataMap.get(6); |
| | | String parentOid = tabbuttonDataMap.get(8);//父oid |
| | | plCommandOId = tabbuttonDataMap.get(1); |
| | | plTabButton.displayMode = tabbuttonDataMap.get(9); |
| | | plTabButton.iconPath = tabbuttonDataMap.get(10); |
| | | plTabButton.authorization = tabbuttonDataMap.get(11); |
| | | plTabButton.show = tabbuttonDataMap.get(12); |
| | | |
| | | //赋予保存好的值,来保证层级关系不会丢失 |
| | | plTabButton.plOId = relation.get(plCommandOId); |
| | | if(parentOid != null && parentOid.length() > 0) { |
| | | plTabButton.plParentOid = |
| | | relation.get(parentOid) == null ? "" : relation.get(parentOid); |
| | | } |
| | | if(plTabButton.plTableOId.equals(plTableOId)){ |
| | | plTabButton.plTableOId = plpagedefination.plOId; |
| | | pltabbuttonlist.add(plTabButton); |
| | | List<SheetRowData> commondparamsRowData = plcommondparamsheet.getRowData(); |
| | | if(Func.isNotEmpty(commondparamsRowData)){ |
| | | for(int b=0;b<commondparamsRowData.size();b++){ |
| | | PLCommandParameter plCommandParameter = new PLCommandParameter(); |
| | | Map<Integer, String> commandParameterDataMap = commondparamsRowData.get(b).getData(); |
| | | if(Func.isEmpty(commandParameterDataMap)){ |
| | | break; |
| | | } |
| | | plCommandParameter.plOId = ObjectUtility.getNewObjectID36(); |
| | | plCommandParameter.plCommandOId = commandParameterDataMap.get(1); |
| | | plCommandParameter.plKey = commandParameterDataMap.get(2); |
| | | plCommandParameter.plValue = commandParameterDataMap.get(3); |
| | | if(plCommandParameter.plCommandOId.equals(plCommandOId)){ |
| | | plCommandParameter.plCommandOId = plTabButton.plOId; |
| | | plcommandparameterlist.add(plCommandParameter); |
| | | } |
| | | } |
| | | bcMap.put(plTabButton, plcommandparameterlist); |
| | | } |
| | | } |
| | | } |
| | | dbMap.put(plpagedefination, pltabbuttonlist); |
| | | } |
| | | } |
| | | } |
| | | tdMap.put(pt, plpagedefinationlist); |
| | | } |
| | | } |
| | | } |
| | | pdMap.put(p, pltabpagelist); |
| | | } |
| | | } |
| | | |
| | | if(plActionIDNulls.length()>0){ |
| | | throw new VciBaseException(plActionIDNulls.toString()+"不存在!"); |
| | | } |
| | | |
| | | //删除原有button数据 |
| | | if(tdMap.size() > 0) { |
| | | for(List<PLPageDefination> list : tdMap.values()) { |
| | | for(PLPageDefination ppd : list) { |
| | | if(ppd.plOId != null && ppd.plOId.length() > 0) { |
| | | PLTabButton[] buttons = platformClientUtil.getUIService().getPLTabButtonsByTableOId(ppd.plOId); |
| | | if(buttons != null && buttons.length > 0) { |
| | | for(PLTabButton ptb : buttons) { |
| | | platformClientUtil.getUIService().deletePLTabButtonByID(ptb.plOId); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | for(PLUILayout plPageLayoutDefination : plpagelayoutdefinationList){ |
| | | List<PLTabPage> pltabpagelists = pdMap.get(plPageLayoutDefination); |
| | | for(PLTabPage pltabpage:pltabpagelists){ |
| | | List<PLPageDefination> plpagedefinationlists = tdMap.get(pltabpage); |
| | | for(PLPageDefination plpagedefination : plpagedefinationlists){ |
| | | List<PLTabButton> pltabbuttons = dbMap.get(plpagedefination); |
| | | for(PLTabButton pltabbutton : pltabbuttons){ |
| | | List<PLCommandParameter> plcommandParams = bcMap.get(pltabbutton); |
| | | for(PLCommandParameter plcommandparameter : plcommandParams){ |
| | | plcommandparameter.plCreateUser = sessionInfo.getUserId(); |
| | | plcommandparameter.plModifyUser = sessionInfo.getUserId(); |
| | | platformClientUtil.getUIService().savePLCommandParameter(plcommandparameter); |
| | | } |
| | | pltabbutton.plCreateUser = sessionInfo.getUserId(); |
| | | pltabbutton.plModifyUser = sessionInfo.getUserId(); |
| | | platformClientUtil.getUIService().savePLTabButton(pltabbutton); |
| | | } |
| | | platformClientUtil.getUIService().savePLPageDefination(plpagedefination); |
| | | } |
| | | pltabpage.plCreateUser = sessionInfo.getUserId(); |
| | | pltabpage.plModifyUser = sessionInfo.getUserId(); |
| | | platformClientUtil.getUIService().savePLTabPage(pltabpage); |
| | | } |
| | | plPageLayoutDefination.plCreateUser = sessionInfo.getUserId(); |
| | | plPageLayoutDefination.plModifyUser = sessionInfo.getUserId(); |
| | | platformClientUtil.getUIService().savePLUILayout(plPageLayoutDefination); |
| | | } |
| | | return BaseResult.success("UI上下文导入成功!"); |
| | | } catch (PLException e) { |
| | | e.printStackTrace(); |
| | | return BaseResult.success("UI上下文导入失败,原因:"+VciBaseUtil.getExceptionMessage(e)); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 根据上下文ID和区域类型,按顺序获取当前区域的tab页 |
| | | * 根据上下文ID和区域(页签)类型,按顺序获取当前区域的tab页 |
| | | */ |
| | | @Override |
| | | public List<PLTabPage> getTabByContextIdAndType(String contextId, int areaType) throws PLException { |
| | | public DataGrid getTabByContextIdAndType(String contextId, int areaType) throws PLException { |
| | | VciBaseUtil.alertNotNull(contextId,"上下文主键",areaType,"区域类型"); |
| | | PLTabPage[] plTabPages = platformClientUtil.getUIService().getTabPagesByContextIdAndType(contextId, (short) areaType); |
| | | return Arrays.asList(plTabPages); |
| | | List<PLTabPage> tabPageList = Arrays.stream(plTabPages).sorted(((o1, o2) -> Math.toIntExact(o1.plSeq - o2.plSeq))) |
| | | .collect(Collectors.toList()); |
| | | DataGrid dataGrid = new DataGrid(); |
| | | dataGrid.setTotal(plTabPages.length); |
| | | dataGrid.setData(tabPageList); |
| | | return dataGrid; |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | |
| | | /** |
| | | * 修改区域数据 |
| | | * 修改区域(页签)数据 |
| | | * @param plTabPage |
| | | * @return |
| | | */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * 删除区域数据 |
| | | * 删除区域(页签)数据 |
| | | * @param oids |
| | | * @return |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 查询页面设计定义 |
| | | * @param plPageContextOId |
| | | * @param pageContextOId |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<PLPageDefination> getPLPageDefinations(String plPageContextOId) { |
| | | public DataGrid getPLPageDefinations(String pageContextOId) throws PLException { |
| | | DataGrid dataGrid = new DataGrid(); |
| | | if(Func.isBlank(pageContextOId)) return dataGrid; |
| | | PLPageDefination[] plPageDefinations = platformClientUtil.getUIService().getPLPageDefinationsByPageContextOId(pageContextOId); |
| | | if(Func.isEmpty(plPageDefinations)){ |
| | | return dataGrid; |
| | | } |
| | | //DO2VO |
| | | List<PLDefinationVO> plDefinationVOS = this.pageDefinations2PLDefinationVO(Arrays.asList(plPageDefinations)); |
| | | dataGrid.setTotal(plDefinationVOS.size()); |
| | | Collections.sort(plDefinationVOS, Comparator.comparing(PLDefinationVO::getSeq)); |
| | | //Arrays.sort(plDefinationVOS, pageDefinationComparator); |
| | | dataGrid.setData(plDefinationVOS); |
| | | return dataGrid; |
| | | } |
| | | |
| | | return null; |
| | | /** |
| | | * 页面定义的DO2VO对象 |
| | | * @param plPageDefinations |
| | | * @return |
| | | */ |
| | | private List<PLDefinationVO> pageDefinations2PLDefinationVO(List<PLPageDefination> plPageDefinations){ |
| | | List<PLDefinationVO> plDefinationVOList = new ArrayList<>(); |
| | | plPageDefinations.stream().forEach(item->{ |
| | | try { |
| | | PLDefinationVO plDefinationVO = new PLDefinationVO(); |
| | | PLDefination plDefination = UITools.getPLDefination(item.plDefination); |
| | | BeanUtil.copy(plDefination,plDefinationVO); |
| | | plDefinationVO.setDescription(item.desc); |
| | | plDefinationVO.setSeq(String.valueOf(item.seq)); |
| | | plDefinationVO.setTabPageOId(item.plTabPageOId); |
| | | plDefinationVO.setId(item.plOId); |
| | | plDefinationVO.setName(item.name); |
| | | plDefinationVO.setType(item.plType); |
| | | plDefinationVO.setTemplateType(String.valueOf(plDefination.getTemplateType())); |
| | | plDefinationVOList.add(plDefinationVO); |
| | | } catch (Throwable e) { |
| | | e.printStackTrace(); |
| | | logger.error(e.getMessage()); |
| | | throw new VciBaseException("页面定义DO对象转VO对象时出现错误,原因:"+e.getMessage()); |
| | | } |
| | | }); |
| | | return plDefinationVOList; |
| | | } |
| | | |
| | | /** |
| | |
| | | pd.plTabPageOId = pdVO.getTabPageOId(); |
| | | pd.plOId = ObjectUtility.getNewObjectID36(); |
| | | //不能为空属性检查 |
| | | if(!this.baseInfoIsOk(pd,false)){ |
| | | /*if(!this.baseInfoIsOk(pd,false)){ |
| | | return false; |
| | | } |
| | | }*/ |
| | | |
| | | pd.name = pdVO.getName().trim(); |
| | | pd.seq = Short.valueOf(pdVO.getSeq().trim()); |
| | | pd.desc = pdVO.getDescription(); |
| | | pd.plType = Short.parseShort(pdVO.getTemplateType()); |
| | | pd.plType = (short) pdVO.getType(); |
| | | |
| | | d.setName(pdVO.getName().trim()); |
| | | d.setUiParser(pdVO.getUiParser().trim()); |
| | |
| | | newPLDefinationIsOk(pdVO, false); |
| | | |
| | | // 检查各个类型下的数据是否输入或有效,一共6种类型按类型检验 |
| | | short plType = pd.plType; |
| | | switch (plType){ |
| | | String templateType = pdVO.getTemplateType(); |
| | | switch (templateType){ |
| | | //Table(表格) |
| | | case 1: |
| | | case "1": |
| | | //From(表单) |
| | | case 4: |
| | | case "4": |
| | | TableComptCheckInput tci = new TableComptCheckInput( |
| | | pdVO.getSearchTarger() |
| | | ,pdVO.getBtmType() |
| | | ,pdVO.getShowType() |
| | | ,pdVO.getLinkType() |
| | | ,pdVO.getTemplateId() |
| | | ,pdVO.getQueryTemplateName() |
| | |
| | | d = tci.getNewPLDefination(d); |
| | | break; |
| | | //Custom(自定义模板) |
| | | case 2: |
| | | case "2": |
| | | //只检查控制路径不能为空,有问题会直接报错 |
| | | CustomComptCheckInput ccci = new CustomComptCheckInput(pdVO.getControlPath()); |
| | | if(!ccci.checkInputIsOk()){ |
| | |
| | | d = ccci.getNewPLDefination(d); |
| | | break; |
| | | //TreeTable(树表) |
| | | case 3: |
| | | case "3": |
| | | TreeTableComptCheckInput ttcci = new TreeTableComptCheckInput( |
| | | pdVO.getSearchTarger() |
| | | ,pdVO.getBtmType() |
| | | ,pdVO.getShowType() |
| | | ,pdVO.getLinkType() |
| | | ,pdVO.getTemplateId() |
| | | ,pdVO.getQueryTemplateName() |
| | |
| | | d = ttcci.getNewPLDefination(d); |
| | | break; |
| | | //Tree(树) |
| | | case 5: |
| | | case "5": |
| | | TreeComptCheckInput tcci = new TreeComptCheckInput( |
| | | pdVO.getBtmType(), |
| | | pdVO.getShowType(), |
| | | pdVO.getLinkType(), |
| | | pdVO.getQueryTemplateName(), |
| | | pdVO.getShowExpressionRoot(), |
| | | pdVO.getShowExpression(), |
| | | pdVO.getRefTreeSet(), |
| | | pdVO.getRootContent(), |
| | | pdVO.getShowAbs(), |
| | | pdVO.getShowLinkAbs(), |
| | | pdVO.getSeparator(), |
| | | pdVO.getExpandMode() |
| | | ); |
| | |
| | | d = tcci.getNewPLDefination(d); |
| | | break; |
| | | //UILayout(UI定义) |
| | | case 6: |
| | | case "6": |
| | | UILayoutComptCheckInput ulci = new UILayoutComptCheckInput( |
| | | pdVO.getSearchTarger(), |
| | | pdVO.getBtmType(), |
| | | pdVO.getUiLayout(), |
| | | pdVO.getSubUIObjType(), |
| | | pdVO.getSubUILayout(), |
| | | pdVO.getQueryTemplateName(), |
| | | pdVO.getQryType() |
| | | ); |
| | |
| | | break; |
| | | } |
| | | |
| | | d.setNavigatorType(pdVO.getNavigatorType()); |
| | | d = setEventDataToPLDefination(d,pdVO); |
| | | //转xml赋值到plDefination中 |
| | | pd.plDefination = UITools.getPLDefinationText(d); |
| | |
| | | */ |
| | | @Override |
| | | public boolean updatePageDefination(PLDefinationVO pdVO) throws Throwable { |
| | | /*PLPageDefination pd = getPageDefination(); |
| | | |
| | | PLDefination d = UITools.getPLDefination(pd.plDefination); |
| | | VciBaseUtil.alertNotNull(pdVO,"页面定义对象",pdVO.getSeq(),"编号",pdVO.getName(),"名称"); |
| | | PLPageDefination pd = new PLPageDefination(); |
| | | PLDefination d = new PLDefination(); |
| | | BeanUtil.copy(pdVO,d); |
| | | |
| | | //不能为空属性检查 |
| | | if(!this.baseInfoIsOk(pd,true)){ |
| | | /*if(!this.baseInfoIsOk(pd,true)){ |
| | | return false; |
| | | } |
| | | setUIValueToObject(pd, d); |
| | | }*/ |
| | | pd.plOId = pdVO.getId(); |
| | | pd.plTabPageOId = pdVO.getTabPageOId(); |
| | | pd.name = pdVO.getName().trim(); |
| | | pd.seq = Short.valueOf(pdVO.getSeq().trim()); |
| | | pd.desc = pdVO.getDescription(); |
| | | pd.plType = (short) pdVO.getType(); |
| | | |
| | | d.setId(pdVO.getId()); |
| | | d.setName(pdVO.getName().trim()); |
| | | d.setUiParser(pdVO.getUiParser().trim()); |
| | | d.setExtAttr(pdVO.getExtAttr().trim()); |
| | | d.setTemplateType(pdVO.getTemplateType()); |
| | | |
| | | this.newPLDefinationIsOk(pdVO, true); |
| | | |
| | | // 检查各个组件内部的数据是否有效 |
| | | int plType = pdVO.getType(); |
| | | switch (plType){ |
| | | String templateType = pdVO.getTemplateType(); |
| | | switch (templateType){ |
| | | //Table(表格) |
| | | case 1: |
| | | case "1": |
| | | //From(表单) |
| | | case 4: |
| | | case "4": |
| | | TableComptCheckInput tci = new TableComptCheckInput( |
| | | pdVO.getSearchTarger() |
| | | ,pdVO.getBtmType() |
| | | ,pdVO.getShowType() |
| | | ,pdVO.getLinkType() |
| | | ,pdVO.getTemplateId() |
| | | ,pdVO.getQueryTemplateName() |
| | |
| | | d = tci.getNewPLDefination(d); |
| | | break; |
| | | //Custom(自定义模板) |
| | | case 2: |
| | | case "2": |
| | | //只检查控制路径不能为空,有问题会直接报错 |
| | | CustomComptCheckInput ccci = new CustomComptCheckInput(pdVO.getControlPath()); |
| | | if(!ccci.checkInputIsOk()){ |
| | |
| | | d = ccci.getNewPLDefination(d); |
| | | break; |
| | | //TreeTable(树表) |
| | | case 3: |
| | | case "3": |
| | | TreeTableComptCheckInput ttcci = new TreeTableComptCheckInput( |
| | | pdVO.getSearchTarger() |
| | | ,pdVO.getBtmType() |
| | | ,pdVO.getShowType() |
| | | ,pdVO.getLinkType() |
| | | ,pdVO.getTemplateId() |
| | | ,pdVO.getQueryTemplateName() |
| | |
| | | d = ttcci.getNewPLDefination(d); |
| | | break; |
| | | //Tree(树) |
| | | case 5: |
| | | case "5": |
| | | TreeComptCheckInput tcci = new TreeComptCheckInput( |
| | | pdVO.getBtmType(), |
| | | pdVO.getShowType(), |
| | | pdVO.getLinkType(), |
| | | pdVO.getQueryTemplateName(), |
| | | pdVO.getShowExpressionRoot(), |
| | | pdVO.getShowExpression(), |
| | | pdVO.getRefTreeSet(), |
| | | pdVO.getRootContent(), |
| | | pdVO.getShowAbs(), |
| | | pdVO.getShowLinkAbs(), |
| | | pdVO.getSeparator(), |
| | | pdVO.getExpandMode() |
| | | ); |
| | |
| | | d = tcci.getNewPLDefination(d); |
| | | break; |
| | | //UILayout(UI定义) |
| | | case 6: |
| | | case "6": |
| | | UILayoutComptCheckInput ulci = new UILayoutComptCheckInput( |
| | | pdVO.getSearchTarger(), |
| | | pdVO.getBtmType(), |
| | | pdVO.getUiLayout(), |
| | | pdVO.getSubUIObjType(), |
| | | pdVO.getSubUILayout(), |
| | | pdVO.getQueryTemplateName(), |
| | | pdVO.getQryType() |
| | | ); |
| | |
| | | d = ulci.getNewPLDefination(d); |
| | | break; |
| | | } |
| | | |
| | | d = comptPanel.getNewPLDefination(d); |
| | | d.setNavigatorType(pdVO.getNavigatorType()); |
| | | d = setEventDataToPLDefination(d,pdVO); |
| | | pd.plDefination = UITools.getPLDefinationText(d);*/ |
| | | pd.plDefination = UITools.getPLDefinationText(d); |
| | | |
| | | boolean res = true;//platformClientUtil.getUIService().updatePLPageDefination(pd); |
| | | return platformClientUtil.getUIService().updatePLPageDefination(pd); |
| | | } |
| | | |
| | | /** |
| | | * 删除页面定义 |
| | | * @param oids |
| | | * @return |
| | | */ |
| | | @Override |
| | | public boolean delPageDefination(String[] oids) throws PLException { |
| | | VciBaseUtil.alertNotNull(oids,"删除的页面定义主键"); |
| | | boolean res = platformClientUtil.getUIService().deletePLPageDefinationByOidsForCascade(oids); |
| | | return res; |
| | | } |
| | | |
| | | /** |
| | | * 获取页签区域按钮配置信息 |
| | | * @param pageDefinationOid |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<PLTabButtonVO> getTabButtons(String pageDefinationOid) { |
| | | VciBaseUtil.alertNotNull(pageDefinationOid,"页面定义主键"); |
| | | List<PLTabButton> buttonList = new ArrayList<>(); |
| | | try { |
| | | 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 returnButtonVOList; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | throw new VciBaseException("加载页签区域按钮配置信息异常:" + e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 多个按钮配置DO对象转多个VO对象 |
| | | * @param listDO |
| | | * @return |
| | | */ |
| | | private List<PLTabButtonVO> tabButton2TabButtonVOS(List<PLTabButton> listDO){ |
| | | List<PLTabButtonVO> plTabButtonVOList = new ArrayList<PLTabButtonVO>(); |
| | | if(Func.isEmpty(listDO)){ |
| | | return plTabButtonVOList; |
| | | } |
| | | listDO.stream().forEach(item->{ |
| | | try { |
| | | PLTabButtonVO plTabButtonVO = this.tabButton2TabButtonVO(item); |
| | | plTabButtonVOList.add(plTabButtonVO); |
| | | } catch (PLException e) { |
| | | e.printStackTrace(); |
| | | String errorLog = "按钮配置DO TO VO时出现错误,原因:"+VciBaseUtil.getExceptionMessage(e); |
| | | logger.error(errorLog); |
| | | throw new VciBaseException(errorLog); |
| | | } |
| | | }); |
| | | return plTabButtonVOList; |
| | | } |
| | | |
| | | /** |
| | | * 按钮配置DO对象转VO对象 |
| | | * @param tabButtonDO |
| | | * @return |
| | | */ |
| | | private PLTabButtonVO tabButton2TabButtonVO(PLTabButton tabButtonDO) throws PLException { |
| | | PLTabButtonVO plTabButtonVO = new PLTabButtonVO(); |
| | | if(Func.isEmpty(tabButtonDO) && Func.isBlank(tabButtonDO.plOId)){ |
| | | return plTabButtonVO; |
| | | } |
| | | plTabButtonVO.setOId(tabButtonDO.plOId); |
| | | plTabButtonVO.setTableOId(tabButtonDO.plTableOId); |
| | | //plTabButtonVO.setPageOId(tabButtonDO.plPageOId); |
| | | plTabButtonVO.setActionOId(tabButtonDO.plActionOId); |
| | | plTabButtonVO.setLabel(tabButtonDO.plLabel); |
| | | plTabButtonVO.setAreaType(tabButtonDO.plAreaType); |
| | | plTabButtonVO.setDesc(tabButtonDO.plDesc); |
| | | plTabButtonVO.setSeq(tabButtonDO.plSeq); |
| | | plTabButtonVO.setCreateUser(tabButtonDO.plCreateUser); |
| | | plTabButtonVO.setCreateTime(tabButtonDO.plCreateTime); |
| | | plTabButtonVO.setModifyUser(tabButtonDO.plModifyUser); |
| | | plTabButtonVO.setModifyTime(tabButtonDO.plModifyTime); |
| | | plTabButtonVO.setLicensOrs(tabButtonDO.plLicensOrs); |
| | | plTabButtonVO.setParentOid(tabButtonDO.plParentOid); |
| | | plTabButtonVO.setDisplayMode(tabButtonDO.displayMode); |
| | | plTabButtonVO.setIconPath(tabButtonDO.iconPath); |
| | | plTabButtonVO.setAuthorization(tabButtonDO.authorization); |
| | | plTabButtonVO.setShow(tabButtonDO.show); |
| | | //参数信息回填 |
| | | PLCommandParameter[] parameters = platformClientUtil.getUIService().getPLCommandParametersByCommandOId(tabButtonDO.plOId); |
| | | if(Func.isNotEmpty(parameters)){ |
| | | LinkedHashMap<String, String> parameterMap = Arrays.stream(parameters) |
| | | .collect(Collectors.toMap( |
| | | parm -> parm.plKey, |
| | | parm -> parm.plValue, |
| | | (existing, replacement) -> existing, // 处理重复键的情况 |
| | | LinkedHashMap::new // 指定使用 LinkedHashMap |
| | | )); |
| | | plTabButtonVO.setButtonParams(parameterMap); |
| | | } |
| | | if(Func.isNotBlank(tabButtonDO.plActionOId)){ |
| | | PLAction actionInfo = platformClientUtil.getUIService().getPLActionById(tabButtonDO.plActionOId); |
| | | plTabButtonVO.setActionName(Func.isNotEmpty(actionInfo) ? actionInfo.plName:""); |
| | | } |
| | | return plTabButtonVO; |
| | | } |
| | | |
| | | /** |
| | | * 按钮配置子节点查找 |
| | | * @param plOid |
| | | * @param plTabButtonVOList |
| | | * @return |
| | | */ |
| | | private List<PLTabButtonVO> plTabButtonVO2Children(List<PLTabButtonVO> plTabButtonVOList, String plOid){ |
| | | ArrayList<PLTabButtonVO> plTabButtonVOS = new ArrayList<>(); |
| | | for (PLTabButtonVO plTabButtonVO : plTabButtonVOList) { |
| | | if(StringUtils.isBlank(plTabButtonVO.getParentOid())){ |
| | | continue; |
| | | } |
| | | if(plTabButtonVO.getParentOid().equals(plOid)){ |
| | | plTabButtonVO.setChildren(plTabButtonVO2Children(plTabButtonVOList,plTabButtonVO.getOId())); |
| | | plTabButtonVOS.add(plTabButtonVO); |
| | | } |
| | | } |
| | | return plTabButtonVOS; |
| | | } |
| | | |
| | | /** |
| | | * 按钮配置VO对象转DO对象 |
| | | * @param tabButtonVO |
| | | * @return |
| | | * @throws PLException |
| | | */ |
| | | private PLTabButton tabButtonVO2TabButton(PLTabButton plTabButton,PLTabButtonVO tabButtonVO) { |
| | | plTabButton.plOId = tabButtonVO.getOId(); |
| | | plTabButton.plTableOId = tabButtonVO.getTableOId(); |
| | | //plTabButton.plPageOId = tabButtonVO.getPageOId(); |
| | | plTabButton.plActionOId = tabButtonVO.getActionOId(); |
| | | plTabButton.plLabel = tabButtonVO.getLabel(); |
| | | plTabButton.plAreaType = tabButtonVO.getAreaType(); |
| | | plTabButton.plDesc = tabButtonVO.getDesc(); |
| | | plTabButton.plSeq = tabButtonVO.getSeq(); |
| | | plTabButton.plCreateUser = tabButtonVO.getCreateUser(); |
| | | plTabButton.plCreateTime = tabButtonVO.getCreateTime(); |
| | | plTabButton.plModifyUser = tabButtonVO.getModifyUser(); |
| | | plTabButton.plModifyTime = tabButtonVO.getModifyTime(); |
| | | plTabButton.plLicensOrs = tabButtonVO.getLicensOrs(); |
| | | plTabButton.plParentOid = tabButtonVO.getParentOid(); |
| | | plTabButton.displayMode = tabButtonVO.getDisplayMode(); |
| | | plTabButton.iconPath = tabButtonVO.getIconPath(); |
| | | plTabButton.authorization = tabButtonVO.getAuthorization(); |
| | | plTabButton.show = tabButtonVO.getShow(); |
| | | return plTabButton; |
| | | } |
| | | |
| | | /** |
| | | * 添加按钮配置信息 |
| | | * @param tabButtonVO |
| | | * @return |
| | | */ |
| | | @Override |
| | | public BaseResult addTabButton(PLTabButtonVO tabButtonVO) { |
| | | boolean res = this.saveOrUpdateTabButton(tabButtonVO, true); |
| | | return res ? BaseResult.success("按钮配置添加成功!"):BaseResult.success("按钮配置添加失败!"); |
| | | } |
| | | |
| | | /** |
| | | * 修改按钮配置信息 |
| | | * @param tabButtonVO |
| | | * @return |
| | | */ |
| | | @Override |
| | | public BaseResult updateTabButton(PLTabButtonVO tabButtonVO) { |
| | | boolean res = this.saveOrUpdateTabButton(tabButtonVO, false); |
| | | return res ? BaseResult.success("按钮配置修改成功!"):BaseResult.success("按钮配置修改失败!"); |
| | | } |
| | | |
| | | /** |
| | | * 保存或修改按钮配置信息 |
| | | * @param tabButtonVO |
| | | * @return |
| | | */ |
| | | @Override |
| | | public boolean saveOrUpdateTabButton(PLTabButtonVO tabButtonVO,boolean isAdd){ |
| | | VciBaseUtil.alertNotNull(tabButtonVO,"按钮配置对象",tabButtonVO.getLabel(),"参数名称",tabButtonVO.getTableOId(),"页面定义主键"); |
| | | //检查当前添加的列表是否重复,但是这儿只支持单条数据保存,所有当前列表判重可以前端来做 |
| | | //String btnParamValidate = this.geCheckRes(); |
| | | if (tabButtonVO.getSeq() < 1 || tabButtonVO.getSeq() > 63) { |
| | | throw new VciBaseException("按序号超出范围,请修改,按钮【编号】只能在【1-63】范围内。"); |
| | | } |
| | | //当前登录用户的信息 |
| | | SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); |
| | | //VO2DO |
| | | PLTabButton plTabButton = this.tabButtonVO2TabButton(new PLTabButton(), tabButtonVO); |
| | | if(isAdd) { |
| | | //如果是增加操作,直接创建PLTabButton对象 |
| | | plTabButton.plOId = ObjectUtility.getNewObjectID36(); |
| | | plTabButton.plCreateUser = sessionInfo.getUserId(); |
| | | plTabButton.plModifyUser = sessionInfo.getUserId(); |
| | | } else { |
| | | //修改操作 |
| | | plTabButton.plModifyUser = sessionInfo.getUserId(); |
| | | } |
| | | |
| | | try { |
| | | if(isAdd){ |
| | | boolean success = platformClientUtil.getUIService().savePLTabButton(plTabButton); |
| | | if(success == false) { |
| | | throw new VciBaseException("编号重复,编号已经在当前页签下存在!"); |
| | | } |
| | | } else if(!isAdd){ |
| | | platformClientUtil.getUIService().updatePLTabButton(plTabButton); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | String errorLog = "保存按钮信息时发生异常:" + e.getMessage(); |
| | | logger.error(errorLog); |
| | | throw new VciBaseException(errorLog); |
| | | } |
| | | //复用以前的代码,对于参数一条一条删除,一条一条创建 |
| | | //数据量及并发较少,暂时这么处理没有什么问题 |
| | | if(!isAdd) { |
| | | try { |
| | | platformClientUtil.getUIService().deletePLCommandParameterByTabButtonId(plTabButton.plOId); |
| | | } catch (PLException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | this.saveButtonParams(tabButtonVO.getButtonParams(),plTabButton.plOId); |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * 按钮参数保存 |
| | | * @param buttonParams |
| | | * @param tabButtonOid |
| | | * @return |
| | | */ |
| | | private void saveButtonParams(LinkedHashMap<String, String> buttonParams,String tabButtonOid) throws VciBaseException{ |
| | | if(Func.isNotEmpty(buttonParams)) { |
| | | SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); |
| | | Iterator<Map.Entry<String, String>> iterator = buttonParams.entrySet().iterator(); |
| | | while(iterator.hasNext()){ |
| | | Map.Entry<String, String> next = iterator.next(); |
| | | if(StringUtils.isEmpty(next.getKey()) || StringUtils.isEmpty(next.getValue())){ |
| | | iterator.remove(); |
| | | } |
| | | } |
| | | Iterator<Map.Entry<String, String>> kvItor = buttonParams.entrySet().iterator(); |
| | | while(kvItor.hasNext()){ |
| | | Map.Entry<String, String> next = kvItor.next(); |
| | | PLCommandParameter plCommandParameter = new PLCommandParameter(); |
| | | plCommandParameter.plOId = ObjectUtility.getNewObjectID36(); |
| | | plCommandParameter.plCommandOId = tabButtonOid; |
| | | plCommandParameter.plKey = next.getKey(); |
| | | plCommandParameter.plValue = next.getValue(); |
| | | plCommandParameter.plCreateUser = sessionInfo.getUserId(); |
| | | plCommandParameter.plModifyUser = sessionInfo.getUserId(); |
| | | try { |
| | | platformClientUtil.getUIService().savePLCommandParameter(plCommandParameter); |
| | | } catch (PLException e) { |
| | | e.printStackTrace(); |
| | | throw new VciBaseException("保存按钮参数时发生异常:"+ e.getMessage()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 删除单个按钮配置 |
| | | * @param tabButtonVO |
| | | * @return |
| | | */ |
| | | @Override |
| | | public boolean deleteTabButton(PLTabButtonVO tabButtonVO) throws PLException { |
| | | VciBaseUtil.alertNotNull(tabButtonVO,"删除的按钮配置对象"); |
| | | boolean success = platformClientUtil.getUIService().deletePLTabButton(this.tabButtonVO2TabButton(new PLTabButton(),tabButtonVO)); |
| | | if(success == false){ |
| | | throw new VciBaseException("该有子级按钮,不能删除!"); |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * 调整为下级按钮 |
| | | * @param tabButtonVO |
| | | * @return |
| | | */ |
| | | @Override |
| | | public BaseResult joinBtn(PLTabButtonVO tabButtonVO) throws PLException { |
| | | VciBaseUtil.alertNotNull(tabButtonVO,"需调整为下级按钮的对象",tabButtonVO.getTableOId(),"当前按钮配置所在的页面主键"); |
| | | //同一页面下的按钮 |
| | | List<PLTabButtonVO> plTabButtons = this.getTabButtons(tabButtonVO.getTableOId()); |
| | | if(Func.isEmpty(plTabButtons)){ |
| | | return BaseResult.fail("未获取到按钮配置信息!"); |
| | | } |
| | | //获取当前要移动的按钮的下标 |
| | | int index = 0; |
| | | for (int i = 0; i < plTabButtons.size(); i++) { |
| | | if (plTabButtons.get(i).getOId().equals(tabButtonVO.getOId())) { |
| | | index = i; // 找到后记录下标 |
| | | break; // 找到后退出循环 |
| | | } |
| | | } |
| | | //当选择的按钮为树的第一个节点的时候,他的兄节点是他自己,导致调整为下级按钮时出错,故作此判断。 |
| | | if(index == 0){ |
| | | return BaseResult.fail("当前节点不存在兄节点,无法调整为下级按钮!"); |
| | | } |
| | | //设置父id为上一个节点的 |
| | | tabButtonVO.setParentOid(plTabButtons.get(index-1).getOId()); |
| | | PLTabButton plTabButton = this.tabButtonVO2TabButton(new PLTabButton(), tabButtonVO); |
| | | boolean success = platformClientUtil.getUIService().updatePLTabButton(plTabButton); |
| | | if(success == false) { |
| | | return BaseResult.fail("修改失败!"); |
| | | } |
| | | return BaseResult.success("修改成功!"); |
| | | } |
| | | |
| | | /** |
| | | * 调整为上级按钮 |
| | | * @param tabButtonVO |
| | | * @return |
| | | */ |
| | | @Override |
| | | public BaseResult exitBtn(PLTabButtonVO tabButtonVO) throws PLException { |
| | | tabButtonVO.setParentOid(""); |
| | | PLTabButton plTabButton = this.tabButtonVO2TabButton(new PLTabButton(), tabButtonVO); |
| | | boolean success = platformClientUtil.getUIService().updatePLTabButton(plTabButton); |
| | | if(success == false) { |
| | | BaseResult.fail("撤销失败!"); |
| | | } |
| | | return BaseResult.success("撤销成功!"); |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | |
| | | /** |
| | | * 删除页面定义 |
| | | * @param oids |
| | | * @return |
| | | */ |
| | | @Override |
| | | public boolean delPageDefination(String[] oids) throws PLException { |
| | | VciBaseUtil.alertNotNull(oids,"删除的页面定义主键"); |
| | | boolean res = platformClientUtil.getUIService().deletePLUILayoutByOidsForCascade(oids); |
| | | return res; |
| | | } |
| | | |
| | | /** |
| | | * 页面定义名称和编号查重 |
| | | * @param pd |
| | | * @param isEdit |
| | | * @throws PLException |
| | | */ |
| | | private void newPLDefinationIsOk(PLDefinationVO pd, boolean isEdit) throws PLException{ |
| | | boolean res = false; |
| | | boolean nameExist = false; |
| | | boolean seqExist = false; |
| | | PLPageDefination[] pds = platformClientUtil.getUIService().getPLPageDefinationsByPageContextOId(pd.getTabPageOId()); |
| | |
| | | String type = StringUtils.isBlank(conditionMap.get("type")) ? "" : conditionMap.get("type"); |
| | | String context = StringUtils.isBlank(conditionMap.get("context")) ? "" : conditionMap.get("context"); |
| | | boolean showCheckBox = Boolean.parseBoolean(conditionMap.get("showCheckBox")); |
| | | Map<String,RoleRightVO> roleRightVOMap=new HashMap<>(); |
| | | Map<String, List<RoleRightVO>> roleRightVOMap = new HashMap<>(); |
| | | if(StringUtils.isNotBlank(roleId)){ |
| | | String userName= WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(); |
| | | RoleRightInfo[] rightInfos= platformClientUtil.getFrameworkService().getRoleRightList(roleId,userName); |
| | | List<RoleRightVO> roleRightVOList=roleRightDOO2VOS(Arrays.asList(rightInfos)); |
| | | roleRightVOMap=roleRightVOList.stream().collect(Collectors.toMap(RoleRightVO::getFuncId,roleRightVO ->roleRightVO)); |
| | | roleRightVOMap = this.getRoleRightMap(roleId); |
| | | } |
| | | BizType[] bizTypes=osBtmServiceI.getBizTypes(type); |
| | | 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); |
| | | List<Tree> childList=new ArrayList<>(); |
| | | |
| | | uiDataFetcher = new UIDataFetcher(); |
| | | for (int i = 0; i < bizTypes.length; i++) { |
| | | Tree bizTypeTree = new Tree(bizTypes[i].oid,bizTypes[i].name,bizTypes[i]);//(btmItems[i].label+" ["+ btmItems[i].name+"]", btmItems[i]); |
| | | bizTypeTree.setLevel(1); |
| | | bizTypeTree.setShowCheckbox(true); |
| | | bizTypeTree.setParentId(rootNode.getOid()); |
| | | bizTypeTree.setParentName(rootNode.getText()); |
| | | bizTypeTree.setShowCheckbox(true); |
| | | bizTypeTree.setParentBtmName(bizTypes[i].name); |
| | | List<PLUILayout> contextList = uiDataFetcher.getContext(bizTypes[i].name/*+context*/); |
| | | List<Tree> btmChildList = new ArrayList<>(); |
| | | btmChildList.add(bizTypeTree); |
| | | setChildNode(btmChildList,contextList,roleRightVOMap,showCheckBox); |
| | | childList.add(bizTypeTree); |
| | | if(roleRightVOMap.containsKey(bizTypes[i].oid)){ |
| | | List<PLUILayout>contextList=getUIContextDataByBtName(bizTypes[i].name,context); |
| | | List<Tree> btmChildList=new ArrayList<>(); |
| | | btmChildList.add(bizTypeTree); |
| | | setChildNode(btmChildList,contextList,roleRightVOMap,showCheckBox); |
| | | } |
| | | } |
| | | rootNode.setChildren(childList); |
| | | treeList.add(rootNode); |
| | | return treeList; |
| | | } |
| | | |
| | | /** |
| | | * 根据角色主键获取已授权的信息 |
| | | * @param roleId 如果roleId不传,就会获取当前登录的用户的名称查询权限 |
| | | * @return |
| | | * @throws PLException |
| | | */ |
| | | @Override |
| | | public Map<String, List<RoleRightVO>> getRoleRightMap(String roleId) throws PLException { |
| | | RoleRightInfo[] rightInfos = null; |
| | | String userName = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(); |
| | | if(Func.isBlank(roleId)){ |
| | | rightInfos = platformClientUtil.getFrameworkService().getRoleRightByUserName(userName); |
| | | }else{ |
| | | rightInfos = platformClientUtil.getFrameworkService().getRoleRightList(roleId,userName); |
| | | } |
| | | List<RoleRightVO> roleRightVOList = roleRightDOO2VOS(Arrays.asList(rightInfos)); |
| | | //分组操作 |
| | | Map<String, List<RoleRightVO>> roleRightVOMap = roleRightVOList.stream().collect(Collectors.groupingBy(RoleRightVO::getFuncId, |
| | | Collectors.mapping(e ->e, Collectors.toList()))); |
| | | return roleRightVOMap; |
| | | } |
| | | |
| | | /** |
| | | * UI授权 |
| | | * @param uiAuthorDTO |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public boolean authorizedUI(UIAuthorDTO uiAuthorDTO) throws Exception { |
| | | boolean res=false; |
| | | if(uiAuthorDTO==null||CollectionUtil.isEmpty(uiAuthorDTO.getSelectTreeList())){ |
| | | if(uiAuthorDTO==null|| CollectionUtil.isEmpty(uiAuthorDTO.getSelectTreeList())){ |
| | | throw new VciBaseException("请选择节点进行授权!"); |
| | | } |
| | | BaseQueryObject treeQueryObject=new BaseQueryObject(); |
| | |
| | | conditionMap.put("context",uiAuthorDTO.getContext()); |
| | | conditionMap.put("showCheckBox","true"); |
| | | treeQueryObject.setConditionMap(conditionMap); |
| | | List<Tree> treeList=this.getUIAuthor(treeQueryObject); |
| | | HashMap<String,Tree> allTreeMap=new HashMap<>(); |
| | | List<Tree> treeList = this.getUIAuthor(treeQueryObject); |
| | | HashMap<String,Tree> allTreeMap = new HashMap<>(); |
| | | //Map<String,RoleRightDTO> roleRightVOMap = new HashMap<>(); |
| | | if(!CollectionUtil.isEmpty(treeList)){ |
| | | /*if(StringUtils.isNotBlank(uiAuthorDTO.getRoleId())){ |
| | | String userName = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(); |
| | | RoleRightInfo[] rightInfos = platformClientUtil.getFrameworkService().getRoleRightList(uiAuthorDTO.getRoleId(),userName); |
| | | List<RoleRightVO> roleRightVOList = roleRightDOO2VOS(Arrays.asList(rightInfos)); |
| | | roleRightVOMap = roleRightVOList.stream().collect(Collectors.toMap(RoleRightVO::getFuncId,roleRightVO ->roleRightVOO2DTO(roleRightVO),(oldValue,newValue)->oldValue)); |
| | | }*/ |
| | | |
| | | convertTreeDOO2Map(treeList,allTreeMap); |
| | | List<RoleRightDTO> roleRightDTOList=new ArrayList<>(); |
| | | List<Tree> selectTreeList= uiAuthorDTO.getSelectTreeList(); |
| | | getRoleRightDTOS(uiAuthorDTO.getRoleId(),selectTreeList,allTreeMap,roleRightDTOList); |
| | | List<RoleRightDTO> roleRightDTOList = new ArrayList<>(); |
| | | List<Tree> selectTreeList = uiAuthorDTO.getSelectTreeList(); |
| | | List<Tree> filterSelectTreeList = this.authTreeListConvert(selectTreeList); |
| | | //过滤出选择的按钮 |
| | | List<String> checkButtonList = selectTreeList.stream() |
| | | .filter(item -> item.getData() instanceof PLTabButton || item.isLeaf()) |
| | | .map(item -> item.getOid()).collect(Collectors.toList()); |
| | | |
| | | getSelectedRoleRightObjs(uiAuthorDTO.getRoleId(),filterSelectTreeList,checkButtonList,allTreeMap,roleRightDTOList); |
| | | SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); |
| | | String currentUserName = sessionInfo.getUserId(); |
| | | //boolean isDeveloper = rightControlUtil.isDeveloper(currentUserName); |
| | | List<RoleRightInfo> roleRightInfoList = roleRightDTOO2InfoS(roleRightDTOList); |
| | | UserEntityInfo info = new UserEntityInfo(); |
| | | info.modules="UI授权"; |
| | | info.userName = currentUserName; |
| | | try { |
| | | res = platformClientUtil.getFrameworkService().saveRoleRight(roleRightInfoList.toArray(new RoleRightInfo[]{}),uiAuthorDTO.getRoleId(),currentUserName,info); |
| | | }catch (PLException e){ |
| | | throw new Exception("保存失败:" + e.getMessage()); |
| | | } |
| | | } |
| | | return res; |
| | | } |
| | | |
| | | private void getRoleRightDTOS(String roleOid,List<Tree> selectTreeList,HashMap<String,Tree> allTreeMap, List<RoleRightDTO> roleRightDTOList){ |
| | | selectTreeList.stream().forEach(tree -> { |
| | | RoleRightDTO roleRightDTO=new RoleRightDTO(); |
| | | String id=ObjectUtility.getNewObjectID36(); |
| | | Object data= tree.getData(); |
| | | /** |
| | | * 获取筛选后的数据 |
| | | * @param selectTreeList |
| | | */ |
| | | private List<Tree> authTreeListConvert(List<Tree> selectTreeList){ |
| | | // 创建一个包含另一个集合中满足条件的 oid 的集合 |
| | | List<String> validOids = selectTreeList.stream() |
| | | .filter(Tree::isChecked) // checked 为 true |
| | | .map(Tree::getOid) // 提取 oid |
| | | .collect(Collectors.toList()); |
| | | |
| | | if (data instanceof BizType) {//业务类型 |
| | | BizType bizType=(BizType)data; |
| | | roleRightDTO.setId(id);//主键 |
| | | roleRightDTO.setCreateUser(null);//创建者 |
| | | roleRightDTO.setCreateTime(null);//创建时间 |
| | | roleRightDTO.setModifyUser(null);//修改者 |
| | | roleRightDTO.setModifyTime(null);//修改时间 |
| | | roleRightDTO.setRoleId(roleOid);//角色ID |
| | | roleRightDTO.setRightValue(1);// 权限值 |
| | | roleRightDTO.setRightType((short) -1);//权限类型 权限类型,超级管理员给管理员授权为1,管理员给普通用户授权为2 |
| | | roleRightDTO.setFuncId(null); |
| | | roleRightDTO.setLicensor(null); |
| | | }else if (data instanceof PLUILayout){//UI |
| | | return selectTreeList.stream() |
| | | .filter(tree -> tree.isChecked() && !validOids.contains(tree.getParentId())) // 过滤条件 |
| | | .collect(Collectors.toList()); |
| | | } |
| | | |
| | | }else if (data instanceof PLTabPage) {//UI上下文 |
| | | /** |
| | | *根据权限计算上下权限 |
| | | * @param roleOid |
| | | * @param selectTreeList |
| | | * @param allTreeMap |
| | | * @param roleRightDTOList |
| | | */ |
| | | private void getSelectedRoleRightObjs(String roleOid, List<Tree> selectTreeList, List<String> checkButtonList, HashMap<String,Tree> allTreeMap, List<RoleRightDTO> roleRightDTOList){ |
| | | Map<String,RoleRightDTO> roleRightDTOMap = new HashMap<>(); |
| | | |
| | | if(!CollectionUtil.isEmpty(selectTreeList)){ |
| | | selectTreeList.stream().forEach(tree -> { |
| | | String oid = tree.getOid(); |
| | | if(allTreeMap.containsKey(oid)){ |
| | | tree = allTreeMap.get(oid); |
| | | Object data = tree.getData(); |
| | | if (data instanceof String) { |
| | | getRightValue(roleOid, tree, allTreeMap, checkButtonList,false, roleRightDTOMap);//向下获取所有模块的权限值 |
| | | } else if (!(data instanceof PLTabButton)) {//业务类型 |
| | | getRightValue(roleOid, tree, allTreeMap, checkButtonList, true, roleRightDTOMap);//向上处理 |
| | | getRightValue(roleOid, tree, allTreeMap, checkButtonList, false, roleRightDTOMap);//向下处理(包含当前节点) |
| | | } else if (data instanceof PLTabButton) {//按钮 |
| | | String parrentId=tree.getParentId(); |
| | | if(allTreeMap.containsKey(parrentId)){ |
| | | SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); |
| | | String currentUserName = sessionInfo.getUserId(); |
| | | boolean isDeveloper = rightControlUtil.isDeveloper(currentUserName); |
| | | Tree parentNode= allTreeMap.get(parrentId); |
| | | String funcId = parentNode.getOid(); |
| | | getRightValue(roleOid, parentNode, allTreeMap, checkButtonList, true, roleRightDTOMap);//向上处理该操作父级的上级模块权限(不包含父节点) |
| | | if(!roleRightDTOMap.containsKey(funcId)){ |
| | | RoleRightDTO roleRightDTO = new RoleRightDTO(); |
| | | roleRightDTO.setId(ObjectUtility.getNewObjectID36());//主键 |
| | | roleRightDTO.setFuncId(funcId); |
| | | if(isDeveloper) { |
| | | //权限类型 权限类型,超级管理员给管理员授权为1,管理员给普通用户授权为2 |
| | | roleRightDTO.setRightType((short) 1); |
| | | }else{ |
| | | roleRightDTO.setRightType((short) 2); |
| | | } |
| | | roleRightDTO.setRightValue(countRightValue(parentNode,checkButtonList,false));// 权限值,没有操作的模块权限值存储为0 |
| | | roleRightDTO.setRoleId(roleOid);//角色ID |
| | | roleRightDTO.setCreateUser(currentUserName);//创建者 |
| | | roleRightDTO.setCreateTime(VciDateUtil.date2Str(new Date(),""));//创建时间 |
| | | roleRightDTO.setModifyUser(currentUserName);//修改者 |
| | | roleRightDTO.setModifyTime(VciDateUtil.date2Str(new Date(),""));//修改时间 |
| | | roleRightDTO.setLicensor(""); |
| | | if(!roleRightDTOMap.containsKey(funcId)){ |
| | | roleRightDTOMap.put(funcId, roleRightDTO); |
| | | } |
| | | roleRightDTOMap.put(funcId, roleRightDTO); |
| | | } |
| | | } |
| | | |
| | | }else if (data instanceof PLPageDefination) {// |
| | | } |
| | | |
| | | } |
| | | }); |
| | | /* allRoleRightDTOMap.putAll(roleRightDTOMap.entrySet().stream() |
| | | .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry:: getValue)));*/ |
| | | List<RoleRightDTO> newRoleRightDTOList = Optional.ofNullable(roleRightDTOMap).orElseGet(()->new HashMap<String,RoleRightDTO>()).values().stream().collect(Collectors.toList()); |
| | | roleRightDTOList.addAll(newRoleRightDTOList); |
| | | } |
| | | } |
| | | |
| | | }else if (data instanceof PLTabButton) {//按钮 |
| | | |
| | | /** |
| | | * 获取权限 |
| | | * @param isUp 是否是向上获取,如果是向上获取,传进来的必然是模块节点,且上级模块必然是没有选中 |
| | | */ |
| | | private void getRightValue(String roleId,Tree node,Map<String,Tree> allTreeMap,List<String> checkButton,boolean isUp,Map<String,RoleRightDTO> rightMap){ |
| | | SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); |
| | | String currentUserName = sessionInfo.getUserId(); |
| | | boolean isDeveloper= rightControlUtil.isDeveloper(currentUserName); |
| | | String id=ObjectUtility.getNewObjectID36(); |
| | | Object data=node.getData(); |
| | | if(isUp) {//向上获取,存储每个上级模块的权限值 |
| | | String parentId = node.getParentId(); |
| | | Tree parentNode = allTreeMap.get(parentId); |
| | | while (!"root".equals(parentNode.getData())){ |
| | | data=parentNode.getData(); |
| | | String oid=parentNode.getOid(); |
| | | if(allTreeMap.containsKey(oid)){ |
| | | String funcId = ""; |
| | | if (data instanceof BizType) { |
| | | BizType bizType = (BizType) data; |
| | | funcId = bizType.name; |
| | | } else if (data instanceof PLUILayout) { |
| | | PLUILayout context = (PLUILayout)data; |
| | | funcId = context.plOId; |
| | | } else if (data instanceof PLTabPage) { |
| | | PLTabPage tab = (PLTabPage) data; |
| | | funcId = tab.plOId; |
| | | } else if (data instanceof PLPageDefination){ |
| | | PLPageDefination pageDef = (PLPageDefination) data; |
| | | funcId = pageDef.plOId; |
| | | } else if (data instanceof PLTabButton) { |
| | | PLTabButton but = (PLTabButton)data; |
| | | funcId = but.plOId; |
| | | } |
| | | RoleRightDTO roleRightDTO = new RoleRightDTO(); |
| | | roleRightDTO.setId(id);//主键 |
| | | roleRightDTO.setFuncId(funcId); |
| | | if(isDeveloper) { |
| | | roleRightDTO.setRightType((short) 1);//权限类型 权限类型,超级管理员给管理员授权为1,管理员给普通用户授权为2 |
| | | }else{ |
| | | roleRightDTO.setRightType((short) 2); |
| | | } |
| | | roleRightDTO.setRightValue(1);// 权限值,没有操作的模块权限值存储为0 |
| | | roleRightDTO.setRoleId(roleId);//角色ID |
| | | roleRightDTO.setCreateUser(currentUserName);//创建者 |
| | | roleRightDTO.setCreateTime(VciDateUtil.date2Str(new Date(),""));//创建时间 |
| | | roleRightDTO.setModifyUser(currentUserName);//修改者 |
| | | roleRightDTO.setModifyTime(VciDateUtil.date2Str(new Date(),""));//修改时间 |
| | | roleRightDTO.setLicensor(""); |
| | | if(!rightMap.containsKey(funcId)){ |
| | | rightMap.put(funcId, roleRightDTO); |
| | | } |
| | | oid = parentNode.getParentId(); |
| | | if(allTreeMap.containsKey(oid)) { |
| | | parentNode = allTreeMap.get(oid); |
| | | } |
| | | } |
| | | } |
| | | }); |
| | | }else { |
| | | String funcId = ""; |
| | | if (data instanceof String) { |
| | | funcId = (String) data; |
| | | } else if (data instanceof BizType) { |
| | | BizType bizType = (BizType) data; |
| | | funcId = bizType.name; |
| | | } else if (data instanceof PLUILayout) { |
| | | PLUILayout context = (PLUILayout) data; |
| | | funcId = context.plOId; |
| | | } else if (data instanceof PLTabPage) { |
| | | PLTabPage tab = (PLTabPage) data; |
| | | funcId = tab.plOId; |
| | | } else if (data instanceof PLPageDefination) { |
| | | PLPageDefination pageDef = (PLPageDefination) data; |
| | | funcId = pageDef.plOId; |
| | | } else if (data instanceof PLTabButton) { |
| | | PLTabButton but = (PLTabButton) data; |
| | | funcId = but.plOId; |
| | | } |
| | | if (!(data instanceof PLPageDefination)) {//子节点不是操作 |
| | | if (!rightMap.containsKey(funcId) && !funcId.equals("root")) { |
| | | RoleRightDTO roleRightDTO = new RoleRightDTO(); |
| | | roleRightDTO.setFuncId(funcId); |
| | | if (isDeveloper) { |
| | | roleRightDTO.setRightType((short) 1);//权限类型 权限类型,超级管理员给管理员授权为1,管理员给普通用户授权为2 |
| | | } else { |
| | | roleRightDTO.setRightType((short) 2); |
| | | } |
| | | roleRightDTO.setRightValue(0);//没有操作的模块权限值存储为0 |
| | | roleRightDTO.setRoleId(roleId); |
| | | roleRightDTO.setCreateUser(currentUserName); |
| | | roleRightDTO.setCreateTime(VciDateUtil.date2Str(new Date(),"")); |
| | | roleRightDTO.setModifyUser(currentUserName); |
| | | roleRightDTO.setModifyTime(VciDateUtil.date2Str(new Date(),"")); |
| | | roleRightDTO.setLicensor(""); |
| | | rightMap.put(funcId, roleRightDTO); |
| | | } |
| | | for (int i = 0; i < node.getChildren().size(); i++) { |
| | | //对每个子向下递归遍历 |
| | | getRightValue(roleId, node.getChildren().get(i), allTreeMap, checkButton,false, rightMap); |
| | | } |
| | | } else { |
| | | if (!rightMap.containsKey(funcId)) { |
| | | RoleRightDTO roleRightDTO = new RoleRightDTO(); |
| | | roleRightDTO.setFuncId(funcId); |
| | | roleRightDTO.setRightType((short) 2); // 设置UI权限 |
| | | roleRightDTO.setRightValue(countRightValue(node, checkButton,true));//没有操作的模块权限值存储为0 |
| | | roleRightDTO.setRoleId(roleId); |
| | | |
| | | roleRightDTO.setCreateUser(currentUserName); |
| | | roleRightDTO.setCreateTime(VciDateUtil.date2Str(new Date(),"")); |
| | | roleRightDTO.setModifyUser(currentUserName); |
| | | roleRightDTO.setModifyTime(VciDateUtil.date2Str(new Date(),"")); |
| | | roleRightDTO.setLicensor(""); |
| | | rightMap.put(funcId, roleRightDTO); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 传入直接挂接操作的模块的节点,计算该节点的权限值 |
| | | * @param node 模块节点 |
| | | * @param isAll 是否子级全部选中 |
| | | * @return |
| | | */ |
| | | private long countRightValue(Tree node,List<String> checkButton,boolean isAll){ |
| | | long value = 0; |
| | | for(int i = 0; i < node.getChildren().size(); i++){ |
| | | Tree childNode = (Tree)node.getChildren().get(i); |
| | | //node.getData() instanceof PLTabButton这儿应该换成是否是选中的按钮节点 |
| | | if(isAll || checkButton.contains(node.getOid())){ |
| | | PLTabButton obj = (PLTabButton)childNode.getData(); |
| | | value += (long)Math.pow(2, obj.plSeq);//累计加上各个操作的权限值 |
| | | } |
| | | } |
| | | return value; |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | }); |
| | | } |
| | | private void setChildNode(List<Tree> parentTree, List<PLUILayout>contextList,Map<String,RoleRightVO> roleRightVOMap,boolean isShowCheckBox){ |
| | | Optional.ofNullable(parentTree).orElseGet(()->new ArrayList<Tree>()).stream().forEach(pTree -> { |
| | | Object funcObj= pTree.getData(); |
| | | List<Tree> chiledTreeList=new ArrayList<>(); |
| | | |
| | | /** |
| | | * 遍历子节点 |
| | | * @param parentTree |
| | | * @param contextList |
| | | * @param roleRightVOMap |
| | | * @param isShowCheckBox |
| | | */ |
| | | private void setChildNode_old(List<Tree> parentTree, List<PLUILayout>contextList,Map<String,RoleRightVO> roleRightVOMap,boolean isShowCheckBox){ |
| | | Optional.ofNullable(parentTree).orElseGet(()->new ArrayList<>()).stream().forEach(pTree -> { |
| | | Object funcObj = pTree.getData(); |
| | | List<Tree> chiledTreeList = new ArrayList<>(); |
| | | if (funcObj instanceof BizType) {//业务类型 |
| | | BizType bizType = (BizType) funcObj; |
| | | if(!CollectionUtil.isEmpty(contextList)) { |
| | | contextList.stream().forEach(context->{ |
| | | Tree childTree=new Tree(context.plOId,context.plName+"("+context.plCode+")",context); |
| | | Tree childTree = new Tree(context.plOId,context.plName+"("+context.plCode+")",context); |
| | | childTree.setParentName(pTree.getText()); |
| | | childTree.setParentBtmName(pTree.getParentBtmName()); |
| | | childTree.setParentId(pTree.getOid()); |
| | |
| | | pTree.setChildren(chiledTreeList); |
| | | } |
| | | if(!CollectionUtil.isEmpty(chiledTreeList)) { |
| | | setChildNode(chiledTreeList, contextList, roleRightVOMap, isShowCheckBox); |
| | | setChildNode_old(chiledTreeList, contextList, roleRightVOMap, isShowCheckBox); |
| | | } |
| | | }else if (funcObj instanceof PLUILayout){//UI |
| | | PLUILayout context = (PLUILayout) funcObj; |
| | | PLTabPage[] pages = new PLTabPage[0]; |
| | | try { |
| | | pages = platformClientUtil.getUIService().getPLTabPagesByPageDefinationOId(context.plOId); |
| | | } catch (PLException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | if(pages!=null&&pages.length>0){ |
| | | List<PLTabPage> plTabPageList= Arrays.stream(pages).collect(Collectors.toList()); |
| | | plTabPageList.stream().forEach(plTabPage -> { |
| | | List<PLTabPage> pageList = uiDataFetcher.getTabs(context.plOId); |
| | | if(Func.isNotEmpty(pageList)){ |
| | | pageList.stream().forEach(plTabPage -> { |
| | | Tree childTree=new Tree(plTabPage.plOId,plTabPage.plName,plTabPage); |
| | | childTree.setParentName(pTree.getText()); |
| | | childTree.setParentId(pTree.getOid()); |
| | |
| | | childTree.setShowCheckbox(isShowCheckBox); |
| | | chiledTreeList.add(childTree); |
| | | }); |
| | | } |
| | | if(!CollectionUtil.isEmpty(chiledTreeList)) { |
| | | setChildNode_old(chiledTreeList, contextList, roleRightVOMap, isShowCheckBox); |
| | | } |
| | | pTree.setChildren(chiledTreeList); |
| | | }else if (funcObj instanceof PLTabPage) {//上下文 |
| | | PLTabPage plTabPage = (PLTabPage) funcObj; |
| | | List<PLPageDefination> pageDefinationList = uiDataFetcher.getComopnent(plTabPage.plOId); |
| | | if(Func.isNotEmpty(pageDefinationList)){ |
| | | pageDefinationList.stream().forEach(plPageDefination -> { |
| | | Tree childTree=new Tree(plPageDefination.plOId,plPageDefination.name,plPageDefination); |
| | | childTree.setParentName(pTree.getText()); |
| | | childTree.setParentId(pTree.getOid()); |
| | | childTree.setParentBtmName(pTree.getParentBtmName()); |
| | | childTree.setLevel(pTree.getLevel()+1); |
| | | childTree.setShowCheckbox(isShowCheckBox); |
| | | chiledTreeList.add(childTree); |
| | | }); |
| | | pTree.setChildren(chiledTreeList); |
| | | } |
| | | if(!CollectionUtil.isEmpty(chiledTreeList)) { |
| | | setChildNode(chiledTreeList, contextList, roleRightVOMap, isShowCheckBox); |
| | | setChildNode_old(chiledTreeList, contextList, roleRightVOMap, isShowCheckBox); |
| | | } |
| | | |
| | | }else if (funcObj instanceof PLTabPage) {//上下文 |
| | | PLTabPage plTabPage = (PLTabPage) funcObj; |
| | | List<PLPageDefination>plPageDefinationList=new ArrayList<>(); |
| | | try { |
| | | PLPageDefination[] pLPageDefinations = platformClientUtil.getUIService().getPLPageDefinationsByPageContextOId(plTabPage.plOId); |
| | | if(pLPageDefinations!=null&&pLPageDefinations.length>0){ |
| | | plPageDefinationList= Arrays.stream(pLPageDefinations).collect(Collectors.toList()); |
| | | plPageDefinationList.stream().forEach(plPageDefination -> { |
| | | Tree childTree=new Tree(plPageDefination.plOId,plPageDefination.name,plPageDefination); |
| | | childTree.setParentName(pTree.getText()); |
| | | childTree.setParentId(pTree.getOid()); |
| | | childTree.setParentBtmName(pTree.getParentBtmName()); |
| | | childTree.setLevel(pTree.getLevel()+1); |
| | | childTree.setShowCheckbox(isShowCheckBox); |
| | | chiledTreeList.add(childTree); |
| | | }); |
| | | pTree.setChildren(chiledTreeList); |
| | | } |
| | | if(!CollectionUtil.isEmpty(chiledTreeList)) { |
| | | setChildNode(chiledTreeList, contextList, roleRightVOMap, isShowCheckBox); |
| | | } |
| | | } catch (PLException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | }else if (funcObj instanceof PLPageDefination) {// |
| | | }else if (funcObj instanceof PLPageDefination) { |
| | | PLPageDefination plPageDefination = (PLPageDefination) funcObj; |
| | | try { |
| | | List<PLTabButton>plTabButtonList=new ArrayList<>(); |
| | | PLTabButton[] pLTabButtons = platformClientUtil.getUIService().getPLTabButtonsByTableOId(plPageDefination.plOId); |
| | | if(pLTabButtons!=null&&pLTabButtons.length>0){ |
| | | plTabButtonList= Arrays.stream(pLTabButtons).collect(Collectors.toList()); |
| | | plTabButtonList.stream().forEach(plTabButton -> { |
| | | Tree childTree=new Tree(plTabButton.plOId,plTabButton.plLabel,plTabButton); |
| | | childTree.setParentName(pTree.getText()); |
| | | childTree.setParentId(pTree.getOid()); |
| | | childTree.setParentBtmName(pTree.getParentBtmName()); |
| | | childTree.setLevel(pTree.getLevel()+1); |
| | | childTree.setShowCheckbox(isShowCheckBox); |
| | | childTree.setLeaf(true); |
| | | chiledTreeList.add(childTree); |
| | | }); |
| | | pTree.setChildren(chiledTreeList); |
| | | } |
| | | if(!CollectionUtil.isEmpty(chiledTreeList)) { |
| | | setChildNode(chiledTreeList, contextList, roleRightVOMap, isShowCheckBox); |
| | | } |
| | | } catch (PLException e) { |
| | | e.printStackTrace(); |
| | | List<PLTabButton> pLTabButtonList = uiDataFetcher.getButtons(plPageDefination.plOId); |
| | | if(Func.isNotEmpty(pLTabButtonList)){ |
| | | pLTabButtonList.stream().forEach(plTabButton -> { |
| | | Tree childTree=new Tree(plTabButton.plOId,plTabButton.plLabel,plTabButton); |
| | | childTree.setParentName(pTree.getText()); |
| | | childTree.setParentId(pTree.getOid()); |
| | | childTree.setParentBtmName(pTree.getParentBtmName()); |
| | | childTree.setLevel(pTree.getLevel()+1); |
| | | childTree.setShowCheckbox(isShowCheckBox); |
| | | childTree.setLeaf(true); |
| | | chiledTreeList.add(childTree); |
| | | }); |
| | | pTree.setChildren(chiledTreeList); |
| | | } |
| | | |
| | | if(!CollectionUtil.isEmpty(chiledTreeList)) { |
| | | setChildNode_old(chiledTreeList, contextList, roleRightVOMap, isShowCheckBox); |
| | | } |
| | | }else if (funcObj instanceof PLTabButton) {//按钮 |
| | | PLTabButton plTabButton= (PLTabButton) funcObj; |
| | | String id =plTabButton.plTableOId; |
| | | PLTabButton plTabButton = (PLTabButton) funcObj; |
| | | String id = plTabButton.plTableOId; |
| | | if(roleRightVOMap.containsKey(id)){ |
| | | RoleRightVO roleRightVO = roleRightVOMap.get(id); |
| | | Long rightValue = roleRightVO.getRightValue(); |
| | |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * 遍历子节点 |
| | | * @param parentTree |
| | | * @param contextList |
| | | * @param isShowCheckBox |
| | | */ |
| | | private void setChildNode(List<Tree> parentTree, List<PLUILayout>contextList,Map<String, List<RoleRightVO>> roleRightVOMap, boolean isShowCheckBox){ |
| | | Optional.ofNullable(parentTree).orElseGet(()->new ArrayList<>()).stream().forEach(pTree -> { |
| | | Object funcObj = pTree.getData(); |
| | | List<Tree> chiledTreeList = new ArrayList<>(); |
| | | if (funcObj instanceof BizType) {//业务类型 |
| | | if(!CollectionUtil.isEmpty(contextList)) { |
| | | contextList.stream().forEach(context->{ |
| | | Tree childTree = new Tree(context.plOId,context.plName+"("+context.plCode+")",context); |
| | | childTree.setParentName(pTree.getText()); |
| | | childTree.setParentBtmName(pTree.getParentBtmName()); |
| | | childTree.setParentId(pTree.getOid()); |
| | | childTree.setLevel(pTree.getLevel()+1); |
| | | childTree.setShowCheckbox(isShowCheckBox); |
| | | chiledTreeList.add(childTree); |
| | | }); |
| | | pTree.setChildren(chiledTreeList); |
| | | } |
| | | if(!CollectionUtil.isEmpty(chiledTreeList)) { |
| | | setChildNode(chiledTreeList, contextList,roleRightVOMap, isShowCheckBox); |
| | | } |
| | | }else if (funcObj instanceof PLUILayout){//UI |
| | | PLUILayout context = (PLUILayout) funcObj; |
| | | List<PLTabPage> pageList = uiDataFetcher.getTabs(context.plOId); |
| | | if(Func.isNotEmpty(pageList)){ |
| | | pageList.stream().forEach(plTabPage -> { |
| | | Tree childTree=new Tree(plTabPage.plOId,plTabPage.plName,plTabPage); |
| | | childTree.setParentName(pTree.getText()); |
| | | childTree.setParentId(pTree.getOid()); |
| | | childTree.setParentBtmName(pTree.getParentBtmName()); |
| | | childTree.setLevel(pTree.getLevel()+1); |
| | | childTree.setShowCheckbox(isShowCheckBox); |
| | | chiledTreeList.add(childTree); |
| | | }); |
| | | } |
| | | if(!CollectionUtil.isEmpty(chiledTreeList)) { |
| | | setChildNode(chiledTreeList, contextList,roleRightVOMap, isShowCheckBox); |
| | | } |
| | | pTree.setChildren(chiledTreeList); |
| | | }else if (funcObj instanceof PLTabPage) {//上下文 |
| | | PLTabPage plTabPage = (PLTabPage) funcObj; |
| | | List<PLPageDefination> pageDefinationList = uiDataFetcher.getComopnent(plTabPage.plOId); |
| | | if(Func.isNotEmpty(pageDefinationList)){ |
| | | pageDefinationList.stream().forEach(plPageDefination -> { |
| | | Tree childTree=new Tree(plPageDefination.plOId,plPageDefination.name,plPageDefination); |
| | | childTree.setParentName(pTree.getText()); |
| | | childTree.setParentId(pTree.getOid()); |
| | | childTree.setParentBtmName(pTree.getParentBtmName()); |
| | | childTree.setLevel(pTree.getLevel()+1); |
| | | childTree.setShowCheckbox(isShowCheckBox); |
| | | chiledTreeList.add(childTree); |
| | | }); |
| | | pTree.setChildren(chiledTreeList); |
| | | } |
| | | if(!CollectionUtil.isEmpty(chiledTreeList)) { |
| | | setChildNode(chiledTreeList, contextList,roleRightVOMap, isShowCheckBox); |
| | | } |
| | | }else if (funcObj instanceof PLPageDefination) { |
| | | PLPageDefination plPageDefination = (PLPageDefination) funcObj; |
| | | List<PLTabButton> pLTabButtonList = uiDataFetcher.getButtons(plPageDefination.plOId); |
| | | if(Func.isNotEmpty(pLTabButtonList)){ |
| | | pLTabButtonList.stream().forEach(plTabButton -> { |
| | | Tree childTree=new Tree(plTabButton.plOId,plTabButton.plLabel,plTabButton); |
| | | childTree.setParentName(pTree.getText()); |
| | | childTree.setParentId(pTree.getOid()); |
| | | childTree.setParentBtmName(pTree.getParentBtmName()); |
| | | childTree.setLevel(pTree.getLevel()+1); |
| | | childTree.setShowCheckbox(isShowCheckBox); |
| | | childTree.setLeaf(true); |
| | | chiledTreeList.add(childTree); |
| | | }); |
| | | pTree.setChildren(chiledTreeList); |
| | | } |
| | | if(!CollectionUtil.isEmpty(chiledTreeList)) { |
| | | setChildNode(chiledTreeList, contextList,roleRightVOMap, isShowCheckBox); |
| | | } |
| | | }else if (funcObj instanceof PLTabButton) {//按钮 |
| | | PLTabButton plTabButton = (PLTabButton) funcObj; |
| | | String id = plTabButton.plTableOId; |
| | | if(roleRightVOMap.containsKey(id)){ |
| | | RoleRightVO roleRightVO = roleRightVOMap.get(id).get(0); |
| | | Long rightValue = roleRightVO.getRightValue(); |
| | | int nodeValue = plTabButton.plSeq; |
| | | if (nodeValue >= 0 && nodeValue <= 63) { |
| | | long preValue = (rightValue >> nodeValue) & 1; |
| | | if (preValue == 1) { |
| | | pTree.setChecked(true); |
| | | } |
| | | } |
| | | }else{ |
| | | pTree.setChecked(false); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * UI角色对象转换 |
| | | * @param vos |
| | | * @return |
| | | */ |
| | | private List<RoleRightDTO> roleRightVOO2DTOS(List<RoleRightVO> vos){ |
| | | List<RoleRightDTO> roleRightVOS=new ArrayList<>(); |
| | | Optional.ofNullable(vos).orElseGet(()->new ArrayList<>()).stream().forEach(vo -> { |
| | | RoleRightDTO dto=roleRightVOO2DTO(vo); |
| | | roleRightVOS.add(dto); |
| | | }); |
| | | |
| | | return roleRightVOS; |
| | | } |
| | | |
| | | /** |
| | | * UI角色对象转换 |
| | | * @param infos |
| | |
| | | }); |
| | | |
| | | return roleRightVOS; |
| | | } |
| | | |
| | | /** |
| | | * UI角色对象转换 |
| | | * @param dtos |
| | | * @return |
| | | */ |
| | | private List<RoleRightInfo> roleRightDTOO2InfoS(List<RoleRightDTO> dtos){ |
| | | List<RoleRightInfo> roleRightInfoList=new ArrayList<>(); |
| | | Optional.ofNullable(dtos).orElseGet(()->new ArrayList<>()).stream().forEach(dto -> { |
| | | RoleRightInfo info= null; |
| | | try { |
| | | info = roleRightDTOO2Info(dto); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | roleRightInfoList.add(info); |
| | | }); |
| | | |
| | | return roleRightInfoList; |
| | | } |
| | | |
| | | /** |
| | |
| | | vo.setModifyTime(VciDateUtil.date2Str(VciDateUtil.long2Date(info.modifyTime),"")); |
| | | vo.setModifyUser(info.modifyUser); |
| | | return vo; |
| | | } |
| | | |
| | | /** |
| | | * UI角色对象转换 |
| | | * @param vo |
| | | * @return |
| | | */ |
| | | private RoleRightDTO roleRightVOO2DTO(RoleRightVO vo){ |
| | | RoleRightDTO dto=new RoleRightDTO(); |
| | | dto.setId(vo.getId()); |
| | | dto.setCreateTime(vo.getCreateTime()); |
| | | dto.setCreateUser(vo.getCreateUser()); |
| | | dto.setRoleId(vo.getRoleId()); |
| | | dto.setRightType(vo.getRightType()); |
| | | dto.setLicensor(vo.getLicensor()); |
| | | dto.setRightValue(vo.getRightValue()); |
| | | dto.setFuncId(vo.getFuncId()); |
| | | dto.setModifyTime(vo.getModifyTime()); |
| | | dto.setModifyUser(vo.getModifyUser()); |
| | | return dto; |
| | | } |
| | | |
| | | /** |
| | | * UI角色对象转换 |
| | | * @param dto |
| | | * @return |
| | | */ |
| | | 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(),"")); |
| | | info.createUser=StringUtils.isBlank(dto.getCreateUser())?"":dto.getCreateUser(); |
| | | info.roleId=StringUtils.isBlank(dto.getRoleId())?"":dto.getRoleId(); |
| | | info.rightType=dto.getRightType(); |
| | | info.licensor =StringUtils.isBlank(dto.getLicensor())?"":dto.getLicensor(); |
| | | info.rightValue=dto.getRightValue(); |
| | | info.funcId=StringUtils.isBlank(dto.getFuncId())?"":dto.getFuncId(); |
| | | info.modifyTime=StringUtils.isBlank(dto.getModifyTime())? new Date().getTime() :VciDateUtil.getTime(VciDateUtil.str2Date(dto.getModifyTime(),"")); |
| | | info.modifyUser=StringUtils.isBlank(dto.getModifyUser())?"":dto.getModifyUser(); |
| | | return info; |
| | | } |
| | | |
| | | /** |
| | |
| | | * @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; |
| | |
| | | return res; |
| | | } |
| | | |
| | | /** |
| | | * 业务类型、源对象类型、顶层节点显示类型等都调用这个接口查询 |
| | | * @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定义下拉查询(templateType为UI定义时的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; |
| | | } |
| | | |
| | | /** |
| | | * 选择模板下拉查询(templateType为表格、表单、树表时的选择对象下拉查询) |
| | | * @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上下文包含其下关联的区域定义>页面定义等所有关联数据,归纳成tree结构 |
| | | * @param btmName 业务类型名称 |
| | | * @param level 查询到那个层级为止(ui、tab、pageDef) |
| | | * @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(); |
| | | //克隆到那个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); |
| | | 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属性 |
| | | 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和parentOId处理 |
| | | 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("根据源对象主键未查询到源对象,请刷新后重试!!"); |
| | | } |
| | | SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); |
| | | |
| | | //改变button对象的oid和parentOId |
| | | this.modifyButtonOIdsAndCopy(filterTabButton,toOId,ObjectUtility.getNewObjectID36()); |
| | | |
| | | return BaseResult.success("按钮复制成功!"); |
| | | } |
| | | |
| | | /** |
| | | * 修改oId和parentOid,不改变父子级(oid变换parentOId也需要跟着变换)结构,并保存按钮和其参数 |
| | | * @param button 需要修改主键保存的按钮对象 |
| | | * @param toOId 按钮关联的页面定义oid |
| | | * @param newOId 新的按钮对象主键 |
| | | * @throws PLException |
| | | */ |
| | | private void modifyButtonOIdsAndCopy(PLTabButtonVO button,String toOId, String newOId) throws PLException { |
| | | if (button == null) { |
| | | return; |
| | | } |
| | | |
| | | // 修改当前节点的oId |
| | | button.setOId(newOId); |
| | | SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); |
| | | //开始保存按钮和参数 |
| | | 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 设置为当前节点的新oid |
| | | child.setParentOid(button.getOId()); // 确保子对象的parentOid指向当前的oid |
| | | 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 { |
| | | |
| | |
| | | |
| | | /** |
| | | * 非空检查 |
| | | * @param tip |
| | | * @param txt |
| | | * @param tip 提示信息 |
| | | * @param txt 校验的内容 |
| | | * @param isRequired 是否必填 |
| | | * @return |
| | | */ |
| | | protected boolean checkRequiredIsOk(String tip, String txt){ |
| | | protected boolean checkRequiredIsOk(String tip, String txt,boolean isRequired/*是否必填*/){ |
| | | boolean res = false; |
| | | if(Func.isBlank(txt)){ |
| | | if(Func.isBlank(txt) && isRequired){ |
| | | throw new VciBaseException(tip + " 不能为空!"); |
| | | } else { |
| | | res = true; |
| | |
| | | * @param btmName 业务类型名 |
| | | * @return |
| | | */ |
| | | protected boolean checkBtmTypeTxtIsOk(String tipName, String btmName) throws PLException { |
| | | protected boolean checkBtmTypeTxtIsOk(String tipName, String btmName,boolean isRequired) throws PLException { |
| | | boolean res = false; |
| | | if(tipName == null) return true; |
| | | if(btmName == null) return true; |
| | | if(!checkRequiredIsOk(tipName, btmName)){ |
| | | if(!checkRequiredIsOk(tipName, btmName, isRequired)){ |
| | | res = false; |
| | | } else if(!checkBtmNameIsExist(tipName, btmName)){ |
| | | res = false; |
| | |
| | | * @param btmLinkType |
| | | * @return |
| | | */ |
| | | protected boolean checkPortalVITxtIsOk(String tip, String txtVIName, String btmLinkType) throws PLException { |
| | | protected boolean checkPortalVITxtIsOk(String tip, String txtVIName, String btmLinkType, boolean isRequired) throws PLException { |
| | | boolean res = false; |
| | | if(tip == null) return true; |
| | | if(txtVIName == null) return true; |
| | | if(!checkRequiredIsOk(tip, txtVIName)){ |
| | | if(!checkRequiredIsOk(tip, txtVIName,isRequired)){ |
| | | res = false; |
| | | } else if(!checkPortalVIIsExist(tip, txtVIName, btmLinkType)){ |
| | | res = false; |
| | |
| | | * @param btmLinkType |
| | | * @return |
| | | */ |
| | | protected boolean checkQTNameTxtIsOk(String tip, String txtQTName, String btmLinkType) throws PLException { |
| | | protected boolean checkQTNameTxtIsOk(String tip, String txtQTName, String btmLinkType, boolean isRequired) throws PLException { |
| | | boolean res = false; |
| | | if(tip == null) return true; |
| | | if(txtQTName == null) return true; |
| | | if(!checkRequiredIsOk(tip, txtQTName)){ |
| | | if(!checkRequiredIsOk(tip, txtQTName, isRequired)){ |
| | | res = false; |
| | | } else if(Func.isBlank(txtQTName) && !checkQTIsExist(tip, txtQTName, btmLinkType)){ |
| | | } else if(Func.isNotBlank(txtQTName) && !checkQTIsExist(tip, txtQTName, btmLinkType)){ |
| | | res = false; |
| | | } else { |
| | | res = true; |
| | |
| | | * @param btmLinkType |
| | | * @return |
| | | */ |
| | | protected boolean checkUILayoutTxtIsOk(String tip, String uiName, String btmLinkType) throws PLException { |
| | | protected boolean checkUILayoutTxtIsOk(String tip, String uiName, String btmLinkType, boolean isRequired) throws PLException { |
| | | boolean res = false; |
| | | if(tip == null) return true; |
| | | if(uiName == null) return true; |
| | | if(!checkRequiredIsOk(tip, uiName)){ |
| | | if(!checkRequiredIsOk(tip, uiName,isRequired)){ |
| | | res = false; |
| | | } else if(!checkUILayoutIsExist(tip, uiName, btmLinkType)){ |
| | | res = false; |
| | |
| | | */ |
| | | protected boolean checkQTIsExist(String tip, String txtQTName, String txtType) throws PLException { |
| | | boolean res = false; |
| | | |
| | | String sql = "select count(1) count_ from PL_QTEMPLATE qt " + |
| | | "where qt.btmname ='" + txtType.trim() + "' " + |
| | | "and qt.qtname='" + txtQTName.trim() + "'"; |
| | | |
| | | res = checkCountNotEqualZero(sql); |
| | | if(!res){ |
| | | throw new PLException("500", |
| | | new String[]{String.format("%s %s 无效!", tip, txtQTName)}); |
| | |
| | | * @param linkTypeName |
| | | * @return |
| | | */ |
| | | protected boolean checkLinkTypeTxtIsOk(String tip, String linkTypeName) throws PLException { |
| | | protected boolean checkLinkTypeTxtIsOk(String tip, String linkTypeName, boolean isRequired) throws PLException { |
| | | boolean res = false; |
| | | if(tip == null) return true; |
| | | if(linkTypeName == null) return true; |
| | | if(!checkRequiredIsOk(tip, linkTypeName)){ |
| | | if(!checkRequiredIsOk(tip, linkTypeName,isRequired)){ |
| | | res = false; |
| | | } else if(!checkLinkTypeIsExist(tip, linkTypeName)){ |
| | | res = false; |
| | |
| | | */ |
| | | private boolean checkBtmTypeInputIsOk(String btmType,String txtVIName/*选择模板*/,String txtQTName/*查询模板*/) throws PLException { |
| | | boolean res = false; |
| | | if(!super.checkBtmTypeTxtIsOk("业务类型", btmType)){ |
| | | if(!super.checkBtmTypeTxtIsOk("业务类型", btmType,true)){ |
| | | res = false; |
| | | } else if(!super.checkPortalVITxtIsOk("选择模板", txtVIName, btmType)){ |
| | | } else if(!super.checkPortalVITxtIsOk("选择模板", txtVIName, btmType,true)){ |
| | | res = false; |
| | | } else if(!super.checkQTNameTxtIsOk("查询模板", txtQTName, btmType)){ |
| | | } else if(!super.checkQTNameTxtIsOk("查询模板", txtQTName, btmType,false)){ |
| | | res = false; |
| | | } else { |
| | | res = true; |
| | |
| | | */ |
| | | private boolean checkLinkTypeInputIsOk(String txtVIName/*选择的模板*/,String txtQTName/*查询模板*/,String btmType) throws PLException { |
| | | boolean res = false; |
| | | if(!(this.checkBtmTypeTxtIsOk("目标对象", linkType))){ |
| | | if(!(this.checkLinkTypeTxtIsOk("目标对象", linkType,true))){ |
| | | res = false; |
| | | } else if(!(this.checkPortalVITxtIsOk("选择模板", txtVIName, linkType))){ |
| | | } else if(!(this.checkPortalVITxtIsOk("选择模板", txtVIName, linkType,true))){ |
| | | res = false; |
| | | } else if(!(this.checkQTNameTxtIsOk("查询模板", txtQTName, linkType))){ |
| | | } else if(!(this.checkQTNameTxtIsOk("查询模板", txtQTName, linkType,false))){ |
| | | res = false; |
| | | } else { |
| | | res = true; |
| | |
| | | d.setSearchTarger(searchTarger); |
| | | d.setShowType(btmType); |
| | | d.setTemplateId(txtVIName); |
| | | d.setOrientation("positive"); |
| | | d.setQueryTemplateName(txtQTName); |
| | | d.setExpandCols(expandCols); |
| | | d.setExpandMode(expandMode); |
| | |
| | | |
| | | private boolean checkBtmTypeInputIsOk() throws PLException { |
| | | boolean res = false; |
| | | if(!(super.checkBtmTypeTxtIsOk("顶级节点显示类型", btmType))){ |
| | | if(!(super.checkBtmTypeTxtIsOk("顶级节点显示类型", btmType,true))){ |
| | | res = false; |
| | | } else if(!(super.checkPortalVITxtIsOk("选择模板", txtVIName, btmType))){ |
| | | } else if(!(super.checkPortalVITxtIsOk("选择模板", txtVIName, btmType,true))){ |
| | | res = false; |
| | | } else if(!(super.checkQTNameTxtIsOk("查询模板", txtQTName , btmType))){ |
| | | } else if(!(super.checkQTNameTxtIsOk("查询模板", txtQTName , btmType,false))){ |
| | | res = false; |
| | | } else { |
| | | res = true; |
| | |
| | | |
| | | private boolean checkLinkTypeInputIsOk() throws PLException { |
| | | boolean res = false; |
| | | if(!(super.checkBtmTypeTxtIsOk("顶级节点显示类型", linkType))){ |
| | | if(!(super.checkBtmTypeTxtIsOk("顶级节点显示类型", linkType,true))){ |
| | | res = false; |
| | | } else if(!(super.checkPortalVITxtIsOk("选择模板", txtVIName, linkType))){ |
| | | } else if(!(super.checkPortalVITxtIsOk("选择模板", txtVIName, linkType,true))){ |
| | | res = false; |
| | | } else if(!(super.checkQTNameTxtIsOk("查询模板", txtQTName, linkType))){ |
| | | } else if(!(super.checkQTNameTxtIsOk("查询模板", txtQTName, linkType,false))){ |
| | | res = false; |
| | | } else { |
| | | res = true; |
| | |
| | | d.setShowType(btmType); |
| | | d.setLinkType(linkType); |
| | | d.setTemplateId(queryTemplateName); |
| | | d.setOrientation("positive"); |
| | | d.setRootContent(showExpressionRoot.trim()); |
| | | d.setShowAbs(showExpression.trim()); |
| | | d.setShowLinkAbs(refTreeSet.trim()); |
| | |
| | | |
| | | private boolean checkBtmTypeInputIsOk() throws PLException { |
| | | boolean res = false; |
| | | if(!(super.checkBtmTypeTxtIsOk("业务类型", btmType))){ |
| | | if(!(super.checkBtmTypeTxtIsOk("业务类型", btmType,true))){ |
| | | res = false; |
| | | return res; |
| | | } |
| | | // 链接类型不为空时,需要同时检查链接类型及链接类型下的查询模板是否有效 |
| | | if(Func.isBlank(linkType)){ |
| | | if(!(super.checkLinkTypeTxtIsOk("链接类型", linkType))){ |
| | | if(Func.isNotBlank(linkType)){ |
| | | if(!(super.checkLinkTypeTxtIsOk("链接类型", linkType,false))){ |
| | | res = false; |
| | | return res; |
| | | } else if(!(super.checkQTNameTxtIsOk("查询模板", queryTemplateName, linkType))){ |
| | | } else if(!(super.checkQTNameTxtIsOk("查询模板", queryTemplateName, linkType,true))){ |
| | | res = false; |
| | | return res; |
| | | } |
| | | } else { |
| | | // 链接类型为空时,只需要检查业务类型下的查询模板是否有效 |
| | | if(!(super.checkQTNameTxtIsOk("查询模板", queryTemplateName, btmType))){ |
| | | if(!(super.checkQTNameTxtIsOk("查询模板", queryTemplateName, btmType,true))){ |
| | | res = false; |
| | | return res; |
| | | } |
| | | } |
| | | |
| | | if(!super.checkRequiredIsOk("根节点显示表达式", showExpressionRoot)){ |
| | | if(!super.checkRequiredIsOk("根节点显示表达式", showExpressionRoot,true)){ |
| | | res = false; |
| | | } |
| | | else if(!super.checkRequiredIsOk("树节点显示表达式", showExpression)){ |
| | | else if(!super.checkRequiredIsOk("树节点显示表达式", showExpression,true)){ |
| | | res = false; |
| | | } |
| | | else if(!super.checkRequiredIsOk("参照树设置", refTreeSet)){ |
| | | else if(!super.checkRequiredIsOk("参照树设置", refTreeSet,true)){ |
| | | res = false; |
| | | } |
| | | else { |
| | |
| | | |
| | | private boolean checkUILayoutInputIsOk() throws PLException { |
| | | boolean res = false; |
| | | if (!(super.checkBtmTypeTxtIsOk("对象类型", uiBtmType))) { |
| | | if (!(super.checkBtmTypeTxtIsOk("对象类型", uiBtmType,true))) { |
| | | res = false; |
| | | } else if (!(super.checkUILayoutTxtIsOk("UI定义", uiLayout, uiBtmType))) { |
| | | } else if (!(super.checkUILayoutTxtIsOk("UI定义", uiLayout, uiBtmType,true))) { |
| | | res = false; |
| | | } else if (!(super.checkQTNameTxtIsOk("查询模板", queryTemplateName, qryType))) { |
| | | } else if (!(super.checkQTNameTxtIsOk("查询模板", queryTemplateName, qryType,false))) { |
| | | res = false; |
| | | } else { |
| | | res = true; |