diff --git a/excel-handle/src/main/java/com/ruoyi/excel/wecom/mapper/CustomerStatisticsDataV2Mapper.java b/excel-handle/src/main/java/com/ruoyi/excel/wecom/mapper/CustomerStatisticsDataV2Mapper.java index b1fa0e9..1886c6c 100644 --- a/excel-handle/src/main/java/com/ruoyi/excel/wecom/mapper/CustomerStatisticsDataV2Mapper.java +++ b/excel-handle/src/main/java/com/ruoyi/excel/wecom/mapper/CustomerStatisticsDataV2Mapper.java @@ -92,6 +92,8 @@ public interface CustomerStatisticsDataV2Mapper extends BaseMapper selectListByFilter( @@ -99,7 +101,9 @@ public interface CustomerStatisticsDataV2Mapper extends BaseMapper selectAggregatedByDateRange( @@ -116,7 +122,9 @@ public interface CustomerStatisticsDataV2Mapper extends BaseMapper selectAllAggregated( @Param("corpId") String corpId, @Param("groupName") String groupName, - @Param("tagName") String tagName + @Param("tagName") String tagName, + @Param("onlyGroup") Boolean onlyGroup, + @Param("onlyTag") Boolean onlyTag ); } diff --git a/excel-handle/src/main/java/com/ruoyi/excel/wecom/service/ICustomerStatisticsDataV2Service.java b/excel-handle/src/main/java/com/ruoyi/excel/wecom/service/ICustomerStatisticsDataV2Service.java index aa45f3a..90c3e96 100644 --- a/excel-handle/src/main/java/com/ruoyi/excel/wecom/service/ICustomerStatisticsDataV2Service.java +++ b/excel-handle/src/main/java/com/ruoyi/excel/wecom/service/ICustomerStatisticsDataV2Service.java @@ -49,10 +49,13 @@ public interface ICustomerStatisticsDataV2Service { * @param endDate 结束日期 * @param groupName 组名(可选) * @param tagName 标签名(可选) + * @param onlyGroup 只看分组(可选) + * @param onlyTag 只看标签(可选) * @return 客户统计数据V2列表 */ List selectCustomerStatisticsDataV2List( - String corpId, Date startDate, Date endDate, String groupName, String tagName); + String corpId, Date startDate, Date endDate, String groupName, String tagName, + Boolean onlyGroup, Boolean onlyTag); /** * 根据ID查询客户统计数据V2 @@ -119,10 +122,13 @@ public interface ICustomerStatisticsDataV2Service { * @param week 周数 * @param groupName 组名(可选) * @param tagName 标签名(可选) + * @param onlyGroup 只看分组(可选) + * @param onlyTag 只看标签(可选) * @return 聚合后的数据列表 */ List selectByWeekAggregation( - String corpId, Integer year, Integer week, String groupName, String tagName); + String corpId, Integer year, Integer week, String groupName, String tagName, + Boolean onlyGroup, Boolean onlyTag); /** * 按月聚合查询 @@ -130,18 +136,24 @@ public interface ICustomerStatisticsDataV2Service { * @param yearMonth 年月(格式:yyyy-MM) * @param groupName 组名(可选) * @param tagName 标签名(可选) + * @param onlyGroup 只看分组(可选) + * @param onlyTag 只看标签(可选) * @return 聚合后的数据列表 */ List selectByMonthAggregation( - String corpId, String yearMonth, String groupName, String tagName); + String corpId, String yearMonth, String groupName, String tagName, + Boolean onlyGroup, Boolean onlyTag); /** * 查询所有数据的聚合 * @param corpId 企业ID * @param groupName 组名(可选) * @param tagName 标签名(可选) + * @param onlyGroup 只看分组(可选) + * @param onlyTag 只看标签(可选) * @return 聚合后的数据列表 */ List selectAllAggregation( - String corpId, String groupName, String tagName); + String corpId, String groupName, String tagName, + Boolean onlyGroup, Boolean onlyTag); } diff --git a/excel-handle/src/main/java/com/ruoyi/excel/wecom/service/impl/CustomerStatisticsDataV2ServiceImpl.java b/excel-handle/src/main/java/com/ruoyi/excel/wecom/service/impl/CustomerStatisticsDataV2ServiceImpl.java index 9179def..f4292ea 100644 --- a/excel-handle/src/main/java/com/ruoyi/excel/wecom/service/impl/CustomerStatisticsDataV2ServiceImpl.java +++ b/excel-handle/src/main/java/com/ruoyi/excel/wecom/service/impl/CustomerStatisticsDataV2ServiceImpl.java @@ -57,8 +57,9 @@ public class CustomerStatisticsDataV2ServiceImpl implements ICustomerStatisticsD @Override public List selectCustomerStatisticsDataV2List( - String corpId, Date startDate, Date endDate, String groupName, String tagName) { - return dataV2Mapper.selectListByFilter(corpId, startDate, endDate, groupName, tagName); + String corpId, Date startDate, Date endDate, String groupName, String tagName, + Boolean onlyGroup, Boolean onlyTag) { + return dataV2Mapper.selectListByFilter(corpId, startDate, endDate, groupName, tagName, onlyGroup, onlyTag); } @Override @@ -323,8 +324,10 @@ public class CustomerStatisticsDataV2ServiceImpl implements ICustomerStatisticsD @Override public List selectByWeekAggregation( - String corpId, Integer year, Integer week, String groupName, String tagName) { - log.info("周聚合查询: corpId={}, year={}, week={}, groupName={}, tagName={}", corpId, year, week, groupName, tagName); + String corpId, Integer year, Integer week, String groupName, String tagName, + Boolean onlyGroup, Boolean onlyTag) { + log.info("周聚合查询: corpId={}, year={}, week={}, groupName={}, tagName={}, onlyGroup={}, onlyTag={}", + corpId, year, week, groupName, tagName, onlyGroup, onlyTag); // 计算周的开始和结束日期(使用与V1一致的MySQL WEEK函数逻辑) Date[] weekRange = calculateWeekRangeByMySQL(year, week); @@ -338,7 +341,7 @@ public class CustomerStatisticsDataV2ServiceImpl implements ICustomerStatisticsD log.info("周日期范围: {} 至 {}", formatDate(startDate), formatDate(endDate)); // 查询该周的数据并聚合 - List result = dataV2Mapper.selectAggregatedByDateRange(corpId, startDate, endDate, groupName, tagName); + List result = dataV2Mapper.selectAggregatedByDateRange(corpId, startDate, endDate, groupName, tagName, onlyGroup, onlyTag); log.info("周聚合查询结果: {}条记录", result.size()); // 从原始数据表按finish_date重新查询成单数(解决跨日成交问题) @@ -365,7 +368,8 @@ public class CustomerStatisticsDataV2ServiceImpl implements ICustomerStatisticsD @Override public List selectByMonthAggregation( - String corpId, String yearMonth, String groupName, String tagName) { + String corpId, String yearMonth, String groupName, String tagName, + Boolean onlyGroup, Boolean onlyTag) { // 解析年月 String[] parts = yearMonth.split("-"); int year = Integer.parseInt(parts[0]); @@ -377,7 +381,7 @@ public class CustomerStatisticsDataV2ServiceImpl implements ICustomerStatisticsD Date endDate = monthRange[1]; // 查询该月的数据并聚合 - List result = dataV2Mapper.selectAggregatedByDateRange(corpId, startDate, endDate, groupName, tagName); + List result = dataV2Mapper.selectAggregatedByDateRange(corpId, startDate, endDate, groupName, tagName, onlyGroup, onlyTag); // 从原始数据表按finish_date重新查询成单数(解决跨日成交问题) recalculateOrderCountFromOriginalData(corpId, startDate, endDate, result); @@ -400,9 +404,10 @@ public class CustomerStatisticsDataV2ServiceImpl implements ICustomerStatisticsD @Override public List selectAllAggregation( - String corpId, String groupName, String tagName) { + String corpId, String groupName, String tagName, + Boolean onlyGroup, Boolean onlyTag) { // 查询所有数据并聚合 - List result = dataV2Mapper.selectAllAggregated(corpId, groupName, tagName); + List result = dataV2Mapper.selectAllAggregated(corpId, groupName, tagName, onlyGroup, onlyTag); // 从原始数据表按finish_date重新查询成单数(解决跨日成交问题) // 对于全部数据,不限制日期范围 diff --git a/excel-handle/src/main/resources/mapper/wecom/CustomerStatisticsDataV2Mapper.xml b/excel-handle/src/main/resources/mapper/wecom/CustomerStatisticsDataV2Mapper.xml index 58dece0..41d779e 100644 --- a/excel-handle/src/main/resources/mapper/wecom/CustomerStatisticsDataV2Mapper.xml +++ b/excel-handle/src/main/resources/mapper/wecom/CustomerStatisticsDataV2Mapper.xml @@ -238,6 +238,12 @@ AND tag_name = #{tagName} + + AND data_level = 1 + + + AND data_level = 2 + ORDER BY cur_date DESC, data_level ASC, group_name ASC, sort_no ASC @@ -307,6 +313,12 @@ FROM customer_statistics_data_v2 WHERE corp_id = #{corpId} + + AND data_level = 2 + + + AND data_level = 1 + AND data_level = 2 @@ -396,6 +408,12 @@ FROM customer_statistics_data_v2 WHERE corp_id = #{corpId} + + AND data_level = 2 + + + AND data_level = 1 + AND data_level = 2 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wocom/CustomerStatisticsDataV2Controller.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wocom/CustomerStatisticsDataV2Controller.java index 8feea86..afae136 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wocom/CustomerStatisticsDataV2Controller.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wocom/CustomerStatisticsDataV2Controller.java @@ -48,29 +48,31 @@ public class CustomerStatisticsDataV2Controller extends BaseController { @RequestParam(value = "startDate", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") Date startDate, @RequestParam(value = "endDate", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") Date endDate, @RequestParam(value = "groupName", required = false) String groupName, - @RequestParam(value = "tagName", required = false) String tagName) { + @RequestParam(value = "tagName", required = false) String tagName, + @RequestParam(value = "onlyGroup", required = false) Boolean onlyGroup, + @RequestParam(value = "onlyTag", required = false) Boolean onlyTag) { String corpId = CorpContextHolder.getCurrentCorpId(); - log.info("list接口被调用: dataType={}, year={}, week={}, yearMonth={}, groupName={}, tagName={}", - dataType, year, week, yearMonth, groupName, tagName); + log.info("list接口被调用: dataType={}, year={}, week={}, yearMonth={}, groupName={}, tagName={}, onlyGroup={}, onlyTag={}", + dataType, year, week, yearMonth, groupName, tagName, onlyGroup, onlyTag); List list; if ("week".equals(dataType)) { - list = customerStatisticsDataV2Service.selectByWeekAggregation(corpId, year, week, groupName, tagName); + list = customerStatisticsDataV2Service.selectByWeekAggregation(corpId, year, week, groupName, tagName, onlyGroup, onlyTag); log.info("周聚合查询结果: {}条记录", list.size()); return getDataTable(list); } else if ("month".equals(dataType)) { - list = customerStatisticsDataV2Service.selectByMonthAggregation(corpId, yearMonth, groupName, tagName); + list = customerStatisticsDataV2Service.selectByMonthAggregation(corpId, yearMonth, groupName, tagName, onlyGroup, onlyTag); log.info("月聚合查询结果: {}条记录", list.size()); return getDataTable(list); } else if ("all".equals(dataType)) { - list = customerStatisticsDataV2Service.selectAllAggregation(corpId, groupName, tagName); + list = customerStatisticsDataV2Service.selectAllAggregation(corpId, groupName, tagName, onlyGroup, onlyTag); log.info("全部数据查询结果: {}条记录", list.size()); return getDataTable(list); } else { startPage(); list = customerStatisticsDataV2Service - .selectCustomerStatisticsDataV2List(corpId, startDate, endDate, groupName, tagName); + .selectCustomerStatisticsDataV2List(corpId, startDate, endDate, groupName, tagName, onlyGroup, onlyTag); return getDataTable(list); } } diff --git a/ruoyi-ui/src/views/wecom/customerStatisticsV2/index.vue b/ruoyi-ui/src/views/wecom/customerStatisticsV2/index.vue index 5d23e47..33f1957 100644 --- a/ruoyi-ui/src/views/wecom/customerStatisticsV2/index.vue +++ b/ruoyi-ui/src/views/wecom/customerStatisticsV2/index.vue @@ -110,6 +110,10 @@ style="width: 120px" /> + + 只看分组 + 只看标签 + 搜索 重置 @@ -293,7 +297,9 @@ export default { week: undefined, yearMonth: undefined, groupName: undefined, - tagName: undefined + tagName: undefined, + onlyGroup: false, + onlyTag: false }, selectedColumns: [], treeProps: { @@ -637,6 +643,20 @@ export default { this.selectedColumns = [...DEFAULT_COLUMNS] this.saveColumnConfig() }, + // 只看分组变化 + handleOnlyGroupChange(val) { + if (val) { + this.queryParams.onlyTag = false + } + this.handleQuery() + }, + // 只看标签变化 + handleOnlyTagChange(val) { + if (val) { + this.queryParams.onlyGroup = false + } + this.handleQuery() + }, handleTreeNodeClick(data) { // 自动填入筛选条件 if (data.type === 'group') { @@ -797,6 +817,8 @@ export default { this.queryParams.dataType = 'day' this.queryParams.groupName = undefined this.queryParams.tagName = undefined + this.queryParams.onlyGroup = false + this.queryParams.onlyTag = false // 使用字符串格式与 el-date-picker 的 value-format 保持一致 this.queryParams.year = String(new Date().getFullYear()) this.queryParams.week = undefined