From e9ae27404803d0616e06ed21027408a71b4bc19c Mon Sep 17 00:00:00 2001
From: ludc <ludc@vci-tech.com>
Date: 星期三, 05 三月 2025 17:34:02 +0800
Subject: [PATCH] 集成申码接口调整:当码值按照约定传表名为空的业务场景下传null校验问题和码值组装问题。

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java     |   17 ++++++++++++++---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingSyncServiceImpl.java |    8 +++++---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java  |    5 +++--
 3 files changed, 22 insertions(+), 8 deletions(-)

diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingSyncServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingSyncServiceImpl.java
index 9ac4e31..3b4964e 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingSyncServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingSyncServiceImpl.java
@@ -38,6 +38,7 @@
 import com.vci.ubcs.code.vo.webserviceModel.attrmap.*;
 import com.vci.ubcs.code.vo.webserviceModel.result.xml.XMLResultDataObjectDetailDO;
 import com.vci.ubcs.code.webService.config.AttributeMapConfig;
+import com.vci.ubcs.omd.cache.EnumCache;
 import com.vci.ubcs.omd.feign.IBtmTypeClient;
 import com.vci.ubcs.omd.vo.BtmTypeVO;
 import com.vci.ubcs.starter.exception.VciBaseException;
@@ -543,9 +544,10 @@
 		SectionVOList.stream().forEach(SectionVO -> {
 			sectionVOMap.put(SectionVO.getName(), SectionVO.getValue());
 		});
-		//Map<String,CodeClassifyVO> codeClassifyVOMap= classifyFullInfo.getParentClassifyVOs().stream().collect(Collectors.toMap(s -> s.getId(), t -> t,(o1, o2)->o2));
 		List<CodeOrderSecDTO> codeOrderSecDTOList = new ArrayList<>();
 		Map<String, String> errorMap = new HashMap<>();
