From a55d22468017679f4503c1f4c5f595300e8d2f34 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期三, 27 十一月 2024 23:02:20 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java | 97 +++++++++++++++++++++++++++++++-----------------
1 files changed, 62 insertions(+), 35 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 3f4e4fe..15dda69 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,5 +1,7 @@
package com.vci.web.service.impl;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.vci.common.utility.ObjectUtility;
import com.vci.corba.common.PLException;
import com.vci.corba.common.data.UserEntityInfo;
@@ -1075,6 +1077,7 @@
break;
}
+ d.setNavigatorType(pdVO.getNavigatorType());
d = setEventDataToPLDefination(d,pdVO);
//杞瑇ml璧嬪�煎埌plDefination涓�
pd.plDefination = UITools.getPLDefinationText(d);
@@ -1191,7 +1194,7 @@
d = ulci.getNewPLDefination(d);
break;
}
-
+ d.setNavigatorType(pdVO.getNavigatorType());
d = setEventDataToPLDefination(d,pdVO);
pd.plDefination = UITools.getPLDefinationText(d);
@@ -1366,7 +1369,7 @@
*/
@Override
public BaseResult addTabButton(PLTabButtonVO tabButtonVO) {
- boolean res = this.saveOrUpdateTapButton(tabButtonVO, true);
+ boolean res = this.saveOrUpdateTabButton(tabButtonVO, true);
return res ? BaseResult.success("鎸夐挳閰嶇疆娣诲姞鎴愬姛锛�"):BaseResult.success("鎸夐挳閰嶇疆娣诲姞澶辫触锛�");
}
@@ -1377,7 +1380,7 @@
*/
@Override
public BaseResult updateTabButton(PLTabButtonVO tabButtonVO) {
- boolean res = this.saveOrUpdateTapButton(tabButtonVO, false);
+ boolean res = this.saveOrUpdateTabButton(tabButtonVO, false);
return res ? BaseResult.success("鎸夐挳閰嶇疆淇敼鎴愬姛锛�"):BaseResult.success("鎸夐挳閰嶇疆淇敼澶辫触锛�");
}
@@ -1387,11 +1390,10 @@
* @return
*/
@Override
- public boolean saveOrUpdateTapButton(PLTabButtonVO tabButtonVO,boolean isAdd){
- VciBaseUtil.alertNotNull(tabButtonVO,"鎸夐挳閰嶇疆瀵硅薄",tabButtonVO.getLabel(),"鍙傛暟鍚嶇О");
+ public boolean saveOrUpdateTabButton(PLTabButtonVO tabButtonVO,boolean isAdd){
+ VciBaseUtil.alertNotNull(tabButtonVO,"鎸夐挳閰嶇疆瀵硅薄",tabButtonVO.getLabel(),"鍙傛暟鍚嶇О",tabButtonVO.getTableOId(),"椤甸潰瀹氫箟涓婚敭");
//妫�鏌ュ綋鍓嶆坊鍔犵殑鍒楄〃鏄惁閲嶅锛屼絾鏄繖鍎垮彧鏀寔鍗曟潯鏁版嵁淇濆瓨锛屾墍鏈夊綋鍓嶅垪琛ㄥ垽閲嶅彲浠ュ墠绔潵鍋�
//String btnParamValidate = this.geCheckRes();
-
if (tabButtonVO.getSeq() < 1 || tabButtonVO.getSeq() > 63) {
throw new VciBaseException("鎸夊簭鍙疯秴鍑鸿寖鍥达紝璇蜂慨鏀癸紝鎸夐挳銆愮紪鍙枫�戝彧鑳藉湪銆�1-63銆戣寖鍥村唴銆�");
}
@@ -1467,7 +1469,7 @@
platformClientUtil.getUIService().savePLCommandParameter(plCommandParameter);
} catch (PLException e) {
e.printStackTrace();
- throw new VciBaseException("淇濆瓨鎸夐挳淇℃伅鏃跺彂鐢熷紓甯革細"+ e.getMessage());
+ throw new VciBaseException("淇濆瓨鎸夐挳鍙傛暟鏃跺彂鐢熷紓甯革細"+ e.getMessage());
}
}
}
@@ -1776,18 +1778,25 @@
treeQueryObject.setConditionMap(conditionMap);
List<Tree> treeList = this.getUIAuthor(treeQueryObject);
HashMap<String,Tree> allTreeMap = new HashMap<>();
- Map<String,RoleRightDTO> roleRightVOMap = new HashMap<>();
+ //Map<String,RoleRightDTO> roleRightVOMap = new HashMap<>();
if(!CollectionUtil.isEmpty(treeList)){
- if(StringUtils.isNotBlank(uiAuthorDTO.getRoleId())){
+ /*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();
- getSelectedRoleRightObjs(uiAuthorDTO.getRoleId(),selectTreeList,allTreeMap,roleRightVOMap,roleRightDTOList);
+ List<Tree> filterSelectTreeList = this.authTreeListConvert(selectTreeList);
+ //杩囨护鍑洪�夋嫨鐨勬寜閽�
+ List<String> checkButtonList = selectTreeList.stream()
+ .filter(item -> item.getData() instanceof PLTabButton || item.isLeaf())
+ .map(item -> item.getOid()).collect(Collectors.toList());
+
+ getSelectedRoleRightObjs(uiAuthorDTO.getRoleId(),filterSelectTreeList,checkButtonList,allTreeMap,roleRightDTOList);
SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
String currentUserName = sessionInfo.getUserId();
//boolean isDeveloper = rightControlUtil.isDeveloper(currentUserName);
@@ -1805,26 +1814,42 @@
}
/**
+ * 鑾峰彇绛涢�夊悗鐨勬暟鎹�
+ * @param selectTreeList
+ */
+ private List<Tree> authTreeListConvert(List<Tree> selectTreeList){
+ // 鍒涘缓涓�涓寘鍚彟涓�涓泦鍚堜腑婊¤冻鏉′欢鐨� oid 鐨勯泦鍚�
+ List<String> validOids = selectTreeList.stream()
+ .filter(Tree::isChecked) // checked 涓� true
+ .map(Tree::getOid) // 鎻愬彇 oid
+ .collect(Collectors.toList());
+
+ return selectTreeList.stream()
+ .filter(tree -> tree.isChecked() && !validOids.contains(tree.getParentId())) // 杩囨护鏉′欢
+ .collect(Collectors.toList());
+ }
+
+ /**
*鏍规嵁鏉冮檺璁$畻涓婁笅鏉冮檺
* @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();
+ private void getSelectedRoleRightObjs(String roleOid, List<Tree> selectTreeList, List<String> checkButtonList, HashMap<String,Tree> allTreeMap, List<RoleRightDTO> roleRightDTOList){
Map<String,RoleRightDTO> roleRightDTOMap = new HashMap<>();
+
if(!CollectionUtil.isEmpty(selectTreeList)){
selectTreeList.stream().forEach(tree -> {
String oid = tree.getOid();
if(allTreeMap.containsKey(oid)){
tree = allTreeMap.get(oid);
- Object data = tree.getData();
+ Object data = tree.getData();
if (data instanceof String) {
- getRightValue(roleOid, tree, allTreeMap, false, roleRightDTOMap);//鍚戜笅鑾峰彇鎵�鏈夋ā鍧楃殑鏉冮檺鍊�
+ getRightValue(roleOid, tree, allTreeMap, checkButtonList,false, roleRightDTOMap);//鍚戜笅鑾峰彇鎵�鏈夋ā鍧楃殑鏉冮檺鍊�
} else if (!(data instanceof PLTabButton)) {//涓氬姟绫诲瀷
- getRightValue(roleOid, tree, allTreeMap, true, roleRightDTOMap);//鍚戜笂澶勭悊
- getRightValue(roleOid, tree, allTreeMap, false, roleRightDTOMap);//鍚戜笅澶勭悊锛堝寘鍚綋鍓嶈妭鐐癸級
+ getRightValue(roleOid, tree, allTreeMap, checkButtonList, true, roleRightDTOMap);//鍚戜笂澶勭悊
+ getRightValue(roleOid, tree, allTreeMap, checkButtonList, false, roleRightDTOMap);//鍚戜笅澶勭悊锛堝寘鍚綋鍓嶈妭鐐癸級
} else if (data instanceof PLTabButton) {//鎸夐挳
String parrentId=tree.getParentId();
if(allTreeMap.containsKey(parrentId)){
@@ -1833,7 +1858,7 @@
boolean isDeveloper = rightControlUtil.isDeveloper(currentUserName);
Tree parentNode= allTreeMap.get(parrentId);
String funcId = parentNode.getOid();
- getRightValue(roleOid, tree, allTreeMap, true, roleRightDTOMap);//鍚戜笂澶勭悊璇ユ搷浣滅埗绾х殑涓婄骇妯″潡鏉冮檺(涓嶅寘鍚埗鑺傜偣)
+ getRightValue(roleOid, parentNode, allTreeMap, checkButtonList, true, roleRightDTOMap);//鍚戜笂澶勭悊璇ユ搷浣滅埗绾х殑涓婄骇妯″潡鏉冮檺(涓嶅寘鍚埗鑺傜偣)
if(!roleRightDTOMap.containsKey(funcId)){
RoleRightDTO roleRightDTO = new RoleRightDTO();
roleRightDTO.setId(ObjectUtility.getNewObjectID36());//涓婚敭
@@ -1844,7 +1869,7 @@
}else{
roleRightDTO.setRightType((short) 2);
}
- roleRightDTO.setRightValue(1);// 鏉冮檺鍊硷紝娌℃湁鎿嶄綔鐨勬ā鍧楁潈闄愬�煎瓨鍌ㄤ负0
+ roleRightDTO.setRightValue(countRightValue(parentNode,checkButtonList,false));// 鏉冮檺鍊硷紝娌℃湁鎿嶄綔鐨勬ā鍧楁潈闄愬�煎瓨鍌ㄤ负0
roleRightDTO.setRoleId(roleOid);//瑙掕壊ID
roleRightDTO.setCreateUser(currentUserName);//鍒涘缓鑰�
roleRightDTO.setCreateTime(VciDateUtil.date2Str(new Date(),""));//鍒涘缓鏃堕棿
@@ -1873,16 +1898,18 @@
* 鑾峰彇鏉冮檺
* @param isUp 鏄惁鏄悜涓婅幏鍙栵紝濡傛灉鏄悜涓婅幏鍙栵紝浼犺繘鏉ョ殑蹇呯劧鏄ā鍧楄妭鐐癸紝涓斾笂绾фā鍧楀繀鐒舵槸娌℃湁閫変腑
*/
- private void getRightValue(String roleId,Tree node,HashMap<String,Tree> allTreeMap,boolean isUp,Map<String,RoleRightDTO> rightMap){
+ private void getRightValue(String roleId,Tree node,Map<String,Tree> allTreeMap,List<String> checkButton,boolean isUp,Map<String,RoleRightDTO> rightMap){
SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
String currentUserName = sessionInfo.getUserId();
boolean isDeveloper= rightControlUtil.isDeveloper(currentUserName);
String id=ObjectUtility.getNewObjectID36();
Object data=node.getData();
if(isUp) {//鍚戜笂鑾峰彇锛屽瓨鍌ㄦ瘡涓笂绾фā鍧楃殑鏉冮檺鍊�
- while (!"root".equals(node.getData())){
- data=node.getData();
- String oid=node.getOid();
+ String parentId = node.getParentId();
+ Tree parentNode = allTreeMap.get(parentId);
+ while (!"root".equals(parentNode.getData())){
+ data=parentNode.getData();
+ String oid=parentNode.getOid();
if(allTreeMap.containsKey(oid)){
String funcId = "";
if (data instanceof BizType) {
@@ -1919,9 +1946,9 @@
if(!rightMap.containsKey(funcId)){
rightMap.put(funcId, roleRightDTO);
}
- oid= node.getParentId();
+ oid = parentNode.getParentId();
if(allTreeMap.containsKey(oid)) {
- node=allTreeMap.get(oid);
+ parentNode = allTreeMap.get(oid);
}
}
}
@@ -1965,14 +1992,14 @@
}
for (int i = 0; i < node.getChildren().size(); i++) {
//瀵规瘡涓瓙鍚戜笅閫掑綊閬嶅巻
- getRightValue(roleId, node.getChildren().get(i), allTreeMap, false, rightMap);
+ getRightValue(roleId, node.getChildren().get(i), allTreeMap, checkButton,false, rightMap);
}
} else {
if (!rightMap.containsKey(funcId)) {
RoleRightDTO roleRightDTO = new RoleRightDTO();
roleRightDTO.setFuncId(funcId);
roleRightDTO.setRightType((short) 2); // 璁剧疆UI鏉冮檺
- roleRightDTO.setRightValue(countRightValue(node, true));//娌℃湁鎿嶄綔鐨勬ā鍧楁潈闄愬�煎瓨鍌ㄤ负0
+ roleRightDTO.setRightValue(countRightValue(node, checkButton,true));//娌℃湁鎿嶄綔鐨勬ā鍧楁潈闄愬�煎瓨鍌ㄤ负0
roleRightDTO.setRoleId(roleId);
roleRightDTO.setCreateUser(currentUserName);
@@ -1992,12 +2019,13 @@
* @param isAll 鏄惁瀛愮骇鍏ㄩ儴閫変腑
* @return
*/
- private long countRightValue(Tree node,boolean isAll){
+ private long countRightValue(Tree node,List<String> checkButton,boolean isAll){
long value = 0;
- for(int i = 0;i < node.getChildren().size();i++){
+ 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();
+ //node.getData() instanceof PLTabButton杩欏効搴旇鎹㈡垚鏄惁鏄�変腑鐨勬寜閽妭鐐�
+ if(isAll || checkButton.contains(node.getOid())){
+ PLTabButton obj = (PLTabButton)childNode.getData();
value += (long)Math.pow(2, obj.plSeq);//绱鍔犱笂鍚勪釜鎿嶄綔鐨勬潈闄愬��
}
}
@@ -3323,11 +3351,10 @@
*/
protected boolean checkQTIsExist(String tip, String txtQTName, String txtType) throws PLException {
boolean res = false;
-
String sql = "select count(1) count_ from PL_QTEMPLATE qt " +
"where qt.btmname ='" + txtType.trim() + "' " +
"and qt.qtname='" + txtQTName.trim() + "'";
-
+ res = checkCountNotEqualZero(sql);
if(!res){
throw new PLException("500",
new String[]{String.format("%s %s 鏃犳晥锛�", tip, txtQTName)});
@@ -3512,7 +3539,7 @@
*/
private boolean checkLinkTypeInputIsOk(String txtVIName/*閫夋嫨鐨勬ā鏉�*/,String txtQTName/*鏌ヨ妯℃澘*/,String btmType) throws PLException {
boolean res = false;
- if(!(this.checkBtmTypeTxtIsOk("鐩爣瀵硅薄", linkType,true))){
+ if(!(this.checkLinkTypeTxtIsOk("鐩爣瀵硅薄", linkType,true))){
res = false;
} else if(!(this.checkPortalVITxtIsOk("閫夋嫨妯℃澘", txtVIName, linkType,true))){
res = false;
@@ -3697,7 +3724,7 @@
return res;
}
// 閾炬帴绫诲瀷涓嶄负绌烘椂锛岄渶瑕佸悓鏃舵鏌ラ摼鎺ョ被鍨嬪強閾炬帴绫诲瀷涓嬬殑鏌ヨ妯℃澘鏄惁鏈夋晥
- if(Func.isBlank(linkType)){
+ if(Func.isNotBlank(linkType)){
if(!(super.checkLinkTypeTxtIsOk("閾炬帴绫诲瀷", linkType,false))){
res = false;
return res;
--
Gitblit v1.9.3