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

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmCountServiceImpl.java |   63 +++++++++++++++++++++++--------
 1 files changed, 47 insertions(+), 16 deletions(-)

diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmCountServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmCountServiceImpl.java
index c063e36..3fce2a5 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmCountServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmCountServiceImpl.java
@@ -7,20 +7,21 @@
 import com.vci.ubcs.code.mapper.CommonsMapper;
 import com.vci.ubcs.code.service.ICodeClassifyService;
 import com.vci.ubcs.code.service.IMdmCountService;
+import com.vci.ubcs.starter.web.util.VciBaseUtil;
 import com.vci.ubcs.system.entity.MdmCountConfig;
 import com.vci.ubcs.system.entity.Menu;
 import com.vci.ubcs.system.feign.ISysClient;
 import lombok.extern.slf4j.Slf4j;
 import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
+import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 import static com.vci.ubcs.starter.web.util.VciBaseUtil.getTableName;
@@ -54,28 +55,38 @@
 	 */
 	@Override
 	public List<MdmCount> getMdmCounts(String userId) throws ServiceException{
-		/** 1銆佸厛鏌ヨ鍑哄悇鍒嗙被椤跺眰鑺傜偣鏈夊摢浜涗富鏁版嵁,鎷垮埌涓氬姟绫诲瀷鍚嶇О锛岀浉褰撲簬鎷垮埌涓绘暟鎹〃鍚�
-			椤跺眰鑺傜偣鐨刡tmtypeid杩橀渶瑕佺敤浣滄煡璇㈡潯浠跺搴旂殑鑿滃崟琛ㄧ殑code瀛楁
-			浣嗘槸涓轰簡鍑忓皯鏌ヨ娆℃暟锛屽氨闇�鍦ㄦ煡璇㈡槸浣跨敤btmtypeid瀛楁杩涜鎺掑簭
+		if(Func.isBlank(userId) && Func.isBlank(AuthUtil.getUserId().toString())){
+			throw new ServiceException("蹇呬紶鍙傛暟鐢ㄦ埛id涓嶈兘涓虹┖");
+		}
+		/** 1銆佸厛鏌ヨ鍑哄悇鍒嗙被椤跺眰鑺傜偣鏈夊摢浜涗富鏁版嵁,鎷垮埌缁戝畾鐨勪笟鍔$被鍨嬪悕绉帮紝鐩稿綋浜庢嬁鍒颁富鏁版嵁琛ㄥ悕
+			椤跺眰鑺傜偣鐨刡tmtypeid锛�2024骞�1鏈�31鏃ョ殑鏃跺�欐敼鎴愪簡鐢ㄥ垎绫荤殑id锛夊幓鏌ヨ瀵瑰簲鐨勮彍鍗曡〃鐨刢ode瀛楁
+		 	锛屾煡璇㈠嚭涓绘暟鎹鐞嗕笅闈㈡湁鍝簺涓绘暟鎹殑
+			浣嗘槸涓轰簡鍑忓皯鏌ヨ娆℃暟锛屽氨闇�鍦ㄦ煡璇㈡槸浣跨敤id瀛楁杩涜鎺掑簭
 		 */
 		LambdaQueryWrapper<CodeClassify> wrapper = Wrappers.<CodeClassify>query()
 			.lambda()
-			.isNull(CodeClassify::getParentCodeClassifyOid).select(CodeClassify::getBtmTypeId)
-			.orderByAsc(CodeClassify::getBtmTypeId);
+			.isNull(CodeClassify::getParentCodeClassifyOid)/*椤跺眰鑺傜偣*/
+			.orderByAsc(CodeClassify::getId);
+		// 鍔犱笂绉熸埛鏌ヨ鏉′欢
+		if(!VciBaseUtil.checkAdminTenant()){
+			wrapper.eq(CodeClassify::getTenantId,AuthUtil.getTenantId());
+		}
 		List<CodeClassify> codeClassifies = codeClassifyService.list(wrapper);
-		List<String> btyTypeIds = codeClassifies.stream().map(CodeClassify::getBtmTypeId).collect(Collectors.toList());
+		// List<String> btmTypeIds = codeClassifies.stream().map(CodeClassify::getBtmTypeId).collect(Collectors.toList());
+		List<String> classifyIds = codeClassifies.stream().map(CodeClassify::getId).collect(Collectors.toList());
 		// 2銆佺劧鍚巉eign璋冪敤闇�瑕佹煡璇㈠嚭鑿滃崟璺敱鍜屽浘鏍�
-		R<List<Menu>> menuList = sysClient.getMenuByCodes(btyTypeIds);
-		if(!menuList.isSuccess() && menuList.getData().isEmpty()){
-			throw new ServiceException("鑾峰彇涓绘暟鎹粺璁℃椂锛屼富鏁版嵁鑿滃崟鏌ヨ涓虹┖锛屽師鍥狅細"+menuList.getMsg());
+		R<List<Menu>> menuList = sysClient.getMenuByCodes(classifyIds,Func.toLong(userId));
+		if(!menuList.isSuccess()){
+			throw new ServiceException("鑾峰彇涓绘暟鎹粺璁℃椂锛屼富鏁版嵁鑿滃崟鏌ヨ澶辫触锛屽師鍥狅細"+menuList.getMsg());
 		}
 		List<MdmCount> mdmCountList = new ArrayList<>();
 		// 3銆佹煡璇㈠綋鍓嶇櫥褰曠殑鐢ㄦ埛閰嶇疆浜嗛偅浜涗富鏁版嵁缁熻椤�
-		R<MdmCountConfig> mdmCountConfig = sysClient.getMdmCountConfig(userId);
+		R<MdmCountConfig> mdmCountConfig = sysClient.getMdmCountConfig(Func.isBlank(userId) ? AuthUtil.getUserId().toString():userId);
 		if(!mdmCountConfig.isSuccess()){
 			throw new ServiceException("鑾峰彇涓绘暟鎹粺璁¢」閰嶇疆鏃跺嚭鐜伴敊璇紝鍘熷洜锛�"+mdmCountConfig.getMsg());
 		}
 		List<String> mdmNames = null;
+		//棣栭〉閰嶇疆鏄剧ず灏戜簬5涓氨榛樿鏄剧ず鍓嶄簲涓�
 		if(Func.isBlank(mdmCountConfig.getData().getMdmName())){
 			AtomicInteger count = new AtomicInteger();
 			mdmNames = menuList.getData().stream().map(item->{
@@ -88,12 +99,29 @@
 			mdmNames = Arrays.stream(mdmCountConfig.getData().getMdmName().split(",")).collect(Collectors.toList());
 		}
 		final List<String> mdmNamesFinal = mdmNames;
-		// 4銆佺劧鍚巗et杩涘璞′腑
+		/* 4銆佽幏鍙栬〃鍚嶏紝褰撳墠鏈幏鍙栧埌琛ㄥ悕锛岃彍鍗曠殑code鍊煎搴斾簡鍒嗙被鐨刬d锛�
+			鏈搴斾笟鍔$被鍨嬬殑id锛屾墍浠ラ渶瑕侀�氳繃鑿滃崟鐨刬d绛涢�夊嚭閰嶇疆骞朵笖鍦ㄤ娇鐢ㄧ殑涓绘暟鎹垎绫�,
+			鐒跺悗閫氳繃鍒嗙被淇℃伅鏌ヨ鍒颁笟鍔$被鍨媔d锛屽湪閫氳繃涓氬姟绫诲瀷鎺ュ彛鏌ヨ鍑鸿〃鍚�(杩欎竴姝ュ彲浠ュ厛鐪佺暐鍥犱负鍒嗙被涓婂叧鑱旂殑涓氬姟绫诲瀷id涔熷彲浠ユ嫾鎺ュ嚭琛ㄥ悕)
+		*/
+		// 鑾峰彇鍒嗙被涓婄殑涓氬姟绫诲瀷鐨刬d
+		Map<String, String> btmTypeIdMaps = menuList.getData().stream()
+		.filter(menu -> codeClassifies.stream()
+			.anyMatch(codeClassify -> codeClassify.getId().equals(menu.getCode()))
+		).collect(Collectors.toMap(
+			Menu::getCode,
+			menu -> codeClassifies.stream()
+				.filter(codeClassify -> codeClassify.getId().equals(menu.getCode()))
+				.findFirst()
+				.map(CodeClassify::getBtmTypeId)
+				.orElse(null)
+		));
+
+		// 5銆佺劧鍚巗et杩涘璞′腑
 		menuList.getData().stream().forEach(item->{
 			Integer isDefault = mdmNamesFinal.contains(item.getCode()) ? 1:0;
 			MdmCount mdmCount = new MdmCount(
 				item.getName(),
-				getCountByTableName(item.getCode()), /*鏌ヨ涓绘暟鎹�绘暟*/
+				getCountByTableName(btmTypeIdMaps.get(item.getCode())), /*鏌ヨ涓绘暟鎹�绘暟*/
 				item.getPath(),
 				item.getSource(),
 				item.getCode(),
@@ -110,8 +138,11 @@
 	 * @return
 	 */
 	private String getCountByTableName(String tableName){
-		String sql = "SELECT COUNT(*) FROM " + getTableName(tableName,true) +";";
 		String count = "0";
+		if(Func.isBlank(tableName)){
+			return count;
+		}
+		String sql = "SELECT COUNT(*) FROM " + getTableName(tableName,true) +";";
 		try {
 			count = commonsMapper.queryCountStringBySql(sql);
 		}catch (Exception e){

--
Gitblit v1.9.3