From bac99eb3983ed78043e6326ae5fa1f6ff336e4dd Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期二, 31 十月 2023 16:30:41 +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 |   98 ++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 76 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 cf29925..d9e3b19 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
@@ -30,6 +30,8 @@
 import com.vci.ubcs.starter.web.util.VciBaseUtil;
 import com.vci.ubcs.starter.web.util.VciDateUtil;
 import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
@@ -85,22 +87,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);
@@ -150,13 +150,14 @@
 								OsCodeFillTypeEnum.LEFT.getValue().equalsIgnoreCase(secVO.getCodeFillType()))));
 						}
 						Map<String, Double> thisUnitMaxMap = maxSerialMap.getOrDefault(serialUnitString, new HashMap<>());
+						Double maxValue=serialDb;
 						if(thisUnitMaxMap.containsKey(secOid)){
-							Double maxValue=  thisUnitMaxMap.getOrDefault(secOid,new Double(-1));
-							if(maxValue>serialDb){
-								serialDb=maxValue;
+							maxValue=  thisUnitMaxMap.getOrDefault(secOid,new Double(-1));
+							if(maxValue<serialDb){
+								maxValue=serialDb;
 							}
 						}
-						thisUnitMaxMap.put(secOid,serialDb);
+						thisUnitMaxMap.put(secOid,maxValue);
 						maxSerialMap.put(serialUnitString,thisUnitMaxMap);
 						serialUnFileStringList.add(String.valueOf(serialDb));
 					});
@@ -170,7 +171,8 @@
 				allCodeDO.setCreateCodeBtm(cbo.getBtmname());
 				allCodeDO.setCreateCodeOid(cbo.getOid());
 				allCodeDO.setSerialUnit(serialUnitString);
-				allCodeDO.setUnFillSerial(serialUnFileStringList.stream().collect(Collectors.joining(SERIAL_VALUE_SPACE)));
+				String unFillSerial =serialUnFileStringList.size()==1?serialUnFileStringList.get(0)+ SERIAL_VALUE_SPACE:serialUnFileStringList.stream().collect(Collectors.joining(SERIAL_VALUE_SPACE));
+				allCodeDO.setUnFillSerial(unFillSerial);
 				allCodeDO.setLcStatus(cbo.getLcStatus());
 				allCodeDOList.add(allCodeDO);
 			});
@@ -272,6 +274,31 @@
 					if( distinctCodeAllCOdes.size() != addCodeDOs.size() ){
 						throw new VciBaseException("缂栫爜鏁版嵁閲嶅锛屾棤娉曚繚瀛橈紝璇锋敞鎰忥紒");
 					}
+					QueryWrapper<CodeAllCode> wrapper = new QueryWrapper<>();
+					wrapper.eq("CREATECODEBTM",addCodeDOs.get(0).getCreateCodeBtm());
+					wrapper.in("ID",addCodeDOs.stream().map(CodeAllCode::getId).collect(Collectors.toList()));
+					List<CodeAllCode> codeAllCodes = codeAllCodeService.selectByWrapper(wrapper);
+					List<CodeAllCode> takeBack = codeAllCodes.stream().filter(e -> e.getLcStatus().equals("TakeBack")).collect(Collectors.toList());
+					if(codeAllCodes.size()>takeBack.size()){
+						throw new ServiceException("鐢熸垚缂栫爜鏁版嵁ID宸叉湁鍘嗗彶璁板綍,璇风‘璁ゅ涓嬬敓鎴愮殑ID鏁版嵁锛�"+ addCodeDOs.stream().map(CodeAllCode::getId).collect(Collectors.toList()));
+					}
+					for (CodeAllCode codeAllCode : takeBack) {
+						codeAllCode.setTs(new Date());
+						codeAllCode.setLastModifyTime(new Date());
+						codeAllCode.setLastModifier(AuthUtil.getUserId().toString());
+						Iterator<CodeAllCode> iterator = addCodeDOs.iterator();
+						while (iterator.hasNext()){
+							CodeAllCode next = iterator.next();
+							if(codeAllCode.getId().equals(next.getId())){
+								codeAllCode.setCreateCodeOid(next.getCreateCodeOid());
+								codeAllCode.setLcStatus(next.getLcStatus());
+								iterator.remove();
+							}
+						}
+					}
+					if(takeBack.size()>0){
+						codeAllCodeService.updateBatchById(takeBack);
+					}
 					codeAllCodeService.saveBatch(addCodeDOs);
 				}
 				mdmEngineService.insertBatchByType(dataCBOList.get(0).getBtmname(),dataCBOList);
