From 5dfb9e127bee64a7e55f8910d844beb31ab13377 Mon Sep 17 00:00:00 2001
From: Cui Zhi Feng <cuizf@fengyuntec.com>
Date: 星期二, 22 十月 2024 22:32:17 +0800
Subject: [PATCH] 统计 销售额 销售扎数

---
 src/main/java/com/mzl/flower/service/statistics/StatisticsService.java      |   54 +++++++++++++++++++++++++++
 src/main/java/com/mzl/flower/mapper/payment/OrderMapper.java                |    3 +
 src/main/java/com/mzl/flower/mapper/payment/OrderItemMapper.java            |    4 ++
 src/main/resources/mapper/payment/OrderItemMapper.xml                       |   10 +++++
 src/main/resources/mapper/payment/OrderMapper.xml                           |    9 ++++
 src/main/java/com/mzl/flower/dto/response/statistics/SaleStatisticsDTO.java |   15 +++++++
 6 files changed, 95 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/mzl/flower/dto/response/statistics/SaleStatisticsDTO.java b/src/main/java/com/mzl/flower/dto/response/statistics/SaleStatisticsDTO.java
new file mode 100644
index 0000000..a5ea6cb
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/response/statistics/SaleStatisticsDTO.java
@@ -0,0 +1,15 @@
+package com.mzl.flower.dto.response.statistics;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class SaleStatisticsDTO {
+    @ApiModelProperty(value = "销售额")
+    private BigDecimal saleAmount;
+
+    @ApiModelProperty(value = "销售扎数")
+    private Integer saleFlowerCount;
+}
diff --git a/src/main/java/com/mzl/flower/mapper/payment/OrderItemMapper.java b/src/main/java/com/mzl/flower/mapper/payment/OrderItemMapper.java
index f6cb15c..e60120f 100644
--- a/src/main/java/com/mzl/flower/mapper/payment/OrderItemMapper.java
+++ b/src/main/java/com/mzl/flower/mapper/payment/OrderItemMapper.java
@@ -8,6 +8,7 @@
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
+import java.time.LocalDateTime;
 import java.util.List;
 
 @Repository
@@ -17,4 +18,7 @@
     List<OrderItemPlatformListDTO> getPlatformOrderItems(@Param("orderId") String orderId);
 
     List<OrderItemListDTO> getOrderItems(@Param("orderIds") List<String> orderIds);
+
+    Integer getFlowerSaleNum(@Param("startTime") LocalDateTime startTime
+            , @Param("endTime") LocalDateTime endTime);
 }
diff --git a/src/main/java/com/mzl/flower/mapper/payment/OrderMapper.java b/src/main/java/com/mzl/flower/mapper/payment/OrderMapper.java
index 715debd..5c4ca5e 100644
--- a/src/main/java/com/mzl/flower/mapper/payment/OrderMapper.java
+++ b/src/main/java/com/mzl/flower/mapper/payment/OrderMapper.java
@@ -9,6 +9,7 @@
 import org.apache.ibatis.annotations.Select;
 import org.springframework.stereotype.Repository;
 
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.List;
 
@@ -70,4 +71,6 @@
             ")")
     List<String> getWaitSendMessageInfoBySupplier(String Status, LocalDateTime startTime, LocalDateTime endTime);
 
+    BigDecimal getOrderSaleAmount(@Param("startTime") LocalDateTime startTime
+            , @Param("endTime") LocalDateTime endTime);
 }
diff --git a/src/main/java/com/mzl/flower/service/statistics/StatisticsService.java b/src/main/java/com/mzl/flower/service/statistics/StatisticsService.java
new file mode 100644
index 0000000..03acf99
--- /dev/null
+++ b/src/main/java/com/mzl/flower/service/statistics/StatisticsService.java
@@ -0,0 +1,54 @@
+package com.mzl.flower.service.statistics;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.mzl.flower.config.exception.ValidationException;
+import com.mzl.flower.constant.Constants;
+import com.mzl.flower.dto.response.statistics.SaleStatisticsDTO;
+import com.mzl.flower.mapper.payment.*;
+import com.mzl.flower.service.BaseService;
+import com.mzl.flower.utils.UUIDGenerator;
+import io.micrometer.core.instrument.util.StringUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+@Slf4j
+@Service
+@Transactional
+public class StatisticsService extends BaseService {
+
+    @Autowired
+    private OrderMapper orderMapper;
+
+    @Autowired
+    private OrderItemMapper orderItemMapper;
+
+    public SaleStatisticsDTO getSaleStatistics(String date){
+        if(StringUtils.isEmpty(date)){
+            throw new ValidationException("日期不能为空");
+        }
+        LocalDate localDate = parseLocalDate(date);
+        if(localDate == null){
+            throw new ValidationException("日期无效");
+        }
+
+        LocalDateTime end = localDate.atTime(17, 0, 0);
+        LocalDateTime begin = end.plusDays(-1);
+
+        SaleStatisticsDTO dto = new SaleStatisticsDTO();
+        BigDecimal a = orderMapper.getOrderSaleAmount(begin, end);
+        Integer c = orderItemMapper.getFlowerSaleNum(begin, end);
+
+        dto.setSaleAmount(a);
+        dto.setSaleFlowerCount(c);
+
+        return dto;
+    }
+}
diff --git a/src/main/resources/mapper/payment/OrderItemMapper.xml b/src/main/resources/mapper/payment/OrderItemMapper.xml
index 251abbb..0037d42 100644
--- a/src/main/resources/mapper/payment/OrderItemMapper.xml
+++ b/src/main/resources/mapper/payment/OrderItemMapper.xml
@@ -71,4 +71,14 @@
             #{orderId}
         </foreach>
     </select>
+
+    <select id="getFlowerSaleNum" resultType="java.lang.Integer">
+        SELECT sum(oi.num)
+        FROM t_order_item oi
+        JOIN t_order o on oi.order_id = o.id
+        WHERE o.create_time &gt; #{startTime}
+        and o.create_time &lt;= #{endTime}
+        and o.payment_time is not null
+        and o.refund_time is null
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/payment/OrderMapper.xml b/src/main/resources/mapper/payment/OrderMapper.xml
index 19db8e2..e0451eb 100644
--- a/src/main/resources/mapper/payment/OrderMapper.xml
+++ b/src/main/resources/mapper/payment/OrderMapper.xml
@@ -362,4 +362,13 @@
         </if>
         ORDER BY q.create_time desc, q.payment_time desc
     </select>
+
+    <select id="getOrderSaleAmount" resultType="java.math.BigDecimal">
+        SELECT sum(o.payment_amount)
+        FROM t_order o
+        WHERE o.create_time &gt; #{startTime}
+        and o.create_time &lt;= #{endTime}
+        and o.payment_time is not null
+        and o.refund_time is null
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.3