From 4d4956223483a5a6cffec1abb144a51d2780a363 Mon Sep 17 00:00:00 2001
From: Cui Zhi Feng <cuizf@fengyuntec.com>
Date: 星期日, 08 九月 2024 16:21:46 +0800
Subject: [PATCH] 订单打印查询

---
 src/main/java/com/mzl/flower/web/payment/OrderController.java                    |    7 ++
 src/main/java/com/mzl/flower/dto/response/payment/OrderItemLocationListDTO.java  |   15 +++++
 src/main/java/com/mzl/flower/service/payment/OrderService.java                   |   68 ++++++++++++++++++++++
 src/main/java/com/mzl/flower/dto/response/payment/OrderCheckListDTO.java         |    4 +
 src/main/java/com/mzl/flower/dto/response/payment/OrderCheckLocationListDTO.java |   43 ++++++++++++++
 src/main/resources/mapper/payment/OrderMapper.xml                                |    2 
 6 files changed, 138 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/mzl/flower/dto/response/payment/OrderCheckListDTO.java b/src/main/java/com/mzl/flower/dto/response/payment/OrderCheckListDTO.java
index 24c9cbc..2ba18f0 100644
--- a/src/main/java/com/mzl/flower/dto/response/payment/OrderCheckListDTO.java
+++ b/src/main/java/com/mzl/flower/dto/response/payment/OrderCheckListDTO.java
@@ -15,9 +15,13 @@
 
     private String partnerName;//合伙人名称
 
+    private Long warehouseId;//仓库id
+
     @ApiModelProperty(value = "仓库名称")
     private String warehouseName;
 
+    private Long warehouseLocationId;//库位id
+
     @ApiModelProperty(value = "库位名称")
     private String warehouseLocationCode;
 
diff --git a/src/main/java/com/mzl/flower/dto/response/payment/OrderCheckLocationListDTO.java b/src/main/java/com/mzl/flower/dto/response/payment/OrderCheckLocationListDTO.java
new file mode 100644
index 0000000..f1f14bd
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/response/payment/OrderCheckLocationListDTO.java
@@ -0,0 +1,43 @@
+package com.mzl.flower.dto.response.payment;
+
+import com.mzl.flower.base.AbstractTransDTO;
+import com.mzl.flower.base.annotation.DictTrans;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class OrderCheckLocationListDTO extends AbstractTransDTO {
+    private Long partnerId;//合伙人id
+
+    private String partnerName;//合伙人名称
+
+    private Long warehouseId;//仓库id
+
+    @ApiModelProperty(value = "仓库名称")
+    private String warehouseName;
+
+    private Long warehouseLocationId;//库位id
+
+    @ApiModelProperty(value = "库位名称")
+    private String warehouseLocationCode;
+
+    @ApiModelProperty(value = "收货人")
+    private String customer;
+
+    @ApiModelProperty(value = "收货人手机号码")
+    private String customerTel;
+
+    private String customerProvince;
+    private String customerCity;
+    private String customerRegion;
+
+    @ApiModelProperty(value = "收货地址")
+    private String customerAddress;
+
+    @ApiModelProperty(value = "明细")
+    private List<OrderItemLocationListDTO> items;
+
+    private String createBy;
+}
diff --git a/src/main/java/com/mzl/flower/dto/response/payment/OrderItemLocationListDTO.java b/src/main/java/com/mzl/flower/dto/response/payment/OrderItemLocationListDTO.java
new file mode 100644
index 0000000..a133078
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/response/payment/OrderItemLocationListDTO.java
@@ -0,0 +1,15 @@
+package com.mzl.flower.dto.response.payment;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+@Data
+public class OrderItemLocationListDTO extends OrderItemListDTO {
+    @ApiModelProperty(value = "订单id")
+    private String orderId;
+
+    @ApiModelProperty(value = "订单号")
+    private String orderNo;
+
+}
diff --git a/src/main/java/com/mzl/flower/service/payment/OrderService.java b/src/main/java/com/mzl/flower/service/payment/OrderService.java
index dcbfd74..e840003 100644
--- a/src/main/java/com/mzl/flower/service/payment/OrderService.java
+++ b/src/main/java/com/mzl/flower/service/payment/OrderService.java
@@ -756,6 +756,74 @@
         return ls;
     }
 
