From 2822a346324bd5689e6d86f7e318e89c3936cb53 Mon Sep 17 00:00:00 2001
From: Cui Zhi Feng <7426394+wuxixiaocui@user.noreply.gitee.com>
Date: 星期五, 23 八月 2024 10:48:17 +0800
Subject: [PATCH] 售后状态数量

---
 src/main/java/com/mzl/flower/service/payment/OrderItemSalesService.java |   38 +++++++++++++++++++
 src/main/java/com/mzl/flower/web/payment/SalesController.java           |   13 +++++-
 src/main/java/com/mzl/flower/web/customer/SalesCustomerController.java  |    2 
 src/main/resources/mapper/payment/OrderItemSalesMapper.xml              |   64 ++++++++++++++++++++++++++++++++
 src/main/java/com/mzl/flower/mapper/payment/OrderItemSalesMapper.java   |    3 +
 5 files changed, 117 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/mzl/flower/mapper/payment/OrderItemSalesMapper.java b/src/main/java/com/mzl/flower/mapper/payment/OrderItemSalesMapper.java
index de4539f..2fb82b1 100644
--- a/src/main/java/com/mzl/flower/mapper/payment/OrderItemSalesMapper.java
+++ b/src/main/java/com/mzl/flower/mapper/payment/OrderItemSalesMapper.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.mzl.flower.dto.request.payment.OrderItemSalesQueryDTO;
 import com.mzl.flower.dto.response.payment.OrderItemSalesNewListDTO;
+import com.mzl.flower.dto.response.payment.OrderStatusCountDTO;
 import com.mzl.flower.entity.payment.OrderItemSales;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
@@ -17,4 +18,6 @@
     Integer getSupplierSalesCount(@Param("supplierId") Long supplierId);
 
     Integer getPartnerSalesCount(@Param("partnerId") Long partnerId);
+
+    List<OrderStatusCountDTO> getSalesStatusCount(@Param("condition") OrderItemSalesQueryDTO dto);
 }
diff --git a/src/main/java/com/mzl/flower/service/payment/OrderItemSalesService.java b/src/main/java/com/mzl/flower/service/payment/OrderItemSalesService.java
index b06db75..b32176b 100644
--- a/src/main/java/com/mzl/flower/service/payment/OrderItemSalesService.java
+++ b/src/main/java/com/mzl/flower/service/payment/OrderItemSalesService.java
@@ -9,11 +9,14 @@
 import com.mzl.flower.dto.request.payment.*;
 import com.mzl.flower.dto.response.payment.OrderItemSalesNewDTO;
 import com.mzl.flower.dto.response.payment.OrderItemSalesNewListDTO;
+import com.mzl.flower.dto.response.payment.OrderStatusCountDTO;
+import com.mzl.flower.dto.response.system.CodeValueDTO;
 import com.mzl.flower.entity.payment.*;
 import com.mzl.flower.entity.supplier.Station;
 import com.mzl.flower.mapper.payment.*;
 import com.mzl.flower.mapper.supplier.StationMapper;
 import com.mzl.flower.service.BaseService;
+import com.mzl.flower.service.system.CodeService;
 import com.mzl.flower.utils.UUIDGenerator;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
@@ -23,7 +26,10 @@
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 @Slf4j
 @Service
@@ -47,6 +53,9 @@
 
     @Autowired
     private StationMapper stationMapper;
+
+    @Autowired
+    private CodeService codeService;
 
     public String createSales(OrderItemSalesCreateDTO dto){
         Integer num = dto.getNum();
@@ -126,6 +135,35 @@
         orderItemSalesMapper.updateById(s);
     }
 
