From 43d728030dca41209677b0a7e314de2ce0a21aa9 Mon Sep 17 00:00:00 2001
From: 陶杰 <1378534974@qq.com>
Date: 星期五, 27 九月 2024 10:47:50 +0800
Subject: [PATCH] 1.报表框架
---
src/main/java/com/mzl/flower/web/v2/report/OrderReportController.java | 19 ++++
src/main/java/com/mzl/flower/dto/response/report/OrderReportResultVO.java | 47 ++++++-----
src/main/java/com/mzl/flower/mapper/report/OrderReportMapper.java | 9 ++
src/main/java/com/mzl/flower/service/report/OrderReportService.java | 6 +
src/main/java/com/mzl/flower/dto/response/report/OrderReportCalendarBO.java | 4 +
src/main/resources/mapper/report/OrderReportMapper.xml | 52 +++++++++++++
src/main/java/com/mzl/flower/service/impl/report/OrderReportServiceImpl.java | 51 ++++++++++++
7 files changed, 164 insertions(+), 24 deletions(-)
diff --git a/src/main/java/com/mzl/flower/dto/response/report/OrderReportCalendarBO.java b/src/main/java/com/mzl/flower/dto/response/report/OrderReportCalendarBO.java
index f3dceda..a59a58d 100644
--- a/src/main/java/com/mzl/flower/dto/response/report/OrderReportCalendarBO.java
+++ b/src/main/java/com/mzl/flower/dto/response/report/OrderReportCalendarBO.java
@@ -17,4 +17,8 @@
@ApiModelProperty("订单的结束时间")
private LocalDateTime endDate;
+ @ApiModelProperty(value = "合伙人id")
+ private Long partnerId;
+
+
}
diff --git a/src/main/java/com/mzl/flower/dto/response/report/OrderReportResultVO.java b/src/main/java/com/mzl/flower/dto/response/report/OrderReportResultVO.java
index 50d3d8e..6564b6e 100644
--- a/src/main/java/com/mzl/flower/dto/response/report/OrderReportResultVO.java
+++ b/src/main/java/com/mzl/flower/dto/response/report/OrderReportResultVO.java
@@ -1,71 +1,76 @@
package com.mzl.flower.dto.response.report;
+import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
+import java.time.LocalDateTime;
@Data
public class OrderReportResultVO {
@ApiModelProperty("下单日期")
- private String orderDate;
+ @JsonFormat(pattern="yyyy-MM-dd" ,timezone="GMT+8")
+ @DateTimeFormat
+ private LocalDateTime orderDate;
@ApiModelProperty("销售额")
- private BigDecimal saleFeeAmount;
+ private BigDecimal orderTotal;
@ApiModelProperty("花农底价")
- private BigDecimal supplierFeeAmount;
+ private BigDecimal orderSupplierPriceAmount;
@ApiModelProperty("平台区间加价")
- private BigDecimal platformSectionFeeAmount;
+ private BigDecimal orderMarkupOneAmount;
@ApiModelProperty("平台加价")
- private BigDecimal platformFeeAmount;
+ private BigDecimal orderMarkupTwoAmount;
- @ApiModelProperty("平台区域加价")
+ @ApiModelProperty("平台区域加价--暂无")
private BigDecimal platformAreaFeeAmount;
@ApiModelProperty("合伙人加价")
- private BigDecimal partnerFeeAmount;
+ private BigDecimal orderMarkupPartnerAmount;
- @ApiModelProperty("合伙人区间加价")
+ @ApiModelProperty("合伙人区间加价--暂无")
private BigDecimal partnerSectionFeeAmount;
@ApiModelProperty("会员折扣")
- private BigDecimal memberDiscountFeeAmount;
+ private BigDecimal orderPriceDiscountAmount;
@ApiModelProperty("优惠券")
- private BigDecimal couponFeeAmount;
+ private BigDecimal orderCouponAmountTotal;
@ApiModelProperty("降级扣款")
- private BigDecimal demotionFeeAmount;
+ private BigDecimal orderCheckFee;
@ApiModelProperty("缺货扣款")
- private BigDecimal stockoutFeeAmount;
+ private BigDecimal orderLackFeeSupplier;
@ApiModelProperty("补货扣款")
- private BigDecimal replenishmentFeeAmount;
+ private BigDecimal orderReplaceFee;
@ApiModelProperty("售后扣合伙人款")
- private BigDecimal afterSalePartnerFeeAmount;
+ private BigDecimal orderFeePartner;
@ApiModelProperty("售后扣花农款")
- private BigDecimal afterSaleSupplierFeeAmount;
+ private BigDecimal orderFeeSupplier;
@ApiModelProperty("售后扣平台款")
- private BigDecimal afterSalePlatformFeeAmount;
+ private BigDecimal orderFeePlatform;
- @ApiModelProperty("总包干费")
+ @ApiModelProperty("总包干费--暂无")
private BigDecimal partnerTotalFeeAmount;
- @ApiModelProperty("销售扎数")
- private Integer saleAmount;
+ @ApiModelProperty("实际销售扎数")
+ private Integer realSaleNum;
- @ApiModelProperty("利润")
+ @ApiModelProperty("利润--总包干费没有无法计算")
private BigDecimal profitFeeAmount;
- @ApiModelProperty("结算状态")
+ @ApiModelProperty("结算状态--暂无")
private String settleStatus;
}
diff --git a/src/main/java/com/mzl/flower/mapper/report/OrderReportMapper.java b/src/main/java/com/mzl/flower/mapper/report/OrderReportMapper.java
new file mode 100644
index 0000000..ed02019
--- /dev/null
+++ b/src/main/java/com/mzl/flower/mapper/report/OrderReportMapper.java
@@ -0,0 +1,9 @@
+package com.mzl.flower.mapper.report;
+
+import com.mzl.flower.dto.response.report.OrderReportCalendarBO;
+import com.mzl.flower.dto.response.report.OrderReportResultVO;
+import org.apache.ibatis.annotations.Param;
+
+public interface OrderReportMapper {
+ OrderReportResultVO getOrderDateReport(@Param("dto") OrderReportCalendarBO calendarBO);
+}
diff --git a/src/main/java/com/mzl/flower/service/impl/report/OrderReportServiceImpl.java b/src/main/java/com/mzl/flower/service/impl/report/OrderReportServiceImpl.java
index 4532d67..49dbd3e 100644
--- a/src/main/java/com/mzl/flower/service/impl/report/OrderReportServiceImpl.java
+++ b/src/main/java/com/mzl/flower/service/impl/report/OrderReportServiceImpl.java
@@ -4,11 +4,19 @@
import com.mzl.flower.dto.request.report.QueryOrderDTO;
import com.mzl.flower.dto.response.report.OrderReportCalendarBO;
import com.mzl.flower.dto.response.report.OrderReportResultVO;
+import com.mzl.flower.mapper.report.OrderReportMapper;
import com.mzl.flower.service.calendar.CalendarService;
import com.mzl.flower.service.report.OrderReportService;
+import com.mzl.flower.utils.ExcelExportUtil;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import javax.servlet.http.HttpServletResponse;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.stream.Collectors;
@@ -19,18 +27,57 @@
@Autowired
private CalendarService calendarService;
+ @Autowired
+ private OrderReportMapper orderReportMapper;
+
+
+
@Override
public Page<OrderReportResultVO> getSalePage(Page page, QueryOrderDTO dto) {
List<OrderReportCalendarBO> calendarBOList= calendarService.getOrderDatePage(page,dto);
final List<OrderReportResultVO> list = calendarBOList.stream().map(calendarBO -> {
- OrderReportResultVO vo=new OrderReportResultVO();
+ BeanUtils.copyProperties(dto,calendarBO);
+ OrderReportResultVO vo2=orderReportMapper.getOrderDateReport(calendarBO);
+ vo2.setOrderDate(calendarBO.getCalDate());
- return vo;
+ return vo2;
}).collect(Collectors.toList());
page.setRecords(list);
return page;
}
+
+ @Override
+ public OrderReportResultVO getSaleStatis(QueryOrderDTO dto) {
+ // 计算开始时间和结束时间
+
+ OrderReportCalendarBO bo=new OrderReportCalendarBO();
+ BeanUtils.copyProperties(dto,bo);
+ bo.setStartDate(calculateStartTime(dto.getStartDate()));
+ bo.setEndDate(calculateEndTime(dto.getEndDate()));
+ OrderReportResultVO vo2=orderReportMapper.getOrderDateReport(bo);
+
+ return vo2;
+ }
+
+ @Override
+ public void exportSalesList(HttpServletResponse response, QueryOrderDTO dto) {
+
+ }
+
+
+ // 计算 startDate 的前一天 17:00:00
+ public static LocalDateTime calculateStartTime(LocalDate startDate) {
+ LocalDate previousDay = startDate.minusDays(1);
+ LocalTime fivePM = LocalTime.of(17, 0, 0); // 下午 17:00:00
+ return LocalDateTime.of(previousDay, fivePM);
+ }
+
+ // 计算 endDate 当天的 17:00:00
+ public static LocalDateTime calculateEndTime(LocalDate endDate) {
+ LocalTime fivePM = LocalTime.of(17, 0, 0); // 下午 17:00:00
+ return LocalDateTime.of(endDate, fivePM);
+ }
}
diff --git a/src/main/java/com/mzl/flower/service/report/OrderReportService.java b/src/main/java/com/mzl/flower/service/report/OrderReportService.java
index eab2c1f..a96a30b 100644
--- a/src/main/java/com/mzl/flower/service/report/OrderReportService.java
+++ b/src/main/java/com/mzl/flower/service/report/OrderReportService.java
@@ -4,6 +4,12 @@
import com.mzl.flower.dto.request.report.QueryOrderDTO;
import com.mzl.flower.dto.response.report.OrderReportResultVO;
+import javax.servlet.http.HttpServletResponse;
+
public interface OrderReportService {
Page<OrderReportResultVO> getSalePage(Page page, QueryOrderDTO dto);
+
+ OrderReportResultVO getSaleStatis(QueryOrderDTO dto);
+
+ void exportSalesList(HttpServletResponse response, QueryOrderDTO dto);
}
diff --git a/src/main/java/com/mzl/flower/web/v2/report/OrderReportController.java b/src/main/java/com/mzl/flower/web/v2/report/OrderReportController.java
index 71ed3c6..a4bd585 100644
--- a/src/main/java/com/mzl/flower/web/v2/report/OrderReportController.java
+++ b/src/main/java/com/mzl/flower/web/v2/report/OrderReportController.java
@@ -8,6 +8,7 @@
import com.mzl.flower.config.exception.ValidationException;
import com.mzl.flower.dto.request.coupon.CreateCouponRecordDTO;
import com.mzl.flower.dto.request.coupon.QueryCouponRecordDTO;
+import com.mzl.flower.dto.request.payment.OrderItemSalesQueryDTO;
import com.mzl.flower.dto.request.report.QueryOrderDTO;
import com.mzl.flower.dto.response.coupon.CouponRecordResultVO;
import com.mzl.flower.dto.response.coupon.CouponRecordVO;
@@ -27,6 +28,8 @@
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+
/**
* @author @TaoJie
@@ -44,10 +47,24 @@
@GetMapping("/sale/page")
@ApiOperation(value = "查询-分页", notes = "查询-分页")
- public ResponseEntity<ReturnDataDTO<Page<CouponRecordVO>>> page(
+ public ResponseEntity<ReturnDataDTO<Page<OrderReportResultVO>>> page(
Page page, QueryOrderDTO dto
) {
return returnData(R.SUCCESS.getCode(), ConverterUtil.transPage(orderReportService.getSalePage(page,dto), OrderReportResultVO.class));
}
+ @GetMapping("/sale/statis")
+ @ApiOperation(value = "统计", notes = "统计")
+ public ResponseEntity<ReturnDataDTO<OrderReportResultVO>> statis(QueryOrderDTO dto
+ ) {
+ return returnData(R.SUCCESS.getCode(), ConverterUtil.transObject(orderReportService.getSaleStatis(dto), OrderReportResultVO.class));
+ }
+
+
+ @GetMapping({"/sale/export"})
+ @ApiOperation(value = "报告列表导出")
+ public void exportSales(HttpServletResponse response, QueryOrderDTO dto){
+ orderReportService.exportSalesList(response, dto);
+ }
+
}
\ No newline at end of file
diff --git a/src/main/resources/mapper/report/OrderReportMapper.xml b/src/main/resources/mapper/report/OrderReportMapper.xml
new file mode 100644
index 0000000..3f0670e
--- /dev/null
+++ b/src/main/resources/mapper/report/OrderReportMapper.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.mzl.flower.mapper.report.OrderReportMapper">
+
+ <select id="getOrderDateReport" resultType="com.mzl.flower.dto.response.report.OrderReportResultVO">
+ select
+ sum(order_total) as order_total, -- 销售额
+ sum(order_supplier_price_amount) as order_supplier_price_amount, -- 花农底价
+ sum(order_markup_one_amount) as order_markup_one_amount, -- 平台区间加价
+ sum(order_markup_two_amount) as order_markup_two_amount, -- 平台加价
+ sum(order_markup_partner_amount) as order_markup_partner_amount, -- 合伙人加价
+ sum(order_price_discount_amount) as order_price_discount_amount, -- 会员折扣
+ sum(order_coupon_amount_total) as order_coupon_amount_total, -- 优惠券总金额
+ sum(order_check_fee) as order_check_fee, -- 降级扣款
+ sum(order_lack_fee_supplier) as order_lack_fee_supplier, -- 缺货扣款
+ sum(order_replace_fee) as order_replace_fee, -- 补货扣款
+ sum(order_fee_supplier) as order_fee_supplier, -- 供应商扣款
+ sum(order_fee_partner) as order_fee_partner, -- 合伙人扣款
+ sum(order_fee_platform) as order_fee_platform, -- 平台扣款
+ sum(order_fee_platform_pack) as order_fee_platform_pack, -- 平台打包扣款
+ sum(order_fee_platform_check) as order_fee_platform_check, -- 平台质检扣款
+ sum(order_fee_platform_transport) as order_fee_platform_transport, -- 物流扣款
+ sum(order_total_fee) as order_total_fee, -- 退款总额
+ sum(order_fee_packing_transport) as order_fee_packing_transport, -- 打包运费
+ sum(order_num) as order_num,-- 数量
+ sum(order_replace_num) as order_replace_num,-- 补货数量
+ sum(order_reduce_num) as order_reduce_num,-- 降级数量
+ sum(order_lack_num) as order_lack_num, -- 缺货数量
+ sum(order_num)-sum(order_lack_num) as real_sale_num -- 销售扎数
+ from (
+ select
+ o.order_no,o.payment_time,o.status_backend,vor.*
+ from t_order o
+ left join v_order_report vor
+ on o.id =vor.order_id
+ where o.deleted=0
+ and o.status_backend not in ('PENDING','CANCEL','REFUND')
+ <if test="dto.startDate != null">
+ and o.payment_time > #{dto.startDate}
+ </if>
+ <if test="dto.endDate != null">
+ and o.payment_time <= #{dto.endDate}
+ </if>
+ <if test="dto.partnerId != null">
+ o.create_by in (
+ select user_id from t_customer_info where partner_id=#{dto.partnerId}
+ )
+ </if>
+ ) t
+
+ </select>
+</mapper>
\ No newline at end of file
--
Gitblit v1.9.3