From 6af6557a8d8a525ec3cab33607b8a041ef0968fa Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期三, 08 十一月 2023 11:15:31 +0800
Subject: [PATCH] 历史导入生成编码时添加前后缀代码逻辑添加;历史导入模板下载时查询模板返回的key不区分大小写。

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java |   63 +++++++++++++++++++++++++++----
 1 files changed, 55 insertions(+), 8 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 8ea07b6..a5058b7 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;
@@ -125,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);
 					}
@@ -140,13 +141,15 @@
 						//瑕佺湅鏄笉鏄ˉ浣嶇殑
 						CodeBasicSecVO secVO = secVOMap.get(secOid);
 						Double serialDb = null;
+						// 鎴彇鎺夊墠鍚庣紑涔嬪悗鐨勭爜娈�
+						String subSecValue = killPriffixSuffix(secValue, secVO.getPrefixCode(), secVO.getSuffixCode());
 						if(OsCodeFillTypeEnum.NONE.getValue().equalsIgnoreCase(secVO.getCodeFillType())){
 							//涓嶈ˉ鐮�
 							//鎶婃墍鏈変笉鏄暟瀛楃殑鍘绘帀锛屽洜涓哄彲鑳戒細鏄�佹暟鎹紝鏂拌鍒�
-							serialDb = VciBaseUtil.getDouble(killUnNumberChar(secValue));
+							serialDb = VciBaseUtil.getDouble(killUnNumberChar(subSecValue));
 						}else {
 							//宸﹀彸濉厖鐨勶紝鎴戜滑闇�瑕�
-							serialDb = VciBaseUtil.getDouble(killUnNumberChar(killFillChar(secValue,secVO.getCodeFillSeparator(),
+							serialDb = VciBaseUtil.getDouble(killUnNumberChar(killFillChar(subSecValue,secVO.getCodeFillSeparator(),
 								OsCodeFillTypeEnum.LEFT.getValue().equalsIgnoreCase(secVO.getCodeFillType()))));
 						}
 						Map<String, Double> thisUnitMaxMap = maxSerialMap.getOrDefault(serialUnitString, new HashMap<>());
@@ -451,7 +454,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) {
@@ -459,7 +463,7 @@
 					for (int j = 0; j < serialUnitList.size(); j++) {
 						String secValue = serialUnitList.get(j);
 						if (secValue.equalsIgnoreCase("${attr_" + attrSevVO.getOid() + "}")) {
-							serialUnitList.set(j, value);
+							serialUnitList.set(j, joinPreffixAndSuffix(attrSevVO,value));
 						}
 					}
 				}
@@ -535,7 +539,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<>());
@@ -563,18 +568,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:
@@ -627,10 +633,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:
 				//灞炴�т笌寮曠敤鐨勫尯鍒槸锛屽睘鎬ф槸褰撳墠鏁版嵁閲岀殑灞炴�э紝鑰屽紩鐢ㄥ彲鑳芥槸寮曠敤鍏朵粬鐨勫垎绫荤殑锛堜笟鍔$被鍨嬶級
@@ -645,6 +653,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:
 				//娴佹按鐮佹
@@ -657,6 +666,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();
 	}
 
 	/**
@@ -777,6 +807,23 @@
 	}
 
 	/**
+	 * 鍘绘帀鍓嶅悗缂�
+	 * @param secValue 瀛楃
+	 * @param priffix 鍓嶇紑
+	 * @param suffix 鍚庣紑
+	 * @return 鏇挎崲鍚庣殑鍊�
+	 */
+	private String killPriffixSuffix(String secValue, String priffix,String suffix){
+		if (priffix != null && secValue.startsWith(priffix)) {
+			secValue = secValue.substring(priffix.length());
+		}
+		if (suffix != null && secValue.endsWith(suffix)) {
+			secValue = secValue.substring(0, secValue.length() - suffix.length());
+		}
+		return secValue;
+	}
+
+	/**
 	 * 鍘婚櫎琛ヤ綅瀛楃
 	 * @param s 瀛楃
 	 * @param fillString 琛ヤ綅瀛楃

--
Gitblit v1.9.3