From 7550592b8aff2e974c996a89efb04fa2ada6cbb8 Mon Sep 17 00:00:00 2001 From: Mrking <782276617@qq.com> Date: Tue, 24 Sep 2024 23:45:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=89=8D=E7=AB=AF=E4=B8=8B?= =?UTF-8?q?=E5=8D=95=E9=A6=96=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/app/AppSaleOrderController.java | 12 +- .../app/AppTradeStatisticsController.java | 86 ++++++++ .../admin/saleorder/SaleOrderController.java | 5 +- .../dal/mysql/saleorder/SaleOrderMapper.java | 2 +- .../service/saleorder/SaleOrderService.java | 14 +- .../saleorder/SaleOrderServiceImpl.java | 56 +++-- .../mapper/saleorder/SaleOrderMapper.xml | 3 + .../src/api/oms/statistics/trade.ts | 6 +- .../src/api/oms/statistics/common.ts | 7 + .../src/api/oms/statistics/trade.ts | 101 +++++++++ .../hangtag-ui-front/src/views/Home/Index.vue | 11 + .../views/Home/components/ComparisonCard.vue | 43 ++++ .../Home/components/OperationDataCard.vue | 76 +++++++ .../views/Home/components/ShortcutCard.vue | 51 +++++ .../views/Home/components/TradeTrendCard.vue | 207 ++++++++++++++++++ 15 files changed, 648 insertions(+), 32 deletions(-) create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/app/AppTradeStatisticsController.java create mode 100644 hangtag-ui/hangtag-ui-front/src/api/oms/statistics/common.ts create mode 100644 hangtag-ui/hangtag-ui-front/src/api/oms/statistics/trade.ts create mode 100644 hangtag-ui/hangtag-ui-front/src/views/Home/components/ComparisonCard.vue create mode 100644 hangtag-ui/hangtag-ui-front/src/views/Home/components/OperationDataCard.vue create mode 100644 hangtag-ui/hangtag-ui-front/src/views/Home/components/ShortcutCard.vue create mode 100644 hangtag-ui/hangtag-ui-front/src/views/Home/components/TradeTrendCard.vue diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/app/AppSaleOrderController.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/app/AppSaleOrderController.java index 445296a..22023e0 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/app/AppSaleOrderController.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/app/AppSaleOrderController.java @@ -116,6 +116,10 @@ public class AppSaleOrderController{ public void exportSaleOrderExcel(@Valid SaleOrderPageReqVO pageReqVO, HttpServletResponse response) throws IOException { pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + + LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); + CustomerDO customer = customerService.getCustomerByUserId(loginUser.getId()); + pageReqVO.setCustomerId(customer.getId()); List list = saleOrderService.getSaleOrderPage(pageReqVO).getList(); // 导出 Excel ExcelUtils.write(response, "销售订单.xls", "数据", SaleOrderRespVO.class, @@ -135,7 +139,13 @@ public class AppSaleOrderController{ @GetMapping("/get-count") @Operation(summary = "获得销售订单 分页 tab count") public CommonResult> getSpuCount() { - return success(saleOrderService.getTabsCount()); + LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); + CustomerDO customer = customerService.getCustomerByUserId(loginUser.getId()); + Long customerId = null; + if(customer!=null){ + customerId = customer.getId(); + } + return success(saleOrderService.getTabsCount(customerId)); } @PostMapping("/updateSaleOrderBillStatus") diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/app/AppTradeStatisticsController.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/app/AppTradeStatisticsController.java new file mode 100644 index 0000000..b2c1960 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/app/AppTradeStatisticsController.java @@ -0,0 +1,86 @@ +package cn.hangtag.module.oms.controller.admin.app; + +import cn.hangtag.framework.common.pojo.CommonResult; +import cn.hangtag.framework.security.core.LoginUser; +import cn.hangtag.framework.security.core.util.SecurityFrameworkUtils; +import cn.hangtag.module.oms.controller.admin.common.vo.DataComparisonRespVO; +import cn.hangtag.module.oms.controller.admin.trade.vo.TradeOrderCountRespVO; +import cn.hangtag.module.oms.controller.admin.trade.vo.TradeOrderSummaryRespVO; +import cn.hangtag.module.oms.controller.admin.trade.vo.TradeOrderTrendReqVO; +import cn.hangtag.module.oms.controller.admin.trade.vo.TradeOrderTrendRespVO; +import cn.hangtag.module.oms.dal.dataobject.customer.CustomerDO; +import cn.hangtag.module.oms.enums.common.BillStatusEnum; +import cn.hangtag.module.oms.service.customer.CustomerService; +import cn.hangtag.module.oms.service.saleorder.SaleOrderService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.util.List; + +import static cn.hangtag.framework.common.pojo.CommonResult.success; + + +@Tag(name = "管理后台 - 订单统计") +@RestController +@RequestMapping("/oms/app/statistics/trade") +@Validated +@Slf4j +public class AppTradeStatisticsController { + + @Resource + private SaleOrderService saleOrderService; + @Resource + private CustomerService customerService; + + @GetMapping("/order-comparison") + @Operation(summary = "获得交易订单数量") + //@PreAuthorize("@ss.hasPermission('statistics:order:query')") + public CommonResult> getOrderComparison() { + LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); + CustomerDO customer = customerService.getCustomerByUserId(loginUser.getId()); + Long customerId = null; + if(customer!=null){ + customerId = customer.getId(); + } + return success(saleOrderService.getOrderComparison(customerId)); + } + + + @GetMapping("/order-count") + @Operation(summary = "获得交易订单数量") + public CommonResult getOrderCount() { + LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); + CustomerDO customer = customerService.getCustomerByUserId(loginUser.getId()); + Long customerId = null; + if(customer!=null){ + customerId = customer.getId(); + } + TradeOrderCountRespVO tradeOrderCountRespVO = new TradeOrderCountRespVO(); + // 订单统计 + Long rejectCount = saleOrderService.getCountByBillStatus(BillStatusEnum.REJECT.getValue(),customerId); + Long saveCount = saleOrderService.getCountByBillStatus(BillStatusEnum.SAVE.getValue(),customerId); + Long submitCount = saleOrderService.getCountByBillStatus(BillStatusEnum.SUBMIT.getValue(),customerId); + Long auditCount = saleOrderService.getCountByBillStatus(BillStatusEnum.AUDIT.getValue(),customerId); + tradeOrderCountRespVO.setOrderCountAA(rejectCount); + tradeOrderCountRespVO.setOrderCountA(saveCount); + tradeOrderCountRespVO.setOrderCountB(submitCount); + tradeOrderCountRespVO.setOrderCountC(auditCount); + // 拼接返回 + return success(tradeOrderCountRespVO); + } + + + @GetMapping("/order-count-trend") + @Operation(summary = "获得订单量趋势统计") + public CommonResult>> getOrderCountTrendComparison(@Valid TradeOrderTrendReqVO reqVO) { + return success(saleOrderService.getOrderCountTrendComparison(reqVO)); + } + +} diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/SaleOrderController.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/SaleOrderController.java index 61681f8..77cdc4d 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/SaleOrderController.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/SaleOrderController.java @@ -8,7 +8,6 @@ import cn.hangtag.module.system.api.user.AdminUserApi; import cn.hangtag.module.system.api.user.dto.AdminUserRespDTO; import cn.hutool.core.map.MapUtil; import com.alibaba.fastjson.JSONObject; -import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -18,12 +17,10 @@ import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Operation; import javax.annotation.security.PermitAll; -import javax.validation.constraints.*; import javax.validation.*; import javax.servlet.http.*; import java.util.*; import java.io.IOException; -import java.util.stream.Stream; import cn.hangtag.framework.common.pojo.PageParam; import cn.hangtag.framework.common.pojo.PageResult; @@ -136,7 +133,7 @@ public class SaleOrderController { @Operation(summary = "获得销售订单 分页 tab count") @PreAuthorize("@ss.hasPermission('oms:sale-order:query')") public CommonResult> getSpuCount() { - return success(saleOrderService.getTabsCount()); + return success(saleOrderService.getTabsCount(null)); } @PostMapping("/updateSaleOrderBillStatus") diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/saleorder/SaleOrderMapper.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/saleorder/SaleOrderMapper.java index e2d252a..357fd0d 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/saleorder/SaleOrderMapper.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/saleorder/SaleOrderMapper.java @@ -67,7 +67,7 @@ public interface SaleOrderMapper extends BaseMapperX { TradeOrderSummaryRespVO selectOrderQtySummaryByOrderStatusAndCreateTimeBetween(@Param("orderStatus") String orderStatus, @Param("beginTime") LocalDateTime beginTime, - @Param("endTime") LocalDateTime endTime); + @Param("endTime") LocalDateTime endTime,@Param("customerId") Long customerId); /** diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderService.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderService.java index c6ce906..732348f 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderService.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderService.java @@ -13,7 +13,6 @@ import cn.hangtag.module.oms.controller.admin.trade.vo.TradeOrderTrendRespVO; import cn.hangtag.module.oms.dal.dataobject.saleorder.SaleOrderDO; import cn.hangtag.module.oms.dal.dataobject.saleorderentry.SaleOrderEntryDO; import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; /** * 销售订单 Service 接口 @@ -70,7 +69,7 @@ public interface SaleOrderService { */ List getSaleOrderEntryListByParentId(Long parentId); - Map getTabsCount(); + Map getTabsCount(Long customerId); default void updateSaleOrderBillStatus(List ids, String status){ updateSaleOrderBillStatus(ids,status,null); @@ -81,16 +80,23 @@ public interface SaleOrderService { void generatePdf(HttpServletResponse response) throws IOException; + default DataComparisonRespVO getOrderComparison(){ + return getOrderComparison(null); + } /** * 交易订单销售额对照 * * @return 销售额对照 */ - DataComparisonRespVO getOrderComparison(); + DataComparisonRespVO getOrderComparison(Long customerId); void updateOrderRemark(SaleOrderRemarkReqVO reqVO); - Long getCountByBillStatus(String value); + default Long getCountByBillStatus(String value){ + return getCountByBillStatus(value,null); + } + + Long getCountByBillStatus(String value, Long customerId); List> getOrderCountTrendComparison(TradeOrderTrendReqVO reqVO); } \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderServiceImpl.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderServiceImpl.java index b2447bf..053306e 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderServiceImpl.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderServiceImpl.java @@ -1,18 +1,14 @@ package cn.hangtag.module.oms.service.saleorder; import cn.hangtag.framework.common.exception.ServiceException; -import cn.hangtag.framework.common.exception.enums.GlobalErrorCodeConstants; import cn.hangtag.framework.common.pojo.PageResult; import cn.hangtag.framework.common.util.object.BeanUtils; -import cn.hangtag.framework.security.core.LoginUser; import cn.hangtag.framework.security.core.util.SecurityFrameworkUtils; -import cn.hangtag.framework.web.core.util.WebFrameworkUtils; import cn.hangtag.module.oms.common.utils.NumberChineseFormatterUtils; import cn.hangtag.module.oms.common.utils.WKHtmlToPdfUtil; import cn.hangtag.module.oms.controller.admin.common.vo.DataComparisonRespVO; import cn.hangtag.module.oms.controller.admin.produceorder.vo.ProduceOrderSaveReqVO; import cn.hangtag.module.oms.controller.admin.product.vo.ProductPriceSaveReqVO; -import cn.hangtag.module.oms.controller.admin.salecontract.vo.SaleContractSaveReqVO; import cn.hangtag.module.oms.controller.admin.saleorder.vo.SaleOrderPageReqVO; import cn.hangtag.module.oms.controller.admin.saleorder.vo.SaleOrderRemarkReqVO; import cn.hangtag.module.oms.controller.admin.saleorder.vo.SaleOrderSaveReqVO; @@ -39,15 +35,14 @@ import cn.hangtag.module.oms.service.product.ProductPriceService; import cn.hangtag.module.oms.service.productinfo.ProductInfoService; import cn.hangtag.module.oms.service.salecontract.SaleContractService; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -173,17 +168,35 @@ public class SaleOrderServiceImpl implements SaleOrderService { } @Override - public Map getTabsCount() { + public Map getTabsCount(Long customerId) { Map counts = Maps.newLinkedHashMapWithExpectedSize(3); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(SaleOrderDO::getOrderStatus, SaleOrderStatusEnum.YXD.getValue()); + if(customerId!=null){ + lambdaQueryWrapper.eq(SaleOrderDO::getCustomerId, customerId); + } + + LambdaQueryWrapper lambdaQueryWrapper1 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper1.eq(SaleOrderDO::getOrderStatus, SaleOrderStatusEnum.SCZ.getValue()); + if(customerId!=null){ + lambdaQueryWrapper1.eq(SaleOrderDO::getCustomerId, customerId); + } + + LambdaQueryWrapper lambdaQueryWrapper2 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper2.eq(SaleOrderDO::getOrderStatus, SaleOrderStatusEnum.YWC.getValue()); + if(customerId!=null){ + lambdaQueryWrapper2.eq(SaleOrderDO::getCustomerId, customerId); + } + // 查询已下单订单数量 counts.put(SaleOrderStatusEnum.YXD.getValue(), - saleOrderMapper.selectCount(SaleOrderDO::getOrderStatus, SaleOrderStatusEnum.YXD.getValue())); + saleOrderMapper.selectCount(lambdaQueryWrapper)); // 查询已生产订单数量 counts.put(SaleOrderStatusEnum.SCZ.getValue(), - saleOrderMapper.selectCount(SaleOrderDO::getOrderStatus, SaleOrderStatusEnum.SCZ.getValue())); + saleOrderMapper.selectCount(lambdaQueryWrapper1)); // 查询已完成订单数量 counts.put(SaleOrderStatusEnum.YWC.getValue(), - saleOrderMapper.selectCount(SaleOrderDO::getOrderStatus, SaleOrderStatusEnum.YWC.getValue())); + saleOrderMapper.selectCount(lambdaQueryWrapper2)); return counts; } @@ -376,7 +389,7 @@ public class SaleOrderServiceImpl implements SaleOrderService { } @Override - public DataComparisonRespVO getOrderComparison() { + public DataComparisonRespVO getOrderComparison(Long customerId) { LocalDateTime dayDate = LocalDateTime.now(); LocalDateTime lastDayDate = LocalDateTime.now().minusDays(1); LocalDateTime beginWeekDate = DateUtil.beginOfWeek(DateUtil.date()).toLocalDateTime(); @@ -385,10 +398,10 @@ public class SaleOrderServiceImpl implements SaleOrderService { LocalDateTime lastEndWeekDate = DateUtil.endOfWeek(DateUtil.lastWeek()).toLocalDateTime(); return new DataComparisonRespVO() - .setValue(getOrderQtySummary(dayDate,dayDate))//今日 - .setReference(getOrderQtySummary(lastDayDate,lastDayDate))//昨日 - .setValue2(getOrderQtySummary(beginWeekDate,endWeekDate))//本周 - .setReference2(getOrderQtySummary(lastBeginWeekDate,lastEndWeekDate));//上周 + .setValue(getOrderQtySummary(dayDate,dayDate,customerId))//今日 + .setReference(getOrderQtySummary(lastDayDate,lastDayDate,customerId))//昨日 + .setValue2(getOrderQtySummary(beginWeekDate,endWeekDate,customerId))//本周 + .setReference2(getOrderQtySummary(lastBeginWeekDate,lastEndWeekDate,customerId));//上周 } @Override @@ -402,8 +415,13 @@ public class SaleOrderServiceImpl implements SaleOrderService { } @Override - public Long getCountByBillStatus(String billstatus) { - return saleOrderMapper.selectCount(SaleOrderDO::getBillStatus,billstatus); + public Long getCountByBillStatus(String billstatus, Long customerId) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(SaleOrderDO::getBillStatus,billstatus); + if(customerId!=null){ + lambdaQueryWrapper.eq(SaleOrderDO::getCustomerId,customerId); + } + return saleOrderMapper.selectCount(lambdaQueryWrapper); } @Override @@ -431,11 +449,11 @@ public class SaleOrderServiceImpl implements SaleOrderService { return saleOrderMapper.selectListByPayTimeBetweenAndGroupByDay(beginTime, endTime); } - private TradeOrderSummaryRespVO getOrderQtySummary(LocalDateTime beginDate,LocalDateTime endDate) { + private TradeOrderSummaryRespVO getOrderQtySummary(LocalDateTime beginDate, LocalDateTime endDate, Long customerId) { LocalDateTime beginTime = LocalDateTimeUtil.beginOfDay(beginDate); LocalDateTime endTime = LocalDateTimeUtil.endOfDay(endDate); return saleOrderMapper.selectOrderQtySummaryByOrderStatusAndCreateTimeBetween( - null, beginTime, endTime); + null, beginTime, endTime,customerId); } diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/resources/mapper/saleorder/SaleOrderMapper.xml b/hangtag-module-oms/hangtag-module-oms-biz/src/main/resources/mapper/saleorder/SaleOrderMapper.xml index 920823a..f6f4b12 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/resources/mapper/saleorder/SaleOrderMapper.xml +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/resources/mapper/saleorder/SaleOrderMapper.xml @@ -13,6 +13,9 @@ AND order_status = #{orderStatus} + + AND customer_id = #{customerId} + AND create_time BETWEEN #{beginTime} AND #{endTime} diff --git a/hangtag-ui/hangtag-ui-admin/src/api/oms/statistics/trade.ts b/hangtag-ui/hangtag-ui-admin/src/api/oms/statistics/trade.ts index 21de740..1f882f1 100644 --- a/hangtag-ui/hangtag-ui-admin/src/api/oms/statistics/trade.ts +++ b/hangtag-ui/hangtag-ui-admin/src/api/oms/statistics/trade.ts @@ -49,7 +49,7 @@ export interface TradeOrderTrendRespVO { // 查询交易统计 export const getTradeStatisticsSummary = () => { return request.get>({ - url: '/statistics/trade/summary' + url: '/oms/statistics/trade/summary' }) } @@ -58,7 +58,7 @@ export const getTradeStatisticsSummary = () => { // 获得交易状况明细 export const getTradeStatisticsList = (params: TradeTrendReqVO) => { return request.get({ - url: '/statistics/trade/list', + url: '/oms/statistics/trade/list', params: formatDateParam(params) }) } @@ -66,7 +66,7 @@ export const getTradeStatisticsList = (params: TradeTrendReqVO) => { // 导出交易状况明细 export const exportTradeStatisticsExcel = (params: TradeTrendReqVO) => { return request.download({ - url: '/statistics/trade/export-excel', + url: '/oms/statistics/trade/export-excel', params: formatDateParam(params) }) } diff --git a/hangtag-ui/hangtag-ui-front/src/api/oms/statistics/common.ts b/hangtag-ui/hangtag-ui-front/src/api/oms/statistics/common.ts new file mode 100644 index 0000000..753e34d --- /dev/null +++ b/hangtag-ui/hangtag-ui-front/src/api/oms/statistics/common.ts @@ -0,0 +1,7 @@ +/** 数据对照 Response VO */ +export interface DataComparisonRespVO { + value: T + reference: T + value2: T + reference2: T +} diff --git a/hangtag-ui/hangtag-ui-front/src/api/oms/statistics/trade.ts b/hangtag-ui/hangtag-ui-front/src/api/oms/statistics/trade.ts new file mode 100644 index 0000000..26ee931 --- /dev/null +++ b/hangtag-ui/hangtag-ui-front/src/api/oms/statistics/trade.ts @@ -0,0 +1,101 @@ +import request from '@/config/axios' +import dayjs from 'dayjs' +import { formatDate } from '@/utils/formatTime' +import { DataComparisonRespVO } from '@/api/oms/statistics/common' + +/** 交易统计 Response VO */ +export interface TradeSummaryRespVO { + yesterdayOrderCount: number + monthOrderCount: number + yesterdayPayPrice: number + monthPayPrice: number +} + +/** 交易状况 Request VO */ +export interface TradeTrendReqVO { + times: [dayjs.ConfigType, dayjs.ConfigType] +} + +/** 交易订单数量 Response VO */ +export interface TradeOrderCountRespVO { + /** 驳回 */ + orderCountAA?: number + /** 待提交 */ + orderCountA?: number + /** 提交中 */ + orderCountB?: number + /** 已审核 */ + orderCountC?: number +} + +/** 交易订单统计 Response VO */ +export interface TradeOrderSummaryRespVO { + /** 支付订单商品数 */ + orderCount?: number + /** 总支付金额,单位:分 */ + orderAmount?: number +} + +/** 订单量趋势统计 Response VO */ +export interface TradeOrderTrendRespVO { + /** 日期 */ + date: string + /** 订单数量 */ + orderCount: number + /** 订单支付金额 */ + orderAmount: number +} + +// 查询交易统计 +export const getTradeStatisticsSummary = () => { + return request.get>({ + url: '/oms/app/statistics/app/trade/summary' + }) +} + + + +// 获得交易状况明细 +export const getTradeStatisticsList = (params: TradeTrendReqVO) => { + return request.get({ + url: '/oms/app/statistics/trade/list', + params: formatDateParam(params) + }) +} + +// 导出交易状况明细 +export const exportTradeStatisticsExcel = (params: TradeTrendReqVO) => { + return request.download({ + url: '/oms/app/statistics/trade/export-excel', + params: formatDateParam(params) + }) +} + +// 获得交易订单数量 +export const getOrderCount = async () => { + return await request.get({ url: `/oms/app/statistics/trade/order-count` }) +} + +// 获得交易订单数量对照 +export const getOrderComparison = async () => { + return await request.get>({ + url: `/oms/app/statistics/trade/order-comparison` + }) +} + +// 获得订单量趋势统计 +export const getOrderCountTrendComparison = ( + type: number, + beginTime: dayjs.ConfigType, + endTime: dayjs.ConfigType +) => { + return request.get[]>({ + url: '/oms/app/statistics/trade/order-count-trend', + params: { type, beginTime: formatDate(beginTime), endTime: formatDate(endTime) } + }) +} + +/** 时间参数需要格式化, 确保接口能识别 */ +const formatDateParam = (params: TradeTrendReqVO) => { + return { times: [formatDate(params.times[0]), formatDate(params.times[1])] } as TradeTrendReqVO +} diff --git a/hangtag-ui/hangtag-ui-front/src/views/Home/Index.vue b/hangtag-ui/hangtag-ui-front/src/views/Home/Index.vue index b832ae9..4b7b819 100644 --- a/hangtag-ui/hangtag-ui-front/src/views/Home/Index.vue +++ b/hangtag-ui/hangtag-ui-front/src/views/Home/Index.vue @@ -19,6 +19,17 @@ + + + + + + + + + + + diff --git a/hangtag-ui/hangtag-ui-front/src/views/Home/components/ComparisonCard.vue b/hangtag-ui/hangtag-ui-front/src/views/Home/components/ComparisonCard.vue new file mode 100644 index 0000000..ecf5f12 --- /dev/null +++ b/hangtag-ui/hangtag-ui-front/src/views/Home/components/ComparisonCard.vue @@ -0,0 +1,43 @@ + + diff --git a/hangtag-ui/hangtag-ui-front/src/views/Home/components/OperationDataCard.vue b/hangtag-ui/hangtag-ui-front/src/views/Home/components/OperationDataCard.vue new file mode 100644 index 0000000..e53def9 --- /dev/null +++ b/hangtag-ui/hangtag-ui-front/src/views/Home/components/OperationDataCard.vue @@ -0,0 +1,76 @@ + + diff --git a/hangtag-ui/hangtag-ui-front/src/views/Home/components/ShortcutCard.vue b/hangtag-ui/hangtag-ui-front/src/views/Home/components/ShortcutCard.vue new file mode 100644 index 0000000..d1df1c9 --- /dev/null +++ b/hangtag-ui/hangtag-ui-front/src/views/Home/components/ShortcutCard.vue @@ -0,0 +1,51 @@ + + diff --git a/hangtag-ui/hangtag-ui-front/src/views/Home/components/TradeTrendCard.vue b/hangtag-ui/hangtag-ui-front/src/views/Home/components/TradeTrendCard.vue new file mode 100644 index 0000000..9cc96bb --- /dev/null +++ b/hangtag-ui/hangtag-ui-front/src/views/Home/components/TradeTrendCard.vue @@ -0,0 +1,207 @@ + +