From 52fd1e55b71fa38ffe89db738acc4e6c7e4da0df Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期五, 02 二月 2024 16:47:35 +0800
Subject: [PATCH] 分类授权,数据授权界面请求参数修改

---
 Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/ClassifyAuthServiceImpl.java |   30 ++++++---
 Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/dto/ClassifyAuthDTO.java          |    8 +-
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java            |   37 ++++++++---
 Source/UBCS-WEB/src/components/Theme/ClassifyAuthDialog.vue                                                      |    4 +
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSynonymServiceImpl.java      |   20 ++++++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java        |    6 +
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeSynonymService.java              |    6 ++
 Source/UBCS-WEB/src/components/Theme/DataAuthDialog.vue                                                          |    3 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java   |   27 ++++++--
 Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/MenuServiceImpl.java         |   18 +++++-
 10 files changed, 121 insertions(+), 38 deletions(-)

diff --git a/Source/UBCS-WEB/src/components/Theme/ClassifyAuthDialog.vue b/Source/UBCS-WEB/src/components/Theme/ClassifyAuthDialog.vue
index 073e047..6f1a28d 100644
--- a/Source/UBCS-WEB/src/components/Theme/ClassifyAuthDialog.vue
+++ b/Source/UBCS-WEB/src/components/Theme/ClassifyAuthDialog.vue
@@ -171,7 +171,7 @@
                 //娣诲姞 鈥滄煡鐪嬪叏閮ㄧ鐢ㄦ潯浠垛��
                 if (item.code === "classify_view") {
                   this.$set(this.classifyAuthData[index].authButton, "allDisabled", true);
-                  console.log(this.classifyAuthData[index].authButton.allDisabled)
+                  // console.log(this.classifyAuthData[index].authButton.allDisabled)
                 }
 
               } else {
@@ -288,8 +288,10 @@
         classifyAuthList: [],
         isCLear: false, //榛樿鏄竻绌�
         classifyId: this.TreeNode.oid,
+        authType: 'classify_auth',
       };
       let isRepeat = false;