+    public List<OrderCheckLocationListDTO> selectOrderCheckLocationList(OrderQueryDTO dto) {
+        dto.setIdList(splitParam(dto.getIds()));
+        dto.setStartDate(parseLocalDateTime(dto.getStartDateStr(), true));
+        dto.setEndDate(parseLocalDateTime(dto.getEndDateStr(), false));
+
+        dto.setCreateStartDate(parseLocalDateTime(dto.getCreateStartDateStr(), 17, 0, 0, -1));
+        dto.setCreateEndDate(parseLocalDateTime(dto.getCreateEndDateStr(), 17, 0, 0, 0));
+
+        List<OrderCheckListDTO> ls = orderMapper.selectOrderCheckList(dto);
+
+        List<OrderCheckLocationListDTO> result = new ArrayList<>();
+
+        if (ls != null && ls.size() > 0) {
+            List<String> orderIds = new ArrayList<>();
+            Map<Long, OrderCheckLocationListDTO> rMap = new HashMap<>();
+            Map<String, OrderCheckListDTO> orderMap = new HashMap<>();
+            for (OrderCheckListDTO c : ls) {
+                orderIds.add(c.getId());
+
+                orderMap.put(c.getId(), c);
+
+                Long locationId = c.getWarehouseLocationId();
+                OrderCheckLocationListDTO llc = rMap.get(locationId);
+                if(llc == null){
+                    llc = new OrderCheckLocationListDTO();
+                    BeanUtils.copyProperties(c, llc);
+                    rMap.put(locationId, llc);
+
+                    result.add(llc);
+                }
+            }
+
+            Map<Long, String> stationMap = prepareStationMap();
+
+            List<OrderItem> itemList = orderItemMapper.selectList(new QueryWrapper<OrderItem>()
+                    .in("order_id", orderIds));
+            Map<String, List<OrderItemLocationListDTO>> map = new HashMap<>();
+
+            for (OrderItem oi : itemList) {
+                String orderId = oi.getOrderId();
+                List<OrderItemLocationListDTO> ll = map.computeIfAbsent(orderId, k -> new ArrayList<>());
+                OrderItemLocationListDTO d = new OrderItemLocationListDTO();
+                BeanUtils.copyProperties(oi, d);
+                d.setStationName(stationMap.get(oi.getStationId()));
+
+                OrderCheckListDTO c = orderMap.get(oi.getOrderId());
+                d.setOrderNo(c.getOrderNo());
+                d.setOrderId(c.getId());
+
+                ll.add(d);
+            }
+
+            for (OrderCheckListDTO c : ls) {
+                String orderId = c.getId();
+                Long locationId = c.getWarehouseLocationId();
+                OrderCheckLocationListDTO r = rMap.get(locationId);
+                List<OrderItemLocationListDTO> items = r.getItems();
+                if(items == null){
+                    items = new ArrayList<>();
+                    r.setItems(items);
+                }
+                items.addAll(map.get(orderId));
+            }
+        }
+
+        return result;
+    }
+
     public Page<OrderListDTO> selectPartnerOrderList(Page page, OrderQueryDTO dto) {
         Partner p = getCurrentPartner();
         dto.setPartnerId(p.getId());
diff --git a/src/main/java/com/mzl/flower/web/payment/OrderController.java b/src/main/java/com/mzl/flower/web/payment/OrderController.java
index a523e87..0600857 100644
--- a/src/main/java/com/mzl/flower/web/payment/OrderController.java
+++ b/src/main/java/com/mzl/flower/web/payment/OrderController.java
@@ -163,6 +163,13 @@
         return returnData(R.SUCCESS.getCode(), orderService.selectOrderCheckList(dto));
     }
 
+    @PostMapping("/check/location/list")
+    @ApiOperation(value = "查询订单清单列表-按库位分商品")
+    public ResponseEntity<ReturnDataDTO<List<OrderCheckLocationListDTO>>> selectOrderCheckLocationList(
+            @RequestBody OrderQueryDTO dto){
+        return returnData(R.SUCCESS.getCode(), orderService.selectOrderCheckLocationList(dto));
+    }
+
     @GetMapping(value = "/refund")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "id", value = "订单id", required = true, dataType = "String", paramType = "query"),
diff --git a/src/main/resources/mapper/payment/OrderMapper.xml b/src/main/resources/mapper/payment/OrderMapper.xml
index 00fe0c3..c0be05f 100644
--- a/src/main/resources/mapper/payment/OrderMapper.xml
+++ b/src/main/resources/mapper/payment/OrderMapper.xml
@@ -201,7 +201,7 @@
             </foreach>
         </if>
 
-        ORDER BY q.partner_id, q.warehouse_name, q.warehouse_location_code, q.create_time desc, q.payment_time desc
+        ORDER BY q.partner_id DESC, q.warehouse_id, q.warehouse_location_id, q.create_time desc, q.payment_time desc
     </select>
 
     <select id="getSupplierSaleNum" resultType="com.mzl.flower.dto.response.payment.SupplierNumDTO">

--
Gitblit v1.9.3