From c2efc1b0dfe76f5603dee63a917d3b7415053330 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期二, 31 十月 2023 11:30:42 +0800
Subject: [PATCH] 主数据统计功能后台接口实现

---
 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/pagemodel/Tree.java                 |    9 ++++
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyVO.java           |    2 +
 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/service/RevisionModelUtil.java |    1 
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeCLassifyMapper.xml                                   |   37 +++++++++++++++---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java          |   56 +++++++++++++++++++++------
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassify.java                   |    6 +++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyMapper.java                     |    2 
 7 files changed, 92 insertions(+), 21 deletions(-)

diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassify.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassify.java
index d941a7d..9ae7955 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassify.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassify.java
@@ -123,4 +123,10 @@
 	@TableField(exist = false)
 	private String idPath;
 
+	/**
+	 * 璇ュ垎绫讳笅涓绘暟鎹�绘暟
+	 */
+	@TableField(exist = false)
+	private String total;
+
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyVO.java
index 4cb53e8..fe274b5 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyVO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyVO.java
@@ -86,4 +86,6 @@
 	 */
 	private String codeResembleRuleOidName;
 
+	private String total;
+
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/service/RevisionModelUtil.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/service/RevisionModelUtil.java
index 4eaffc8..1f620f3 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/service/RevisionModelUtil.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/service/RevisionModelUtil.java
@@ -57,6 +57,7 @@
 					});
 					tree.setOid((String)oidValues.stream().collect(Collectors.joining(wrapperOptions.getOidValueSep())));
 					tree.setName((String) VciBaseUtil.getValueFromField("name", doObject));
+					tree.setCount("("+(String)VciBaseUtil.getValueFromField("total", doObject)+")");
 					if (f != null) {
 						tree.setText((String)f.apply(doObject));
 					} else {
diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/pagemodel/Tree.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/pagemodel/Tree.java
index 4b8fb68..892c52d 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/pagemodel/Tree.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/pagemodel/Tree.java
@@ -14,6 +14,7 @@
 	private static final long serialVersionUID = 6886695271635257882L;
 	private String oid;
 	private String text;
+	private String count;
 	private String name;
 	private boolean leaf = false;
 	private boolean showCheckbox = false;
@@ -37,6 +38,14 @@
 		this.setText(text);
 	}
 
+	public String getCount() {
+		return count;
+	}
+
+	public void setCount(String count) {
+		this.count = count;
+	}
+
 	public String getOid() {
 		return this.oid;
 	}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyMapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyMapper.java
index ea2bb07..4f762ce 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyMapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyMapper.java
@@ -74,7 +74,7 @@
 	 *
 	 * @return 鏁版嵁闆嗗悎
 	 */