+      // console.log(this.classifyAuthData);
       if(this.classifyAuthData.length > 0){
         // 閬嶅巻鏁扮粍锛屾瘮杈冨悗闈㈢殑瀵硅薄鐨剅oleData鏄惁涓庡墠闈㈢殑瀵硅薄鐩哥瓑
         for (let i = 0; i < this.classifyAuthData.length - 1; i++) {
diff --git a/Source/UBCS-WEB/src/components/Theme/DataAuthDialog.vue b/Source/UBCS-WEB/src/components/Theme/DataAuthDialog.vue
index d352de3..5e9e512 100644
--- a/Source/UBCS-WEB/src/components/Theme/DataAuthDialog.vue
+++ b/Source/UBCS-WEB/src/components/Theme/DataAuthDialog.vue
@@ -131,7 +131,7 @@
     classifyAuthData(newval){
 
       this.addIndex = newval.length <= 0 ? 0 :newval.length-1;
-      console.log(this.addIndex)
+      // console.log(this.addIndex)
     }
   },
   computed: {},
@@ -289,6 +289,7 @@
         classifyAuthList: [],
         isCLear: false, //榛樿鏄竻绌�
         classifyId: this.TreeNode.oid,
+        authType: 'data_auth',
       };
       let isRepeat = false;
       if (this.classifyAuthData.length > 0) {
diff --git a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/dto/ClassifyAuthDTO.java b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/dto/ClassifyAuthDTO.java
index 78c9f1f..8a29084 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/dto/ClassifyAuthDTO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/dto/ClassifyAuthDTO.java
@@ -11,20 +11,20 @@
  * @date 2024/1/24 17:57
  */
 @Data
-public class ClassifyAuthDTO {
-
+public class ClassifyAuthDTO extends ClassifyAuth{
 
 	private List<ClassifyAuth> classifyAuthList;
 
 	/**
 	 * 鏄惁娓呯┖ true鏄竻绌猴紝false涓嶆槸娓呯┖
 	 */
-//	@NotBlank(message = "蹇呬紶鍙傛暟isCLear涓嶈兘涓虹┖")
+	//	@NotBlank(message = "蹇呬紶鍙傛暟isCLear涓嶈兘涓虹┖")
 	private Boolean isCLear;
 
 	/**
 	 * 鍒嗙被id
 	 */
-//	@NotBlank(message = "蹇呬紶鍙傛暟classifyId涓嶈兘涓虹┖")
+	//	@NotBlank(message = "蹇呬紶鍙傛暟classifyId涓嶈兘涓虹┖")
 	private String classifyId;
+
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeSynonymService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeSynonymService.java
index c8c09c9..a05677c 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeSynonymService.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeSynonymService.java
@@ -77,4 +77,10 @@
 	 */
 	String selectNameByWrapper(LambdaQueryWrapper<CodeSynonym> wrappers);
 
+	/**
+	 * 鑾峰彇杩戜箟璇嶆煡璇㈣鍒�
+	 * @return
+	 */
+	Map<String,List<CodeSynonym>> getCodeSynonymByOids(Map<String, CodeClassifyTemplateAttrVO> sysonymAttrMap);
+
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSynonymServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSynonymServiceImpl.java
index 855bb23..3181924 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSynonymServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSynonymServiceImpl.java
@@ -42,8 +42,10 @@
 import org.springblade.core.tool.utils.Func;
 import org.springframework.stereotype.Service;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 /**
  * 杩戜箟璇嶇淮鎶� 鏈嶅姟瀹炵幇绫�
@@ -156,4 +158,22 @@
 		return res.toString().replaceAll(",$", "");
 	}
 
+	/**
+	 * 鑾峰彇杩戜箟璇嶆煡璇㈣鍒�
+	 * @return
+	 */
+	@Override
+	public Map<String, List<CodeSynonym>> getCodeSynonymByOids(Map<String, CodeClassifyTemplateAttrVO> sysonymAttrMap) {
+		if(sysonymAttrMap.isEmpty()){
+			return new HashMap<>();
+		}
+		Map<String, List<CodeSynonym>> resMap = new HashMap<>();
+		for (String key : sysonymAttrMap.keySet()) {
+			List<String> oids = Func.toStrList(sysonymAttrMap.get(key).getSysonymRuleOids());
+			List<CodeSynonym> codeSynonyms = codeSynonymMapper.selectBatchIds(oids);
+			resMap.put(key,codeSynonyms);
+		}
+		return resMap;
+	}
+
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
index 22e1a3d..5942281 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -3915,7 +3915,11 @@
 		uiInfoVO.setLeaf(classifyService.countChildrenByClassifyOid(codeClassifyOid) == 0);
 		if (StringUtils.isNotBlank(functionId) && !"~".equalsIgnoreCase(functionId)) {
 			// TODO:2024-1-25 18:42妯℃澘涓婄殑btmtypeid鏈夋椂鍊欎細瀛樺湪澶у皬鍐欑殑闂锛屾寜鐞嗘潵璇磋繖鍎跨洿鎺ョ敤functionId灏辫兘婊¤冻鏌ヨ鑿滃崟鎸夐挳浜唘iInfoVO.getTemplateVO().getBtmTypeId()
-			List<Menu> buttonVOS = iSysClient.getMenuButtonByType(codeClassifyOid, functionId, "data_auth").getData();
+			R<List<Menu>> buttonListR = iSysClient.getMenuButtonByType(codeClassifyOid, functionId, "data_auth");
+			if(!buttonListR.isSuccess()){
+				throw new ServiceException("鑾峰彇鎸夐挳鎺堟潈鍒楄〃澶辫触锛屽師鍥狅細"+buttonListR.getMsg());
+			}
+			List<Menu> buttonVOS = buttonListR.getData();
 
 			List<SmOperationVO> operationVOS = new ArrayList<>();
 			if (!CollectionUtils.isEmpty(buttonVOS)) {
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
index 0e551e1..acbecdf 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
@@ -12,6 +12,7 @@
 import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO;
 import com.vci.ubcs.code.dto.*;
 import com.vci.ubcs.code.entity.CodeAllCode;
+import com.vci.ubcs.code.entity.CodeSynonym;
 import com.vci.ubcs.code.enumpack.*;
 import com.vci.ubcs.code.lifecycle.CodeAllCodeLC;
 import com.vci.ubcs.code.mapper.CommonsMapper;
@@ -97,7 +98,6 @@
 @Slf4j
 public class MdmIOServiceImpl implements MdmIOService {
 
-
 	/**
 	 * 瀛楁
 	 */
@@ -164,36 +164,45 @@
 	@Autowired
 	private ICodeKeyAttrRepeatService keyRuleService;
 
+	@Autowired ICodeSynonymService codeSynonymService;
+
 	/**
 	 * 鍏紡鐨勬湇鍔�
 	 */
 	@Autowired
 	private FormulaServiceImpl formulaService;
+
 	/**
 	 * 瑙勫垯鐨勬湇鍔�
 	 */
 	@Autowired
 	private ICodeRuleService ruleService;
+
 	/**
 	 * 涓氬姟绫诲瀷鐨勬湇鍔�
 	 */
 	@Autowired
 	private IBtmTypeClient btmTypeClient;
+
 	/***
 	 * 鐢宠闆嗗洟缂栫爜鏈嶅姟
 	 */
 	@Resource
 	private IMdmInterJtClient mdmInterJtClient;
+
 	/***
 	 * 瀵嗙骇鏈嶅姟
 	 */
 	@Resource
 	private IWebSecretClient secretService;
+
 	/**
 	 * 鏃ュ織淇濆瓨宸ュ叿绫�
 	 */
 	@Autowired
 	private SaveLogUtil saveLogUtil;
+
+
 
 	/**
 	 * 瀹㈡埛鐜板満excel涓鸿�佺増鏈紝瀵煎嚭鐨勬�绘暟闄愬埗涓�65535
@@ -959,9 +968,7 @@
 			//鏈�鍚庡紕缁勫悎瑙勫垯
 			batchSwitchComponentAttrOnOrder(attrVOS,allCboList);
 
-
 			Map<String, ClientBusinessObject> rowIndexCboMap = allCboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getAttributeValue((IMPORT_ROW_INDEX)), t -> t));
-
 
 			List<ClientBusinessObject> needSaveCboList = allCboList.stream().filter(cbo -> {
 				String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
@@ -4386,7 +4393,16 @@
 		CodeKeyAttrRepeatVO keyRuleVO = keyRuleService.getRuleByClassifyFullInfo(classifyFullInfo);
 		//娉ㄦ剰鐨勬槸keyRuleVO鍙兘涓虹┖锛岃〃绀轰笉浣跨敤瑙勫垯鎺у埗
 		//鑾峰彇鎵�鏈夌殑鍏抽敭灞炴��
-		Map<String/**灞炴�х殑缂栧彿**/, CodeClassifyTemplateAttrVO> ketAttrMap = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getKeyAttrFlag())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+		Map<String/**灞炴�х殑缂栧彿**/, CodeClassifyTemplateAttrVO> keyAttrMap = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getKeyAttrFlag())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+
+		// TODO:2024-02-01 鍏堣幏鍙栭厤缃簡杩戜箟璇嶆煡璇㈣鍒欑殑灞炴�э紝涓嶅悓浜庡叧閿睘鎬э紝璁剧疆浜嗚繎涔夎瘝鏌ヨ瑙勫垯鐨勫睘鎬у彲鑳芥槸澶氭潯涓嶅悓鐨勮繎涔夎瘝鏌ヨ瑙勫垯
+		Map<String, CodeClassifyTemplateAttrVO> sysonymAttrMaps = templateVO.getAttributes().stream().filter(item -> Func.isNotBlank(item.getSysonymRuleOids())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+		//鏈夐厤缃繎涔夎瘝鏌ヨ瑙勫垯灞炴��
+		Map<String, List<CodeSynonym>> codeSynonymMaps = new HashMap<>();
+		if(!sysonymAttrMaps.isEmpty()){
+			// 鏌ヨ杩戜箟璇嶈鍒�
+			codeSynonymMaps = codeSynonymService.getCodeSynonymByOids(sysonymAttrMaps);
+		}
 
 		boolean trimAll =keyRuleVO ==null?false: VciBaseUtil.getBoolean(keyRuleVO.getIgnoreallspaceflag());
 		//鍏ㄩ儴鍘荤┖鐨勪紭鍏堢骇澶т簬鍘荤┖
@@ -4398,15 +4414,13 @@
 		CodeImportResultVO resultVO = new CodeImportResultVO();
 		resultVO.setKeyAttrRuleInfo(String.format(keyRuleVO ==null?"":"鏌ヨ瑙勫垯锛氬幓闄ょ┖鏍�--{0},蹇界暐澶у皬鍐�--{1},蹇界暐鍏ㄥ崐瑙�--{2},蹇界暐鍏ㄩ儴绌烘牸--{3}",
 			new String[]{trim?"鏄�":"鍚�",ignoreCase?"鏄�":"鍚�",ignoreWidth?"鏄�":"鍚�",trimAll?"鏄�":"鍚�"}));
-		//resultVO.setSelfRepeatRowIndexList(getSelfRepeatRowIndex(ketAttrMap,cboList,keyRuleVO));
-		getSelfRepeatRowIndex(ketAttrMap,cboList,keyRuleVO,resultVO);
+		//resultVO.setSelfRepeatRowIndexList(getSelfRepeatRowIndex(keyAttrMap,cboList,keyRuleVO));
+		getSelfRepeatRowIndex(keyAttrMap,cboList,keyRuleVO,resultVO);
 		if(!CollectionUtils.isEmpty(resultVO.getSelfRepeatRowIndexList())){
 			//鎴戜滑绉婚櫎鏈韩閲嶅鐨勬暟鎹�
 			cboList = cboList.stream().filter(s->!resultVO.getSelfRepeatRowIndexList().contains(s.getAttributeValue(IMPORT_ROW_INDEX))).collect(Collectors.toList());
 		}
 		//2.鍒ゆ柇鍏抽敭灞炴�у湪绯荤粺閲屾槸鍚﹂噸澶�
-		//鍥犱负鏁版嵁閲忓緢澶э紝鎵�浠ュ緱鎯冲姙娉曞苟琛�
-		//SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
 		Map<String,List<BaseModel>> indexTODataMap=new ConcurrentHashMap<>();
 		// 鏌ヨ涓嶉渶瑕佸弬涓庡叧閿睘鎬ф牎楠岀殑闄よ嚜宸变互澶栫殑鎵�鏈夊垎绫籵id
 		final String isParticipateCheckOids = classifyService.selectLeafByParentClassifyOid(classifyFullInfo.getTopClassifyVO().getOid(), classifyFullInfo.getCurrentClassifyVO().getOid());
@@ -4420,7 +4434,7 @@
 				//姣忚閮藉緱鏌ヨ.濡傛灉鍏朵腑鍑虹幇浜嗛敊璇紝鎴戜滑灏辩洿鎺ユ姏鍑哄紓甯革紝鍏朵綑鐨勬樉绀�
 				//VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
 				Map<String, String> conditionMap = new HashMap<>();
-				ketAttrMap.forEach((attrId, attrVO) -> {
+				keyAttrMap.forEach((attrId, attrVO) -> {
 					String value =cbo.getAttributeValue(attrId.toLowerCase(Locale.ROOT));
 					if (value == null) {
 						value = "";
@@ -4428,12 +4442,13 @@
 					value= value.replace(REQUIRED_CHAR,SPECIAL_CHAR);
 					engineService.wrapperKeyAttrConditionMap(value, keyRuleVO, attrId, trim, ignoreCase, ignoreWidth, trimAll, conditionMap);
 				});
-				if (!CollectionUtils.isEmpty(ketAttrMap)) {
+				if (!CollectionUtils.isEmpty(keyAttrMap)) {
 					// 娣诲姞涓嶅弬涓庡叧閿睘鎬ф牎楠岀殑鍒嗙被oid鍒ゆ柇
 					if(Func.isNotBlank(isParticipateCheckOids)){
 						conditionMap.put("t.codeclsfid",QueryOptionConstant.NOTIN+isParticipateCheckOids);
 					}
-					if(isEdit){//濡傛灉鏄洿鏀瑰垯闇�鎺掗櫎绯荤粺鏈韩
+					//濡傛灉鏄洿鏀瑰垯闇�鎺掗櫎绯荤粺鏈韩
+					if(isEdit){
 						conditionMap.put("t.id",QueryOptionConstant.NOTEQUAL+cbo.getId());
 					}
 					conditionMap.put("t.lastr", "1");
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
index 79a0fea..5f5cf28 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
@@ -438,16 +438,22 @@
 			for (CodeAllCode codeAllCode : takeBack) {
 				codeAllCode.setTs(new Date());
 				codeAllCode.setLastModifyTime(new Date());
-				codeAllCode.setLastModifier(AuthUtil.getUserId().toString());
-				Iterator<CodeAllCode> iterator = allCodeDOList.iterator();
-				while (iterator.hasNext()){
+				codeAllCode.setLastModifier(Func.isNotEmpty(user) ? user.getAccount():AuthUtil.getUserAccount());
+				for (int i = 0; i < allCodeDOList.size(); i++) {
+					if(codeAllCode.getId().equals(allCodeDOList.get(i).getId())){
+						codeAllCode.setCreateCodeOid(allCodeDOList.get(i).getCreateCodeOid());
+						codeAllCode.setLcStatus(allCodeDOList.get(i).getLcStatus());
+						allCodeDOList.remove(i);
+					}
+				}
+				/*while (iterator.hasNext()){
 					CodeAllCode next = iterator.next();
 					if(codeAllCode.getId().equals(next.getId())){
 						codeAllCode.setCreateCodeOid(next.getCreateCodeOid());
 						codeAllCode.setLcStatus(next.getLcStatus());
 						//iterator.remove();
 					}
-				}
+				}*/
 			}
 			if(takeBack.size()>0){
 				codeAllCodeService.updateBatchById(takeBack);
@@ -614,7 +620,7 @@
 			}
 		}
 	}
-	
+
 	/**
 	 * 杞崲娴佹按鐮佹鐨勫��
 	 * @param serialSecVOList 娴佹按鐮佹
@@ -1259,14 +1265,21 @@
 			codeAllCode.setLastModifyTime(new Date());
 			codeAllCode.setLastModifier(AuthUtil.getUserId().toString());
 			Iterator<CodeAllCode> iterator = allCodeDOList.iterator();
-			while (iterator.hasNext()){
+			for (int i = 0; i < allCodeDOList.size(); i++) {
+				if(codeAllCode.getId().equals(allCodeDOList.get(i).getId())){
+					codeAllCode.setCreateCodeOid(allCodeDOList.get(i).getCreateCodeOid());
+					codeAllCode.setLcStatus(allCodeDOList.get(i).getLcStatus());
+					allCodeDOList.remove(i);
+				}
+			}
+			/*while (iterator.hasNext()){
 				CodeAllCode next = iterator.next();
 				if(codeAllCode.getId().equals(next.getId())){
 					codeAllCode.setCreateCodeOid(next.getCreateCodeOid());
 					codeAllCode.setLcStatus(next.getLcStatus());
 					//iterator.remove();
 				}
-			}
+			}*/
 		}
 		if(takeBack.size()>0){
 			codeAllCodeService.updateBatchById(takeBack);
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/ClassifyAuthServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/ClassifyAuthServiceImpl.java
index d26b2a6..a0c765f 100644
--- a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/ClassifyAuthServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/ClassifyAuthServiceImpl.java
@@ -2,7 +2,6 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.vci.ubcs.code.feign.ICodeClassifyClient;
@@ -14,15 +13,12 @@
 import com.vci.ubcs.system.service.IClassifyAuthService;
 import com.vci.ubcs.system.service.IMenuService;
 import com.vci.ubcs.system.vo.ClassifyAuthVO;
-import com.vci.ubcs.system.vo.MenuVO;
 import com.vci.ubcs.system.wrapper.ClassifyAuthWrapper;
 import lombok.AllArgsConstructor;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -55,10 +51,12 @@
 		// 鏄竻绌烘巿鏉冨垪琛�
 		if(classifyAuthListDTO.getIsCLear()){
 			if(Func.isEmpty(classifyAuthListDTO.getClassifyId())){
-				return R.fail("娓呯┖鎺堟潈鍒楄〃鏃讹紝鏈幏鍙栫殑鍒嗙被id");
+				return R.fail("娓呯┖鎺堟潈鍒楄〃鏃讹紝鏈幏鍙栧埌鍒嗙被id");
 			}
-			this.classifyAuthMapper.delete(Wrappers.<ClassifyAuth>update()
+			this.classifyAuthMapper.delete(
+				Wrappers.<ClassifyAuth>update()
 				.lambda().eq(ClassifyAuth::getClassifyId, classifyAuthListDTO.getClassifyId())
+				.eq(ClassifyAuth::getAuthType,classifyAuthListDTO.getAuthType())
 			);
 			return R.success("鎺堟潈鍒楄〃娓呯┖鎴愬姛");
 		}
@@ -82,6 +80,7 @@
 		// 鍒犻櫎
 		LambdaUpdateWrapper<ClassifyAuth> updateWrapper = Wrappers.<ClassifyAuth>update()
 			.lambda().eq(ClassifyAuth::getClassifyId, classifyAuthListDTO.getClassifyAuthList().get(0).getClassifyId())
+			.eq(ClassifyAuth::getAuthType,classifyAuthListDTO.getAuthType())
 			.notIn(ClassifyAuth::getRoleId, roleIds);
 		try {
 			this.classifyAuthMapper.delete(updateWrapper);
@@ -168,15 +167,23 @@
 						.eq(ClassifyAuth::getAuthType,authType)
 						.in(ClassifyAuth::getRoleId, roleIds)
 				);
-				//鍙褰撳墠鑺傜偣鐨勪笂灞傝妭鐐逛腑鎵惧埌浜嗗垎绫绘巿鏉冧俊鎭氨涓嶅啀缁х画缃戜笂鎵句簡
+				//鍙褰撳墠鑺傜偣鐨勪笂灞傝妭鐐逛腑鎵惧埌浜嗗垎绫绘巿鏉冧俊鎭氨涓嶅啀缁х画寰�涓婃壘浜�
 				if(!classifyAuths.isEmpty()){
 					break;
 				}
 			}
 		}
-		//鍑虹幇浜嗛敊璇暟鎹紝鍚屼竴涓鑹插拰鍚屼竴涓垎绫籭d瀛樺湪澶氭潯鎺堟潈璁板綍
+		//鍑虹幇浜嗗鏉℃暟鎹�
 		if(classifyAuths.size()>1){
-			throw new ServiceException("瑙掕壊鍜屽垎绫婚厤缃瓨鍦ㄥ鏉¤褰曪紝璇疯仈绯荤鐞嗕汉鍛樻竻鐞嗛敊璇厤缃紒");
+			// 鏍¢獙鏄惁瀛樺湪閿欒鏁版嵁锛屽悓涓�涓鑹插拰鍚屼竴涓垎绫籭d瀛樺湪澶氭潯鎺堟潈璁板綍
+			List<ClassifyAuth> finalClassifyAuths = classifyAuths;
+			boolean hasDuplicate = classifyAuths.stream()
+				.anyMatch(auth1 -> finalClassifyAuths.stream()
+					.filter(auth2 -> auth1 != auth2)
+					.anyMatch(auth2 -> auth1.getRoleId().equals(auth2.getRoleId()) && auth1.getClassifyId().equals(auth2.getClassifyId())));
+			if (hasDuplicate) {
+				throw new ServiceException("瑙掕壊鍜屽垎绫婚厤缃瓨鍦ㄥ鏉¤褰曪紝璇疯仈绯荤鐞嗕汉鍛樻竻鐞嗛敊璇厤缃紒");
+			}
 		}
 		// 鏄惁涓鸿秴绠�
 		Boolean isAdmin = VciBaseUtil.checkAdminTenant();
@@ -187,7 +194,10 @@
 		List<String> ids = new ArrayList<>();
 		// 濡傛灉涓嶆槸瓒呯鐢ㄦ埛
 		if(!isAdmin){
-			ids.addAll(Arrays.asList(classifyAuths.get(0).getButtonIds().split(",")));
+			String concatenatedButtonIds = classifyAuths.stream()
+				.map(ClassifyAuth::getButtonIds) // 鑾峰彇姣忎釜classifyAuths瀵硅薄鐨刡uttonIds
+				.collect(Collectors.joining(",")); // 鐢ㄩ�楀彿鍒嗛殧鎷兼帴鎴愪竴涓瓧绗︿覆
+			ids.addAll(Arrays.asList(concatenatedButtonIds.split(",")));
 		}
 		return menuService.getMenuListByCode(ids,menuCode,roleIds);
 	}
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/MenuServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/MenuServiceImpl.java
index 475daee..764c61d 100644
--- a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/MenuServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/MenuServiceImpl.java
@@ -359,6 +359,7 @@
 				classifyAuths = classifyAuthMapper.selectList(
 					Wrappers.<ClassifyAuth>query()
 						.lambda().eq(ClassifyAuth::getClassifyId, classifyOidList.get(i))
+						.eq(ClassifyAuth::getAuthType,authType)
 						.in(ClassifyAuth::getRoleId, roleIds)
 				);
 				if(!classifyAuths.isEmpty()){
@@ -366,9 +367,17 @@
 				}
 			}
 		}
-		//鍑虹幇浜嗛敊璇暟鎹紝鍚屼竴涓鑹插拰鍚屼竴涓垎绫籭d瀛樺湪澶氭潯鎺堟潈璁板綍
+		//鍑虹幇浜嗗鏉℃暟鎹�
 		if(classifyAuths.size()>1){
-			throw new ServiceException("瑙掕壊鍜屽垎绫婚厤缃瓨鍦ㄥ鏉¤褰曪紝璇疯仈绯荤鐞嗕汉鍛樻竻鐞嗛敊璇厤缃紒");
+			// 鏍¢獙鏄惁瀛樺湪閿欒鏁版嵁锛屽悓涓�涓鑹插拰鍚屼竴涓垎绫籭d瀛樺湪澶氭潯鎺堟潈璁板綍
+			List<ClassifyAuth> finalClassifyAuths = classifyAuths;
+			boolean hasDuplicate = classifyAuths.stream()
+				.anyMatch(auth1 -> finalClassifyAuths.stream()
+					.filter(auth2 -> auth1 != auth2)
+					.anyMatch(auth2 -> auth1.getRoleId().equals(auth2.getRoleId()) && auth1.getClassifyId().equals(auth2.getClassifyId())));
+			if (hasDuplicate) {
+				throw new ServiceException("瑙掕壊鍜屽垎绫婚厤缃瓨鍦ㄥ鏉¤褰曪紝璇疯仈绯荤鐞嗕汉鍛樻竻鐞嗛敊璇厤缃紒");
+			}
 		}
 		// 鏄惁涓鸿秴绠�
 		Boolean isAdmin = VciBaseUtil.checkAdminTenant();
@@ -379,7 +388,10 @@
 		List<String> ids = new ArrayList<>();
 		// 濡傛灉涓嶆槸瓒呯鐢ㄦ埛
 		if(!isAdmin){
-			ids.addAll(Arrays.asList(classifyAuths.get(0).getButtonIds().split(",")));
+			String concatenatedButtonIds = classifyAuths.stream()
+				.map(ClassifyAuth::getButtonIds) // 鑾峰彇姣忎釜classifyAuths瀵硅薄鐨刡uttonIds
+				.collect(Collectors.joining(",")); // 鐢ㄩ�楀彿鍒嗛殧鎷兼帴鎴愪竴涓瓧绗︿覆
+			ids.addAll(Arrays.asList(concatenatedButtonIds.split(",")));
 		}
 		return this.getMenuListByCode(ids,btmType,roleIds);
     }

--
Gitblit v1.9.3