From d8f51c40544ae278095e991ed00ec297842d4332 Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期日, 29 九月 2024 11:01:55 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java |   47 +++++++++++++++++++++++++----------------------
 1 files changed, 25 insertions(+), 22 deletions(-)

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 f9c3efc..3955c10 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
@@ -51,6 +51,7 @@
 import javax.servlet.http.HttpServletRequest;
 import java.lang.reflect.Method;
 import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicReference;
@@ -117,7 +118,7 @@
 				//VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
 				String code = cbo.getId();
 				List<String> serialUnitList = new CopyOnWriteArrayList<>();
-				String seclenghStr=cbo.getData().get(CODE_SEC_LENGTH_FIELD);
+				//String seclenghStr=cbo.getData().get(CODE_SEC_LENGTH_FIELD);
 				String[] secLengths = cbo.getData().get(CODE_SEC_LENGTH_FIELD).split("#");
 				cbo.getData().remove(CODE_SEC_LENGTH_FIELD);//灏嗘key闄ゅ幓
 				cbo.getData().remove(IMPORT_ROW_INDEX);//灏嗘key闄ゅ幓
@@ -136,11 +137,11 @@
 						//鏈�鍚�
 						thisSecValue =  seclenghStr.contains("#")?code.substring(VciBaseUtil.getInt(secLengths[i-1]),code.length()):code;
 					}else {*/
-						int start = 0;
-						for (int j = 0; j < i; j++) {
-							start += VciBaseUtil.getInt(secLengths[j]);
-						}
-						thisSecValue = code.substring(start,start+VciBaseUtil.getInt(secLengths[i]));
+					int start = 0;
+					for (int j = 0; j < i; j++) {
+						start += VciBaseUtil.getInt(secLengths[j]);
+					}
+					thisSecValue = code.substring(start,start+VciBaseUtil.getInt(secLengths[i]));
 					//	}
 					if(VciBaseUtil.getBoolean(secVO.getSerialDependFlag())){
 						serialUnitList.add(thisSecValue);
@@ -154,7 +155,7 @@
 				List<String> serialUnFileStringList = new ArrayList<>();
 				AtomicReference<String> newSerialUnitString = new AtomicReference<>("");
 				if(!CollectionUtils.isEmpty(serialValueMap)){
-					AtomicInteger index= new AtomicInteger();
+					AtomicInteger index = new AtomicInteger();
 					serialValueMap.forEach((secOid,secValue)->{
 						//瑕佺湅鏄笉鏄ˉ浣嶇殑
 						CodeBasicSecVO secVO = secVOMap.get(secOid);
@@ -175,7 +176,7 @@
 						if(OsCodeFillTypeEnum.NONE.getValue().equalsIgnoreCase(secVO.getCodeFillType())){
 							//涓嶈ˉ鐮�
 							//鎶婃墍鏈変笉鏄暟瀛楃殑鍘绘帀锛屽洜涓哄彲鑳戒細鏄�佹暟鎹紝鏂拌鍒�
-							//	serialDb = VciBaseUtil.getDouble(killUnNumberChar(subSecValue));
+							//serialDb = VciBaseUtil.getDouble(killUnNumberChar(subSecValue));
 							//serialDb = killUnNumberChar(subSecValue);
 							serialDb=subSecValue;
 						}else {
@@ -183,21 +184,24 @@
 							serialDb = killFillChar(subSecValue,secVO.getCodeFillSeparator(),
 								OsCodeFillTypeEnum.LEFT.getValue().equalsIgnoreCase(secVO.getCodeFillType()));
 						}
-						Double newSerialDb= CustomSerialEnum.getDoubleCustomSerialValue(serialDb,secVO.getCustomCodeSerialType());
-						HashMap<String, String> thisUnitMaxMap = maxSerialMap.getOrDefault(serialUnitString, new HashMap<>());
-						Double maxValue=newSerialDb;
-						if(thisUnitMaxMap.containsKey(secOid)){
-							String 	newMaxValue=  thisUnitMaxMap.getOrDefault(secOid,"");
-							maxValue=StringUtils.isBlank(newMaxValue)?-1:VciBaseUtil.getDouble(newMaxValue);
-							if(maxValue<newSerialDb){
-								maxValue=newSerialDb;
+						Double newSerialDb = CustomSerialEnum.getDoubleCustomSerialValue(serialDb,secVO.getCustomCodeSerialType());
+						//TODO: 20240822闇�瑕佽繖鍧椾唬鐮佹槸鍚屾鎬х殑锛宮axSerialMap杩欏効浼氬洜涓虹嚎绋嬪彈褰卞搷锛屼慨鏀瑰悗娴嬭瘯澶氭鎬绘暟涓�5000鏉′竴娆″鍏ヨ�楄垂鏃堕棿涓�3鍒�30绉掑乏鍙�
+						synchronized(this) {
+							HashMap<String, String> thisUnitMaxMap = maxSerialMap.getOrDefault(serialUnitString, new HashMap<>());
+							Double maxValue=newSerialDb;
+							if(thisUnitMaxMap.containsKey(secOid)){
+								String newMaxValue = thisUnitMaxMap.getOrDefault(secOid,"");
+								maxValue = StringUtils.isBlank(newMaxValue)?-1:VciBaseUtil.getDouble(newMaxValue);
+								if(maxValue < newSerialDb){
+									maxValue = newSerialDb;
+								}
 							}
+							String newMaxValue=CustomSerialEnum.getStringCustomSerialValue(maxValue,secVO.getCustomCodeSerialType());
+							serialDb=CustomSerialEnum.getStringCustomSerialValue(newSerialDb,secVO.getCustomCodeSerialType());
+							thisUnitMaxMap.put(secOid,newMaxValue);
+							maxSerialMap.put(serialUnitString,thisUnitMaxMap);
+							serialUnFileStringList.add(String.valueOf(serialDb));
 						}
-						String newMaxValue=CustomSerialEnum.getStringCustomSerialValue(maxValue,secVO.getCustomCodeSerialType());
-						serialDb=CustomSerialEnum.getStringCustomSerialValue(newSerialDb,secVO.getCustomCodeSerialType());
-						thisUnitMaxMap.put(secOid,newMaxValue);
-						maxSerialMap.put(serialUnitString,thisUnitMaxMap);
-						serialUnFileStringList.add(String.valueOf(serialDb));
 					});
 				}
 				CodeAllCode allCodeDO = new CodeAllCode();
@@ -273,7 +277,6 @@
 						allCodeWrapper.in("id", QueryOptionConstant.IN + "(" +
 							VciBaseUtil.toInSql(codeDOs.stream().map(s->s.getId()).collect(Collectors.toList()).toArray(new String[0])) + ")");
 						List<CodeAllCode> existCodes = codeAllCodeService.selectByWrapper(allCodeWrapper);
-
 
 						if(!CollectionUtils.isEmpty(existCodes)){
 							existCodes.stream().forEach(existCode->{

--
Gitblit v1.9.3