From e61a898fe563214cb13e97c08804534a61aad46b Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期二, 07 十一月 2023 17:32:40 +0800
Subject: [PATCH] 主数据管理按钮返回缓存问题修改

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java |   63 +++++++++++++++++++++----------
 1 files changed, 43 insertions(+), 20 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 f4dbaa3..a0cc22d 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
@@ -32,6 +32,7 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.utils.Func;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
@@ -87,22 +88,20 @@
 
 		/*****
 		 * 淇濊瘉骞跺彂鐨勬椂鍊欙紝鏈�澶ф祦姘村彿閮藉鐨勶紝浣嗘槸杩欑鍔犻攣鏈夊紛绔�
-		 *
 		 */
-
 		if(dataCBOList.stream().anyMatch(cbo-> StringUtils.isNotBlank(cbo.getId()))
-//			&& StringUtils.isNotBlank(cbo.getAttributeValue(CODE_SEC_LENGTH_FIELD))
-			){
+			// && StringUtils.isNotBlank(cbo.getAttributeValue(CODE_SEC_LENGTH_FIELD))
+		){
 			//鏄巻鍙叉暟鎹鍏�
 			//鍘嗗彶鏁版嵁鎵ц鐨勬椂鍊欙紝杩欎釜绯荤粺浼氬緢鍗�
 			//涓昏鏄负浜嗗綍鍏ユ渶澶ф祦姘村彿鍜宎llcode
-//			SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
+			//SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
 			List<CodeAllCode> allCodeDOList = new ArrayList<>();
 			Map<String/**娴佹按渚濇嵁**/, Map<String/**鐮佹鐨勪富閿�**/,Double/**鏈�澶ф祦姘村彿**/>> maxSerialMap = new HashMap<>();
 			// TODO 澶氱嚎绋嬫祦寮曞彂鐨勯棶棰樺凡淇敼
 			dataCBOList.parallelStream().forEach(cbo->{
 				log.info("code:----->"+cbo.getId());
-//				VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
+				//VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
 				String code = cbo.getId();
 				List<String> serialUnitList = new ArrayList<>();
 				String seclenghStr=cbo.getData().get(CODE_SEC_LENGTH_FIELD);
@@ -127,7 +126,7 @@
 							start += VciBaseUtil.getInt(secLengths[j]);
 						}
 						thisSecValue = code.substring(start,start+VciBaseUtil.getInt(secLengths[i]));
-				//	}
+					//	}
 					if(VciBaseUtil.getBoolean(secVO.getSerialDependFlag())){
 						serialUnitList.add(thisSecValue);
 					}
@@ -285,7 +284,6 @@
 						throw new ServiceException("鐢熸垚缂栫爜鏁版嵁ID宸叉湁鍘嗗彶璁板綍,璇风‘璁ゅ涓嬬敓鎴愮殑ID鏁版嵁锛�"+ addCodeDOs.stream().map(CodeAllCode::getId).collect(Collectors.toList()));
 					}
 					for (CodeAllCode codeAllCode : takeBack) {
-						codeAllCode.setLcStatus("Released");
 						codeAllCode.setTs(new Date());
 						codeAllCode.setLastModifyTime(new Date());
 						codeAllCode.setLastModifier(AuthUtil.getUserId().toString());
@@ -294,6 +292,7 @@
 							CodeAllCode next = iterator.next();
 							if(codeAllCode.getId().equals(next.getId())){
 								codeAllCode.setCreateCodeOid(next.getCreateCodeOid());
+								codeAllCode.setLcStatus(next.getLcStatus());
 								iterator.remove();
 							}
 						}
@@ -392,7 +391,6 @@
 			}
 
 			for (CodeAllCode codeAllCode : takeBack) {
-				codeAllCode.setLcStatus("Released");
 				codeAllCode.setTs(new Date());
 				codeAllCode.setLastModifyTime(new Date());
 				codeAllCode.setLastModifier(AuthUtil.getUserId().toString());
@@ -401,6 +399,7 @@
 					CodeAllCode next = iterator.next();
 					if(codeAllCode.getId().equals(next.getId())){
 						codeAllCode.setCreateCodeOid(next.getCreateCodeOid());
+						codeAllCode.setLcStatus(next.getLcStatus());
 						iterator.remove();
 					}
 				}