@@ -351,7 +378,33 @@
 					Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(CodeAllCode::getId))),
 					ArrayList::new));
 			if( distinctCodeAllCOdes.size() != allCodeDOList.size() ){
-				throw new VciBaseException("缂栫爜鏁版嵁閲嶅锛屾棤娉曚繚瀛橈紝璇锋敞鎰忥紒");
+				throw new ServiceException("缂栫爜鏁版嵁閲嶅锛屾棤娉曚繚瀛橈紝璇锋敞鎰忥紒");
+			}
+			QueryWrapper<CodeAllCode> wrapper = new QueryWrapper<>();
+			wrapper.eq("CREATECODEBTM",allCodeDOList.get(0).getCreateCodeBtm());
+			wrapper.in("ID",allCodeDOList.stream().map(CodeAllCode::getId).collect(Collectors.toList()));
+			List<CodeAllCode> codeAllCodes = codeAllCodeService.selectByWrapper(wrapper);
+			List<CodeAllCode> takeBack = codeAllCodes.stream().filter(e -> e.getLcStatus().equals("TakeBack")).collect(Collectors.toList());
+			if(codeAllCodes.size()>takeBack.size()){
+				throw new ServiceException("鐢熸垚缂栫爜鏁版嵁ID宸叉湁鍘嗗彶璁板綍,璇风‘璁ゅ涓嬬敓鎴愮殑ID鏁版嵁锛�"+ allCodeDOList.stream().map(CodeAllCode::getId).collect(Collectors.toList()));
+			}
+
+			for (CodeAllCode codeAllCode : takeBack) {
+				codeAllCode.setTs(new Date());
+				codeAllCode.setLastModifyTime(new Date());
+				codeAllCode.setLastModifier(AuthUtil.getUserId().toString());
+				Iterator<CodeAllCode> iterator = allCodeDOList.iterator();
+				while (iterator.hasNext()){
+					CodeAllCode next = iterator.next();
+					if(codeAllCode.getId().equals(next.getId())){
+						codeAllCode.setCreateCodeOid(next.getCreateCodeOid());
+						codeAllCode.setLcStatus(next.getLcStatus());
+						iterator.remove();
+					}
+				}
+			}
+			if(takeBack.size()>0){
+				codeAllCodeService.updateBatchById(takeBack);
 			}
 			codeAllCodeService.saveBatch(allCodeDOList);
 //			iCodeWupinService.saveBatch(dataCBOList);
@@ -366,10 +419,11 @@
 //				}
 //			});
 		}
-//		WebUtil.setPersistence(true);
-//		boService.persistenceBatch(batchCBO);
+		// WebUtil.setPersistence(true);
+		// boService.persistenceBatch(batchCBO);
 		return codeList;
 	}
+
 	/**
 	 * 杞崲灞炴�х爜娈电殑鍊�
 	 * @param attrSecVOList 灞炴�х爜娈电殑鏄剧ず瀵硅薄
@@ -413,7 +467,6 @@
 			});
 		}
 	}
-
 
 	/**
 	 * 杞崲娴佹按鐮佹鐨勫��
@@ -658,9 +711,6 @@
 		allCodeDOList.add(allCodeDO);
 	}
 
-
-
-
 	/**
 	 * 淇濆瓨娴佹按鐨勪俊鎭�
 	 * @param ruleVO 瑙勫垯鐨勬樉绀哄璞�
@@ -737,12 +787,14 @@
 	private String killFillChar(String s, String fillString,boolean left){
 		Integer index = 0;
 		String value = s;
+
 		if(left){
 			for (int i = 0; i < s.length(); i++) {
 				char c = s.charAt(i);
-				if((new String(new char[]{c})).equalsIgnoreCase(fillString)){
-					index = i;
+				if(!(new String(new char[]{c})).equalsIgnoreCase(fillString)){
+					break;
 				}
+				index = i;
 			}
 			if(index >0){
 				value = value.substring(index);
@@ -751,9 +803,10 @@
 			//浠庡彸寰�宸︽壘
 			for (int i = s.length()-1; i >=0; i++) {
 				char c = s.charAt(i);
-				if((new String(new char[]{c})).equalsIgnoreCase(fillString)){
-					index = i;
+				if(!(new String(new char[]{c})).equalsIgnoreCase(fillString)){
+					break;
 				}
+				index = i;
 			}
 			if(index >0){
 				value = value.substring(0,index);
@@ -821,4 +874,5 @@
 //		WebUtil.copyValueToMapFromCbos(cbo,dataMap);
 		return formulaService.getValueByFormula(map,rule);
 	}
+
 }

--
Gitblit v1.9.3