+    public List<OrderStatusCountDTO> getSalesStatusCount(OrderItemSalesQueryDTO dto) {
+        dto.setOrderStartDate(parseLocalDateTime(dto.getOrderStartDateStr()));
+        dto.setOrderEndDate(parseLocalDateTime(dto.getOrderEndDateStr()));
+        dto.setSalesStartDate(parseLocalDateTime(dto.getSalesStartDateStr()));
+        dto.setSalesEndDate(parseLocalDateTime(dto.getSalesEndDateStr()));
+
+        List<CodeValueDTO> ls = codeService.searchValue("ORDER_SALES_STATUS");
+        List<OrderStatusCountDTO> ll = orderItemSalesMapper.getSalesStatusCount(dto);
+        Map<String, Integer> llMap = new HashMap<>();
+        if (ll != null && ll.size() > 0) {
+            for (OrderStatusCountDTO c : ll) {
+                llMap.put(c.getValue(), c.getOrderCount());
+            }
+        }
+
+        List<OrderStatusCountDTO> rr = new ArrayList<>();
+        for (CodeValueDTO c : ls) {
+            OrderStatusCountDTO r = new OrderStatusCountDTO();
+            r.setValue(c.getValue());
+            r.setLabel(c.getLabel());
+            Integer count = llMap.get(r.getValue());
+            r.setOrderCount(count == null ? 0 : count);
+
+            rr.add(r);
+        }
+
+        return rr;
+    }
+
     public Page<OrderItemSalesNewListDTO> selectSalesList(Page page, OrderItemSalesQueryDTO dto){
         dto.setOrderStartDate(parseLocalDateTime(dto.getOrderStartDateStr()));
         dto.setOrderEndDate(parseLocalDateTime(dto.getOrderEndDateStr()));
diff --git a/src/main/java/com/mzl/flower/web/customer/SalesCustomerController.java b/src/main/java/com/mzl/flower/web/customer/SalesCustomerController.java
index 8be1b94..c93617b 100644
--- a/src/main/java/com/mzl/flower/web/customer/SalesCustomerController.java
+++ b/src/main/java/com/mzl/flower/web/customer/SalesCustomerController.java
@@ -59,7 +59,7 @@
     @ApiImplicitParams({
             @ApiImplicitParam(name = "id", value = "售后id", required = true, dataType = "String", paramType = "query")
     })
-    public ResponseEntity<ReturnDataDTO<OrderSalesDTO>> cancelSales(String id){
+    public ResponseEntity<ReturnDataDTO<?>> cancelSales(String id){
         salesService.cancelSales(id);
         return returnData(R.SUCCESS.getCode(), null);
     }
diff --git a/src/main/java/com/mzl/flower/web/payment/SalesController.java b/src/main/java/com/mzl/flower/web/payment/SalesController.java
index ad5bf04..747a231 100644
--- a/src/main/java/com/mzl/flower/web/payment/SalesController.java
+++ b/src/main/java/com/mzl/flower/web/payment/SalesController.java
@@ -8,7 +8,8 @@
 import com.mzl.flower.constant.Constants;
 import com.mzl.flower.dto.request.payment.*;
 import com.mzl.flower.dto.response.payment.OrderItemSalesNewDTO;
-import com.mzl.flower.dto.response.payment.OrderSalesListDTO;
+import com.mzl.flower.dto.response.payment.OrderItemSalesNewListDTO;
+import com.mzl.flower.dto.response.payment.OrderStatusCountDTO;
 import com.mzl.flower.entity.payment.OrderItem;
 import com.mzl.flower.service.payment.OrderItemSalesService;
 import com.mzl.flower.service.payment.OrderItemSettlementService;
@@ -21,6 +22,8 @@
 import org.springframework.http.ResponseEntity;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 @RestController
 @RequestMapping("/api/sales")
@@ -35,9 +38,15 @@
     @Autowired
     private OrderItemSettlementService orderItemSettlementService;
 
+    @GetMapping("/status/count")
+    @ApiOperation(value = "获取状态数量")
+    public ResponseEntity<ReturnDataDTO<List<OrderStatusCountDTO>>> getSalesStatusCount(OrderItemSalesQueryDTO dto){
+        return returnData(R.SUCCESS.getCode(), salesService.getSalesStatusCount(dto));
+    }
+
     @GetMapping("/list")
     @ApiOperation(value = "查询售后列表")
-    public ResponseEntity<ReturnDataDTO<Page<OrderSalesListDTO>>> selectSalesList(Page page
+    public ResponseEntity<ReturnDataDTO<Page<OrderItemSalesNewListDTO>>> selectSalesList(Page page
             , OrderItemSalesQueryDTO dto){
         return returnData(R.SUCCESS.getCode(), salesService.selectSalesList(page, dto));
     }
diff --git a/src/main/resources/mapper/payment/OrderItemSalesMapper.xml b/src/main/resources/mapper/payment/OrderItemSalesMapper.xml
index c42e997..bf47555 100644
--- a/src/main/resources/mapper/payment/OrderItemSalesMapper.xml
+++ b/src/main/resources/mapper/payment/OrderItemSalesMapper.xml
@@ -2,6 +2,70 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="com.mzl.flower.mapper.payment.OrderItemSalesMapper">
 
+    <select id="getSalesStatusCount" resultType="com.mzl.flower.dto.response.payment.OrderStatusCountDTO">
+        SELECT si.status value, count(1) orderCount
+        FROM t_order_item_sales si
+        join t_order_item oi on oi.id = si.order_item_id
+        join t_order o on si.order_id = o.id
+        WHERE oi.deleted = 0
+        <if test="condition.orderId != null and condition.orderId != ''">
+            AND si.order_id = #{condition.orderId}
+        </if>
+
+        <if test="condition.flowerName != null and condition.flowerName != ''">
+            AND oi.flower_name LIKE concat('%', #{condition.flowerName},'%')
+        </if>
+
+        <if test="condition.orderNo != null and condition.orderNo != ''">
+            AND o.order_no LIKE concat('%', #{condition.orderNo},'%')
+        </if>
+
+        <if test="condition.salesNo != null and condition.salesNo != ''">
+            AND si.sales_no LIKE concat('%', #{condition.salesNo},'%')
+        </if>
+
+        <if test="condition.customer != null and condition.customer != ''">
+            AND o.customer LIKE concat('%', #{condition.customer},'%')
+        </if>
+
+        <if test="condition.customerTel != null and condition.customerTel != ''">
+            AND o.customer_tel LIKE concat('%', #{condition.customerTel},'%')
+        </if>
+
+        <if test="condition.supplierName != null and condition.supplierName != ''">
+            AND oi.supplier_name LIKE concat('%', #{condition.supplierName},'%')
+        </if>
+
+        <if test="condition.orderStartDate != null">
+            AND oi.create_time &gt;= #{condition.createStartDate}
+        </if>
+        <if test="condition.orderEndDate != null">
+            AND oi.create_time &lt;= #{condition.createEndDate}
+        </if>
+
+        <if test="condition.salesStartDate != null">
+            AND si.create_time &gt;= #{condition.createStartDate}
+        </if>
+        <if test="condition.salesEndDate != null">
+            AND si.create_time &lt;= #{condition.createEndDate}
+        </if>
+
+        <if test="condition.status != null and condition.status != ''">
+            AND si.status = #{condition.status}
+        </if>
+
+        <if test="condition.createBy != null and condition.createBy != ''">
+            AND si.create_by = #{condition.createBy}
+        </if>
+        <if test="condition.partnerId != null">
+            AND o.partner_id = #{condition.partnerId}
+        </if>
+        <if test="condition.supplierId != null">
+            AND oi.supplier_id = #{condition.supplierId}
+        </if>
+
+        GROUP BY si.status
+    </select>
     <select id="selectItemSalesList" resultType="com.mzl.flower.dto.response.payment.OrderItemSalesNewListDTO">
         SELECT si.id, s.name stationName, oi.flower_name, oi.flower_unit, oi.flower_color, oi.flower_cover
             , oi.flower_level, oi.flower_category, o.customer, o.customer_tel, o.customer_province, o.customer_city

--
Gitblit v1.9.3