@@ -411,7 +410,6 @@
 			codeAllCodeService.saveBatch(allCodeDOList);
 //			iCodeWupinService.saveBatch(dataCBOList);
 			mdmEngineService.insertBatchByType(dataCBOList.get(0).getBtmname(),dataCBOList);
-
 //			batchCBO.getCreateCbos().stream().filter(s -> StringUtils.equalsIgnoreCase("codeallcode",s.getBtmName())).forEach(s -> {
 //				s.setLcStatus(statusMap.get(s.getOid()));
 //				try {
@@ -421,10 +419,11 @@
 //				}
 //			});
 		}
-//		WebUtil.setPersistence(true);
-//		boService.persistenceBatch(batchCBO);
+		// WebUtil.setPersistence(true);
+		// boService.persistenceBatch(batchCBO);
 		return codeList;
 	}
+
 	/**
 	 * 杞崲灞炴�х爜娈电殑鍊�
 	 * @param attrSecVOList 灞炴�х爜娈电殑鏄剧ず瀵硅薄
@@ -453,7 +452,8 @@
 				for (int j = 0; j < thisSecValueList.size(); j++) {
 					String secValue = thisSecValueList.get(j);
 					if (secValue.equalsIgnoreCase("${attr_" + attrSevVO.getOid() + "}")) {
-						thisSecValueList.set(j, value);
+						// TODO: 灞炴�х爜娈电敓鎴愮爜鍊煎悗锛屾嫾鎺ュ墠鍚庣紑
+						thisSecValueList.set(j, joinPreffixAndSuffix(attrSevVO,value));
 					}
 				}
 				if (attrSevIsSerialDepend) {
@@ -468,7 +468,6 @@
 			});
 		}
 	}
-
 
 	/**
 	 * 杞崲娴佹按鐮佹鐨勫��
@@ -538,7 +537,8 @@
 				for (int z = 0; z < thisSecValueList.size(); z++) {
 					String secValue = thisSecValueList.get(z);
 					if (secValue.equalsIgnoreCase("${" + secVO.getOid() + "}")) {
-						thisSecValueList.set(z, serialString);
+						// TODO: 娴佹按鐢熸垚鐮佸�煎悗鎷兼帴鍓嶅悗缂�
+						thisSecValueList.set(z, joinPreffixAndSuffix(secVO, serialString));
 					}
 				}
 				Map<String, Double> unitSerialMap = lastMaxSerialValueMap.getOrDefault(secVO.getOid(), new HashMap<>());
@@ -566,18 +566,19 @@
 		String secValue = secValueMap.getOrDefault(secVO.getOid(), "");
 		switch (secType) {
 			case CODE_FIXED_SEC:
+				secValue = joinPreffixAndSuffix(secVO, secValue);
 				//鍥哄畾鐮佹鐨勶紝鐩存帴鐢ㄧ爜鍊�,涓嶈鐮佸�肩殑闀垮害鏄灏戯紝鍥犱负鍙彉闀垮害鍜屽浐瀹氶暱搴︽槸鎺у埗鍦ㄧ爜娈电鐞嗛噷闈㈢殑鐮佸�煎畾涔夌殑
 				break;
 			case CODE_DATE_SEC:
 				//鏃堕棿鐮佹锛岄渶瑕佸皢褰撳墠鏃堕棿渚濇嵁鏃堕棿鏍煎紡杩涜杞崲.
 				//鏃堕棿鐮佹涓嶆秹鍙婂埌鏄惁琛ヤ綅
-				secValue = VciDateUtil.date2Str(new Date(), secVO.getCodeDateFormatStr());
+				secValue =joinPreffixAndSuffix(secVO, VciDateUtil.date2Str(new Date(), secVO.getCodeDateFormatStr()));
 				break;
 			case CODE_CLASSIFY_SEC:
 				//鍒嗙被鐮佹鐨勶紝涔熸槸浠庡墠绔�夋嫨浜嗙爜鍊煎嵆鍙紝涓嶈鐮佸�肩殑闀垮害鏄灏�
 				CodeClassifyValue codeClassifyValueDO= codeClassifyValueMapper.selectById(secValue);
 				if(codeClassifyValueDO!=null) {
-					secValue = codeClassifyValueDO.getId();
+					secValue = joinPreffixAndSuffix(secVO, codeClassifyValueDO.getId());
 				}
 				break;
 			case CODE_LEVEL_SEC:
@@ -630,10 +631,12 @@
 						secValue = secValue.substring(secValue.length() - secVO.getValueCutLength());
 					}
 				}
+				secValue = joinPreffixAndSuffix(secVO,secValue);
 				break;
 			case CODE_REFER_SEC:
 				//寮曠敤鐨勫湪椤甸潰涓婂凡缁忛�夋嫨浜嗭紝鎵�浠ョ洿鎺ヤ娇鐢ㄥ墠绔笂浼犻�掔殑鍊�
 				//寮曠敤灏辨槸鍙傜収锛屽彲鑳芥槸鍏朵粬鐨勫垎绫伙紙涓氬姟绫诲瀷锛変笅鐨勬暟鎹紝鎵�浠ュ彧鍦ㄩ〉闈笂閫夋嫨
+				secValue = joinPreffixAndSuffix(secVO,secValue);
 				break;
 			case CODE_ATTR_SEC:
 				//灞炴�т笌寮曠敤鐨勫尯鍒槸锛屽睘鎬ф槸褰撳墠鏁版嵁閲岀殑灞炴�э紝鑰屽紩鐢ㄥ彲鑳芥槸寮曠敤鍏朵粬鐨勫垎绫荤殑锛堜笟鍔$被鍨嬶級
@@ -648,6 +651,7 @@
 				}
 				OsCodeFillTypeEnum fillTypeEnum = OsCodeFillTypeEnum.forValue(secVO.getCodeFillType());
 				secValue = fillString(VciBaseUtil.getInt(secVO.getCodeSecLength()), fillTypeEnum, secValue, secVO.getCodeFillSeparator());
+				secValue = joinPreffixAndSuffix(secVO,secValue);
 				break;
 			case CODE_SERIAL_SEC:
 				//娴佹按鐮佹
@@ -660,6 +664,27 @@
 			serialUnitList.add(secValue);
 		}
 		secValueList.add(secValue);
+	}
+
+	/**
+	 * 鎷兼帴鍓嶅悗缂�
+	 * @param secVO
+	 * @param secValue
+	 * @return
+	 */
+	private String joinPreffixAndSuffix(CodeBasicSecVO secVO, String secValue){
+		StringBuilder joinSecValue = new StringBuilder();
+		// 鎷兼帴鍓嶇紑
+		if (Func.isNotEmpty(secVO.getPrefixCode())) {
+			joinSecValue = joinSecValue.append(secVO.getPrefixCode());
+		}
+		// 鍦ㄤ腑闂存嫾鎺ュ��
+		joinSecValue.append(secValue);
+		// 鎷兼帴鍚庣紑
+		if(Func.isNotEmpty(secVO.getSuffixCode())){
+			joinSecValue = joinSecValue.append(secVO.getSuffixCode());
+		}
+		return joinSecValue.toString();
 	}
 
 	/**
@@ -712,9 +737,6 @@
 		allCodeDO.setLcStatus(cbo.getLcStatus());
 		allCodeDOList.add(allCodeDO);
 	}
-
-
-
 
 	/**
 	 * 淇濆瓨娴佹按鐨勪俊鎭�
@@ -879,4 +901,5 @@
 //		WebUtil.copyValueToMapFromCbos(cbo,dataMap);
 		return formulaService.getValueByFormula(map,rule);
 	}
+
 }

--
Gitblit v1.9.3