From de0c9afa813718d9874610537b7722a0ebdf91b9 Mon Sep 17 00:00:00 2001 From: csc <869898671@qq.com> Date: Mon, 20 Oct 2025 16:06:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BB=E9=A1=B5=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/service/api/statistics/statistics.ts | 2 +- cds-fontend-2025.V1/src/views/home/index.vue | 1 + .../src/views/home/modules/card-data-mkt.vue | 24 +++++++----- .../mapper/MarketingPerformanceMapper.java | 6 +++ .../controller/StatisticsController.java | 38 +++++++++++++------ .../HomePageMarketingPerformanceSummary.java | 8 ++++ .../statistics/domain/vo/MktCardVo.java | 6 ++- .../report/MarketingPerformanceMapper.xml | 10 +++++ 8 files changed, 72 insertions(+), 23 deletions(-) diff --git a/cds-fontend-2025.V1/src/service/api/statistics/statistics.ts b/cds-fontend-2025.V1/src/service/api/statistics/statistics.ts index e614738..e75c7f9 100644 --- a/cds-fontend-2025.V1/src/service/api/statistics/statistics.ts +++ b/cds-fontend-2025.V1/src/service/api/statistics/statistics.ts @@ -2,7 +2,7 @@ import { request } from '@/service/request'; /** 获取营销用户卡片数据 */ export function getMktCardData(startDate: string,endDate: string) { - return request({ + return request({ url: '/common/statistics/getMktCardData', method: 'get', params: {startDate,endDate} diff --git a/cds-fontend-2025.V1/src/views/home/index.vue b/cds-fontend-2025.V1/src/views/home/index.vue index e15db9d..b2efecf 100644 --- a/cds-fontend-2025.V1/src/views/home/index.vue +++ b/cds-fontend-2025.V1/src/views/home/index.vue @@ -321,6 +321,7 @@ onMounted(() => { i.time = getRelativeTime(i.time) } }) + //计价汇总 getPricingSummary().then(res => { let tmp = [] for (let key in pricingSummaryName) { diff --git a/cds-fontend-2025.V1/src/views/home/modules/card-data-mkt.vue b/cds-fontend-2025.V1/src/views/home/modules/card-data-mkt.vue index 1357eb8..92b7e87 100644 --- a/cds-fontend-2025.V1/src/views/home/modules/card-data-mkt.vue +++ b/cds-fontend-2025.V1/src/views/home/modules/card-data-mkt.vue @@ -88,6 +88,10 @@ const fetchCardData = async () => { throw new Error('Failed to fetch card data'); } + if (data.startDate && data.endDate) { + formattedDateRange.value = `${data.startDate} 至 ${data.endDate}`; + } + // 将API数据映射到卡片模板 return cardTemplate.map(item => { const apiValue = data[item.key as keyof typeof data]; @@ -128,15 +132,17 @@ const handleQuickChange = (type: 'today' | 'week' | 'month') => { emit('quick-change', type); }; -const formattedDateRange = computed(() => { - if (!props.dateRange || props.dateRange.length !== 2) return ''; +// const formattedDateRange = computed(() => { +// if (!props.dateRange || props.dateRange.length !== 2) return ''; +// +// const format = 'YYYY-MM-DD'; +// const start = dayjs(props.dateRange[0]).format(format); +// const end = dayjs(props.dateRange[1]).format(format); +// +// return start === end ? `${start}` : `${start} 至 ${end}`; +// }); - const format = 'YYYY-MM-DD'; - const start = dayjs(props.dateRange[0]).format(format); - const end = dayjs(props.dateRange[1]).format(format); - - return start === end ? `${start}` : `${start} 至 ${end}`; -}); +const formattedDateRange = ref(''); interface GradientBgProps { gradientColor: string; @@ -156,7 +162,7 @@ function getGradientColor(color: MktCardData['color']) {
营销数据概览 - {{ formattedDateRange }} 日 + {{ formattedDateRange }}
diff --git a/cds-platform-2025.V1/cds-modules/cds-system/src/main/java/org/dromara/report/mapper/MarketingPerformanceMapper.java b/cds-platform-2025.V1/cds-modules/cds-system/src/main/java/org/dromara/report/mapper/MarketingPerformanceMapper.java index 3c40ced..b8b4336 100644 --- a/cds-platform-2025.V1/cds-modules/cds-system/src/main/java/org/dromara/report/mapper/MarketingPerformanceMapper.java +++ b/cds-platform-2025.V1/cds-modules/cds-system/src/main/java/org/dromara/report/mapper/MarketingPerformanceMapper.java @@ -56,6 +56,12 @@ public interface MarketingPerformanceMapper extends BaseMapperPlus getMktCardData(String startDate, String endDate) { + public R getMktCardData(/*String startDate, String endDate*/) { MktCardVo mktCardVo = new MktCardVo(); - LambdaQueryWrapper mp = new LambdaQueryWrapper<>(); - mp.select(MarketingPerformance::getRecordDate, MarketingPerformance::getTotalCount, MarketingPerformance::getTotalAmount); - //查询出日期最近的一条 - mp.orderByDesc(MarketingPerformance::getRecordDate); - mp.last("limit 1"); - MarketingPerformance marketingPerformance = marketingPerformanceMapper.homePageSelectOne(mp); - mktCardVo.setMpsCount(Math.toIntExact(marketingPerformance == null ? 0L : marketingPerformance.getTotalCount())); // 总计件量 - mktCardVo.setMpsAmt(marketingPerformance == null ? BigDecimal.ZERO : marketingPerformance.getTotalAmount()); // 总计价额 + HomePageMarketingPerformanceSummary summary = marketingPerformanceMapper.homePageMarketingPerformanceTotal(); + Long busiCount = businessSubcategoryMapper.selectCount(new LambdaQueryWrapper<>()); mktCardVo.setBusiCount(Math.toIntExact(busiCount)); // 产品种类 - Integer customerCount = mpsMarketMapper.selectCountByCustId(startDate, endDate); + + if (summary == null) { + mktCardVo.setMpsCount(0); + mktCardVo.setMpsAmt("0"); + mktCardVo.setCustomerCount(0); + mktCardVo.setStartDate(null); + mktCardVo.setEndDate(null); + return R.ok(mktCardVo); + } + + mktCardVo.setMpsCount(summary.getCount()); // 总计件量 + mktCardVo.setMpsAmt(summary.getTotal()); // 总计价额 + //解析 日期 + TemporalAccessor parse = FULL_DATE_FORMATTER.parse(summary.getRecordDate()); + //获取月初 + DateTime dateTime = DateUtil.beginOfMonth(DateUtil.date(parse)); + String startDate = FULL_DATE_FORMATTER.format(dateTime.toLocalDateTime()); + Integer customerCount = mpsMarketMapper.selectCountByCustId(startDate, summary.getRecordDate()); mktCardVo.setCustomerCount(Math.toIntExact(customerCount)); // 客户数量 + mktCardVo.setStartDate(startDate); + mktCardVo.setEndDate(summary.getRecordDate()); return R.ok(mktCardVo); } diff --git a/cds-platform-2025.V1/cds-modules/cds-system/src/main/java/org/dromara/statistics/domain/vo/HomePageMarketingPerformanceSummary.java b/cds-platform-2025.V1/cds-modules/cds-system/src/main/java/org/dromara/statistics/domain/vo/HomePageMarketingPerformanceSummary.java index d3e2d77..0a7da14 100644 --- a/cds-platform-2025.V1/cds-modules/cds-system/src/main/java/org/dromara/statistics/domain/vo/HomePageMarketingPerformanceSummary.java +++ b/cds-platform-2025.V1/cds-modules/cds-system/src/main/java/org/dromara/statistics/domain/vo/HomePageMarketingPerformanceSummary.java @@ -51,4 +51,12 @@ public class HomePageMarketingPerformanceSummary { * total */ String total; + /** + * count + */ + Integer count; + /** + * recordDate + */ + String recordDate; } diff --git a/cds-platform-2025.V1/cds-modules/cds-system/src/main/java/org/dromara/statistics/domain/vo/MktCardVo.java b/cds-platform-2025.V1/cds-modules/cds-system/src/main/java/org/dromara/statistics/domain/vo/MktCardVo.java index fd3f35b..0824f2f 100644 --- a/cds-platform-2025.V1/cds-modules/cds-system/src/main/java/org/dromara/statistics/domain/vo/MktCardVo.java +++ b/cds-platform-2025.V1/cds-modules/cds-system/src/main/java/org/dromara/statistics/domain/vo/MktCardVo.java @@ -14,7 +14,7 @@ public class MktCardVo { /** * 总计价额 */ - private BigDecimal mpsAmt; + private String mpsAmt; /** * 产品种类(营销产品的种类数量) @@ -26,4 +26,8 @@ public class MktCardVo { */ private int customerCount; + String startDate; + + String endDate; + } diff --git a/cds-platform-2025.V1/cds-modules/cds-system/src/main/resources/mapper/report/MarketingPerformanceMapper.xml b/cds-platform-2025.V1/cds-modules/cds-system/src/main/resources/mapper/report/MarketingPerformanceMapper.xml index 4f7795a..730487b 100644 --- a/cds-platform-2025.V1/cds-modules/cds-system/src/main/resources/mapper/report/MarketingPerformanceMapper.xml +++ b/cds-platform-2025.V1/cds-modules/cds-system/src/main/resources/mapper/report/MarketingPerformanceMapper.xml @@ -223,4 +223,14 @@ where record_date = (select max(record_date) from marketing_performance) + + +