From 55db77e61e5a55c30dc19d599dadcfc1469c962e Mon Sep 17 00:00:00 2001
From: gongzuming <gongzuming>
Date: 星期日, 08 九月 2024 16:13:24 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master-v2
---
src/main/java/com/mzl/flower/schedule/WarehouseScheduleService.java | 46 +++++++++++++++-------
src/main/java/com/mzl/flower/dto/response/warehouse/WarehouseLocationDTO.java | 4 +-
src/main/java/com/mzl/flower/dto/response/payment/OrderDTO.java | 2 +
src/main/java/com/mzl/flower/service/warehouse/WarehouseService.java | 26 +++++++-----
4 files changed, 50 insertions(+), 28 deletions(-)
diff --git a/src/main/java/com/mzl/flower/dto/response/payment/OrderDTO.java b/src/main/java/com/mzl/flower/dto/response/payment/OrderDTO.java
index 5b64837..7ae63c5 100644
--- a/src/main/java/com/mzl/flower/dto/response/payment/OrderDTO.java
+++ b/src/main/java/com/mzl/flower/dto/response/payment/OrderDTO.java
@@ -162,4 +162,6 @@
@ApiModelProperty(value = "优惠金额(每扎)")
private BigDecimal memberDiscountAmount;
+
+ private List<OrderItemListDTO> items;
}
diff --git a/src/main/java/com/mzl/flower/dto/response/warehouse/WarehouseLocationDTO.java b/src/main/java/com/mzl/flower/dto/response/warehouse/WarehouseLocationDTO.java
index c5fb855..98d2fc9 100644
--- a/src/main/java/com/mzl/flower/dto/response/warehouse/WarehouseLocationDTO.java
+++ b/src/main/java/com/mzl/flower/dto/response/warehouse/WarehouseLocationDTO.java
@@ -28,7 +28,7 @@
@ApiModelProperty("是否已占用")
private Boolean used;
- private OrderDTO orderDTO;
+ private List<OrderDTO> orderDTO;
- private List<OrderItemListDTO> items;
+
}
diff --git a/src/main/java/com/mzl/flower/schedule/WarehouseScheduleService.java b/src/main/java/com/mzl/flower/schedule/WarehouseScheduleService.java
index 6790866..1c7f2a5 100644
--- a/src/main/java/com/mzl/flower/schedule/WarehouseScheduleService.java
+++ b/src/main/java/com/mzl/flower/schedule/WarehouseScheduleService.java
@@ -34,25 +34,25 @@
/**
* 每天17点,定时分配订单库位(查询前一天17点到今天17点支付完成且未分配库位的订单)
*/
- @Scheduled(cron = "0 0 17 * * ?")
+ @Scheduled(cron = "0 35 15 * * ?")
public void allocatedWarehouseLocation() {
log.info("定时分配订单库位开始:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
//查询当日待分配的订单
List<Order> orders = orderService.selectPaymentOrderList();
if(orders!=null && orders.size()>0){
//订单按照合伙人分组排序
- Map<Long,List<String>> partnerOrders = new HashMap<>();
- List<String> customerOrders = new ArrayList<>();
+ Map<Long,List<Order>> partnerOrders = new HashMap<>();
+ List<Order> customerOrders = new ArrayList<>();
for (Order order : orders) {
Long partnerId = order.getPartnerId();
if(partnerId==null || partnerId==0){ //非合伙人订单
- customerOrders.add(order.getId());
+ customerOrders.add(order);
}else{ //合伙人订单
if(partnerOrders.containsKey(partnerId)){
- partnerOrders.get(partnerId).add(order.getId());
+ partnerOrders.get(partnerId).add(order);
}else{
- List<String> orderIds = new ArrayList<>();
- orderIds.add(order.getId());
+ List<Order> orderIds = new ArrayList<>();
+ orderIds.add(order);
partnerOrders.put(partnerId,orderIds);
}
}
@@ -61,14 +61,22 @@
//查询库位队列信息
Queue<WarehouseLocationDTO> locations = warehouseService.selectAllocatedWarehouseLocation();
if(locations!=null && locations.size()>0){
+ Map<String, WarehouseLocationDTO> partnerLocationMap = new HashMap<>();
if(partnerOrders!=null && partnerOrders.size()>0 ){ //合伙人订单
for (Long partnerId : partnerOrders.keySet()) {
- List<String> orderIds = partnerOrders.get(partnerId);
- for (String orderId : orderIds) {
+ List<Order> orderIds = partnerOrders.get(partnerId);
+ for (Order order : orderIds) {
if(locations!=null && locations.size()>0){
- WarehouseLocationDTO location = locations.poll();
- orderService.allocatedWarehouseLocation(orderId, location.getWarehouseId(),
- location.getWarehouseName(),location.getId(), location.getCode());
+ String key = order.getCreateBy()+"||"+order.getCustomerAddress();
+ WarehouseLocationDTO location = null;
+ if(partnerLocationMap.containsKey(key)){
+ location = partnerLocationMap.get(key);
+ } else {
+ location = locations.poll();
+ partnerLocationMap.put(key,location);
+ }
+ orderService.allocatedWarehouseLocation(order.getId(), location.getWarehouseId(),
+ location.getWarehouseName(), location.getId(), location.getCode());
}
}
if(locations!=null && locations.size()>0){ //两个合伙人之间空一个库位
@@ -77,10 +85,18 @@
}
}
if(customerOrders!=null && customerOrders.size()>0){ //散户订单
- for (String orderId : customerOrders) {
+ for (Order order : customerOrders) {
+ Map<String, WarehouseLocationDTO> customerLocationMap = new HashMap<>();
if(locations!=null && locations.size()>0){
- WarehouseLocationDTO location = locations.poll();
- orderService.allocatedWarehouseLocation(orderId, location.getWarehouseId(),
+ String key = order.getCreateBy()+"||"+order.getCustomerAddress();
+ WarehouseLocationDTO location = null;
+ if(customerLocationMap.containsKey(key)){
+ location = customerLocationMap.get(key);
+ } else {
+ location = locations.poll();
+ customerLocationMap.put(key,location);
+ }
+ orderService.allocatedWarehouseLocation(order.getId(), location.getWarehouseId(),
location.getWarehouseName(),location.getId(), location.getCode());
}
}
diff --git a/src/main/java/com/mzl/flower/service/warehouse/WarehouseService.java b/src/main/java/com/mzl/flower/service/warehouse/WarehouseService.java
index 98a13de..c939f09 100644
--- a/src/main/java/com/mzl/flower/service/warehouse/WarehouseService.java
+++ b/src/main/java/com/mzl/flower/service/warehouse/WarehouseService.java
@@ -22,6 +22,7 @@
import java.time.LocalDate;
import java.time.LocalDateTime;
+import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
@@ -125,15 +126,13 @@
public List<WarehouseLocationDTO> queryWarehouseLocation(Long warehouseId, String code) {
List<WarehouseLocationDTO> locations = warehouseLocationMapper.findAll(warehouseId, code);
for (WarehouseLocationDTO location : locations) {
- OrderDTO orderDTO = getOrderByWarehouseLocation(location.getId());
- if(orderDTO == null){
+ List<OrderDTO> orderDTOs = getOrderByWarehouseLocation(location.getId());
+ if(orderDTOs == null || orderDTOs.size()==0){
location.setUsed(false);
}else{
- location.setItems(orderService.getPtCuOrderItems(orderDTO.getId()));
location.setUsed(true);
}
- location.setOrderDTO(orderDTO);
-
+ location.setOrderDTO(orderDTOs);
}
return locations;
}
@@ -142,16 +141,21 @@
* 查询库位订单信息
*
*/
- public OrderDTO getOrderByWarehouseLocation(Long warehouseLocationId){
+ public List<OrderDTO> getOrderByWarehouseLocation(Long warehouseLocationId){
LocalDateTime start = LocalDate.now().plusDays(-1).atTime(17, 0, 0);
LocalDateTime end = LocalDate.now().atTime(16, 59, 59);
- Order order = orderMapper.selectOne(new QueryWrapper<Order>().eq("deleted", 0)
+ List<Order> orders = orderMapper.selectList(new QueryWrapper<Order>().eq("deleted", 0)
.eq("warehouse_location_id", warehouseLocationId)
.gt("payment_time", start).le("payment_time", end));
- if(order!=null){
- OrderDTO dto = new OrderDTO();
- BeanUtils.copyProperties(order, dto);
- return dto;
+ if(orders!=null && orders.size()>0){
+ List<OrderDTO> dtos = new ArrayList<>();
+ for (Order order : orders) {
+ OrderDTO dto = new OrderDTO();
+ BeanUtils.copyProperties(order, dto);
+ dto.setItems(orderService.getPtCuOrderItems(dto.getId()));
+ dtos.add(dto);
+ }
+ return dtos;
}
return null;
}
--
Gitblit v1.9.3