Commit f591a04317925039963dc009800a42050aa8c0e9
1 parent
08c851ae
CRM:code review【员工业绩】的实现
Showing
3 changed files
with
8 additions
and
4 deletions
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/statistics/CrmStatisticsPerformanceController.java
| @@ -29,21 +29,21 @@ public class CrmStatisticsPerformanceController { | @@ -29,21 +29,21 @@ public class CrmStatisticsPerformanceController { | ||
| 29 | private CrmStatisticsPerformanceService performanceService; | 29 | private CrmStatisticsPerformanceService performanceService; |
| 30 | 30 | ||
| 31 | @GetMapping("/get-contract-count-performance") | 31 | @GetMapping("/get-contract-count-performance") |
| 32 | - @Operation(summary = "员工业绩-签约合同数量") | 32 | + @Operation(summary = "合同数量统计", description = "用于【合同数量分析】页面") |
| 33 | @PreAuthorize("@ss.hasPermission('crm:statistics-performance:query')") | 33 | @PreAuthorize("@ss.hasPermission('crm:statistics-performance:query')") |
| 34 | public CommonResult<List<CrmStatisticsPerformanceRespVO>> getContractCountPerformance(@Valid CrmStatisticsPerformanceReqVO performanceReqVO) { | 34 | public CommonResult<List<CrmStatisticsPerformanceRespVO>> getContractCountPerformance(@Valid CrmStatisticsPerformanceReqVO performanceReqVO) { |
| 35 | return success(performanceService.getContractCountPerformance(performanceReqVO)); | 35 | return success(performanceService.getContractCountPerformance(performanceReqVO)); |
| 36 | } | 36 | } |
| 37 | 37 | ||
| 38 | @GetMapping("/get-contract-price-performance") | 38 | @GetMapping("/get-contract-price-performance") |
| 39 | - @Operation(summary = "员工业绩-获得合同金额") | 39 | + @Operation(summary = "合同金额统计") |
| 40 | @PreAuthorize("@ss.hasPermission('crm:statistics-performance:query')") | 40 | @PreAuthorize("@ss.hasPermission('crm:statistics-performance:query')") |
| 41 | public CommonResult<List<CrmStatisticsPerformanceRespVO>> getContractPriceStaffPerformance(@Valid CrmStatisticsPerformanceReqVO performanceReqVO) { | 41 | public CommonResult<List<CrmStatisticsPerformanceRespVO>> getContractPriceStaffPerformance(@Valid CrmStatisticsPerformanceReqVO performanceReqVO) { |
| 42 | return success(performanceService.getContractPricePerformance(performanceReqVO)); | 42 | return success(performanceService.getContractPricePerformance(performanceReqVO)); |
| 43 | } | 43 | } |
| 44 | 44 | ||
| 45 | @GetMapping("/get-receivable-price-performance") | 45 | @GetMapping("/get-receivable-price-performance") |
| 46 | - @Operation(summary = "员工业绩-获得回款金额") | 46 | + @Operation(summary = "回款金额统计") |
| 47 | @PreAuthorize("@ss.hasPermission('crm:statistics-performance:query')") | 47 | @PreAuthorize("@ss.hasPermission('crm:statistics-performance:query')") |
| 48 | public CommonResult<List<CrmStatisticsPerformanceRespVO>> getReceivablePriceStaffPerformance(@Valid CrmStatisticsPerformanceReqVO performanceReqVO) { | 48 | public CommonResult<List<CrmStatisticsPerformanceRespVO>> getReceivablePriceStaffPerformance(@Valid CrmStatisticsPerformanceReqVO performanceReqVO) { |
| 49 | return success(performanceService.getReceivablePricePerformance(performanceReqVO)); | 49 | return success(performanceService.getReceivablePricePerformance(performanceReqVO)); |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/statistics/vo/performance/CrmStatisticsPerformanceReqVO.java
| @@ -33,6 +33,7 @@ public class CrmStatisticsPerformanceReqVO { | @@ -33,6 +33,7 @@ public class CrmStatisticsPerformanceReqVO { | ||
| 33 | @Schema(description = "负责人用户 id 集合", requiredMode = Schema.RequiredMode.NOT_REQUIRED, example = "2") | 33 | @Schema(description = "负责人用户 id 集合", requiredMode = Schema.RequiredMode.NOT_REQUIRED, example = "2") |
| 34 | private List<Long> userIds; | 34 | private List<Long> userIds; |
| 35 | 35 | ||
| 36 | + // TODO @scholar:应该传递的是 int year;年份 | ||
| 36 | @Schema(description = "时间范围", requiredMode = Schema.RequiredMode.REQUIRED) | 37 | @Schema(description = "时间范围", requiredMode = Schema.RequiredMode.REQUIRED) |
| 37 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 38 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 38 | @NotEmpty(message = "时间范围不能为空") | 39 | @NotEmpty(message = "时间范围不能为空") |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/statistics/CrmStatisticsPerformanceServiceImpl.java
| @@ -36,9 +36,12 @@ public class CrmStatisticsPerformanceServiceImpl implements CrmStatisticsPerform | @@ -36,9 +36,12 @@ public class CrmStatisticsPerformanceServiceImpl implements CrmStatisticsPerform | ||
| 36 | @Resource | 36 | @Resource |
| 37 | private DeptApi deptApi; | 37 | private DeptApi deptApi; |
| 38 | 38 | ||
| 39 | - | ||
| 40 | @Override | 39 | @Override |
| 41 | public List<CrmStatisticsPerformanceRespVO> getContractCountPerformance(CrmStatisticsPerformanceReqVO performanceReqVO) { | 40 | public List<CrmStatisticsPerformanceRespVO> getContractCountPerformance(CrmStatisticsPerformanceReqVO performanceReqVO) { |
| 41 | + // TODO @scholar:我们可以换个思路实现,减少数据库的计算量; | ||
| 42 | + // 比如说,2024 年的合同数据,是不是 2022-12 到 2024-12-31,每个月的统计呢? | ||
| 43 | + // 理解之后,我们可以数据 group by 年-月,20222-12 到 2024-12-31 的,然后内存在聚合出 CrmStatisticsPerformanceRespVO 这样 | ||
| 44 | + // 这样,我们就可以减少数据库的计算量,提升性能;同时 SQL 也会很简单,开发者理解起来也简单哈; | ||
| 42 | return getPerformance(performanceReqVO, performanceMapper::selectContractCountPerformance); | 45 | return getPerformance(performanceReqVO, performanceMapper::selectContractCountPerformance); |
| 43 | } | 46 | } |
| 44 | 47 |