From ded6e8d2312e139e8ce770c7f1d5830bf2db4af6 Mon Sep 17 00:00:00 2001
From: xiejun <xj@2023>
Date: 星期三, 19 七月 2023 11:39: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/CodeRuleServiceImpl.java |  113 +++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 71 insertions(+), 42 deletions(-)

diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java
index b0bb55c..57abd45 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java
@@ -38,6 +38,7 @@
 import com.vci.ubcs.code.service.ICodeRuleService;
 import com.vci.ubcs.code.vo.pagemodel.CodeBasicSecVO;
 import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeFixedValueVO;
 import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
 import com.vci.ubcs.code.wrapper.CodeClassifyWrapper;
 import com.vci.ubcs.code.wrapper.CodeRuleWrapper;
@@ -443,8 +444,7 @@
 			}
 			// 鍙戝竷鏃跺皢鐮佹绫诲瀷鎸夌収瀛楃涓插垎闅旂殑褰㈠紡鎷兼帴骞跺瓨鍌�
 			String secTypeStr = codeBasicSecService.listCodeBasicSecByRuleOid(codeRuleDO.getOid()).stream().map(CodeBasicSecVO::getSecType).collect(Collectors.joining(","));
-			codeRuleDO.setBasicSecTypes(secTypeStr);
-			count = codeRuleMapper.update(null,wrapper.set(CodeRule::getLcStatus, CodeRuleLC.RELEASED.getValue()));
+			count = codeRuleMapper.update(null,wrapper.set(CodeRule::getLcStatus, CodeRuleLC.RELEASED.getValue()).set(CodeRule::getBasicSecTypes,secTypeStr));
 		} else {
 			return R.fail("鏆備笉鏀寔鐨勬搷浣滅被鍨�");
 		}
