From b8d0022a3c40c59322661e8eee568643fdeb9c50 Mon Sep 17 00:00:00 2001 From: xiejun <xiejun@vci-tech.com> Date: 星期五, 13 九月 2024 10:25:12 +0800 Subject: [PATCH] 人员选择接口添加 --- Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java | 1051 ++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 910 insertions(+), 141 deletions(-) diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java index 3b63d43..b58b9f9 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java @@ -1,30 +1,32 @@ 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.PLDefinationVO; -import com.vci.pagemodel.PLUILayoutCloneVO; -import com.vci.pagemodel.RoleRightVO; +import com.vci.pagemodel.*; +import com.vci.starter.poi.bo.WriteExcelData; +import com.vci.starter.poi.bo.WriteExcelOption; +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.util.*; import com.vci.web.service.OsBtmServiceI; import com.vci.web.service.UIManagerServiceI; import com.vci.web.util.*; +import com.vci.web.util.BeanUtil; import org.apache.commons.lang3.StringUtils; import com.vci.web.util.Func; import com.vci.web.util.PlatformClientUtil; @@ -33,12 +35,14 @@ import lombok.NoArgsConstructor; 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 java.io.IOException; +import java.io.File; 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; @@ -55,6 +59,17 @@ */ @Resource private PlatformClientUtil platformClientUtil; + + /** + * 瑙掕壊 + */ + @Resource + private SmRoleQueryServiceI smRoleQueryServiceI; + /*** + * 鏄惁鏄鐞嗗憳 + */ + @Autowired + RightControlUtil rightControlUtil; /** * 涓氬姟绫诲瀷 @@ -80,10 +95,10 @@ /** * 鎺掑簭姣旇緝鍣� */ - private Comparator<PLPageDefination> pageDefinationComparator = new Comparator<PLPageDefination>() { + private Comparator<PLDefinationVO> pageDefinationComparator = new Comparator<PLDefinationVO>() { @Override - public int compare(PLPageDefination o1, PLPageDefination o2) { - return new Integer(o1.seq).compareTo(new Integer(o2.seq)); + public int compare(PLDefinationVO o1, PLDefinationVO o2) { + return new Integer(o1.getSeq()).compareTo(new Integer(o2.getSeq())); } }; @@ -129,7 +144,7 @@ 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{ @@ -306,13 +321,133 @@ } /** + * 鏍规嵁鍕鹃�夌殑鏉′欢鑾峰彇闇�瑕佸鍑虹殑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[]{"璇峰嬀閫夎瀵煎嚭鐨刄I涓婁笅鏂囨暟鎹�!"}); + } + //鐣岄潰娌′紶鍚嶇О锛屼娇鐢ㄩ粯璁ゅ鍑哄悕绉� + String exportFileName = "UI涓婁笅鏂囧鍑篲" + Func.format(new Date(),"yyyy-MM-dd HHmmss.sss"); + //璁剧疆鍒楀悕 + List<String> columns = Arrays.asList( + "鎵�灞炰笟鍔$被鍨�","鍚嶇О", "UI涓婁笅鏂�", "瀵艰埅鍖�", "鎺у埗鍖�","鎿嶄綔鍖�", + "椤电搴忓彿","鍖哄煙缂栫爜","鍖哄煙鍚嶇О","鏄惁鍚敤","鏄剧ず琛ㄨ揪寮�", "UI瑙f瀽绫�", + "鎵╁睍灞炴��", "鎻忚堪","椤甸潰璁捐淇℃伅","椤甸潰涓嬮厤缃殑鎸夐挳" + ); + //鍐檈xcel + 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> excelDataList = new ArrayList<>(); + //璁剧疆鍒楀ご + for (int index = 0; index < columns.size(); index++) { + excelDataList.add(new WriteExcelData(0,index, columns.get(index))); + } + AtomicInteger row = new AtomicInteger(1); + expConditionMap.entrySet().stream().forEach(item->{ + //key瀛樻斁鐨剈i涓婁笅鏂囩殑id + try { + PLUILayout pluiLayout = platformClientUtil.getUIService().getPLUILayoutById(item.getKey()); + //value涓瓨鏀剧殑澶氫釜浠ラ�楀彿闂撮殧鐨勯〉绛緄d,閫氳繃杩欎釜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->{ + excelDataList.add(new WriteExcelData(row.get(),0, pluiLayout.plRelatedType)); + excelDataList.add(new WriteExcelData(row.get(),1, pluiLayout.plName)); + excelDataList.add(new WriteExcelData(row.get(),2, pluiLayout.plCode)); + excelDataList.add(new WriteExcelData(row.get(),3, pluiLayout.plIsShowForm)); + excelDataList.add(new WriteExcelData(row.get(),4, pluiLayout.plIsShowNavigator)); + excelDataList.add(new WriteExcelData(row.get(),5, pluiLayout.plIsShowTab)); + excelDataList.add(new WriteExcelData(row.get(),6, tabPage.plSeq)); + excelDataList.add(new WriteExcelData(row.get(),7, tabPage.plLabel)); + excelDataList.add(new WriteExcelData(row.get(),8, tabPage.plName)); + excelDataList.add(new WriteExcelData(row.get(),9, tabPage.plIsOpen)); + excelDataList.add(new WriteExcelData(row.get(),10, tabPage.plOpenExpression)); + excelDataList.add(new WriteExcelData(row.get(),11, tabPage.plUIParser)); + excelDataList.add(new WriteExcelData(row.get(),12, tabPage.plExtAttr)); + excelDataList.add(new WriteExcelData(row.get(),13, tabPage.plDesc)); + try { + PLPageDefination[] plPageDefinations = platformClientUtil.getUIService().getPLPageDefinationsByPageContextOId(tabPage.plOId); + if(Func.isNotEmpty(plPageDefinations)){ + excelDataList.add(new WriteExcelData(row.get(),14, JSON.toJSONString(plPageDefinations))); + List<PLTabButtonVO> tabButtonsTotal = new ArrayList<>(); + Arrays.stream(plPageDefinations).forEach(plPageDefination->{ + List<PLTabButtonVO> tabButtons = this.getTabButtons(plPageDefination.plOId); + tabButtonsTotal.addAll(tabButtons); + }); + excelDataList.add(new WriteExcelData(row.get(),15, JSON.toJSONString(tabButtonsTotal))); + } + } catch (PLException e) { + e.printStackTrace(); + } + row.getAndIncrement(); + }); + } + } catch (PLException e) { + e.printStackTrace(); + } + }); + WriteExcelOption excelOption = new WriteExcelOption(excelDataList); + ExcelUtil.writeDataToFile(excelPath, excelOption); + return excelPath; } /** @@ -322,6 +457,10 @@ */ @Override public BaseResult impUIContextData(MultipartFile file) { + + + + return null; } @@ -397,19 +536,53 @@ /** * 鏌ヨ椤甸潰璁捐瀹氫箟 - * @param plPageContextOId + * @param pageContextOId * @return */ @Override - public DataGrid getPLPageDefinations(String plPageContextOId) throws PLException { + public DataGrid getPLPageDefinations(String pageContextOId) throws PLException { DataGrid dataGrid = new DataGrid(); - if(Func.isBlank(plPageContextOId)) return dataGrid; - PLPageDefination[] plPageDefinations = platformClientUtil.getUIService().getPLPageDefinationsByPageContextOId(plPageContextOId); - - dataGrid.setTotal(plPageDefinations.length); - Arrays.sort(plPageDefinations, pageDefinationComparator); - dataGrid.setData(Arrays.asList(plPageDefinations)); + 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; + } + + /** + * 椤甸潰瀹氫箟鐨凞O2VO瀵硅薄 + * @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瀵硅薄杞琕O瀵硅薄鏃跺嚭鐜伴敊璇�,鍘熷洜锛�"+e.getMessage()); + } + }); + return plDefinationVOList; } /** @@ -426,14 +599,14 @@ 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()); @@ -444,15 +617,15 @@ 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() @@ -463,7 +636,7 @@ d = tci.getNewPLDefination(d); break; //Custom(鑷畾涔夋ā鏉�) - case 2: + case "2": //鍙鏌ユ帶鍒惰矾寰勪笉鑳戒负绌�,鏈夐棶棰樹細鐩存帴鎶ラ敊 CustomComptCheckInput ccci = new CustomComptCheckInput(pdVO.getControlPath()); if(!ccci.checkInputIsOk()){ @@ -472,10 +645,10 @@ 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() @@ -488,9 +661,9 @@ d = ttcci.getNewPLDefination(d); break; //Tree(鏍�) - case 5: + case "5": TreeComptCheckInput tcci = new TreeComptCheckInput( - pdVO.getBtmType(), + pdVO.getShowType(), pdVO.getLinkType(), pdVO.getQueryTemplateName(), pdVO.getShowExpressionRoot(), @@ -505,10 +678,10 @@ d = tcci.getNewPLDefination(d); break; //UILayout(UI瀹氫箟) - case 6: + case "6": UILayoutComptCheckInput ulci = new UILayoutComptCheckInput( pdVO.getSearchTarger(), - pdVO.getBtmType(), + pdVO.getShowType(), pdVO.getUiLayout(), pdVO.getQueryTemplateName(), pdVO.getQryType() @@ -535,28 +708,41 @@ */ @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() @@ -567,7 +753,7 @@ d = tci.getNewPLDefination(d); break; //Custom(鑷畾涔夋ā鏉�) - case 2: + case "2": //鍙鏌ユ帶鍒惰矾寰勪笉鑳戒负绌�,鏈夐棶棰樹細鐩存帴鎶ラ敊 CustomComptCheckInput ccci = new CustomComptCheckInput(pdVO.getControlPath()); if(!ccci.checkInputIsOk()){ @@ -576,10 +762,10 @@ 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() @@ -592,9 +778,9 @@ d = ttcci.getNewPLDefination(d); break; //Tree(鏍�) - case 5: + case "5": TreeComptCheckInput tcci = new TreeComptCheckInput( - pdVO.getBtmType(), + pdVO.getShowType(), pdVO.getLinkType(), pdVO.getQueryTemplateName(), pdVO.getShowExpressionRoot(), @@ -609,10 +795,10 @@ d = tcci.getNewPLDefination(d); break; //UILayout(UI瀹氫箟) - case 6: + case "6": UILayoutComptCheckInput ulci = new UILayoutComptCheckInput( pdVO.getSearchTarger(), - pdVO.getBtmType(), + pdVO.getShowType(), pdVO.getUiLayout(), pdVO.getQueryTemplateName(), pdVO.getQryType() @@ -624,12 +810,336 @@ break; } - d = comptPanel.getNewPLDefination(d); 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); + 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())); + } + } + return plTabButtonVOList; + } catch (Exception e) { + e.printStackTrace(); + throw new VciBaseException("鍔犺浇椤电鍖哄煙鎸夐挳閰嶇疆淇℃伅寮傚父锛�" + e.getMessage()); + } + } + + /** + * 澶氫釜鎸夐挳閰嶇疆DO瀵硅薄杞涓猇O瀵硅薄 + * @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瀵硅薄杞琕O瀵硅薄 + * @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); + } + 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,plOid)); + plTabButtonVOS.add(plTabButtonVO); + } + } + return plTabButtonVOS; + } + + /** + * 鎸夐挳閰嶇疆VO瀵硅薄杞珼O瀵硅薄 + * @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 addTapButton(PLTabButtonVO tabButtonVO) { + boolean res = this.saveOrUpdateTapButton(tabButtonVO, true); + return res ? BaseResult.success("鎸夐挳閰嶇疆娣诲姞鎴愬姛锛�"):BaseResult.success("鎸夐挳閰嶇疆娣诲姞澶辫触锛�"); + } + + /** + * 淇敼鎸夐挳閰嶇疆淇℃伅 + * @param tabButtonVO + * @return + */ + @Override + public BaseResult updateTapButton(PLTabButtonVO tabButtonVO) { + boolean res = this.saveOrUpdateTapButton(tabButtonVO, false); + return res ? BaseResult.success("鎸夐挳閰嶇疆淇敼鎴愬姛锛�"):BaseResult.success("鎸夐挳閰嶇疆淇敼澶辫触锛�"); + } + + /** + * 淇濆瓨鎴栦慨鏀规寜閽厤缃俊鎭� + * @param tabButtonVO + * @return + */ + @Override + public boolean saveOrUpdateTapButton(PLTabButtonVO tabButtonVO,boolean isAdd){ + VciBaseUtil.alertNotNull(tabButtonVO,"鎸夐挳閰嶇疆瀵硅薄",tabButtonVO.getLabel(),"鍙傛暟鍚嶇О"); + //妫�鏌ュ綋鍓嶆坊鍔犵殑鍒楄〃鏄惁閲嶅锛屼絾鏄繖鍎垮彧鏀寔鍗曟潯鏁版嵁淇濆瓨锛屾墍鏈夊綋鍓嶅垪琛ㄥ垽閲嶅彲浠ュ墠绔潵鍋� + //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(); + } + } + + LinkedHashMap<String, String> buttonParams = tabButtonVO.getButtonParams(); + if(Func.isNotEmpty(buttonParams)) { + 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 = plTabButton.plOId; + 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()); + } + } + } + return true; + } + + /** + * 鍒犻櫎鍗曚釜鎸夐挳閰嶇疆 + * @param tabButtonVO + * @return + */ + @Override + public boolean deleteTapButton(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("褰撳墠鑺傜偣涓嶅瓨鍦ㄥ厔鑺傜偣锛屾棤娉曡皟鏁翠负涓嬬骇鎸夐挳锛�"); + } + //璁剧疆鐖秈d涓轰笂涓�涓妭鐐圭殑 + 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.fail("淇敼鎴愬姛锛�"); + } + + /** + * 璋冩暣涓轰笂绾ф寜閽� + * @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("鎾ら攢鎴愬姛锛�"); } /** @@ -676,25 +1186,12 @@ } /** - * 鍒犻櫎椤甸潰瀹氫箟 - * @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()); @@ -809,7 +1306,7 @@ 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<>(); @@ -827,18 +1324,22 @@ 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); return treeList; } + /*** + * UI鎺堟潈 + * @param uiAuthorDTO + * @return + * @throws Exception + */ @Override public boolean authorizedUI(UIAuthorDTO uiAuthorDTO) throws Exception { boolean res=false; @@ -854,48 +1355,231 @@ treeQueryObject.setConditionMap(conditionMap); 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); + 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; } - 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 roleOid + * @param selectTreeList + * @param allTreeMap + * @param 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<>(); + 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); + } + } - 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 + } - }else if (data instanceof PLTabPage) {//UI涓婁笅鏂� + } + }); + /* 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 PLPageDefination) {// - - - }else if (data instanceof PLTabButton) {//鎸夐挳 - + /** + * 鑾峰彇鏉冮檺 + * @param isUp 鏄惁鏄悜涓婅幏鍙栵紝濡傛灉鏄悜涓婅幏鍙栵紝浼犺繘鏉ョ殑蹇呯劧鏄ā鍧楄妭鐐癸紝涓斾笂绾фā鍧楀繀鐒舵槸娌℃湁閫変腑 + */ + private void getRightValue(String roleId,Tree node,HashMap<String,Tree> allTreeMap,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) {//鍚戜笂鑾峰彇锛屽瓨鍌ㄦ瘡涓笂绾фā鍧楃殑鏉冮檺鍊� + while (!"root".equals(node.getData())){ + data=node.getData(); + String oid=node.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= 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 node 妯″潡鑺傜偣 + * @param isAll 鏄惁瀛愮骇鍏ㄩ儴閫変腑 + * @return + */ + private long countRightValue(Tree node,boolean isAll){ + long value = 0; + for(int i = 0;i < node.getChildren().size();i++){ + Tree childNode = (Tree)node.getChildren().get(i); + if(isAll && node.getData() instanceof PLTabButton ){ + PLTabButton obj = (PLTabButton)node.getData(); + value += (long)Math.pow(2, obj.plSeq);//绱鍔犱笂鍚勪釜鎿嶄綔鐨勬潈闄愬�� + } + } + return value; } /** @@ -912,6 +1596,14 @@ } }); } + + /*** + * 閬嶅巻瀛愯妭鐐� + * @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(); @@ -1028,6 +1720,25 @@ } }); } + + + /** + * 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 @@ -1042,7 +1753,25 @@ 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 @@ -1061,6 +1790,45 @@ 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; } /** @@ -1201,13 +1969,14 @@ /** * 闈炵┖妫�鏌� - * @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; @@ -1221,11 +1990,11 @@ * @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; @@ -1277,11 +2046,11 @@ * @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; @@ -1320,13 +2089,13 @@ * @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; @@ -1341,11 +2110,11 @@ * @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; @@ -1399,11 +2168,11 @@ * @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; @@ -1547,11 +2316,11 @@ */ 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; @@ -1568,11 +2337,11 @@ */ private boolean checkLinkTypeInputIsOk(String txtVIName/*閫夋嫨鐨勬ā鏉�*/,String txtQTName/*鏌ヨ妯℃澘*/,String btmType) throws PLException { boolean res = false; - if(!(this.checkBtmTypeTxtIsOk("鐩爣瀵硅薄", linkType))){ + if(!(this.checkBtmTypeTxtIsOk("鐩爣瀵硅薄", 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; @@ -1652,11 +2421,11 @@ 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; @@ -1666,11 +2435,11 @@ 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; @@ -1748,16 +2517,16 @@ 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(!(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; } @@ -1769,13 +2538,13 @@ } } - 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 { @@ -1843,11 +2612,11 @@ 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; -- Gitblit v1.9.3