gongzuming
2024-11-12 24f7f046f8854d63839ad52d0cff34ea45a0f449
src/main/java/com/mzl/flower/schedule/WarehouseScheduleService.java
@@ -41,18 +41,18 @@
        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) {
                        Map<String, WarehouseLocationDTO> customerLocationMap = new HashMap<>();
                        for (Order order : customerOrders) {
                            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());
                            }
                        }
@@ -94,7 +110,7 @@
    /**
     * 每天凌晨2点,合伙人发货
     */
    @Scheduled(cron = "0 0 2 * * ?")
    @Scheduled(cron = "0 0 4 * * ?")
    public void clearWarehouseLocation() {
        log.info("定时合伙人发货开始:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
        orderService.setPartnerOrderSend();