| | |
| | | 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.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.model.PLDefination; |
| | | import com.vci.pagemodel.*; |
| | | import com.vci.starter.poi.bo.SheetDataSet; |
| | | import com.vci.starter.poi.bo.WriteExcelData; |
| | | import com.vci.starter.poi.bo.WriteExcelOption; |
| | | import com.vci.starter.poi.util.ExcelUtil; |
| | |
| | | import com.vci.web.util.UITools; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.NoArgsConstructor; |
| | | import org.apache.poi.hssf.usermodel.HSSFCell; |
| | | import org.apache.poi.hssf.usermodel.HSSFRow; |
| | | import org.apache.poi.hssf.usermodel.HSSFSheet; |
| | | import org.apache.poi.hssf.usermodel.HSSFWorkbook; |
| | | 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.swing.*; |
| | | import java.io.File; |
| | | import java.io.FileInputStream; |
| | | import java.io.FileNotFoundException; |
| | | import java.io.IOException; |
| | | import java.util.*; |
| | | import java.util.concurrent.atomic.AtomicBoolean; |
| | | import java.util.concurrent.atomic.AtomicInteger; |
| | | import java.util.stream.Collectors; |
| | | import java.util.regex.Pattern; |
| | |
| | | @Resource |
| | | private PlatformClientUtil platformClientUtil; |
| | | |
| | | /** |
| | | * 角色 |
| | | */ |
| | | @Resource |
| | | private SmRoleQueryServiceI smRoleQueryServiceI; |
| | | /*** |
| | | * 是否是管理员 |
| | | */ |
| | |
| | | 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{ |
| | |
| | | /** |
| | | * 导入UI上下文 |
| | | * @param file |
| | | * @param isCovered 是否覆盖 |
| | | * @param selectBtm 选择的业务类型 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public BaseResult impUIContextData(MultipartFile file) { |
| | | public BaseResult impUIContextData(File file,boolean isCovered,String selectBtm) { |
| | | /*VciBaseUtil.alertNotNull(file,"excel文件"); |
| | | if(!file.exists()){ |
| | | throw new VciBaseException("导入的excel文件不存在,{0}",new String[]{file.getPath()}); |
| | | } |
| | | //读取excel表 |
| | | List<SheetDataSet> sheetDataSets = ExcelUtil.readDataObjectFromExcel(file); |
| | | |
| | | try { |
| | | PLUILayout[] plpagelayoutdefinations = null; |
| | | try { |
| | | 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); |
| | | |
| | | *//*HSSFSheet plpagelayoutdefnationsheet = readworkbook.getSheet("PlpageLayoutDefnation"); |
| | | HSSFSheet pltabpagesheet = readworkbook.getSheet("Pltabpage"); |
| | | HSSFSheet plpagedefinationsheet = readworkbook.getSheet("Plpagedefination"); |
| | | HSSFSheet pltabbuttonsheet = readworkbook.getSheet("Pltabbutton"); |
| | | HSSFSheet plcommondparamsheet = readworkbook.getSheet("PlcommondParam");*//* |
| | | |
| | | SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); |
| | | |
| | | 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<PLUILayout>(); |
| | | List<PLTabPage> pltabpagelist = new ArrayList<PLTabPage>(); |
| | | List<PLPageDefination> plpagedefinationlist = new ArrayList<PLPageDefination>(); |
| | | List<PLTabButton> pltabbuttonlist = new ArrayList<PLTabButton>(); |
| | | List<PLCommandParameter> plcommandparameterlist = new ArrayList<PLCommandParameter>(); |
| | | |
| | | 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=""; |
| | | //add by caill end |
| | | PLAction[] allPLAction = platformClientUtil.getUIService().getAllPLAction(); |
| | | Map<String,String> relation = null; |
| | | for(int i=0;i<=plpagelayoutdefnationsheet.getLastRowNum();i++){ |
| | | pltabpagelist = new ArrayList<PLTabPage>(); |
| | | PLUILayout p = new PLUILayout(); |
| | | HSSFRow readrow = plpagelayoutdefnationsheet.getRow(i); |
| | | if(readrow==null){ |
| | | break; |
| | | } |
| | | |
| | | plpagelayoutdefinations = platformClientUtil.getUIService().getPLUILayoutsByRelatedType(btmName); |
| | | |
| | | p.plOId = ObjectUtility.getNewObjectID36(); |
| | | HSSFCell readcell = readrow.getCell(0); |
| | | p.plName = readcell.getStringCellValue(); |
| | | readcell = readrow.getCell(1); |
| | | p.plCode = readcell.getStringCellValue(); |
| | | //add by caill start |
| | | //遍历UI名称 |
| | | for(PLUILayout pd : plpagelayoutdefinations){ |
| | | if(pd.plName.equals(p.plName) && isCovered){ |
| | | 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 |
| | | readcell = readrow.getCell(2); |
| | | plpageLayoutDefinationId = readcell.getStringCellValue(); |
| | | readcell = readrow.getCell(3); |
| | | String name = readcell.getStringCellValue(); |
| | | readcell = readrow.getCell(4); |
| | | p.plRelatedType = readcell.getStringCellValue(); |
| | | readcell = readrow.getCell(5); |
| | | p.plIsShowNavigator = (short) readcell.getNumericCellValue(); |
| | | readcell = readrow.getCell(6); |
| | | p.plIsShowTab = (short) readcell.getNumericCellValue(); |
| | | readcell = readrow.getCell(7); |
| | | p.plIsShowForm = (short) readcell.getNumericCellValue(); |
| | | //选择的和导入的业务类型节点不一致 |
| | | if(!selectBtm.equals(name)){ |
| | | throw new VciBaseException("请选择要导入的类型节点名称!"); |
| | | } |
| | | |
| | | plpagelayoutdefinationList.add(p); |
| | | for(int j=0;j<=pltabpagesheet.getLastRowNum();j++){ |
| | | plpagedefinationlist = new ArrayList<PLPageDefination>(); |
| | | PLTabPage pt = new PLTabPage(); |
| | | HSSFRow readrow1 = pltabpagesheet.getRow(j); |
| | | if(readrow1==null){ |
| | | break; |
| | | } |
| | | pt.plOId = ObjectUtility.getNewObjectID36(); |
| | | HSSFCell readcell1 = readrow1.getCell(0); |
| | | pt.plName = readcell1.getStringCellValue(); |
| | | readcell1 = readrow1.getCell(1); |
| | | pt.plCode = readcell1.getStringCellValue(); |
| | | //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 |
| | | readcell1 = readrow1.getCell(2); |
| | | pt.plSeq = (short) readcell1.getNumericCellValue(); |
| | | readcell1 = readrow1.getCell(3); |
| | | pt.plContextOId = readcell1.getStringCellValue(); |
| | | readcell1 = readrow1.getCell(4); |
| | | pt.plDesc = readcell1.getStringCellValue(); |
| | | readcell1 = readrow1.getCell(5); |
| | | pt.plIsOpen = (short) readcell1.getNumericCellValue(); |
| | | readcell1 = readrow1.getCell(6); |
| | | pt.plAreaType = (short) readcell1.getNumericCellValue(); |
| | | readcell1 = readrow1.getCell(7); |
| | | pt.plOpenExpression = readcell1.getStringCellValue(); |
| | | readcell1 = readrow1.getCell(8); |
| | | pt.plLicensOrs = readcell1.getStringCellValue(); |
| | | readcell1 = readrow1.getCell(9); |
| | | pt.plLabel = readcell1.getStringCellValue(); |
| | | readcell1 = readrow1.getCell(10); |
| | | String plPageContextOId = readcell1.getStringCellValue(); |
| | | if(pt.plContextOId.equals(plpageLayoutDefinationId)){ |
| | | pt.plContextOId = p.plOId; |
| | | pltabpagelist.add(pt); |
| | | for(int k=0;k<=plpagedefinationsheet.getLastRowNum();k++){ |
| | | pltabbuttonlist = new ArrayList<PLTabButton>(); |
| | | PLPageDefination plpagedefination = new PLPageDefination(); |
| | | HSSFRow readrow2 = plpagedefinationsheet.getRow(k); |
| | | if(readrow2==null){ |
| | | break; |
| | | } |
| | | plpagedefination.plOId = ObjectUtility.getNewObjectID36(); |
| | | HSSFCell readcell2 = readrow2.getCell(0); |
| | | plpagedefination.name = readcell2.getStringCellValue(); |
| | | //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 |
| | | readcell2 = readrow2.getCell(1); |
| | | plpagedefination.plDefination = readcell2.getStringCellValue(); |
| | | readcell2 = readrow2.getCell(2); |
| | | plpagedefination.seq = (short) readcell2.getNumericCellValue(); |
| | | readcell2 = readrow2.getCell(3); |
| | | plpagedefination.plTabPageOId = readcell2.getStringCellValue(); |
| | | readcell2 = readrow2.getCell(4); |
| | | plpagedefination.desc = readcell2.getStringCellValue(); |
| | | readcell2 = readrow2.getCell(5); |
| | | plpagedefination.plType = (short) readcell2.getNumericCellValue(); |
| | | readcell2 = readrow2.getCell(6); |
| | | plTableOId = readcell2.getStringCellValue(); |
| | | if(plpagedefination.plTabPageOId.equals(plPageContextOId)){ |
| | | plpagedefination.plTabPageOId = pt.plOId; |
| | | plpagedefinationlist.add(plpagedefination); |
| | | //保存新旧oid的关系,在确定层级关系时使用 |
| | | relation = new HashMap<String,String>(); |
| | | for(int a=0;a<=pltabbuttonsheet.getLastRowNum();a++){ |
| | | HSSFRow readrow3 = pltabbuttonsheet.getRow(a); |
| | | if(readrow3!=null){ |
| | | HSSFCell readcell3 = readrow3.getCell(7); |
| | | plCommandOId = readcell3.getStringCellValue(); |
| | | String newOId = ObjectUtility.getNewObjectID36(); |
| | | relation.put(plCommandOId, newOId); |
| | | } |
| | | } |
| | | for(int a=0;a<=pltabbuttonsheet.getLastRowNum();a++){ |
| | | plcommandparameterlist = new ArrayList<PLCommandParameter>(); |
| | | PLTabButton plTabButton = new PLTabButton(); |
| | | HSSFRow readrow3 = pltabbuttonsheet.getRow(a); |
| | | if(readrow3==null){ |
| | | break; |
| | | } |
| | | plTabButton.plOId = ObjectUtility.getNewObjectID36(); |
| | | HSSFCell readcell3 = readrow3.getCell(0); |
| | | plTabButton.plLabel = readcell3.getStringCellValue(); |
| | | readcell3 = readrow3.getCell(1); |
| | | plTabButton.plAreaType = readcell3.getStringCellValue(); |
| | | readcell3 = readrow3.getCell(2); |
| | | plTabButton.plTableOId = readcell3.getStringCellValue(); |
| | | readcell3 = readrow3.getCell(3); |
| | | plTabButton.plSeq = (short) readcell3.getNumericCellValue(); |
| | | String plActionId = ""; |
| | | //PLAction[] allPLAction = Tool.getService().getAllPLAction(); |
| | | for(PLAction action : allPLAction){ |
| | | if((readrow3.getCell(4).getStringCellValue()!=null&&!"".equals(readrow3.getCell(4).getStringCellValue()) |
| | | )&&(readrow3.getCell(4).getStringCellValue().trim().equals(action.plCode.trim())) |
| | | ){ |
| | | plActionId = action.plOId; |
| | | break; |
| | | } |
| | | } |
| | | if(plActionId==null||"".equals(plActionId)){ |
| | | if(!plActionIDNulls.toString().contains(readrow3.getCell(4).getStringCellValue())){ |
| | | plActionIDNulls.append("\n\tAction编号:"+readrow3.getCell(4).getStringCellValue()); |
| | | } |
| | | } |
| | | plTabButton.plActionOId = plActionId; |
| | | readcell3 = readrow3.getCell(5); |
| | | plTabButton.plAreaType = readcell3.getStringCellValue(); |
| | | readcell3 = readrow3.getCell(6); |
| | | plTabButton.plDesc = readcell3.getStringCellValue(); |
| | | readcell3 = readrow3.getCell(8); |
| | | String parentOid = readcell3.getStringCellValue();//父oid |
| | | readcell3 = readrow3.getCell(7); |
| | | plCommandOId = readcell3.getStringCellValue(); |
| | | readcell3 = readrow3.getCell(9); |
| | | if(readcell3 != null) { |
| | | plTabButton.displayMode = readcell3.getStringCellValue(); |
| | | } |
| | | readcell3 = readrow3.getCell(10); |
| | | if(readcell3 != null) { |
| | | plTabButton.iconPath = readcell3.getStringCellValue(); |
| | | } |
| | | readcell3 = readrow3.getCell(11); |
| | | if(readcell3 != null) { |
| | | plTabButton.authorization = readcell3.getStringCellValue(); |
| | | } |
| | | readcell3 = readrow3.getCell(12); |
| | | if(readcell3 != null) { |
| | | plTabButton.show = readcell3.getStringCellValue(); |
| | | } |
| | | //赋予保存好的值,来保证层级关系不会丢失 |
| | | 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); |
| | | for(int b=0;b<=plcommondparamsheet.getLastRowNum();b++){ |
| | | PLCommandParameter plCommandParameter = new PLCommandParameter(); |
| | | HSSFRow readrow4 = plcommondparamsheet.getRow(b); |
| | | if(readrow4==null){ |
| | | break; |
| | | } |
| | | plCommandParameter.plOId = ObjectUtility.getNewObjectID36(); |
| | | HSSFCell readcell4 = readrow4.getCell(0); |
| | | plCommandParameter.plCommandOId = readcell4.getStringCellValue(); |
| | | readcell4 = readrow4.getCell(1); |
| | | plCommandParameter.plKey = readcell4.getStringCellValue(); |
| | | readcell4 = readrow4.getCell(2); |
| | | plCommandParameter.plValue = readcell4.getStringCellValue(); |
| | | 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){ |
| | | VCIOptionPane.showMessage(PLTApplication.frame, plActionIDNulls.toString()+"不存在!"); |
| | | return false; |
| | | } |
| | | |
| | | //删除原有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 true; |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | return false; |
| | | } catch (PLException e) { |
| | | e.printStackTrace(); |
| | | return false; |
| | | } |
| | | } catch (FileNotFoundException e) { |
| | | e.printStackTrace(); |
| | | return false; |
| | | } |
| | | |
| | | */ |
| | | |
| | | return null; |
| | | } |
| | |
| | | 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=roleRightVOList.stream().collect(Collectors.toMap(RoleRightVO::getFuncId,roleRightVO ->roleRightVO,(oldValue,newOldValue)->oldValue)); |
| | | } |
| | | BizType[] bizTypes=osBtmServiceI.getBizTypes(type); |
| | | List<Tree> treeList=new ArrayList<>(); |
| | |
| | | bizTypeTree.setShowCheckbox(true); |
| | | bizTypeTree.setParentBtmName(bizTypes[i].name); |
| | | 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); |
| | | } |
| | | 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); |
| | |
| | | treeQueryObject.setConditionMap(conditionMap); |
| | | List<Tree> treeList=this.getUIAuthor(treeQueryObject); |
| | | HashMap<String,Tree> allTreeMap=new HashMap<>(); |
| | | Map<String,RoleRightVO> roleRightVOMap=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 ->roleRightVO)); |
| | | 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(); |
| | | getSelectedRoleRightObjs(uiAuthorDTO.getRoleId(),selectTreeList,allTreeMap,roleRightDTOList); |
| | | getSelectedRoleRightObjs(uiAuthorDTO.getRoleId(),selectTreeList,allTreeMap,roleRightVOMap,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; |
| | | } |
| | | |
| | | /** |
| | | * |
| | | *根据权限计算上下权限 |
| | | * @param roleOid |
| | | * @param selectTreeList |
| | | * @param allTreeMap |
| | | * @param roleRightDTOList |
| | | */ |
| | | private void getSelectedRoleRightObjs(String roleOid,List<Tree> selectTreeList,HashMap<String,Tree> allTreeMap, List<RoleRightDTO> roleRightDTOList){ |
| | | private void getSelectedRoleRightObjs(String roleOid,List<Tree> selectTreeList,HashMap<String,Tree> allTreeMap,Map<String,RoleRightDTO> allRoleRightDTOMap, List<RoleRightDTO> roleRightDTOList){ |
| | | Date date=new Date(); |
| | | Map<String,RoleRightDTO> roleRightDTOMap=new HashMap<>(); |
| | | selectTreeList.stream().forEach(tree -> { |
| | | RoleRightDTO roleRightDTO=new RoleRightDTO(); |
| | | String id=ObjectUtility.getNewObjectID36(); |
| | | Object data= tree.getData(); |
| | | if(data instanceof String){ |
| | | getRightValue(roleOid,tree,allTreeMap,false,roleRightDTOMap);//向下获取所有模块的权限值 |
| | | }else if (!(data instanceof PLTabButton)) {//业务类型 |
| | | getRightValue(roleOid,tree,allTreeMap,true,roleRightDTOMap);//向上处理 |
| | | getRightValue(roleOid,tree,allTreeMap,false,roleRightDTOMap);//向下处理(包含当前节点) |
| | | }else if (data instanceof PLTabButton) {//按钮 |
| | | 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, false, roleRightDTOMap);//向下获取所有模块的权限值 |
| | | } else if (!(data instanceof PLTabButton)) {//业务类型 |
| | | getRightValue(roleOid, tree, allTreeMap, true, roleRightDTOMap);//向上处理 |
| | | getRightValue(roleOid, tree, allTreeMap, 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,tree, allTreeMap, true, roleRightDTOMap);//向上处理该操作父级的上级模块权限(不包含父节点) |
| | | if(!roleRightDTOMap.containsKey(funcId)){ |
| | | RoleRightDTO roleRightDTO = new RoleRightDTO(); |
| | | roleRightDTO.setId(ObjectUtility.getNewObjectID36());//主键 |
| | | roleRightDTO.setFuncId(funcId); |
| | | if(isDeveloper) { |
| | | roleRightDTO.setRightType((short) 1);//权限类型 权限类型,超级管理员给管理员授权为1,管理员给普通用户授权为2 |
| | | }else{ |
| | | roleRightDTO.setRightType((short) 2); |
| | | } |
| | | roleRightDTO.setRightValue(1);// 权限值,没有操作的模块权限值存储为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); |
| | | } |
| | | } |
| | | |
| | | } |
| | | }); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | }); |
| | | /* 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); |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); |
| | | String currentUserName = sessionInfo.getUserId(); |
| | | boolean isDeveloper= rightControlUtil.isDeveloper(currentUserName); |
| | | String parentOid=node.getParentId(); |
| | | if(allTreeMap.containsKey(parentOid)){ |
| | | String id=ObjectUtility.getNewObjectID36(); |
| | | Tree parentNode =allTreeMap.get(parentOid); |
| | | Object parentData= parentNode.getData(); |
| | | if(isUp) {//向上获取,存储每个上级模块的权限值 |
| | | while (!"root".equals(parentNode.getData())){ |
| | | String id=ObjectUtility.getNewObjectID36(); |
| | | Object data=node.getData(); |
| | | if(isUp) {//向上获取,存储每个上级模块的权限值 |
| | | while (!"root".equals(node.getData())){ |
| | | data=node.getData(); |
| | | String oid=node.getOid(); |
| | | if(allTreeMap.containsKey(oid)){ |
| | | String funcId = ""; |
| | | if (parentData instanceof BizType) { |
| | | BizType bizType = (BizType) parentData; |
| | | if (data instanceof BizType) { |
| | | BizType bizType = (BizType) data; |
| | | funcId = bizType.name; |
| | | } else if (parentData instanceof PLUILayout) { |
| | | PLUILayout context = (PLUILayout)parentData; |
| | | } else if (data instanceof PLUILayout) { |
| | | PLUILayout context = (PLUILayout)data; |
| | | funcId = context.plOId; |
| | | } else if (parentData instanceof PLTabPage) { |
| | | PLTabPage tab = (PLTabPage) parentData; |
| | | } else if (data instanceof PLTabPage) { |
| | | PLTabPage tab = (PLTabPage) data; |
| | | funcId = tab.plOId; |
| | | } else if (parentData instanceof PLPageDefination){ |
| | | PLPageDefination pageDef = (PLPageDefination) parentData; |
| | | } else if (data instanceof PLPageDefination){ |
| | | PLPageDefination pageDef = (PLPageDefination) data; |
| | | funcId = pageDef.plOId; |
| | | } else if (parentData instanceof PLTabButton) { |
| | | PLTabButton but = (PLTabButton)parentData; |
| | | } else if (data instanceof PLTabButton) { |
| | | PLTabButton but = (PLTabButton)data; |
| | | funcId = but.plOId; |
| | | } |
| | | RoleRightDTO roleRightDTO = new RoleRightDTO(); |
| | |
| | | roleRightDTO.setRightValue(1);// 权限值,没有操作的模块权限值存储为0 |
| | | roleRightDTO.setRoleId(roleId);//角色ID |
| | | roleRightDTO.setCreateUser(currentUserName);//创建者 |
| | | roleRightDTO.setCreateTime(new Date());//创建时间 |
| | | roleRightDTO.setCreateTime(VciDateUtil.date2Str(new Date(),""));//创建时间 |
| | | roleRightDTO.setModifyUser(currentUserName);//修改者 |
| | | roleRightDTO.setModifyTime(new Date());//修改时间 |
| | | roleRightDTO.setModifyTime(VciDateUtil.date2Str(new Date(),""));//修改时间 |
| | | roleRightDTO.setLicensor(""); |
| | | if(!rightMap.containsKey(funcId)){ |
| | | rightMap.put(funcId, roleRightDTO); |
| | | } |
| | | } |
| | | }else{ |
| | | String funcId = ""; |
| | | if(parentData instanceof String){ |
| | | funcId = (String)parentData; |
| | | } else if (parentData instanceof BizType) { |
| | | BizType bizType = (BizType)parentData; |
| | | funcId = bizType.name; |
| | | } else if (parentData instanceof PLUILayout) { |
| | | PLUILayout context = (PLUILayout)parentData; |
| | | funcId = context.plOId; |
| | | } else if (parentData instanceof PLTabPage) { |
| | | PLTabPage tab = (PLTabPage) parentData; |
| | | funcId = tab.plOId; |
| | | } else if (parentData instanceof PLPageDefination){ |
| | | PLPageDefination pageDef = (PLPageDefination) parentData; |
| | | funcId = pageDef.plOId; |
| | | } else if (parentData instanceof PLTabButton) { |
| | | PLTabButton but = (PLTabButton)parentData; |
| | | funcId = but.plOId; |
| | | } |
| | | if(!(parentData 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(new Date()); |
| | | roleRightDTO.setModifyUser(currentUserName); |
| | | roleRightDTO.setModifyTime(new Date()); |
| | | roleRightDTO.setLicensor(""); |
| | | rightMap.put(funcId, roleRightDTO); |
| | | } |
| | | for(int i = 0;i < parentNode.getChildren().size();i++){ |
| | | //对每个子向下递归遍历 |
| | | getRightValue(roleId,parentNode.getChildren().get(i),allTreeMap,false,rightMap); |
| | | } |
| | | }else { |
| | | if(!rightMap.containsKey(funcId)){ |
| | | RoleRightDTO roleRightDTO = new RoleRightDTO(); |
| | | roleRightDTO.setFuncId(funcId); |
| | | roleRightDTO.setRightType((short)2); // 设置UI权限 |
| | | roleRightDTO.setRightValue(countRightValue(parentNode,true));//没有操作的模块权限值存储为0 |
| | | roleRightDTO.setRoleId(roleId); |
| | | |
| | | roleRightDTO.setCreateUser(currentUserName); |
| | | roleRightDTO.setCreateTime(new Date()); |
| | | roleRightDTO.setModifyUser(currentUserName); |
| | | roleRightDTO.setModifyTime(new Date()); |
| | | roleRightDTO.setLicensor(""); |
| | | rightMap.put(funcId, roleRightDTO); |
| | | oid= node.getParentId(); |
| | | if(allTreeMap.containsKey(oid)) { |
| | | node=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, false, rightMap); |
| | | } |
| | | } else { |
| | | if (!rightMap.containsKey(funcId)) { |
| | | RoleRightDTO roleRightDTO = new RoleRightDTO(); |
| | | roleRightDTO.setFuncId(funcId); |
| | | roleRightDTO.setRightType((short) 2); // 设置UI权限 |
| | | roleRightDTO.setRightValue(countRightValue(node, 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 parentTree |
| | | * @param contextList |
| | | * @param roleRightVOMap |
| | | * @param isShowCheckBox |
| | | */ |
| | | 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(); |
| | |
| | | }); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 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; |
| | | } |
| | | /** |
| | | * UI角色对象转换 |
| | | * @param info |
| | |
| | | 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; |
| | | } |
| | | |
| | | /** |
| | | * 控制区节点及其子节点的克隆 |