feat: 首页统计数量
This commit is contained in:
@@ -21,6 +21,9 @@ public class DashboardRespVO {
|
||||
@Schema(description = "license数量")
|
||||
private Long licenseCount;
|
||||
|
||||
@Schema(description = "永久license数量")
|
||||
private Long permanentCount;
|
||||
|
||||
@Schema(description = "用户数量")
|
||||
private Long userCount;
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import org.agt.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import org.agt.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import org.agt.module.license.controller.admin.customer.vo.CustomerPageReqVO;
|
||||
import org.agt.module.license.controller.admin.customer.vo.CustomerRespVO;
|
||||
import org.agt.module.license.controller.admin.customer.vo.DashboardRespVO;
|
||||
import org.agt.module.license.dal.dataobject.customer.CustomerDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
@@ -51,4 +52,8 @@ public interface CustomerMapper extends BaseMapperX<CustomerDO> {
|
||||
Integer selectOldMaxCode();
|
||||
|
||||
List<CustomerRespVO> getLicenseCustomers();
|
||||
|
||||
DashboardRespVO getLicenseCount();
|
||||
|
||||
DashboardRespVO getProjectCount();
|
||||
}
|
||||
|
||||
@@ -32,7 +32,6 @@ import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.agt.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static org.agt.module.license.enums.ErrorCodeConstants.CUSTOMER_CODE_DUPLICATE;
|
||||
@@ -70,15 +69,12 @@ public class CustomerServiceImpl implements CustomerService {
|
||||
@Override
|
||||
public DashboardRespVO dashboard() {
|
||||
Long customerCount = customerMapper.selectCount(Wrappers.<CustomerDO>lambdaQuery().notIn(CustomerDO::getName, Arrays.asList("AGT", "BA", "Blue Arcus")));
|
||||
List<CustomerDO> customerDOS = customerMapper.selectList(Wrappers.<CustomerDO>lambdaQuery().in(CustomerDO::getName, Arrays.asList("AGT", "BA", "Blue Arcus")));
|
||||
List<Long> customerIds = customerDOS.stream().map(CustomerDO::getId).collect(Collectors.toList());
|
||||
Long projectCount = projectMapper.selectCount(Wrappers.<ProjectDO>lambdaQuery().notIn(CollUtil.isNotEmpty(customerIds), ProjectDO::getCustomerId, customerIds));
|
||||
Long contractCount = projectMapper.selectCount(Wrappers.<ProjectDO>lambdaQuery().ne(ProjectDO::getContractCode, "0"));
|
||||
Long licenseCount = licenseMapper.selectCount();
|
||||
DashboardRespVO dashboardRespVO = new DashboardRespVO();
|
||||
DashboardRespVO projectRespVO = customerMapper.getProjectCount();
|
||||
Long projectCount = projectRespVO.getProjectCount();
|
||||
Long contractCount = projectRespVO.getContractCount();
|
||||
DashboardRespVO dashboardRespVO = customerMapper.getLicenseCount();
|
||||
dashboardRespVO.setCustomerCount(customerCount);
|
||||
dashboardRespVO.setProjectCount(projectCount);
|
||||
dashboardRespVO.setLicenseCount(licenseCount);
|
||||
dashboardRespVO.setContractCount(contractCount);
|
||||
dashboardRespVO.setUserCount(customerMapper.selectUserCount());
|
||||
if (projectCount == 0) {
|
||||
@@ -87,10 +83,11 @@ public class CustomerServiceImpl implements CustomerService {
|
||||
dashboardRespVO.setSigningRate(BigDecimal.valueOf(contractCount).multiply(BigDecimal.valueOf(100))
|
||||
.divide(BigDecimal.valueOf(projectCount), 0, RoundingMode.HALF_UP).longValue());
|
||||
}
|
||||
Long licenseCount = dashboardRespVO.getLicenseCount();
|
||||
if (licenseCount == 0) {
|
||||
dashboardRespVO.setCompletionRate(0L);
|
||||
} else {
|
||||
dashboardRespVO.setCompletionRate(BigDecimal.valueOf(contractCount).multiply(BigDecimal.valueOf(100))
|
||||
dashboardRespVO.setCompletionRate(BigDecimal.valueOf(dashboardRespVO.getPermanentCount()).multiply(BigDecimal.valueOf(100))
|
||||
.divide(BigDecimal.valueOf(licenseCount), 0, RoundingMode.HALF_UP).longValue());
|
||||
}
|
||||
|
||||
|
||||
@@ -39,4 +39,38 @@
|
||||
AND l.id IS NULL
|
||||
AND c.id IS NOT NULL
|
||||
</select>
|
||||
|
||||
<select id="getLicenseCount" resultType="org.agt.module.license.controller.admin.customer.vo.DashboardRespVO">
|
||||
SELECT
|
||||
count( 1 ) license_count,
|
||||
count( CASE WHEN date( l.expiry_date ) = '2099-12-31' THEN 1 END ) permanent_count
|
||||
FROM
|
||||
crm_license_server l
|
||||
LEFT JOIN crm_project p ON l.project_id = p.id
|
||||
AND p.deleted = 0
|
||||
LEFT JOIN crm_customer c ON p.customer_id = c.id
|
||||
AND c.deleted = 0
|
||||
WHERE
|
||||
l.deleted = 0
|
||||
AND c.`name` NOT IN (
|
||||
"AGT",
|
||||
"BA",
|
||||
"Blue Arcus")
|
||||
</select>
|
||||
|
||||
<select id="getProjectCount" resultType="org.agt.module.license.controller.admin.customer.vo.DashboardRespVO">
|
||||
SELECT
|
||||
count( 1 ) project_count,
|
||||
count( CASE WHEN p.contract_code != '0' THEN 1 END ) contract_count
|
||||
FROM
|
||||
crm_project p
|
||||
LEFT JOIN crm_customer c ON p.customer_id = c.id
|
||||
AND c.deleted = 0
|
||||
WHERE
|
||||
p.deleted = 0
|
||||
AND c.`name` NOT IN (
|
||||
"AGT",
|
||||
"BA",
|
||||
"Blue Arcus")
|
||||
</select>
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user