From b1161ad21938f1fde021249b9c3dff6f884647b8 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期二, 17 十月 2023 19:02:37 +0800
Subject: [PATCH] 首页主数据统计功能接口实现

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmCountServiceImpl.java |   91 +++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 82 insertions(+), 9 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 92c6569..d877d1b 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
@@ -4,15 +4,26 @@
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.vci.ubcs.code.entity.CodeClassify;
 import com.vci.ubcs.code.entity.MdmCount;
+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.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.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.Map;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
+
+import static com.vci.ubcs.starter.web.util.VciBaseUtil.getTableName;
 
 /**
  * 涓绘暟鎹粺璁℃湇鍔�
@@ -32,18 +43,80 @@
 	@Resource
 	private ICodeClassifyService codeClassifyService;
 
+	@Resource
+	private CommonsMapper commonsMapper;
+
+	/**
+	 * 鏌ヨ涓绘暟鎹�绘暟
+	 * @param userId
+	 * @return
+	 * @throws ServiceException
+	 */
 	@Override
-	public List<MdmCount> getMdmCounts() {
-		// 1銆侀渶瑕佸厛鏌ヨ鍑哄垎绫讳笅椤剁骇鑺傜偣鏈夊摢浜涗富鏁版嵁,鎷垮埌涓氬姟绫诲瀷鍚嶇О
+	public List<MdmCount> getMdmCounts(String userId) throws ServiceException{
+		/** 1銆佸厛鏌ヨ鍑哄悇鍒嗙被椤跺眰鑺傜偣鏈夊摢浜涗富鏁版嵁,鎷垮埌涓氬姟绫诲瀷鍚嶇О锛岀浉褰撲簬鎷垮埌涓绘暟鎹〃鍚�
+			椤跺眰鑺傜偣鐨刡tmtypeid杩橀渶瑕佺敤浣滄煡璇㈡潯浠跺搴旂殑鑿滃崟琛ㄧ殑code瀛楁
+			浣嗘槸涓轰簡鍑忓皯鏌ヨ娆℃暟锛屽氨闇�鍦ㄦ煡璇㈡槸浣跨敤btmtypeid瀛楁杩涜鎺掑簭
+		 */
 		LambdaQueryWrapper<CodeClassify> wrapper = Wrappers.<CodeClassify>query()
 			.lambda()
-			.isNull(CodeClassify::getParentCodeClassifyOid).select(CodeClassify::getBtmTypeId);
-		Map<String, Object> map = codeClassifyService.getMap(wrapper);
-		// 2銆佺劧鍚庨渶瑕佹煡璇㈠嚭鑿滃崟璺敱鍜屽浘鏍�
+			.isNull(CodeClassify::getParentCodeClassifyOid).select(CodeClassify::getBtmTypeId)
+			.orderByAsc(CodeClassify::getBtmTypeId);
+		List<CodeClassify> codeClassifies = codeClassifyService.list(wrapper);
+		List<String> btyTypeIds = codeClassifies.stream().map(CodeClassify::getBtmTypeId).collect(Collectors.toList());
+		// 2銆佺劧鍚巉eign璋冪敤闇�瑕佹煡璇㈠嚭鑿滃崟璺敱鍜屽浘鏍�
+		R<List<Menu>> menuList = sysClient.getMenuByCodes(btyTypeIds);
+		if(!menuList.isSuccess() && menuList.getData().isEmpty()){
+			throw new ServiceException("鑾峰彇涓绘暟鎹粺璁℃椂锛屼富鏁版嵁鑿滃崟鏌ヨ涓虹┖锛屽師鍥狅細"+menuList.getMsg());
+		}
+		List<MdmCount> mdmCountList = new ArrayList<>();
+		// 3銆佹煡璇㈠綋鍓嶇櫥褰曠殑鐢ㄦ埛閰嶇疆浜嗛偅浜涗富鏁版嵁缁熻椤�
+		R<MdmCountConfig> mdmCountConfig = sysClient.getMdmCountConfig(userId);
+		if(!mdmCountConfig.isSuccess()){
+			throw new ServiceException("鑾峰彇涓绘暟鎹粺璁¢」閰嶇疆鏃跺嚭鐜伴敊璇紝鍘熷洜锛�"+mdmCountConfig.getMsg());
+		}
+		List<String> mdmNames = null;
+		if(Func.isBlank(mdmCountConfig.getData().getMdmName())){
+			AtomicInteger count = new AtomicInteger();
+			mdmNames = menuList.getData().stream().map(item->{
+				if(count.getAndIncrement() <5){
+					return item.getCode();
+				}
+				return null;
+			}).collect(Collectors.toList());
+		}else {
+			mdmNames = Arrays.stream(mdmCountConfig.getData().getMdmName().split(",")).collect(Collectors.toList());
+		}
+		final List<String> mdmNamesFinal = mdmNames;
+		// 4銆佺劧鍚巗et杩涘璞′腑
+		menuList.getData().stream().forEach(item->{
+			Integer isDefault = mdmNamesFinal.contains(item.getCode()) ? 1:0;
+			MdmCount mdmCount = new MdmCount(
+				item.getName(),
+				getCountByTableName(item.getCode()), /*鏌ヨ涓绘暟鎹�绘暟*/
+				item.getPath(),
+				item.getSource(),
+				isDefault
+			);
+			mdmCountList.add(mdmCount);
+		});
+		return mdmCountList;
+	}
 
-		// 3銆佺劧鍚庤缃繘
-
-		return null;
+	/**
+	 * 鎷兼帴琛ㄥ悕鏌ヨ鎬绘暟
+	 * @param tableName
+	 * @return
+	 */
+	private String getCountByTableName(String tableName){
+		String sql = "SELECT COUNT(*) FROM " + getTableName(tableName,true) +";";
+		String count = "0";
+		try {
+			count = commonsMapper.queryCountStringBySql(sql);
+		}catch (Exception e){
+			throw new ServiceException("涓绘暟鎹�绘暟鏌ヨ澶辫触锛屽師鍥狅細"+e.getCause());
+		}
+		return count;
 	}
 
 }

--
Gitblit v1.9.3