From 2aa7777dfc80c8ec767305a1f526b44e519121ed Mon Sep 17 00:00:00 2001 From: zhaokai Date: Fri, 17 Jul 2026 15:28:02 +0800 Subject: [PATCH] =?UTF-8?q?feat(corp):=20=E6=B7=BB=E5=8A=A0=E5=8F=AF?= =?UTF-8?q?=E8=A7=86=E5=8C=96=E5=A4=A7=E5=B1=8F-=E4=BC=81=E4=B8=9A?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=B1=87=E6=80=BB=E7=BB=9F=E8=AE=A1=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../basic/info/web/CorpInfoController.java | 6 +++ .../info/command/query/CorpInfoQueryExe.java | 8 ++++ .../info/service/CorpInfoServiceImpl.java | 5 +++ .../basic/info/api/CorpInfoServiceI.java | 2 + .../dto/clientobject/CorpUserSummaryCO.java | 21 ++++++++++ .../dataobject/CorpUserSummaryDO.java | 16 ++++++++ .../persistence/mapper/CorpInfoMapper.java | 3 ++ .../repository/CorpInfoRepository.java | 3 ++ .../impl/CorpInfoRepositoryImpl.java | 6 +++ .../main/resources/mapper/CorpInfoMapper.xml | 39 ++++++++++++++++--- 10 files changed, 103 insertions(+), 6 deletions(-) create mode 100644 web-client/src/main/java/com/zcloud/basic/info/dto/clientobject/CorpUserSummaryCO.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/dataobject/CorpUserSummaryDO.java diff --git a/web-adapter/src/main/java/com/zcloud/basic/info/web/CorpInfoController.java b/web-adapter/src/main/java/com/zcloud/basic/info/web/CorpInfoController.java index 55452d21..e9fe3cee 100644 --- a/web-adapter/src/main/java/com/zcloud/basic/info/web/CorpInfoController.java +++ b/web-adapter/src/main/java/com/zcloud/basic/info/web/CorpInfoController.java @@ -163,5 +163,11 @@ public class CorpInfoController { return corpInfoService.corpUserStatisticPage(qry); } + @ApiOperation("可视化大屏-企业用户汇总") + @PostMapping("/corpUserSummary") + public SingleResponse corpUserSummary() { + return SingleResponse.of(corpInfoService.corpUserSummary()); + } + } diff --git a/web-app/src/main/java/com/zcloud/basic/info/command/query/CorpInfoQueryExe.java b/web-app/src/main/java/com/zcloud/basic/info/command/query/CorpInfoQueryExe.java index 24908339..07a30059 100644 --- a/web-app/src/main/java/com/zcloud/basic/info/command/query/CorpInfoQueryExe.java +++ b/web-app/src/main/java/com/zcloud/basic/info/command/query/CorpInfoQueryExe.java @@ -19,6 +19,7 @@ import com.zcloud.basic.info.dto.clientobject.CorpDepartmentCO; import com.zcloud.basic.info.dto.clientobject.CorpInfoCO; import com.zcloud.basic.info.dto.clientobject.CorpUserMiddleCO; import com.zcloud.basic.info.dto.clientobject.CorpUserStatisticCO; +import com.zcloud.basic.info.dto.clientobject.CorpUserSummaryCO; import com.zcloud.basic.info.dto.clientobject.UserCO; import com.zcloud.basic.info.persistence.dataobject.*; import com.zcloud.basic.info.persistence.repository.*; @@ -322,6 +323,13 @@ public class CorpInfoQueryExe { return PageResponse.of(list, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex()); } + public CorpUserSummaryCO corpUserSummary() { + CorpUserSummaryDO corpUserSummaryDO = corpInfoRepository.corpUserSummary(); + CorpUserSummaryCO corpUserSummaryCO = new CorpUserSummaryCO(); + BeanUtils.copyProperties(corpUserSummaryDO, corpUserSummaryCO); + return corpUserSummaryCO; + } + } diff --git a/web-app/src/main/java/com/zcloud/basic/info/service/CorpInfoServiceImpl.java b/web-app/src/main/java/com/zcloud/basic/info/service/CorpInfoServiceImpl.java index 9766f5a3..04a3fb7e 100644 --- a/web-app/src/main/java/com/zcloud/basic/info/service/CorpInfoServiceImpl.java +++ b/web-app/src/main/java/com/zcloud/basic/info/service/CorpInfoServiceImpl.java @@ -151,5 +151,10 @@ public class CorpInfoServiceImpl implements CorpInfoServiceI { public PageResponse corpUserStatisticPage(CorpUserStatisticQry qry) { return corpInfoQueryExe.corpUserStatisticPage(qry); } + + @Override + public CorpUserSummaryCO corpUserSummary() { + return corpInfoQueryExe.corpUserSummary(); + } } diff --git a/web-client/src/main/java/com/zcloud/basic/info/api/CorpInfoServiceI.java b/web-client/src/main/java/com/zcloud/basic/info/api/CorpInfoServiceI.java index 7f2d862e..6912c547 100644 --- a/web-client/src/main/java/com/zcloud/basic/info/api/CorpInfoServiceI.java +++ b/web-client/src/main/java/com/zcloud/basic/info/api/CorpInfoServiceI.java @@ -57,5 +57,7 @@ public interface CorpInfoServiceI { void deleteCorpAndDown(List ids); PageResponse corpUserStatisticPage(CorpUserStatisticQry qry); + + CorpUserSummaryCO corpUserSummary(); } diff --git a/web-client/src/main/java/com/zcloud/basic/info/dto/clientobject/CorpUserSummaryCO.java b/web-client/src/main/java/com/zcloud/basic/info/dto/clientobject/CorpUserSummaryCO.java new file mode 100644 index 00000000..689483f6 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/basic/info/dto/clientobject/CorpUserSummaryCO.java @@ -0,0 +1,21 @@ +package com.zcloud.basic.info.dto.clientobject; + +import com.alibaba.cola.dto.ClientObject; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 可视化大屏企业用户汇总 + */ +@Data +public class CorpUserSummaryCO extends ClientObject { + + @ApiModelProperty(value = "分公司企业数") + private Long branchCorpCount; + + @ApiModelProperty(value = "相关方单位数") + private Long relatedCorpCount; + + @ApiModelProperty(value = "员工数") + private Long userCount; +} diff --git a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/dataobject/CorpUserSummaryDO.java b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/dataobject/CorpUserSummaryDO.java new file mode 100644 index 00000000..0307f746 --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/dataobject/CorpUserSummaryDO.java @@ -0,0 +1,16 @@ +package com.zcloud.basic.info.persistence.dataobject; + +import lombok.Data; + +/** + * 可视化大屏企业用户汇总查询结果 + */ +@Data +public class CorpUserSummaryDO { + + private Long branchCorpCount; + + private Long relatedCorpCount; + + private Long userCount; +} diff --git a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/mapper/CorpInfoMapper.java b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/mapper/CorpInfoMapper.java index 91b709ba..2cb78589 100644 --- a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/mapper/CorpInfoMapper.java +++ b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/mapper/CorpInfoMapper.java @@ -7,6 +7,7 @@ import com.jjb.saas.framework.datascope.annotation.DataScope; import com.jjb.saas.framework.datascope.annotation.DataScopes; import com.zcloud.basic.info.persistence.dataobject.CorpInfoDO; import com.zcloud.basic.info.persistence.dataobject.CorpUserStatisticDO; +import com.zcloud.basic.info.persistence.dataobject.CorpUserSummaryDO; import com.zcloud.basic.info.persistence.dataobject.UserDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -35,5 +36,7 @@ public interface CorpInfoMapper extends BaseMapper { IPage corpUserStatisticPage(IPage iPage, Map params); + CorpUserSummaryDO corpUserSummary(); + } diff --git a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/CorpInfoRepository.java b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/CorpInfoRepository.java index 0765aaa9..bade08e0 100644 --- a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/CorpInfoRepository.java +++ b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/CorpInfoRepository.java @@ -4,6 +4,7 @@ import com.alibaba.cola.dto.PageResponse; import com.jjb.saas.framework.repository.repo.BaseRepository; import com.zcloud.basic.info.persistence.dataobject.CorpInfoDO; import com.zcloud.basic.info.persistence.dataobject.CorpUserStatisticDO; +import com.zcloud.basic.info.persistence.dataobject.CorpUserSummaryDO; import java.util.List; import java.util.Map; @@ -47,5 +48,7 @@ public interface CorpInfoRepository extends BaseRepository { void deleteById(Long id); PageResponse corpUserStatisticPage(Map parmas); + + CorpUserSummaryDO corpUserSummary(); } diff --git a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/CorpInfoRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/CorpInfoRepositoryImpl.java index b90573d8..05385d4e 100644 --- a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/CorpInfoRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/CorpInfoRepositoryImpl.java @@ -26,6 +26,7 @@ import com.zcloud.basic.info.domain.enums.CorpUseFlagEnum; import com.zcloud.basic.info.domain.enums.MenuEnum; import com.zcloud.basic.info.persistence.dataobject.CorpInfoDO; import com.zcloud.basic.info.persistence.dataobject.CorpUserStatisticDO; +import com.zcloud.basic.info.persistence.dataobject.CorpUserSummaryDO; import com.zcloud.basic.info.persistence.mapper.CorpInfoMapper; import com.zcloud.basic.info.persistence.repository.CorpInfoRepository; import com.zcloud.basic.info.utils.Query; @@ -339,5 +340,10 @@ public class CorpInfoRepositoryImpl extends BaseRepositoryImpl result = corpInfoMapper.corpUserStatisticPage(iPage, params); return PageHelper.pageToResponse(result, result.getRecords()); } + + @Override + public CorpUserSummaryDO corpUserSummary() { + return corpInfoMapper.corpUserSummary(); + } } diff --git a/web-infrastructure/src/main/resources/mapper/CorpInfoMapper.xml b/web-infrastructure/src/main/resources/mapper/CorpInfoMapper.xml index 11527bb8..d098fc85 100644 --- a/web-infrastructure/src/main/resources/mapper/CorpInfoMapper.xml +++ b/web-infrastructure/src/main/resources/mapper/CorpInfoMapper.xml @@ -70,11 +70,25 @@ SELECT c.id, c.corp_name AS corpName, - COUNT(DISTINCT d.id) AS departmentCount, - COUNT(DISTINCT u.id) AS userCount + IFNULL(d.departmentCount, 0) AS departmentCount, + IFNULL(u.userCount, 0) AS userCount FROM corp_info c - LEFT JOIN department d ON d.corpinfo_id = c.id AND d.delete_enum = 'FALSE' - LEFT JOIN user u ON u.corpinfo_id = c.id AND u.delete_enum = 'FALSE' + LEFT JOIN ( + SELECT + corpinfo_id, + COUNT(1) AS departmentCount + FROM department + WHERE delete_enum = 'FALSE' + GROUP BY corpinfo_id + ) d ON d.corpinfo_id = c.id + LEFT JOIN ( + SELECT + corpinfo_id, + COUNT(1) AS userCount + FROM user + WHERE delete_enum = 'FALSE' + GROUP BY corpinfo_id + ) u ON u.corpinfo_id = c.id WHERE c.delete_enum = 'FALSE' AND c.type IN @@ -85,8 +99,21 @@ AND c.corp_name like concat('%',#{params.likeCorpName},'%') - GROUP BY c.id, c.corp_name - ORDER BY userCount DESC, departmentCount DESC, c.corp_order ASC, c.create_time DESC + ORDER BY IFNULL(u.userCount, 0) DESC, IFNULL(d.departmentCount, 0) DESC, c.corp_order ASC, c.create_time DESC + + +