From 53950f0fa04a894a2b3880f2da788c837bd84ead Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期一, 27 十一月 2023 09:25:49 +0800
Subject: [PATCH] 修改码段拼接前后缀时判断码值是否为空,为空时不进行拼接

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java |   28 +++++++++++++---------------
 1 files changed, 13 insertions(+), 15 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 bc8b436..4014bcf 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
@@ -104,11 +104,10 @@
 			// && StringUtils.isNotBlank(cbo.getAttributeValue(CODE_SEC_LENGTH_FIELD))
 		){
 			//鏄巻鍙叉暟鎹鍏�
-			//鍘嗗彶鏁版嵁鎵ц鐨勬椂鍊欙紝杩欎釜绯荤粺浼氬緢鍗�
 			//涓昏鏄负浜嗗綍鍏ユ渶澶ф祦姘村彿鍜宎llcode
 			//SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
 			List<CodeAllCode> allCodeDOList = new CopyOnWriteArrayList<>();
-			Map<String/**娴佹按渚濇嵁**/, ConcurrentHashMap<String/**鐮佹鐨勪富閿�**/,String/**鏈�澶ф祦姘村彿**/>> maxSerialMap = new ConcurrentHashMap<>();
+			Map<String/**娴佹按渚濇嵁**/, HashMap<String/**鐮佹鐨勪富閿�**/,String/**鏈�澶ф祦姘村彿**/>> maxSerialMap = new HashMap<>();
 			// TODO 澶氱嚎绋嬫祦寮曞彂鐨勯棶棰樺凡淇敼
 			dataCBOList.parallelStream().forEach(cbo->{
 				log.info("code:----->"+cbo.getId());
@@ -180,7 +179,7 @@
 								OsCodeFillTypeEnum.LEFT.getValue().equalsIgnoreCase(secVO.getCodeFillType()));
 						}
 						Double newSerialDb= CustomSerialEnum.getDoubleCustomSerialValue(secValue,secVO.getCustomCodeSerialType());
-						ConcurrentHashMap<String, String> thisUnitMaxMap = maxSerialMap.getOrDefault(serialUnitString, new ConcurrentHashMap<>());
+						HashMap<String, String> thisUnitMaxMap = maxSerialMap.getOrDefault(serialUnitString, new HashMap<>());
 						Double maxValue=newSerialDb;
 						if(thisUnitMaxMap.containsKey(secOid)){
 							String 	newMaxValue=  thisUnitMaxMap.getOrDefault(secOid,"");
@@ -365,7 +364,7 @@
 				switchSecValue(secVO, secValueMap, classifyFullInfoBO, serialSecVOList, attrSecVOList, serialUnitList, secValueList);
 			}
 			//澶勭悊灞炴�х爜娈靛拰娴佹按鐮佹
-			Map<String/**娴佹按鐮佹鐨勪富閿�**/, Map<String/**娴佹按渚濇嵁**/, Double>> lastMaxSerialValueMap = new HashMap<>();
+			Map<String/**娴佹按鐮佹鐨勪富閿�**/, Map<String/**娴佹按渚濇嵁**/, String>> lastMaxSerialValueMap = new HashMap<>();
 			List<CodeAllCode> allCodeDOList = new ArrayList<>();
 
 			//宸茬粡瀛樺偍鐨勬渶澶ф祦姘村彿鐨勫唴瀹�
@@ -390,7 +389,7 @@
 				switchAttrSecValue(attrSecVOList, cbo, thisSecValueList, attrSevIsSerialDepend, thisSerialUnitList);
 
 				String serialUnitString = thisSerialUnitList.size() == 0 ? EMPTY_SERIAL_UNIT : thisSerialUnitList.stream().collect(Collectors.joining(SERIAL_UNIT_SPACE));
-				switchSerialSecValue(serialSecVOList, attrSevIsSerialDepend, finalRuleVO, serialUnitString, maxSerialValueMap, thisSecValueList, lastMaxSerialValueMap, i == 0);
+				switchSerialSecValue(cbo,serialSecVOList, attrSevIsSerialDepend, finalRuleVO, serialUnitString, maxSerialValueMap, thisSecValueList, lastMaxSerialValueMap, i == 0);
 
 				//缁勮缂栫爜鐨勫��
 				cbo.setId(thisSecValueList.stream().collect(Collectors.joining()));
@@ -399,9 +398,9 @@
 				//鎶婄爜娈甸噷闈㈤兘鎵句竴涓嬫祦姘村彿
 				for (int j = 0; j < serialSecVOList.size(); j++) {
 					CodeBasicSecVO secVO = serialSecVOList.get(j);
-					Double serialValue = lastMaxSerialValueMap.getOrDefault(secVO.getOid(), new HashMap<>()).getOrDefault(serialUnitString, 0d);
+					String serialValue = lastMaxSerialValueMap.getOrDefault(secVO.getOid(), new HashMap<>()).getOrDefault(serialUnitString, "");
 					if (serialValue != null) {
-						sb.append(String.valueOf(serialValue.longValue())).append(SERIAL_VALUE_SPACE);
+						sb.append(serialValue).append(SERIAL_VALUE_SPACE);
 					}
 				}
 				//瑕佸瓨鍌ㄦ渶鍚庣殑鍏ㄩ儴allcode
@@ -419,7 +418,6 @@
 			allCodeDOList.stream().filter(s -> StringUtils.equalsIgnoreCase("codeallcode",s.getBtmname())).forEach(s -> {
 				s.setLcStatus(statusMap.get(s.getOid()));
 			});
-
 
 			//閫氳繃ID鏉ヨ繘琛屽幓閲�
 			List<CodeAllCode> distinctCodeAllCOdes = allCodeDOList.stream().collect(Collectors
@@ -528,10 +526,10 @@
 	 * @param lastMaxSerialValueMap 灏佽鍚�
 	 * @param firstData 鏄惁涓虹涓�鏉℃暟鎹�
 	 */
-	private void switchSerialSecValue(List<CodeBasicSecVO> serialSecVOList,boolean attrSevIsSerialDepend,
+	private void switchSerialSecValue(BaseModel cbo, List<CodeBasicSecVO> serialSecVOList,boolean attrSevIsSerialDepend,
 									  CodeRuleVO ruleVO,String serialUnitString,
 									  Map<String/**鐮佹鐨勪富閿�**/,Map<String/**娴佹按渚濇嵁**/,CodeSerialValue>> maxSerialValueMap,List<String> thisSecValueList,
-									  Map<String/**鐮佹鐨勪富閿�**/,Map<String/**娴佹按渚濇嵁**/, Double>> lastMaxSerialValueMap,boolean firstData){
+									  Map<String/**鐮佹鐨勪富閿�**/,Map<String/**娴佹按渚濇嵁**/, String>> lastMaxSerialValueMap,boolean firstData){
 		if (!CollectionUtils.isEmpty(serialSecVOList)) {
 			Map<String,String> secIdserialValueMap=new LinkedHashMap<>();
 			for (int j = 0; j < serialSecVOList.size(); j++) {
@@ -610,7 +608,7 @@
 					//闃叉鍦ㄦ坊鍔犵殑鍦版柟娌℃湁鎺у埗姝g‘
 					fillLength = VciBaseUtil.getInt(secVO.getCodeSecLength());
 				}
-				String serialString = String.valueOf(thisSerialValue.longValue());
+				serialString = thisSerialValue;
 				serialString = fillString(fillLength, OsCodeFillTypeEnum.forValue(secVO.getCodeFillType()), serialString, secVO.getCodeFillSeparator());
 
 				for (int z = 0; z < thisSecValueList.size(); z++) {
@@ -772,20 +770,20 @@
 
 	/**
 	 * 鎷兼帴鍓嶅悗缂�
-	 * @param secVO
-	 * @param secValue
+	 * @param secVO 鐮佹
+	 * @param secValue 鐮佸��
 	 * @return
 	 */
 	private String joinPreffixAndSuffix(CodeBasicSecVO secVO, String secValue){
 		StringBuilder joinSecValue = new StringBuilder();
 		// 鎷兼帴鍓嶇紑
-		if (Func.isNotEmpty(secVO.getPrefixCode())) {
+		if (Func.isNotEmpty(secVO.getPrefixCode()) && Func.isNotEmpty(secValue)) {
 			joinSecValue = joinSecValue.append(secVO.getPrefixCode());
 		}
 		// 鍦ㄤ腑闂存嫾鎺ュ��
 		joinSecValue.append(secValue);
 		// 鎷兼帴鍚庣紑
-		if(Func.isNotEmpty(secVO.getSuffixCode())){
+		if(Func.isNotEmpty(secVO.getSuffixCode()) && Func.isNotEmpty(secValue)){
 			joinSecValue = joinSecValue.append(secVO.getSuffixCode());
 		}
 		return joinSecValue.toString();

--
Gitblit v1.9.3