+		String nullSymbol = EnumCache.getValue("nullSymbol", "NULL");
+		nullSymbol = Func.isBlank(nullSymbol) ? "#NaN?":nullSymbol;
 		for (CodeBasicSecVO codeBasicSecVO : codeBasicSecVOS) {
 			String sectype = codeBasicSecVO.getSecType();
 			String newSecName = codeBasicSecVO.getName();
@@ -568,7 +570,7 @@
 
 						if (!CollectionUtils.isEmpty(codeClassifyValueDOList)) {
 							Map<String, CodeClassifyValue> codeClassifyValueDOMap = codeClassifyValueDOList.stream().collect(Collectors.toMap(s -> s.getId(), t -> t, (o1, o2) -> o2));
-							if (codeClassifyValueDOMap.containsKey(sectypeValue)) {
+							if (codeClassifyValueDOMap.containsKey(sectypeValue) || nullSymbol.equals(sectypeValue)) {
 								CodeClassifyValue codeClassifyValue = codeClassifyValueDOMap.get(sectypeValue);
 								sectypeValue = codeClassifyValue.getOid();
 							} else {
@@ -578,7 +580,7 @@
 							}
 						}
 					}
-					if (StringUtils.isBlank(sectypeValue)) {
+					if (StringUtils.isBlank(sectypeValue)&&!name.equals(secName)) {
 						message = "浼犲叆鐨勫垎绫荤爜娈碉細銆�" + name + " 銆戠殑鍊间笉鍏佽涓虹┖";
 						errorMap.put("error", errorMap.getOrDefault("error", "") + ";" + message);
 					}
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 c7a95e2..9cb5431 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
@@ -822,7 +822,8 @@
 			case CODE_CLASSIFY_SEC:
 				//鍒嗙被鐮佹鐨勶紝涔熸槸浠庡墠绔�夋嫨浜嗙爜鍊煎嵆鍙紝涓嶈鐮佸�肩殑闀垮害鏄灏�
 				CodeClassifyValue codeClassifyValueDO= codeClassifyValueMapper.selectById(secValue);
-				if(Func.isBlank(codeClassifyValueDO.getId())){
+				//褰撶爜鍊间负绌烘垨#NaN?鏃跺嵆琛ㄧず浣滀负绌哄瓧绗︿覆杩涜鎷兼帴
+				if(Func.isBlank(codeClassifyValueDO.getId()) || codeClassifyValueDO.getId().equals("#NaN?")){
 					codeClassifyValueDO.setId("");
 				}
 				if(codeClassifyValueDO!=null) {
@@ -1329,7 +1330,7 @@
 			case CODE_CLASSIFY_SEC:
 				//鍒嗙被鐮佹鐨勶紝涔熸槸浠庡墠绔�夋嫨浜嗙爜鍊煎嵆鍙紝涓嶈鐮佸�肩殑闀垮害鏄灏�
 				CodeClassifyValue codeClassifyValueDO= codeClassifyValueMapper.selectById(secValue);
-				if(Func.isBlank(codeClassifyValueDO.getId())){
+				if(Func.isBlank(codeClassifyValueDO.getId()) || codeClassifyValueDO.getId().equals("#NaN?")){
 					codeClassifyValueDO.setId("");
 				}
 				if(codeClassifyValueDO!=null) {
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
index 0996090..3c11372 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
@@ -38,7 +38,10 @@
 import com.vci.ubcs.code.webService.annotation.VciWebservice;
 import com.vci.ubcs.code.webService.config.AttributeMapConfig;
 import com.vci.ubcs.code.webService.config.PersonAndDeptConfig;
+import com.vci.ubcs.omd.cache.EnumCache;
 import com.vci.ubcs.omd.feign.IBtmTypeClient;
+import com.vci.ubcs.omd.feign.IDictClient;
+import com.vci.ubcs.omd.feign.IEnumClient;
 import com.vci.ubcs.omd.vo.BtmTypeVO;
 import com.vci.ubcs.starter.exception.VciBaseException;
 import com.vci.ubcs.starter.revision.model.TreeQueryObject;
@@ -2423,8 +2426,13 @@
 		return codeOrderSecDTOList;
 	}
 
-	/***
+	/**
 	 * 鏍规嵁浼犲叆鐨勫弬鏁颁俊鎭牎楠岀爜娈佃鍒�
+	 * @param SectionVOList
+	 * @param ruleVO
+	 * @param classifyFullInfo
+	 * @return
+	 * @throws Throwable
 	 */
 	private List<CodeOrderSecDTO> getRuleCodeOrderSecDTOs(List<SectionVO> SectionVOList,CodeRuleVO ruleVO,CodeClassifyFullInfoBO classifyFullInfo) throws Throwable{
 		List<CodeBasicSecVO>  codeBasicSecVOS= ruleVO.getSecVOList();
@@ -2440,6 +2448,9 @@
 		//	String newSecName=codeBasicSecVO.getName();
 			String classifySecOid= codeBasicSecVO.getOid();
 			String message="";
+			//#NaN?琛ㄧず鐮佸�间负绌虹殑鍦烘櫙
+			String nullSymbol = EnumCache.getValue("nullSymbol", "NULL");
+			nullSymbol = Func.isBlank(nullSymbol) ? "#NaN?":nullSymbol;
 			if (!sectype.equals(CodeSecTypeEnum.CODE_SERIAL_SEC.getValue())) {
 				String name = codeBasicSecVO.getName();
 				String sectypeText = codeBasicSecVO.getSecTypeText();
@@ -2456,8 +2467,8 @@
 						List<CodeClassifyValue> codeClassifyValueDOList = codeClassifyValueService.list(Wrappers.<CodeClassifyValue>query().lambda().eq(CodeClassifyValue::getCodeClassifySecOid,classifySecOid));
 						if (!CollectionUtils.isEmpty(codeClassifyValueDOList)) {
 							Map<String, CodeClassifyValue> codeClassifyValueDOMap = codeClassifyValueDOList.stream().collect(Collectors.toMap(s -> s.getId(), t -> t, (o1, o2) -> o2));
-							if(codeClassifyValueDOMap.containsKey(sectypeValue)){
-								CodeClassifyValue codeClassifyValue=   codeClassifyValueDOMap.get(sectypeValue);
+							if(codeClassifyValueDOMap.containsKey(sectypeValue) || nullSymbol.equals(sectypeValue)){
+								CodeClassifyValue codeClassifyValue = codeClassifyValueDOMap.get(sectypeValue);
 								sectypeValue=codeClassifyValue.getOid();
 							}else {
 								//throw new Throwable("浼犲叆鐨勫垎绫荤爜娈碉細銆�" + name + " 鍊硷細" + sectypeValue + "銆戯紝涓嶇鍚堝綋鍓嶅垎绫诲眰绾т唬鍙�");

--
Gitblit v1.9.3