| | |
| | | package com.vci.web.service.impl; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.alibaba.fastjson.JSON; |
| | | 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.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.model.PLDefination; |
| | | import com.vci.pagemodel.*; |
| | | import com.vci.starter.poi.bo.WriteExcelData; |
| | | import com.vci.starter.poi.bo.WriteExcelOption; |
| | | 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.DataGrid; |
| | | import com.vci.starter.web.pagemodel.SessionInfo; |
| | | import com.vci.starter.web.util.*; |
| | | import com.vci.web.redis.RedisService; |
| | | import com.vci.web.service.OsBtmServiceI; |
| | | import com.vci.web.service.UIManagerServiceI; |
| | | import com.vci.web.util.*; |
| | |
| | | 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 java.io.File; |
| | | import java.util.*; |
| | | import java.util.concurrent.atomic.AtomicBoolean; |
| | | import java.util.concurrent.TimeUnit; |
| | | import java.util.concurrent.atomic.AtomicInteger; |
| | | import java.util.stream.Collectors; |
| | | import java.util.regex.Pattern; |
| | |
| | | private PlatformClientUtil platformClientUtil; |
| | | |
| | | /** |
| | | * 角色 |
| | | * 缓存工具 |
| | | */ |
| | | @Resource |
| | | private SmRoleQueryServiceI smRoleQueryServiceI; |
| | | private RedisService redisService; |
| | | |
| | | /*** |
| | | * 是否是管理员 |
| | | */ |
| | |
| | | * 日志 |
| | | */ |
| | | private Logger logger = LoggerFactory.getLogger(getClass()); |
| | | |
| | | /** |
| | | * 导入数据的sheet集合 |
| | | */ |
| | | private final String IMPORTUIKEY = "importUIKey:"; |
| | | |
| | | /** |
| | | * 排序比较器 |
| | |
| | | //区域定义 |
| | | 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.plLabel)); |
| | | tpDataList.add(new WriteExcelData(tpRow.get(),3, tabPage.plName)); |
| | | tpDataList.add(new WriteExcelData(tpRow.get(),4, tabPage.plContextOId)); |
| | | tpDataList.add(new WriteExcelData(tpRow.get(),5, tabPage.plIsOpen)); |
| | | tpDataList.add(new WriteExcelData(tpRow.get(),6, tabPage.plOpenExpression)); |
| | | tpDataList.add(new WriteExcelData(tpRow.get(),7, tabPage.plUIParser)); |
| | | tpDataList.add(new WriteExcelData(tpRow.get(),8, tabPage.plExtAttr)); |
| | | tpDataList.add(new WriteExcelData(tpRow.get(),9, tabPage.plDesc)); |
| | | 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); |
| | |
| | | /** |
| | | * 导入UI上下文 |
| | | * @param file |
| | | * @param isCovered 是否覆盖 |
| | | * @param selectBtm 选择的业务类型 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public BaseResult impUIContextData(MultipartFile file) { |
| | | 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); |
| | | |
| | | return null; |
| | | 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)); |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | }); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * UI角色对象转换 |
| | | * @param vos |
| | |
| | | return roleRightVOS; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * UI角色对象转换 |
| | | * @param infos |
| | |
| | | |
| | | return roleRightVOS; |
| | | } |
| | | |
| | | /** |
| | | * UI角色对象转换 |
| | | * @param dtos |
| | |
| | | |
| | | return roleRightInfoList; |
| | | } |
| | | |
| | | /** |
| | | * UI角色对象转换 |
| | | * @param info |
| | |
| | | vo.setModifyUser(info.modifyUser); |
| | | return vo; |
| | | } |
| | | |
| | | /** |
| | | * UI角色对象转换 |
| | | * @param vo |
| | |
| | | * @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() <= 1 ? 1 : (baseQueryObject.getPage() - 1) * baseQueryObject.getLimit() + 1; |
| | | int end = baseQueryObject.getPage() <= 1 ? baseQueryObject.getLimit() : (baseQueryObject.getPage() * baseQueryObject.getLimit()); |
| | | |
| | | |
| | | 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 = 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); |
| | | 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; |
| | | } |
| | | |
| | | /** |
| | | * 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() <= 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 = 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); |
| | | 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() <= 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 = 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); |
| | | 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() <= 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 = 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); |
| | | 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; |
| | | } |
| | | |
| | |
| | | } |
| | | } else { |
| | | // 链接类型为空时,只需要检查业务类型下的查询模板是否有效 |
| | | if(!(super.checkQTNameTxtIsOk("查询模板", queryTemplateName, btmType))){ |
| | | if(!(super.checkQTNameTxtIsOk("查询模板", queryTemplateName, btmType,true))){ |
| | | res = false; |
| | | return res; |
| | | } |