@@ -507,76 +507,105 @@
 	@Override
 	public R checkLikeCodeRule(String oid) throws VciBaseException {
 		// 1銆佹煡璇㈠嚭褰撳墠瑕佸彂甯冪殑瑙勫垯
-		CodeRuleVO codeRuleVO = getObjectHasSecByOid(oid);
-		// 褰撳墠鍙戝竷鐨勮鍒欎笉瀛樺湪鐮佹淇℃伅
-		if(Func.isEmpty(codeRuleVO.getSecVOList())){
-			return R.data(null);
+		CodeRuleVO releaseCodeRule = getObjectHasSecByOid(oid);
+		// 褰撳墠鍙戝竷鐨勮鍒欎笉瀛樺湪鐮佹淇℃伅锛岀洿鎺ョ┖淇℃伅杩斿洖
+		if(Func.isEmpty(releaseCodeRule.getSecVOList())){
+			return R.success("");
 		}
 		// 2銆佹壘鍑轰笌褰撳墠鍙戝竷鐨勮鍒欑爜娈甸『搴忎竴鑷寸殑瑙勫垯
-		String secTypes = codeRuleVO.getSecVOList().stream().map(CodeBasicSecVO::getSecType).collect(Collectors.joining(","));
-		//鍏堟煡璇㈠嚭鎵�鏈夊凡鍙戝竷鐨勭紪鐮佽鍒�
-		List<CodeRule> codeRuleList = codeRuleMapper.selectList(Wrappers.<CodeRule>query().lambda().eq(CodeRule::getLcStatus, FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_RELEASED));
+		String secTypes = releaseCodeRule.getSecVOList().stream().map(CodeBasicSecVO::getSecType).collect(Collectors.joining(","));
+		// 鏌ヨ鍑烘墍鏈夊凡鍙戝竷鐨勭紪鐮佽鍒欎腑鐮佹绫诲瀷椤哄簭涓庡綋鍓嶈鍙戝竷鐨勮鍒欓『搴忎竴鑷寸殑缂栫爜瑙勫垯锛屾鏃跺凡杩戣繃婊ゆ帀澶ч儴鍒嗚鍒欙紝杩愮畻閲忓噺灏�
+		List<CodeRule> codeRuleList = codeRuleMapper.selectList(Wrappers.<CodeRule>query().lambda()
+			.eq(CodeRule::getLcStatus, FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_RELEASED)
+			.eq(CodeRule::getBasicSecTypes,secTypes)
+		);
+		// 涓虹┖锛岃瘉鏄庝笉瀛樺湪绫诲悓鐨勭紪鐮佽鍒欑洿鎺ヨ繑鍥�
+		if(Func.isEmpty(codeRuleList)){
+			return R.success("");
+		}
+		// 鏌ヨ鍑哄熀纭�鐮佹鍒楄〃锛堟寜鐓rderNum鍗囧簭鎺掑簭锛�
 		List<CodeRuleVO> codeRuleVOS = codeRuleDO2VOs(codeRuleList, true);
-		// 婊¤冻鐮佹绫诲瀷椤哄簭涓�鑷寸殑瑕佹眰鐨勭紪鐮佽鍒欙紝鍙互杩涘叆涓嬩竴姝ユ瘮杈冭鍒�
-		List<CodeRuleVO> codeRuleVOStream = codeRuleVOS.parallelStream().filter(item -> {
-			// 瀵笲asicSec浣跨敤orderNum鎺掑簭(鏌ヨ鐨勬椂鍊欏叾瀹炲凡缁忔帓杩囦竴娆″簭浜�)锛屽苟灏唖ecType鐢ㄩ�楀彿鍒嗛殧鎷兼帴鎴愪竴涓瓧绗︿覆
-			String itemSecTypes = item.getSecVOList().parallelStream().sorted(Comparator.comparing(CodeBasicSecVO::getOrderNum)).map(CodeBasicSecVO::getSecType).collect(Collectors.joining(","));
-			if (secTypes.equals(itemSecTypes)) {
-				return true;
-			}
-			return false;
-		}).collect(Collectors.toList());
 		// 3銆佸悇绫荤爜娈靛垎鍒繘琛屾瘮瀵�
-		codeRuleVOStream.parallelStream().filter(item->{
-			item.getSecVOList().stream().filter(basicSec->{
-				switch (basicSec.getSecType()){
+		List<CodeRuleVO> lastCodeRule = new ArrayList<>();
+		codeRuleVOS.stream().forEach(item->{
+			List<CodeBasicSecVO> secVOList = item.getSecVOList();
+			boolean flag = true;
+			for (int index = 0; index < secVOList.size(); index++) {
+				// 褰撳墠瑕佸彂甯冪殑瑙勫垯鍖呭惈鐨勭爜娈典俊鎭�
+				CodeBasicSecVO releaseBasicSec = releaseCodeRule.getSecVOList().get(index);
+				// 宸插彂甯冪殑瑙勫垯鍖呭惈鐨勭爜娈典俊鎭�
+				CodeBasicSecVO releasedBasicSec = secVOList.get(index);
+				// 鍥犱负鐮佹椤哄簭閮芥槸鎸夌収OrderNum鎺掑簭鐨勶紝鎵�浠ョ洿鎺ユ寜鐓т笅鏍囦袱涓ゆ瘮杈冨氨鍙互浜�
+				switch (releasedBasicSec.getSecType()){
 					// 灞炴�х爜娈碉紝姣斿灞炴�у拰灞炴�ф墍鍦ㄥ垎绫�(referCodeClassifyOid)
 					case "codeattrsec":
-						List<CodeBasicSecVO> codeattrsec = this.getBasicSecBySecType("codeattrsec", codeRuleVO);
-
+						if(!releasedBasicSec.getReferCodeClassifyOid().equals(releaseBasicSec.getReferCodeClassifyOid())){
+							flag = false;
+						}
 						break;
 					// 鍙彉鐮佹锛屾瘮瀵圭爜娈甸暱搴︼紝缂栫爜琛ヤ綅鏂瑰紡鍜岃ˉ浣嶆椂鐨勫瓧绗�
 					case "codevariablesec":
+						if(!(releasedBasicSec.getCodeSecLength().equals(releaseBasicSec.getCodeSecLength())
+							&& releasedBasicSec.getCodeFillType().equals(releaseBasicSec.getCodeFillType())
+							&& releasedBasicSec.getCodeFillSeparator().equals(releaseBasicSec.getCodeFillSeparator()))){
+							flag = false;
+						}
 						break;
 					// 鍥哄畾鐮佹姣斿鎸夊崌搴忔帓搴忕殑鐮佸�硷紝
 					case "codefixedsec":
+						if(Func.isNotEmpty(releasedBasicSec.getFixedValueVOList()) && Func.isNotEmpty(releaseBasicSec.getFixedValueVOList())){
+							// 灏唂ixedValue鎸夌収閫楀彿鍒嗛殧鎷兼帴璧锋潵锛屼互渚挎瘮杈冿紝鐢变簬鏌ヨ鏃跺凡鎸夌収orderNum鎺掕繃搴忎簡锛屾墍浠ヤ笉闇�瑕佸啀娆℃帓搴�
+							String reledFixedValues = releasedBasicSec.getFixedValueVOList().stream().map(CodeFixedValueVO::getId).collect(Collectors.joining(","));
+							String releFixedValues = releaseBasicSec.getFixedValueVOList().stream().map(CodeFixedValueVO::getId).collect(Collectors.joining(","));
+							if(reledFixedValues.equals(releFixedValues)){
+								flag = false;
+							}
+						}
 						break;
 					// 鍒嗙被鐮佹姣斿鎸夊崌搴忔帓搴忕爜鍊�
 					case "codeclassifysec":
+						if(!releasedBasicSec.getReferCodeClassifyOid().equals(releaseBasicSec.getReferCodeClassifyOid())){
+							flag = false;
+						}
 						break;
 					// 鏃ユ湡鐮佹姣斿鏃ユ湡鏍煎紡
 					case "codedatesec":
+						if(!releasedBasicSec.getCodeDateFormatStr().equals(releaseBasicSec.getCodeDateFormatStr())){
+							flag = false;
+						}
 						break;
-					// 寮曠敤鐮佹锛屾瘮瀵瑰弬鐓у簲鐢ㄧ殑涓氬姟绫诲瀷
+					// 寮曠敤鐮佹锛屾瘮瀵瑰弬鐓у紩鐢ㄧ殑涓氬姟绫诲瀷
 					case "coderefersec":
+						if(!releasedBasicSec.getReferBtmId().equals(releaseBasicSec.getReferBtmId())){
+							flag = false;
+						}
 						break;
 					// 灞傜骇鐮佹锛屾瘮瀵瑰眰绾х被鍨嬨�佸眰绾х殑鍊笺�佸瓧绗︽埅鍙栫被鍨嬨�佸彇鍊肩被鍨�
 					case "codelevelsec":
+						if(!(releasedBasicSec.getCodeLevelType().equals(releaseBasicSec.getCodeLevelType())
+							&& releasedBasicSec.getCodeLevelValue().equals(releaseBasicSec.getCodeLevelValue())
+							&& releasedBasicSec.getValueCutType().equals(releaseBasicSec.getValueCutType())
+							&& releasedBasicSec.getCodeGetValueType().equals(releaseBasicSec.getCodeGetValueType()))){
+							flag = false;
+						}
 						break;
-					case "codeserialsec":
 					// 娴佹按鐮佹姣斿鐮佹鐨勯暱搴�
-
+					case "codeserialsec":
+						if(!releasedBasicSec.getCodeFillLength().equals(releaseBasicSec.getCodeFillLength())){
+							flag = false;
+						}
 						break;
-					default:
-						return false;
 				}
-				return false;
-			});
-			return false;
+			}
+			// 婊¤冻鎵�鏈夌爜娈电被鍨嬫瘮瀵规潯浠剁殑瑙勫垯
+			if (flag) {
+				lastCodeRule.add(item);
+			}
 		});
-		// 鏈�鍚庡皢缁撴灉杩涜杩斿洖
+		// 鏈�鍚庡皢缁撴灉杩涜澶勭悊骞惰繑鍥�
+
 
 		return null;
-	}
-
-	private List<CodeBasicSecVO> getBasicSecBySecType(String secType,CodeRuleVO codeRuleVO){
-		List<CodeBasicSecVO> codeBasicSecVOList = codeRuleVO.getSecVOList().parallelStream().filter(item -> {
-			if (item.getSecType().equals(secType)) {
-				return true;
-			}
-			return false;
-		}).collect(Collectors.toList());
-		return codeBasicSecVOList;
 	}
 
 	/**

--
Gitblit v1.9.3