feat(corp): 添加可视化大屏-企业用户汇总统计功能
parent
fdd5bc8605
commit
2aa7777dfc
|
|
@ -163,5 +163,11 @@ public class CorpInfoController {
|
||||||
return corpInfoService.corpUserStatisticPage(qry);
|
return corpInfoService.corpUserStatisticPage(qry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation("可视化大屏-企业用户汇总")
|
||||||
|
@PostMapping("/corpUserSummary")
|
||||||
|
public SingleResponse<CorpUserSummaryCO> corpUserSummary() {
|
||||||
|
return SingleResponse.of(corpInfoService.corpUserSummary());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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.CorpInfoCO;
|
||||||
import com.zcloud.basic.info.dto.clientobject.CorpUserMiddleCO;
|
import com.zcloud.basic.info.dto.clientobject.CorpUserMiddleCO;
|
||||||
import com.zcloud.basic.info.dto.clientobject.CorpUserStatisticCO;
|
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.dto.clientobject.UserCO;
|
||||||
import com.zcloud.basic.info.persistence.dataobject.*;
|
import com.zcloud.basic.info.persistence.dataobject.*;
|
||||||
import com.zcloud.basic.info.persistence.repository.*;
|
import com.zcloud.basic.info.persistence.repository.*;
|
||||||
|
|
@ -322,6 +323,13 @@ public class CorpInfoQueryExe {
|
||||||
return PageResponse.of(list, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -151,5 +151,10 @@ public class CorpInfoServiceImpl implements CorpInfoServiceI {
|
||||||
public PageResponse<CorpUserStatisticCO> corpUserStatisticPage(CorpUserStatisticQry qry) {
|
public PageResponse<CorpUserStatisticCO> corpUserStatisticPage(CorpUserStatisticQry qry) {
|
||||||
return corpInfoQueryExe.corpUserStatisticPage(qry);
|
return corpInfoQueryExe.corpUserStatisticPage(qry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CorpUserSummaryCO corpUserSummary() {
|
||||||
|
return corpInfoQueryExe.corpUserSummary();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -57,5 +57,7 @@ public interface CorpInfoServiceI {
|
||||||
void deleteCorpAndDown(List<Long> ids);
|
void deleteCorpAndDown(List<Long> ids);
|
||||||
|
|
||||||
PageResponse<CorpUserStatisticCO> corpUserStatisticPage(CorpUserStatisticQry qry);
|
PageResponse<CorpUserStatisticCO> corpUserStatisticPage(CorpUserStatisticQry qry);
|
||||||
|
|
||||||
|
CorpUserSummaryCO corpUserSummary();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
@ -7,6 +7,7 @@ import com.jjb.saas.framework.datascope.annotation.DataScope;
|
||||||
import com.jjb.saas.framework.datascope.annotation.DataScopes;
|
import com.jjb.saas.framework.datascope.annotation.DataScopes;
|
||||||
import com.zcloud.basic.info.persistence.dataobject.CorpInfoDO;
|
import com.zcloud.basic.info.persistence.dataobject.CorpInfoDO;
|
||||||
import com.zcloud.basic.info.persistence.dataobject.CorpUserStatisticDO;
|
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 com.zcloud.basic.info.persistence.dataobject.UserDO;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
@ -35,5 +36,7 @@ public interface CorpInfoMapper extends BaseMapper<CorpInfoDO> {
|
||||||
|
|
||||||
IPage<CorpUserStatisticDO> corpUserStatisticPage(IPage<CorpUserStatisticDO> iPage, Map<String, Object> params);
|
IPage<CorpUserStatisticDO> corpUserStatisticPage(IPage<CorpUserStatisticDO> iPage, Map<String, Object> params);
|
||||||
|
|
||||||
|
CorpUserSummaryDO corpUserSummary();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import com.alibaba.cola.dto.PageResponse;
|
||||||
import com.jjb.saas.framework.repository.repo.BaseRepository;
|
import com.jjb.saas.framework.repository.repo.BaseRepository;
|
||||||
import com.zcloud.basic.info.persistence.dataobject.CorpInfoDO;
|
import com.zcloud.basic.info.persistence.dataobject.CorpInfoDO;
|
||||||
import com.zcloud.basic.info.persistence.dataobject.CorpUserStatisticDO;
|
import com.zcloud.basic.info.persistence.dataobject.CorpUserStatisticDO;
|
||||||
|
import com.zcloud.basic.info.persistence.dataobject.CorpUserSummaryDO;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
@ -47,5 +48,7 @@ public interface CorpInfoRepository extends BaseRepository<CorpInfoDO> {
|
||||||
void deleteById(Long id);
|
void deleteById(Long id);
|
||||||
|
|
||||||
PageResponse<CorpUserStatisticDO> corpUserStatisticPage(Map<String, Object> parmas);
|
PageResponse<CorpUserStatisticDO> corpUserStatisticPage(Map<String, Object> parmas);
|
||||||
|
|
||||||
|
CorpUserSummaryDO corpUserSummary();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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.domain.enums.MenuEnum;
|
||||||
import com.zcloud.basic.info.persistence.dataobject.CorpInfoDO;
|
import com.zcloud.basic.info.persistence.dataobject.CorpInfoDO;
|
||||||
import com.zcloud.basic.info.persistence.dataobject.CorpUserStatisticDO;
|
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.mapper.CorpInfoMapper;
|
||||||
import com.zcloud.basic.info.persistence.repository.CorpInfoRepository;
|
import com.zcloud.basic.info.persistence.repository.CorpInfoRepository;
|
||||||
import com.zcloud.basic.info.utils.Query;
|
import com.zcloud.basic.info.utils.Query;
|
||||||
|
|
@ -339,5 +340,10 @@ public class CorpInfoRepositoryImpl extends BaseRepositoryImpl<CorpInfoMapper, C
|
||||||
IPage<CorpUserStatisticDO> result = corpInfoMapper.corpUserStatisticPage(iPage, params);
|
IPage<CorpUserStatisticDO> result = corpInfoMapper.corpUserStatisticPage(iPage, params);
|
||||||
return PageHelper.pageToResponse(result, result.getRecords());
|
return PageHelper.pageToResponse(result, result.getRecords());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CorpUserSummaryDO corpUserSummary() {
|
||||||
|
return corpInfoMapper.corpUserSummary();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -70,11 +70,25 @@
|
||||||
SELECT
|
SELECT
|
||||||
c.id,
|
c.id,
|
||||||
c.corp_name AS corpName,
|
c.corp_name AS corpName,
|
||||||
COUNT(DISTINCT d.id) AS departmentCount,
|
IFNULL(d.departmentCount, 0) AS departmentCount,
|
||||||
COUNT(DISTINCT u.id) AS userCount
|
IFNULL(u.userCount, 0) AS userCount
|
||||||
FROM corp_info c
|
FROM corp_info c
|
||||||
LEFT JOIN department d ON d.corpinfo_id = c.id AND d.delete_enum = 'FALSE'
|
LEFT JOIN (
|
||||||
LEFT JOIN user u ON u.corpinfo_id = c.id AND u.delete_enum = 'FALSE'
|
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'
|
WHERE c.delete_enum = 'FALSE'
|
||||||
<if test="params.type != null and params.type.size() > 0">
|
<if test="params.type != null and params.type.size() > 0">
|
||||||
AND c.type IN
|
AND c.type IN
|
||||||
|
|
@ -85,8 +99,21 @@
|
||||||
<if test="params.likeCorpName != null and params.likeCorpName.trim() != ''">
|
<if test="params.likeCorpName != null and params.likeCorpName.trim() != ''">
|
||||||
AND c.corp_name like concat('%',#{params.likeCorpName},'%')
|
AND c.corp_name like concat('%',#{params.likeCorpName},'%')
|
||||||
</if>
|
</if>
|
||||||
GROUP BY c.id, c.corp_name
|
ORDER BY IFNULL(u.userCount, 0) DESC, IFNULL(d.departmentCount, 0) DESC, c.corp_order ASC, c.create_time DESC
|
||||||
ORDER BY userCount DESC, departmentCount DESC, c.corp_order ASC, c.create_time DESC
|
</select>
|
||||||
|
|
||||||
|
<select id="corpUserSummary" resultType="com.zcloud.basic.info.persistence.dataobject.CorpUserSummaryDO">
|
||||||
|
SELECT
|
||||||
|
IFNULL(SUM(CASE WHEN c.type IN (0, 1, 6) THEN 1 ELSE 0 END), 0) AS branchCorpCount,
|
||||||
|
IFNULL(SUM(CASE WHEN c.type IN (3, 4, 5) THEN 1 ELSE 0 END), 0) AS relatedCorpCount,
|
||||||
|
IFNULL((
|
||||||
|
SELECT COUNT(1)
|
||||||
|
FROM user u
|
||||||
|
INNER JOIN corp_info c ON c.id = u.corpinfo_id AND c.delete_enum = 'FALSE'
|
||||||
|
WHERE u.delete_enum = 'FALSE'
|
||||||
|
), 0) AS userCount
|
||||||
|
FROM corp_info c
|
||||||
|
WHERE c.delete_enum = 'FALSE'
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue