wip: 增加公海客户分析(mapper模拟数据)
parent
d2f48eb259
commit
44c22e1ef5
@ -1,68 +1,58 @@
|
|||||||
# == 1. 客户总量分析 ==
|
# == 1. 客户总量分析 ==
|
||||||
### 1.1 客户总量分析(按日)
|
### 1.1 客户总量分析(按日期)
|
||||||
GET {{baseUrl}}/crm/statistics-customer/get-customer-summary-by-date?deptId=100&interval=1×[0]=2024-01-01 00:00:00×[1]=2024-01-29 23:59:59
|
GET {{baseUrl}}/crm/statistics-customer/get-customer-summary-by-date?deptId=100&interval=2×[0]=2024-01-01 00:00:00×[1]=2024-01-29 23:59:59
|
||||||
Authorization: Bearer {{token}}
|
Authorization: Bearer {{token}}
|
||||||
tenant-id: {{adminTenentId}}
|
tenant-id: {{adminTenentId}}
|
||||||
|
|
||||||
### 1.2 客户总量分析(按月)
|
### 1.2 客户总量统计(按用户)
|
||||||
GET {{baseUrl}}/crm/statistics-customer/get-customer-summary-by-date?deptId=100&intervalType=11×[0]=2023-01-01 00:00:00×[1]=2024-12-12 23:59:59
|
GET {{baseUrl}}/crm/statistics-customer/get-customer-summary-by-user?deptId=100×[0]=2023-01-01 00:00:00×[1]=2024-12-12 23:59:59
|
||||||
Authorization: Bearer {{token}}
|
|
||||||
tenant-id: {{adminTenentId}}
|
|
||||||
|
|
||||||
### 1.3 客户总量统计(按用户)
|
|
||||||
GET {{baseUrl}}/crm/statistics-customer/get-customer-summary-by-user?deptId=100&intervalType=11×[0]=2023-01-01 00:00:00×[1]=2024-12-12 23:59:59
|
|
||||||
Authorization: Bearer {{token}}
|
Authorization: Bearer {{token}}
|
||||||
tenant-id: {{adminTenentId}}
|
tenant-id: {{adminTenentId}}
|
||||||
|
|
||||||
|
|
||||||
# == 2. 客户跟进次数分析 ==
|
# == 2. 客户跟进次数分析 ==
|
||||||
### 2.1 客户跟进次数分析(按日)
|
### 2.1 客户跟进次数分析(按日期)
|
||||||
GET {{baseUrl}}/crm/statistics-customer/get-followup-summary-by-date?deptId=100&intervalType=11×[0]=2024-01-01 00:00:00×[1]=2024-01-29 23:59:59
|
GET {{baseUrl}}/crm/statistics-customer/get-follow-up-summary-by-date?deptId=100&interval=2×[0]=2024-01-01 00:00:00×[1]=2024-01-29 23:59:59
|
||||||
Authorization: Bearer {{token}}
|
Authorization: Bearer {{token}}
|
||||||
tenant-id: {{adminTenentId}}
|
tenant-id: {{adminTenentId}}
|
||||||
|
|
||||||
### 2.2 客户跟进次数分析(按月)
|
### 2.2 客户总量统计(按用户)
|
||||||
GET {{baseUrl}}/crm/statistics-customer/get-followup-summary-by-date?deptId=100&intervalType=11×[0]=2023-01-01 00:00:00×[1]=2024-12-12 23:59:59
|
GET {{baseUrl}}/crm/statistics-customer/get-follow-up-summary-by-user?deptId=100×[0]=2023-01-01 00:00:00×[1]=2024-12-12 23:59:59
|
||||||
Authorization: Bearer {{token}}
|
|
||||||
tenant-id: {{adminTenentId}}
|
|
||||||
|
|
||||||
### 2.3 客户总量统计(按用户)
|
|
||||||
GET {{baseUrl}}/crm/statistics-customer/get-followup-summary-by-user?deptId=100&intervalType=11×[0]=2023-01-01 00:00:00×[1]=2024-12-12 23:59:59
|
|
||||||
Authorization: Bearer {{token}}
|
Authorization: Bearer {{token}}
|
||||||
tenant-id: {{adminTenentId}}
|
tenant-id: {{adminTenentId}}
|
||||||
|
|
||||||
|
|
||||||
# == 3. 客户跟进方式分析 ==
|
# == 3. 客户跟进方式分析 ==
|
||||||
### 3.1 客户跟进方式分析
|
### 3.1 客户跟进方式分析
|
||||||
GET {{baseUrl}}/crm/statistics-customer/get-followup-summary-by-type?deptId=100&intervalType=11×[0]=2023-01-01 00:00:00×[1]=2024-12-12 23:59:59
|
GET {{baseUrl}}/crm/statistics-customer/get-follow-up-summary-by-type?deptId=100&interval=2×[0]=2023-01-01 00:00:00×[1]=2024-12-12 23:59:59
|
||||||
Authorization: Bearer {{token}}
|
Authorization: Bearer {{token}}
|
||||||
tenant-id: {{adminTenentId}}
|
tenant-id: {{adminTenentId}}
|
||||||
tenant-id: {{adminTenentId}}
|
|
||||||
|
|
||||||
|
|
||||||
# == 4. 客户成交周期 ==
|
# == 4. 客户成交周期 ==
|
||||||
### 4.1 合同摘要信息(客户转化率页面)
|
### 4.1 合同摘要信息(客户转化率页面)
|
||||||
GET {{baseUrl}}/crm/statistics-customer/get-contract-summary?deptId=100&intervalType=11×[0]=2023-01-01 00:00:00×[1]=2024-12-12 23:59:59
|
GET {{baseUrl}}/crm/statistics-customer/get-contract-summary?deptId=100&interval=2×[0]=2023-01-01 00:00:00×[1]=2024-12-12 23:59:59
|
||||||
Authorization: Bearer {{token}}
|
Authorization: Bearer {{token}}
|
||||||
tenant-id: {{adminTenentId}}
|
tenant-id: {{adminTenentId}}
|
||||||
tenant-id: {{adminTenentId}}
|
|
||||||
|
|
||||||
|
|
||||||
# == 5. 客户成交周期 ==
|
# == 5. 客户成交周期 ==
|
||||||
### 5.1 客户成交周期(按日)
|
### 5.1 获取客户公海分析(按日期)
|
||||||
GET {{baseUrl}}/crm/statistics-customer/get-customer-deal-cycle-by-date?deptId=100&intervalType=11×[0]=2024-01-01 00:00:00×[1]=2024-01-29 23:59:59
|
GET {{baseUrl}}/crm/statistics-customer/get-pool-summary-by-date?deptId=100&interval=2×[0]=2023-01-01 00:00:00×[1]=2024-12-12 23:59:59
|
||||||
Authorization: Bearer {{token}}
|
Authorization: Bearer {{token}}
|
||||||
tenant-id: {{adminTenentId}}
|
tenant-id: {{adminTenentId}}
|
||||||
tenant-id: {{adminTenentId}}
|
|
||||||
|
|
||||||
### 5.2 客户成交周期(按月)
|
### 5.2 获取客户公海分析(按用户)
|
||||||
GET {{baseUrl}}/crm/statistics-customer/get-customer-deal-cycle-by-date?deptId=100&intervalType=11×[0]=2023-01-01 00:00:00×[1]=2024-12-12 23:59:59
|
GET {{baseUrl}}/crm/statistics-customer/get-pool-summary-by-user?deptId=100×[0]=2023-01-01 00:00:00×[1]=2024-12-12 23:59:59
|
||||||
Authorization: Bearer {{token}}
|
Authorization: Bearer {{token}}
|
||||||
tenant-id: {{adminTenentId}}
|
tenant-id: {{adminTenentId}}
|
||||||
tenant-id: {{adminTenentId}}
|
|
||||||
|
|
||||||
### 5.3 获取客户成交周期(按用户)
|
# == 6. 客户成交周期 ==
|
||||||
GET {{baseUrl}}/crm/statistics-customer/get-customer-deal-cycle-by-user?deptId=100&intervalType=11×[0]=2023-01-01 00:00:00×[1]=2024-12-12 23:59:59
|
### 6.1 客户成交周期(按日期)
|
||||||
|
GET {{baseUrl}}/crm/statistics-customer/get-customer-deal-cycle-by-date?deptId=100&interval=2×[0]=2024-01-01 00:00:00×[1]=2024-01-29 23:59:59
|
||||||
Authorization: Bearer {{token}}
|
Authorization: Bearer {{token}}
|
||||||
tenant-id: {{adminTenentId}}
|
tenant-id: {{adminTenentId}}
|
||||||
|
|
||||||
|
### 6.2 获取客户成交周期(按用户)
|
||||||
|
GET {{baseUrl}}/crm/statistics-customer/get-customer-deal-cycle-by-user?deptId=100×[0]=2023-01-01 00:00:00×[1]=2024-12-12 23:59:59
|
||||||
|
Authorization: Bearer {{token}}
|
||||||
tenant-id: {{adminTenentId}}
|
tenant-id: {{adminTenentId}}
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
package cn.iocoder.yudao.module.crm.controller.admin.statistics.vo.customer;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - CRM 公海客户分析(按日期) VO")
|
||||||
|
@Data
|
||||||
|
public class CrmStatisticsPoolSummaryByDateRespVO {
|
||||||
|
|
||||||
|
@Schema(description = "时间轴", requiredMode = Schema.RequiredMode.REQUIRED, example = "202401")
|
||||||
|
private String time;
|
||||||
|
|
||||||
|
@Schema(description = "进入公海客户数", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||||
|
private Integer customerPutCount;
|
||||||
|
|
||||||
|
@Schema(description = "公海领取客户数", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||||
|
private Integer customerTakeCount;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
package cn.iocoder.yudao.module.crm.controller.admin.statistics.vo.customer;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - CRM 公海客户分析(按用户) VO")
|
||||||
|
@Data
|
||||||
|
public class CrmStatisticsPoolSummaryByUserRespVO extends CrmStatisticsCustomerByUserBaseRespVO {
|
||||||
|
|
||||||
|
@Schema(description = "进入公海客户数", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||||
|
private Integer customerPutCount;
|
||||||
|
|
||||||
|
@Schema(description = "公海领取客户数", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||||
|
private Integer customerTakeCount;
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,44 +1,195 @@
|
|||||||
package cn.iocoder.yudao.module.crm.dal.mysql.statistics;
|
package cn.iocoder.yudao.module.crm.dal.mysql.statistics;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||||
|
import cn.hutool.core.util.RandomUtil;
|
||||||
import cn.iocoder.yudao.module.crm.controller.admin.statistics.vo.customer.*;
|
import cn.iocoder.yudao.module.crm.controller.admin.statistics.vo.customer.*;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CRM 数据统计 Mapper
|
* CRM 客户分析 Mapper
|
||||||
*
|
*
|
||||||
* @author dhb52
|
* @author dhb52
|
||||||
*/
|
*/
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface CrmStatisticsCustomerMapper {
|
public interface CrmStatisticsCustomerMapper {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新建客户数(按日期)
|
||||||
|
*
|
||||||
|
* @param reqVO 请求参数
|
||||||
|
* @return 统计数据
|
||||||
|
*/
|
||||||
List<CrmStatisticsCustomerSummaryByDateRespVO> selectCustomerCreateCountGroupByDate(CrmStatisticsCustomerReqVO reqVO);
|
List<CrmStatisticsCustomerSummaryByDateRespVO> selectCustomerCreateCountGroupByDate(CrmStatisticsCustomerReqVO reqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 成交客户数(按日期)
|
||||||
|
*
|
||||||
|
* @param reqVO 请求参数
|
||||||
|
* @return 统计数据
|
||||||
|
*/
|
||||||
List<CrmStatisticsCustomerSummaryByDateRespVO> selectCustomerDealCountGroupByDate(CrmStatisticsCustomerReqVO reqVO);
|
List<CrmStatisticsCustomerSummaryByDateRespVO> selectCustomerDealCountGroupByDate(CrmStatisticsCustomerReqVO reqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新建客户数(按用户)
|
||||||
|
*
|
||||||
|
* @param reqVO 请求参数
|
||||||
|
* @return 统计数据
|
||||||
|
*/
|
||||||
List<CrmStatisticsCustomerSummaryByUserRespVO> selectCustomerCreateCountGroupByUser(CrmStatisticsCustomerReqVO reqVO);
|
List<CrmStatisticsCustomerSummaryByUserRespVO> selectCustomerCreateCountGroupByUser(CrmStatisticsCustomerReqVO reqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 成交客户数(按用户)
|
||||||
|
*
|
||||||
|
* @param reqVO 请求参数@param reqVO 请求参数@param reqVO 请求参数
|
||||||
|
* @return 统计数据
|
||||||
|
*/
|
||||||
List<CrmStatisticsCustomerSummaryByUserRespVO> selectCustomerDealCountGroupByUser(CrmStatisticsCustomerReqVO reqVO);
|
List<CrmStatisticsCustomerSummaryByUserRespVO> selectCustomerDealCountGroupByUser(CrmStatisticsCustomerReqVO reqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同总金额(按用户)
|
||||||
|
* @return 统计数据@return 统计数据@param reqVO 请求参数
|
||||||
|
* @return 统计数据
|
||||||
|
*/
|
||||||
List<CrmStatisticsCustomerSummaryByUserRespVO> selectContractPriceGroupByUser(CrmStatisticsCustomerReqVO reqVO);
|
List<CrmStatisticsCustomerSummaryByUserRespVO> selectContractPriceGroupByUser(CrmStatisticsCustomerReqVO reqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同回款金额(按用户)
|
||||||
|
*
|
||||||
|
* @param reqVO 请求参数
|
||||||
|
* @return 统计数据
|
||||||
|
*/
|
||||||
List<CrmStatisticsCustomerSummaryByUserRespVO> selectReceivablePriceGroupByUser(CrmStatisticsCustomerReqVO reqVO);
|
List<CrmStatisticsCustomerSummaryByUserRespVO> selectReceivablePriceGroupByUser(CrmStatisticsCustomerReqVO reqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 跟进次数(按日期)
|
||||||
|
*
|
||||||
|
* @param reqVO 请求参数
|
||||||
|
* @return 统计数据
|
||||||
|
*/
|
||||||
List<CrmStatisticsFollowUpSummaryByDateRespVO> selectFollowUpRecordCountGroupByDate(CrmStatisticsCustomerReqVO reqVO);
|
List<CrmStatisticsFollowUpSummaryByDateRespVO> selectFollowUpRecordCountGroupByDate(CrmStatisticsCustomerReqVO reqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 跟进客户数(按日期)
|
||||||
|
*
|
||||||
|
* @param reqVO 请求参数
|
||||||
|
* @return 统计数据
|
||||||
|
*/
|
||||||
List<CrmStatisticsFollowUpSummaryByDateRespVO> selectFollowUpCustomerCountGroupByDate(CrmStatisticsCustomerReqVO reqVO);
|
List<CrmStatisticsFollowUpSummaryByDateRespVO> selectFollowUpCustomerCountGroupByDate(CrmStatisticsCustomerReqVO reqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 跟进次数(按用户)
|
||||||
|
*
|
||||||
|
* @param reqVO 请求参数
|
||||||
|
* @return 统计数据
|
||||||
|
*/
|
||||||
List<CrmStatisticsFollowUpSummaryByUserRespVO> selectFollowUpRecordCountGroupByUser(CrmStatisticsCustomerReqVO reqVO);
|
List<CrmStatisticsFollowUpSummaryByUserRespVO> selectFollowUpRecordCountGroupByUser(CrmStatisticsCustomerReqVO reqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 跟进客户数(按用户)
|
||||||
|
*
|
||||||
|
* @param reqVO 请求参数
|
||||||
|
* @return 统计数据
|
||||||
|
*/
|
||||||
List<CrmStatisticsFollowUpSummaryByUserRespVO> selectFollowUpCustomerCountGroupByUser(CrmStatisticsCustomerReqVO reqVO);
|
List<CrmStatisticsFollowUpSummaryByUserRespVO> selectFollowUpCustomerCountGroupByUser(CrmStatisticsCustomerReqVO reqVO);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 首次合同、回款信息(用于【客户转化率】页面)
|
||||||
|
*
|
||||||
|
* @param reqVO 请求参数
|
||||||
|
* @return 统计数据
|
||||||
|
*/
|
||||||
List<CrmStatisticsCustomerContractSummaryRespVO> selectContractSummary(CrmStatisticsCustomerReqVO reqVO);
|
List<CrmStatisticsCustomerContractSummaryRespVO> selectContractSummary(CrmStatisticsCustomerReqVO reqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 跟进次数(按类型)
|
||||||
|
*
|
||||||
|
* @param reqVO 请求参数
|
||||||
|
* @return 统计数据
|
||||||
|
*/
|
||||||
List<CrmStatisticsFollowUpSummaryByTypeRespVO> selectFollowUpRecordCountGroupByType(CrmStatisticsCustomerReqVO reqVO);
|
List<CrmStatisticsFollowUpSummaryByTypeRespVO> selectFollowUpRecordCountGroupByType(CrmStatisticsCustomerReqVO reqVO);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 进入公海客户数(按日期)
|
||||||
|
*
|
||||||
|
* @param reqVO 请求参数
|
||||||
|
* @return 统计数据
|
||||||
|
*/
|
||||||
|
// TODO: @芋艿 模拟数据, 需要增加 crm_owner_record 表
|
||||||
|
default List<CrmStatisticsPoolSummaryByDateRespVO> selectPoolCustomerPutCountByDate(CrmStatisticsCustomerReqVO reqVO) {
|
||||||
|
LocalDateTime currrentDate = LocalDateTimeUtil.beginOfDay(reqVO.getTimes()[0]);
|
||||||
|
LocalDateTime endDate = LocalDateTimeUtil.endOfDay(reqVO.getTimes()[1]);
|
||||||
|
List<CrmStatisticsPoolSummaryByDateRespVO> voList = new ArrayList<>();
|
||||||
|
while (currrentDate.isBefore(endDate)) {
|
||||||
|
voList.add(new CrmStatisticsPoolSummaryByDateRespVO()
|
||||||
|
.setTime(LocalDateTimeUtil.format(currrentDate, "yyyy-MM-dd"))
|
||||||
|
.setCustomerPutCount(RandomUtil.randomInt(0, 10))
|
||||||
|
.setCustomerTakeCount(RandomUtil.randomInt(0, 10)));
|
||||||
|
currrentDate = currrentDate.plusDays(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return voList;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 公海领取客户数(按日期)
|
||||||
|
*
|
||||||
|
* @param reqVO 请求参数
|
||||||
|
* @return 统计数据
|
||||||
|
*/
|
||||||
|
// TODO: @芋艿 模拟数据, 需要增加 crm_owner_record 表
|
||||||
|
default List<CrmStatisticsPoolSummaryByDateRespVO> selectPoolCustomerTakeCountByDate(CrmStatisticsCustomerReqVO reqVO) {
|
||||||
|
return selectPoolCustomerPutCountByDate(reqVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 进入公海客户数(按用户)
|
||||||
|
*
|
||||||
|
* @param reqVO 请求参数
|
||||||
|
* @return 统计数据
|
||||||
|
*/
|
||||||
|
// TODO: @芋艿 模拟数据, 需要增加 crm_owner_record 表
|
||||||
|
default List<CrmStatisticsPoolSummaryByUserRespVO> selectPoolCustomerPutCountByUser(CrmStatisticsCustomerReqVO reqVO) {
|
||||||
|
return convertList(reqVO.getUserIds(), userId ->
|
||||||
|
(CrmStatisticsPoolSummaryByUserRespVO) new CrmStatisticsPoolSummaryByUserRespVO()
|
||||||
|
.setCustomerPutCount(RandomUtil.randomInt(0, 10))
|
||||||
|
.setCustomerTakeCount(RandomUtil.randomInt(0, 10))
|
||||||
|
.setOwnerUserId(userId));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 公海领取客户数(按用户)
|
||||||
|
*
|
||||||
|
* @param reqVO 请求参数
|
||||||
|
* @return 统计数据
|
||||||
|
*/
|
||||||
|
// TODO: @芋艿 模拟数据, 需要增加 crm_owner_record 表
|
||||||
|
default List<CrmStatisticsPoolSummaryByUserRespVO> selectPoolCustomerTakeCountByUser(CrmStatisticsCustomerReqVO reqVO) {
|
||||||
|
return selectPoolCustomerPutCountByUser(reqVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 客户成交周期(按日期)
|
||||||
|
*
|
||||||
|
* @param reqVO 请求参数
|
||||||
|
* @return 统计数据
|
||||||
|
*/
|
||||||
List<CrmStatisticsCustomerDealCycleByDateRespVO> selectCustomerDealCycleGroupByDate(CrmStatisticsCustomerReqVO reqVO);
|
List<CrmStatisticsCustomerDealCycleByDateRespVO> selectCustomerDealCycleGroupByDate(CrmStatisticsCustomerReqVO reqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 客户成交周期(按用户)
|
||||||
|
*
|
||||||
|
* @param reqVO 请求参数
|
||||||
|
* @return 统计数据
|
||||||
|
*/
|
||||||
List<CrmStatisticsCustomerDealCycleByUserRespVO> selectCustomerDealCycleGroupByUser(CrmStatisticsCustomerReqVO reqVO);
|
List<CrmStatisticsCustomerDealCycleByUserRespVO> selectCustomerDealCycleGroupByUser(CrmStatisticsCustomerReqVO reqVO);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue