From ac4e090952cfa701d7d681ada7d7900e3ce45755 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期五, 17 五月 2024 11:05:03 +0800
Subject: [PATCH] 集成申请,历史数据导入,关键属性查重多线程导致判重失误问题

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java    |    2 +-
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java          |   15 +++++++++------
 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java  |    9 ++++-----
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java |    1 +
 4 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java
index 4e4877b..9522cb8 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java
@@ -87,20 +87,19 @@
 			baseModel.setFirstV("1");
 			baseModel.setLastR("1");
 			baseModel.setLastV("1");
-			baseModel.setRevisionSeq(1);
 			// TODO:鐩墠鍙湁缂栫爜瑙勫垯涓湁鐢ㄥ埌锛屽悗鏈熼渶瑕佸幓鎺夎繖娈典唬鐮佺殑璇濓紝灏辨妸浠栧姞鍦ㄧ紪鐮佽鍒欐柊澧炰腑鍘�
 			if(Func.isBlank(baseModel.getOwner())){
 				// 璁剧疆鎵�鏈夎��
 				baseModel.setOwner(Func.isNotEmpty(user) ? user.getUserId().toString():AuthUtil.getUserId().toString());
 			}
-
 			baseModel.setVersionSeq(1);
-			baseModel.setVersionRule("0");
 			baseModel.setVersionValue("1");
-			baseModel.setRevisionOid(VciBaseUtil.getPk());
-			baseModel.setLastModifier(account);
+			baseModel.setVersionRule("0");
+			baseModel.setRevisionSeq(1);
 			baseModel.setRevisionValue("1");
 			baseModel.setRevisionRule("1");
+			baseModel.setRevisionOid(VciBaseUtil.getPk());
+			baseModel.setLastModifier(account);
 			baseModel.setTenantId(Func.isNotEmpty(user) ? user.getTenantId():AuthUtil.getTenantId());
 		}catch (VciBaseException e){
 			e.printStackTrace();
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 9177504..22f9c36 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
@@ -2424,7 +2424,7 @@
 		//閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌�
 		//濡傛灉鍑洪敊浜嗭紝鎴戜滑渚濈劧鎵ц鏈夋晥鐨勬暟鎹紝鏃犳晥鐨勬暟鎹啓鍥炲埌excel涓�
 
-		Map<String, String> errorKeyMap = new HashMap<>();
+		Map<String, String> errorKeyMap = new ConcurrentHashMap<>();
 		//1.鍒嗙被娉ㄥ叆
 		batchSwitchClassifyAttrOnOrder(attrVOS, cboList, classifyFullInfo, false);
 		//boolean
@@ -2447,6 +2447,7 @@
 		batchSwitchComponentAttrOnOrder(attrVOS, cboList);
 		//3.鍒ゆ柇鍏抽敭灞炴��
 		CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList, false, errorKeyMap);
+		log.info("================鏌ラ噸鍚庣殑errorKeyMap閿欒淇℃伅================="+JSON.toJSONString(errorKeyMap));
 		Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList();
 		Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList();
 
@@ -2688,7 +2689,6 @@
 
 			}
 		}
-
 	}
 
 	/***
@@ -4423,9 +4423,11 @@
 	 * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
 	 * @param templateVO       妯℃澘鐨勫唴瀹癸紝蹇呴』鍖呭惈妯℃澘灞炴��
 	 * @param cboList          鎵归噺鐨勬暟鎹�
-	 */
+	 * @param isEdit          鏄惁鏄慨鏀�
+	 * @param errorMap          蹇呴』蹇呴』蹇呴』鏄嚎绋嬪畨鍏ㄧ殑闆嗗悎
+	 * */
 	private CodeImportResultVO batchCheckKeyAttrOnOrder(CodeClassifyFullInfoBO classifyFullInfo, CodeClassifyTemplateVO templateVO,
-														List<ClientBusinessObject> cboList, boolean isEdit, Map<String, String> errorMap) {
+														List<ClientBusinessObject> cboList, boolean isEdit, Map<String, String> errorMap/*蹇呴』瑕佹槸绾跨▼瀹夊叏鐨勯泦鍚�*/) {
 		//涓嶮dmEngineServiceImpl閲岀殑checkKeyAttrOnOrder鐩镐技
 		//鍏堣幏鍙栧叧閿睘鎬х殑瑙勫垯锛屼篃鍒╃敤缁ф壙鐨勬柟寮�
 		CodeKeyAttrRepeatVO keyRuleVO = keyRuleService.getRuleByClassifyFullInfo(classifyFullInfo);
@@ -4478,7 +4480,7 @@
 		// TODO:Thread limit exceeded replacing blocked 寮傚父鏄繖閮ㄥ垎浠g爜鎶涘嚭鐨�
 		//  ,鎵�浠ユ殏鏃跺皢parallelStream鏀规垚浜唖tream锛屾敼鎴愪簡stream涔嬪悗鍙戠幇宸ㄦ參
 		// customForkJoinPool鎺у埗骞跺彂搴�
-		List<ClientBusinessObject> finalCboList = cboList;
+		final List<ClientBusinessObject> finalCboList = cboList;
 		Map<String, List<CodeSynonym>> finalCodeSynonymMaps = codeSynonymMaps;
 		List<ClientBusinessObject> repeatDataMap = (List<ClientBusinessObject>) customForkJoinPool.submit(() -> {
 			finalCboList.parallelStream().filter(cbo -> {
@@ -4522,6 +4524,7 @@
 						});
 						// 娣诲姞閿欒鍊�
 						String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
+						log.info("=============鍏抽敭灞炴�ф煡璇㈤噸澶嶇殑============="+JSON.toJSONString(repeatData));
 						errorMap.put(rowIndex, "閲嶅鐨勮褰曠紪鍙蜂负:" + repeatData.stream().collect(Collectors.joining(",")));
 						if (!CollectionUtils.isEmpty(newCboList)) {
 							indexTODataMap.put(cbo.getAttributeValue(IMPORT_ROW_INDEX), newCboList);
@@ -5365,7 +5368,7 @@
 
 		List<String> codeList = cboList.stream().map(ClientBusinessObject::getId).collect(Collectors.toList());
 		List<Map<String, String>> dataList = new ArrayList<>();
-		Map<String, String> errorMap = new HashMap<>();
+		Map<String, String> errorMap = new ConcurrentHashMap<>();
 		batchSwitchCheckExist(errorMap, cboList, classifyFullInfo, templateVO, execGroupCodePortDataDTO, fieldIndexMap);
 		//鍒ゆ柇蹇呰緭椤�
 		batchCheckRequiredAttrOnOrder(templateVO, cboList, errorMap);
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 14524ab..f9c3efc 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
@@ -1,5 +1,6 @@
 package com.vci.ubcs.code.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.vci.ubcs.code.algorithm.CustomSerialEnum;
 import com.vci.ubcs.code.annotation.MdmSerialAlgorithm;
 import com.vci.ubcs.code.annotation.MdmSerialAlgorithmMethod;
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
index 79a077a..a543a17 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
@@ -293,7 +293,7 @@
 				passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(Locale.ROOT), this.getRequest());
 			}catch (Throwable e){
 				errorid[0] ="1";
-				throw new Throwable("鐢ㄦ埛閴存潈澶辫触.");
+				throw new Throwable("鐢ㄦ埛閴存潈澶辫触锛屽師鍥狅細"+e.getMessage());
 			}
 			List<ClassfyVO> classVOList = classfysVO.getClassify();
 			//InterParameterVO finalInterParameterVO = interParameterVO;

--
Gitblit v1.9.3