-	List<CodeClassify> selectCodeClassifyDOByTree(@Param("id") String id,@Param("lcstatus") String lcstatus,@Param("parentcodeclassifyoid") String parentcodeclassifyoid,@Param("tenantId") String tenantId);
+	List<CodeClassify> selectCodeClassifyDOByTree(@Param("id") String id,@Param("lcstatus") String lcstatus,@Param("parentcodeclassifyoid") String parentcodeclassifyoid,@Param("tenantId") String tenantId,@Param("tableName") String tableName);
 
 	/**
 	 * 鏌ヨ鏁版嵁涓嶱L_CODE_KEYATTRREPEAT銆丳L_CODE_RESEMBLERULE銆丳L_CODE_RULE鑱旀煡
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
index 66505ab..50de8a3 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
@@ -2,6 +2,7 @@
 
 import com.alibaba.nacos.common.utils.StringUtils;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -13,6 +14,7 @@
 import com.vci.ubcs.code.enumpack.FrameworkDataLCStatus;
 import com.vci.ubcs.code.mapper.CodeClassifyMapper;
 import com.vci.ubcs.code.mapper.CodeClassifyTemplateMapper;
+import com.vci.ubcs.code.mapper.CommonsMapper;
 import com.vci.ubcs.code.po.CodeClassifyPO;
 import com.vci.ubcs.code.service.ICodeClassifyService;
 import com.vci.ubcs.code.service.ICodeKeyAttrRepeatService;
@@ -69,6 +71,7 @@
 import java.util.stream.Stream;
 
 import static com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant.*;
+import static com.vci.ubcs.starter.web.util.VciBaseUtil.getTableName;
 
 @Service
 public class CodeClassifyServiceImpl extends ServiceImpl<CodeClassifyMapper, CodeClassify> implements ICodeClassifyService {
@@ -84,6 +87,9 @@
 
 	@Resource
 	private IBtmTypeClient btmTypeClient;
+
+	@Resource
+	private CommonsMapper commonsMapper;
 
 	/**
 	 * 鏃ュ織
@@ -442,7 +448,7 @@
 		List<CodeClassifyVO> voList = new ArrayList<CodeClassifyVO>();
 		if(!CollectionUtils.isEmpty(codeClassifys)){
 			for(CodeClassify s: codeClassifys){
-				CodeClassifyVO vo =  codeClassifyDO2VO(s);
+				CodeClassifyVO vo = codeClassifyDO2VO(s);
 				if(vo != null){
 					voList.add(vo);
 				}
@@ -522,20 +528,21 @@
 			lcStatus = treeQueryObject.getConditionMap().getOrDefault("lcStatus",null);
 		}
 		if(StringUtils.isNotBlank(id) || StringUtils.isNotBlank(lcStatus) ){
+			String tableName = this.getTableName(treeQueryObject.getParentOid(),treeQueryObject.getConditionMap().get("id"), treeQueryObject.getConditionMap().get("lcStatus"));
 			doList = codeClassifyMapper
-				.selectCodeClassifyDOByTree(treeQueryObject.getConditionMap().get("id"),treeQueryObject.getConditionMap().get("lcStatus"),treeQueryObject.getParentOid(), AuthUtil.getTenantId()
-					.equals(
-						NacosConfigCache
-							.getAdminUserInfo()
-							.getTenantId()
-					) ? null:AuthUtil.getTenantId());
+				.selectCodeClassifyDOByTree(
+					treeQueryObject.getConditionMap().get("id"),
+					treeQueryObject.getConditionMap().get("lcStatus"),
+					treeQueryObject.getParentOid(),
+					VciBaseUtil.checkAdminTenant() ? null:AuthUtil.getTenantId(),
+					tableName
+				);
 		}else{
-			doList =codeClassifyMapper.selectCodeClassifyVOByTree(treeQueryObject.getParentOid(), AuthUtil.getTenantId()
-				.equals(
-					NacosConfigCache
-						.getAdminUserInfo()
-						.getTenantId()
-				) ? null:AuthUtil.getTenantId());
+			// 鍙鍓嶇浼氫紶鍙傛暟杩囨潵灏变笉浼氬嚭鐜拌蛋杩欏彞鐨勬儏鍐碉紝鎵�浠ユ煡璇㈡�绘暟娌″湪杩欏効娣诲姞
+			doList =codeClassifyMapper.selectCodeClassifyVOByTree(
+				treeQueryObject.getParentOid(),
+				VciBaseUtil.checkAdminTenant() ? null:AuthUtil.getTenantId()
+			);
 		}
 		List<CodeClassifyVO> voList = codeClassifyDO2VOs(doList);
 		TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions(PARENT_FIELD_NAME);
@@ -545,6 +552,7 @@
 			return s.getId() + " " + s.getName() + (FrameworkDataLCStatus.DISABLED.getValue().equalsIgnoreCase(s
 				.getLcStatus()) ? (" 銆愬仠鐢ㄣ�� ") : "");
 		});
+
 		Iterator var6 =  tree.listIterator();
 		while(var6.hasNext()){
 			Tree trees = (Tree) var6.next();
@@ -559,6 +567,28 @@
 	}
 
 	/**
+	 * 鍒嗙被鍔犺浇鏃惰幏鍙栦笟鍔$被鍨媔d锛屾嫾鎺ヤ笟鍔$被鍨嬭〃鍚�
+	 * @return
+	 */
+	private String getTableName(String parentCodeClassifyOid,String id,String lcStatus){
+		LambdaQueryWrapper<CodeClassify> wrapper = Wrappers.<CodeClassify>query()
+			.lambda().select(CodeClassify::getBtmTypeId)
+			.eq(CodeClassify::getLcStatus, lcStatus)
+			.isNotNull(CodeClassify::getBtmTypeId)
+			.last("limit 1");
+		if(Func.isNotBlank(id)){
+			wrapper.eq(CodeClassify::getId,id).isNull(CodeClassify::getParentCodeClassifyOid);
+		}else{
+			wrapper.eq(CodeClassify::getParentCodeClassifyOid,parentCodeClassifyOid);
+		}
+		CodeClassify codeClassify = codeClassifyMapper.selectOne(wrapper);
+		if(Func.isEmpty(codeClassify) || Func.isEmpty(codeClassify.getBtmTypeId())){
+			throw new ServiceException("鏌ヨ涓绘暟鎹�绘暟鏃讹紝鏈幏鍙栦笟鍔$被鍨婭D锛�");
+		}
+		return VciBaseUtil.getTableName(codeClassify.getBtmTypeId().toLowerCase(Locale.ROOT),true);
+	}
+
+	/**
 	 * 鏍规嵁鏍戝舰鏌ヨ瀵硅薄鏉ユ煡璇㈡暟鎹璞�
 	 *
 	 * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeCLassifyMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeCLassifyMapper.xml
index c4e4702..84455f7 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeCLassifyMapper.xml
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeCLassifyMapper.xml
@@ -38,6 +38,7 @@
         <result column="CODEKEYATTRREPEATOID" property="codeKeyAttrRepeatOid"/>
         <result column="CODERESEMBLERULEOID" property="codeResembleRuleOid"/>
         <result column="TENANT_ID" property="tenantId"/>
+        <result column="TOTAL" property="total"/>
     </resultMap>
 
     <sql id="tableName">
@@ -89,12 +90,12 @@
                codekeyattrrepeatoid.name           as codeKeyAttrRepeatOidName,
                coderesembleruleoid.name            as codeResembleRuleOidName
         from pl_code_classify codeclassify0
-                 left join pl_code_rule coderuleoid
-                           on codeclassify0.codeRuleOid = coderuleoid.oid
-                 left join pl_code_keyattrrepeat codekeyattrrepeatoid
-                           on codeclassify0.codeKeyAttrRepeatOid = codekeyattrrepeatoid.oid
-                 left join pl_code_resemblerule coderesembleruleoid
-                           on codeclassify0.codeResembleRuleOid = coderesembleruleoid.oid
+             left join pl_code_rule coderuleoid
+                       on codeclassify0.codeRuleOid = coderuleoid.oid
+             left join pl_code_keyattrrepeat codekeyattrrepeatoid
+                       on codeclassify0.codeKeyAttrRepeatOid = codekeyattrrepeatoid.oid
+             left join pl_code_resemblerule coderesembleruleoid
+                       on codeclassify0.codeResembleRuleOid = coderesembleruleoid.oid
         <where>
              1=1
             <if test="oid != null and oid != ''">
@@ -294,7 +295,28 @@
         codeclassify0.TENANT_ID             as tenantId ,
         coderuleoid.name                    as codeRuleOidName,
         codekeyattrrepeatoid.name           as codeKeyAttrRepeatOidName,
-        coderesembleruleoid.name            as codeResembleRuleOidName
+        coderesembleruleoid.name            as codeResembleRuleOidName,
+        (
+            SELECT
+                COUNT(*)
+            FROM
+                PLBT_CODE_part
+            WHERE
+                CODECLSFID IN (
+                    SELECT
+                    oid
+                    FROM
+                    PL_CODE_CLASSIFY
+                    WHERE
+                    lcstatus = 'Enabled'
+                    START WITH
+                    OID = codeclassify0.OID
+                    CONNECT BY
+                    PRIOR OID = parentCodeClassifyOid
+                )
+                AND lastr = '1'
+                AND lastv = '1'
+        ) AS total
         from pl_code_classify codeclassify0
         left join pl_code_rule coderuleoid
         on codeclassify0.codeRuleOid = coderuleoid.oid
@@ -504,6 +526,7 @@
         start with oid = #{oid}
         connect by prior oid = parentcodeclassifyoid;
     </select>
+
     <select id="selectAllParenClassifytByOid" resultMap="plCodeClassifyResultMap">
         select codeclassify0.OWNER                 as owner,
         codeclassify0.BTMTYPEID             as btmtypeid,

--
Gitblit v1.9.3