Преглед изворни кода

Merge remote-tracking branch 'origin/dev_20260131_youshen430' into dev_20260131_youshen430

donglang пре 3 недеља
родитељ
комит
fd0448423c

+ 4 - 1
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/SalesReportRawData.java

@@ -9,10 +9,13 @@ import java.math.BigDecimal;
  */
 @Data
 public class SalesReportRawData {
+    private Integer chargeType;
+    private BigDecimal loadAmount;
+    private BigDecimal unloadAmount;
     private Long customerId;
     private String customerName;
     private Long goodsId;
     private BigDecimal amount;
     private BigDecimal price;
     private String createTime;
-}
+}

+ 4 - 3
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderStatisticsService.java

@@ -366,7 +366,8 @@ public class KwoTradeOrderStatisticsService {
             }
             Long customerId = rawData.getCustomerId();
             // 金额/数量判空处理
-            BigDecimal amount = rawData.getAmount() != null ? rawData.getAmount() : BigDecimal.ZERO;
+            BigDecimal amount = Objects.equals(rawData.getChargeType(), 1) ? rawData.getLoadAmount() : rawData.getUnloadAmount();
+            amount = Objects.isNull(amount) ? BigDecimal.ZERO : amount;
             BigDecimal price = rawData.getPrice() != null ? rawData.getPrice() : BigDecimal.ZERO;
             String createTimeStr = rawData.getCreateTime();
             if (createTimeStr == null) {
@@ -404,7 +405,7 @@ public class KwoTradeOrderStatisticsService {
             }
 
             // 累计数据(createTime <= endTime)
-            if (createTime.compareTo(endDateTime) <= 0) {
+            if (createTime.isBefore(endDateTime)) {
                 vo.setCumulativeQuantity(vo.getCumulativeQuantity().add(amount));
                 vo.setCumulativeAmount(vo.getCumulativeAmount().add(price));
                 if (vo.getCumulativeQuantity().compareTo(BigDecimal.ZERO) > 0) {
@@ -420,7 +421,7 @@ public class KwoTradeOrderStatisticsService {
                         vo.setAveragePrice(vo.getSalesAmount()
                                 .divide(vo.getSalesQuantity(), 2, RoundingMode.HALF_UP));
                     }
-                } else if (createTime.compareTo(startDateTime) >= 0) {
+                } else if (createTime.isAfter(startDateTime)) {
                     vo.setSalesQuantity(vo.getSalesQuantity().add(amount));
                     vo.setSalesAmount(vo.getSalesAmount().add(price));
                     if (vo.getSalesQuantity().compareTo(BigDecimal.ZERO) > 0) {

+ 45 - 1
sckw-modules/sckw-order/src/main/java/com/sckw/order/task/TradeOrderTask.java

@@ -4,17 +4,20 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.NumberUtil;
 import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.exception.BusinessException;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.enums.LogisticsOrderV1Enum;
 import com.sckw.core.utils.DateUtils;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.BaseResult;
+import com.sckw.order.api.model.TradeOrderDto;
 import com.sckw.order.dao.KwoTradeOrderGoodsMapper;
 import com.sckw.order.dao.KwoTradeOrderMapper;
 import com.sckw.order.dao.KwoTradeOrderUnitMapper;
 import com.sckw.order.enums.TradeOrderStatusEnum;
 import com.sckw.order.model.KwoTradeOrder;
+import com.sckw.order.model.KwoTradeOrderArchive;
 import com.sckw.order.model.KwoTradeOrderGoods;
 import com.sckw.order.model.KwoTradeOrderUnit;
 import com.sckw.order.serivce.KwoTradeOrderArchiveService;
@@ -22,7 +25,9 @@ import com.sckw.payment.api.dubbo.PaymentDubboService;
 import com.sckw.payment.api.feign.PaymentFeignService;
 import com.sckw.payment.api.model.feign.WalletPrepaidDto;
 import com.sckw.product.api.dubbo.GoodsInfoService;
+import com.sckw.product.api.model.KwpGoods;
 import com.sckw.system.api.RemoteSystemService;
+import com.sckw.system.api.model.dto.res.DictProduct;
 import com.sckw.transport.api.dubbo.TransportRemoteService;
 import com.sckw.transport.api.model.param.OrderFinishParam;
 import com.sckw.transport.api.model.vo.KwtLogisticsOrderVO;
@@ -34,7 +39,10 @@ import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
 import java.math.BigDecimal;
-import java.util.*;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
@@ -69,6 +77,42 @@ public class TradeOrderTask {
     private PaymentFeignService paymentFeignService;
     private final ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 2, 1, TimeUnit.MINUTES, new LinkedBlockingQueue<>(20));
 
+    @Scheduled(cron = "0 0/10 * * * ?")
+    public void task2() {
+        List<TradeOrderDto> tradeOrderDtos = kwoTradeOrderMapper.joinSelect();
+        if (CollUtil.isNotEmpty(tradeOrderDtos)) {
+            Map<String, Map<String, String>> dict = remoteSystemService.queryDictByType(List.of(DictTypeEnum.GOODS_SPEC.getType()));
+            Map<String, String> goodsSpecMap = dict.get(DictTypeEnum.GOODS_SPEC.getType());
+
+            Map<Long, KwpGoods> goodsByIds = goodsInfoService.getGoodsByIds(tradeOrderDtos.stream().map(TradeOrderDto::getGoodsId).toList());
+            List<KwoTradeOrderArchive> list = tradeOrderDtos.stream().map(d -> {
+                KwoTradeOrderArchive kwoTradeOrderArchive = new KwoTradeOrderArchive();
+                kwoTradeOrderArchive.setTradeOrderId(d.getId());
+                kwoTradeOrderArchive.setGoodsId(d.getGoodsId());
+                KwpGoods kwpGoods = goodsByIds.get(d.getGoodsId());
+                if (Objects.nonNull(kwpGoods)) {
+                    DictProduct dictProduct = remoteSystemService.queryProductName(kwpGoods.getGoodsType());
+                    if (Objects.nonNull(dictProduct)) {
+                        kwoTradeOrderArchive.setProductName(dictProduct.getLabel());
+                    }
+                    kwoTradeOrderArchive.setProductSpec(goodsSpecMap.get(kwpGoods.getSpec()));
+                }
+
+                kwoTradeOrderArchive.setUnitPrice(d.getUnitPrice());
+                kwoTradeOrderArchive.setAmount(d.getAmount());
+                return kwoTradeOrderArchive;
+
+            }).toList();
+            kwoTradeOrderArchiveService.saveBatch(list);
+            for (TradeOrderDto tradeOrderDto : tradeOrderDtos) {
+                KwoTradeOrder kwoTradeOrder = new KwoTradeOrder();
+                kwoTradeOrder.setId(tradeOrderDto.getId());
+                kwoTradeOrder.setArchiveFlag(1);
+                kwoTradeOrderMapper.updateById(kwoTradeOrder);
+            }
+        }
+    }
+
     @Scheduled(cron = "0 0/5 * * * ?")
     public void task() {
         log.info("定时任务");

+ 11 - 1
sckw-modules/sckw-order/src/main/resources/mapper/KwoTradeOrderMapper.xml

@@ -867,7 +867,11 @@
     </select>
 
     <select id="querySalesReportRawData" resultType="com.sckw.order.model.SalesReportRawData">
-        select d.ent_id as customerId,
+        select
+               kto.charge_type as chargeType,
+               kto.load_amount as loadAmount,
+               kto.unload_amount as unloadAmount,
+               d.ent_id as customerId,
                d.firm_name as customerName,
                ktog.goods_id as goodsId,
                kto.amount as amount,
@@ -1011,9 +1015,11 @@
                d.firm_name                                 entName
         from kwo_trade_order kto
                  inner JOIN kwo_trade_order_unit d ON kto.id = d.t_order_id AND d.unit_type = '1' AND d.del_flag = 0
+                inner join kwo_trade_order_unit ku on kto.id = ku.t_order_id and ku.unit_type = '2' and ku.del_flag = 0
         <where>
             kto.del_flag = 0
               and kto.status = 4
+            and ku.ent_id in (538038314096136193,538039617157337089,538040297439891457)
             group by kto.id,
                      d.firm_name
         </where>
@@ -1023,9 +1029,11 @@
         select
         sum(kto.price)                           as amount
         from kwo_trade_order kto
+        inner join kwo_trade_order_unit ku on kto.id = ku.t_order_id and ku.unit_type = '2' and ku.del_flag = 0
         <where>
             kto.del_flag = 0
             and kto.status = 4
+            and ku.ent_id in (538038314096136193,538039617157337089,538040297439891457)
         </where>
     </select>
 
@@ -1036,10 +1044,12 @@
                ktog.unit_price
         from kwo_trade_order kto
                  inner join kwo_trade_order_goods ktog on kto.id = ktog.t_order_id and ktog.del_flag = 0
+        inner join kwo_trade_order_unit ku on kto.id = ku.t_order_id and ku.unit_type = '2' and ku.del_flag = 0
         <where>
             kto.del_flag = 0
               and kto.archive_flag != 1
               and kto.status = 4
+              and ku.ent_id in (538038314096136193,538039617157337089,538040297439891457)
             limit 20
         </where>
     </select>

+ 2 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtWaybillOrderV1Mapper.java

@@ -10,6 +10,7 @@ import com.sckw.transport.model.vo.*;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Map;
 
@@ -167,6 +168,6 @@ public interface KwtWaybillOrderV1Mapper extends BaseMapper<KwtWaybillOrderV1> {
      */
     int findWaybillOrderCountByLOrderId(@Param("lOrderId") Long lOrderId);
 
-    WaybillOrderSaleDto saleSum(@Param("list") List<String> list);
+    WaybillOrderSaleDto saleSum(@Param("list") List<String> list, @Param("date")LocalDateTime date,@Param("end")LocalDateTime end);
 
 }

+ 99 - 5
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtLogisticsConsignmentService.java

@@ -3234,6 +3234,12 @@ public class KwtLogisticsConsignmentService {
             // logisticsOrderResp.setLoadAmount(loadAmount.setScale(2, RoundingMode.HALF_UP).toPlainString() + kwtLogisticsOrder.getUnit());
             logisticsOrderResp.setUnloadAmount(unloadAmount.setScale(2, RoundingMode.HALF_UP).toPlainString() +"吨");
             logisticsOrderResp.setLoadAmount(loadAmount.setScale(2, RoundingMode.HALF_UP).toPlainString() +"吨");
+
+            //设置余量
+            BigDecimal orderSurplus = getRaworeSupAmount(kwtLogisticsOrder, tradeIdAndOrderDetailVoMap, tradeIdAndLogOrderList,
+                    logisticsOrderIdAndSubtaskList, waybillOrderIdAndTicketList);
+            logisticsOrderResp.setOrderSurplus(orderSurplus.toPlainString() + "吨");
+            logisticsOrderResp.setRemainingAmount(orderSurplus);
         }else {
             log.info("订单类型不为1,普通订单");
             if (org.apache.commons.lang3.StringUtils.equals(kwtLogisticsOrder.getBillingMode(),
@@ -3263,6 +3269,11 @@ public class KwtLogisticsConsignmentService {
                 //logisticsOrderResp.setActualTransportPrice(transportPrice.setScale(2, RoundingMode.HALF_UP).toPlainString() + priceUnit);
             }
             logisticsOrderResp.setLoadAmount(loadAmount.setScale(2, RoundingMode.HALF_UP).toPlainString() + kwtLogisticsOrder.getUnit());
+            //设置余量
+            BigDecimal orderSurplus = getSupAmount(kwtLogisticsOrder.getTOrderId(), tradeIdAndOrderDetailVoMap, tradeIdAndLogOrderList,
+                    logisticsOrderIdAndSubtaskList, waybillOrderIdAndTicketList);
+            logisticsOrderResp.setOrderSurplus(orderSurplus.toPlainString() + kwtLogisticsOrder.getUnit());
+            logisticsOrderResp.setRemainingAmount(orderSurplus);
         }
         logisticsOrderResp.setActualTransportPrice(transportPrice.setScale(2, RoundingMode.HALF_UP).toPlainString() + priceUnit);
 //        logisticsOrderResp.setActualTransportPrice(actualTransportPrice.setScale(2, RoundingMode.HALF_UP).toPlainString() + priceUnit);
@@ -3287,11 +3298,7 @@ public class KwtLogisticsConsignmentService {
         logisticsOrderResp.setCreateTime(DateUtils.format(kwtLogisticsOrder.getCreateTime(), DateUtils.DATE_TIME_PATTERN));
         logisticsOrderResp.setStatus(String.valueOf(kwtLogisticsOrder.getStatus()));
         logisticsOrderResp.setStatusDesc(LogisticsOrderV1Enum.getDesc(kwtLogisticsOrder.getStatus()));
-        //设置余量
-        BigDecimal orderSurplus = getSupAmount(kwtLogisticsOrder.getTOrderId(), tradeIdAndOrderDetailVoMap, tradeIdAndLogOrderList,
-                logisticsOrderIdAndSubtaskList, waybillOrderIdAndTicketList);
-        logisticsOrderResp.setOrderSurplus(orderSurplus.toPlainString() + kwtLogisticsOrder.getUnit());
-        logisticsOrderResp.setRemainingAmount(orderSurplus);
+
         return logisticsOrderResp;
     }
 
@@ -3402,6 +3409,93 @@ public class KwtLogisticsConsignmentService {
         return surplus.setScale(2, RoundingMode.HALF_UP);
     }
 
+    private static BigDecimal getRaworeSupAmount(KwtLogisticsOrder kwtLogisticsOrder,
+                                           Map<Long, OrderDetailVo> tradeIdAndOrderDetailVoMap,
+                                           Map<Long, List<KwtLogisticsOrder>> tradeIdAndLogOrderList,
+                                           Map<Long, List<KwtWaybillOrderSubtask>> logisticsOrderIdAndSubtaskList,
+                                           Map<Long, List<KwtWaybillOrderTicket>> waybillOrderIdAndTicketList) {
+        log.debug("开始计算原矿订单余量,物流订单号: {}", kwtLogisticsOrder.getLOrderNo());
+
+        // 1. 获取贸易订单基础信息及总货物量
+        BigDecimal tradeAmount = Optional.ofNullable(kwtLogisticsOrder).map(KwtLogisticsOrder::getAmount).orElse(BigDecimal.ZERO);
+        log.debug("贸易订单总货物量: {}", tradeAmount);
+
+        // 2. 获取该贸易订单关联的所有物流订单
+        BigDecimal usedAmount = BigDecimal.ZERO;
+
+        if (Objects.nonNull(kwtLogisticsOrder)) {
+            log.debug("开始获取该贸易订单关联的所有物流订单");
+            Long logOrderId = kwtLogisticsOrder.getId();
+            // 获取当前物流订单下的所有子运单
+            List<KwtWaybillOrderSubtask> waybillOrderSubtasks = logisticsOrderIdAndSubtaskList.getOrDefault(logOrderId, Collections.emptyList());
+
+            if (CollectionUtils.isEmpty(waybillOrderSubtasks)) {
+                log.debug("物流订单 {} 下无子运单,跳过", logOrderId);
+                return BigDecimal.ZERO;
+            }
+
+            // 3. 根据计费模式确定磅单类型(装货或卸货)
+            // CHARGING_TYPE_1: 按装货量计费 -> 对应装货磅单 (SHIPMENT)
+            // CHARGING_TYPE_2: 按卸货量计费 -> 对应卸货磅单 (TAKE)
+            Integer ticketType;
+            String billingMode = kwtLogisticsOrder.getBillingMode();
+            if (org.apache.commons.lang3.StringUtils.equals(billingMode, DictEnum.CHARGING_TYPE_1.getValue())) {
+                ticketType = AddressTypeEnum.SHIPMENT.getCode();
+            } else if (org.apache.commons.lang3.StringUtils.equals(billingMode, DictEnum.CHARGING_TYPE_2.getValue())) {
+                ticketType = AddressTypeEnum.TAKE.getCode();
+            } else {
+                // 未知计费模式,记录警告并跳过该物流订单的计算,避免数据错误
+                log.warn("余量计算跳过未知计费模式, logOrderId:{}, billingMode:{}",
+                                 logOrderId, billingMode);
+                return BigDecimal.ZERO;
+            }
+
+            // 4. 计算子运单委托量总和
+            // 过滤条件:对象非空、状态非取消、委托量非空
+            List<Integer> statusList = Arrays.asList(CarWaybillV1Enum.COMPLETED.getCode(), CarWaybillV1Enum.CANCELLED.getCode());
+            BigDecimal entrustAmount = waybillOrderSubtasks.stream()
+                    .filter(Objects::nonNull)
+                    .filter(subtask -> !statusList.contains(subtask.getStatus()))
+                    .map(KwtWaybillOrderSubtask::getEntrustAmount)
+                    .filter(Objects::nonNull)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+
+            // 5. 计算磅单实际量总和
+            // 逻辑:子运单 -> 主运单ID -> 磅单列表 -> 过滤特定类型 -> 累加金额/数量
+            BigDecimal ticketAmount = waybillOrderSubtasks.stream()
+                    .filter(Objects::nonNull)
+                    .filter(subtask -> !Objects.equals(subtask.getStatus(), CarWaybillV1Enum.CANCELLED.getCode()))
+                    .map(KwtWaybillOrderSubtask::getWOrderId)
+                    .filter(Objects::nonNull)
+                    .flatMap(wOrderId -> waybillOrderIdAndTicketList.getOrDefault(wOrderId, Collections.emptyList()).stream())
+                    .filter(Objects::nonNull)
+                    // 只统计与计费模式匹配的磅单类型(装或卸)
+                    .filter(ticket -> Objects.equals(ticket.getType(), ticketType))
+                    .map(KwtWaybillOrderTicket::getAmount)
+                    .filter(Objects::nonNull)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+
+            // 累加当前物流订单的已使用量
+            BigDecimal currentUsed = entrustAmount.add(ticketAmount);
+            usedAmount = usedAmount.add(currentUsed);
+
+            log.debug("物流订单 {} 计算详情: 委托量={}, 磅单量={}, 计费类型={}",
+                    logOrderId, entrustAmount, ticketAmount, ticketType);
+        }
+
+        // 6. 计算最终余量:总量 - 已用量,若结果小于0则置为0
+        BigDecimal surplus = tradeAmount.subtract(usedAmount);
+        if (surplus.compareTo(BigDecimal.ZERO) <= 0) {
+            log.info("物流订单 {} 余量计算结果为负或零,重置为0。总量: {}, 已用: {}", kwtLogisticsOrder.getId(), tradeAmount, usedAmount);
+            surplus = BigDecimal.ZERO;
+        } else {
+            log.debug("物流订单 {} 余量计算正常。总量: {}, 已用: {}, 余量: {}",  kwtLogisticsOrder.getId(), tradeAmount, usedAmount, surplus);
+        }
+
+        // 保留两位小数,四舍五入
+        return surplus.setScale(2, RoundingMode.HALF_UP);
+    }
+
     public LogisticsOrderDetailResp getLogisticsOrderDetail(@Valid LogisticsOrderReq req) {
         KwtLogisticsOrder logisticsOrder =
                 logisticsOrderRepository.queryByLogisticsOrderId(Long.valueOf(req.getLogisticsOrderId()));

+ 15 - 10
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderV1Service.java

@@ -88,8 +88,10 @@ import org.springframework.web.bind.annotation.RequestParam;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.concurrent.*;
 import java.util.concurrent.atomic.AtomicReference;
@@ -3494,10 +3496,13 @@ public class KwtWaybillOrderV1Service {
     }
 
     public WaybillOrderSaleVo saleSum() {
+        LocalDate now = LocalDate.now();
+        LocalDateTime localDateTime = now.atStartOfDay();
+        LocalDateTime startOfTomorrow = now.plusDays(1).atStartOfDay();
         //石灰石
-        WaybillOrderSaleDto waybillOrderSaleDto = waybillOrderV1Dao.saleSum(List.of("002", "0001", "0002", "0003", "0004", "0005", "0006"));
+        WaybillOrderSaleDto waybillOrderSaleDto = waybillOrderV1Dao.saleSum(List.of("002", "0001", "0002", "0003", "0004", "0005", "0006"),localDateTime,startOfTomorrow);
         //氧化钙
-        WaybillOrderSaleDto waybillOrderSaleDto2 = waybillOrderV1Dao.saleSum(List.of("003", "0007", "0008", "0009"));
+        WaybillOrderSaleDto waybillOrderSaleDto2 = waybillOrderV1Dao.saleSum(List.of("003", "0007", "0008", "0009"),localDateTime,startOfTomorrow);
         WaybillOrderSaleVo waybillOrderSaleVo = new WaybillOrderSaleVo();
         waybillOrderSaleVo.setShsChl(Objects.nonNull(waybillOrderSaleDto) ? waybillOrderSaleDto.getChl() : BigDecimal.ZERO);
         waybillOrderSaleVo.setShsXsl(Objects.nonNull(waybillOrderSaleDto) ? waybillOrderSaleDto.getXsl() : BigDecimal.ZERO);
@@ -5720,7 +5725,7 @@ public class KwtWaybillOrderV1Service {
             log.debug("selectMinStatusEarliestNode: 节点列表为空,返回 null");
             return null;
         }
-        
+
         // 2. 提取最小原始状态码
         // 在同一阶段映射下,可能存在多个原始业务状态,取数值最小的作为基准(通常代表初始状态)
         Integer minStatus = nodes.stream()
@@ -5728,35 +5733,35 @@ public class KwtWaybillOrderV1Service {
                 .filter(Objects::nonNull)
                 .min(Integer::compareTo)
                 .orElse(null);
-                
+
         if (Objects.isNull(minStatus)) {
             log.warn("selectMinStatusEarliestNode: 无法从节点列表中提取有效的最小状态码,节点数量: {}", nodes.size());
             return null;
         }
         log.debug("selectMinStatusEarliestNode: 提取到最小状态码: {}", minStatus);
-        
+
         // 3. 筛选具有最小状态码且创建时间最早的节点
         WaybillOrderNodeVo.WaybillOrderNode selected = nodes.stream()
                 .filter(node -> Objects.equals(node.getOrderStatus(), minStatus))
                 .min(Comparator.comparing(node -> parseWaybillNodeCreateTime(node.getCreateTime())))
                 .orElse(null);
-                
+
         if (Objects.isNull(selected)) {
             log.warn("selectMinStatusEarliestNode: 状态码为 {} 的节点中未找到有效创建时间的节点", minStatus);
             return null;
         }
-        log.debug("selectMinStatusEarliestNode: 选中节点 ID: {}, 状态: {}, 创建时间: {}", 
+        log.debug("selectMinStatusEarliestNode: 选中节点 ID: {}, 状态: {}, 创建时间: {}",
                 selected.getId(), selected.getOrderStatus(), selected.getCreateTime());
-        
+
         // 4. 映射前端时间轴阶段信息
         // 将原始业务状态转换为前端展示用的阶段序号(phaseOrder)和阶段名称(phaseLabel)
         WaybillTimelinePhaseEnum.resolve(minStatus).ifPresent(phase -> {
-            log.debug("selectMinStatusEarliestNode: 映射前端阶段,原始状态: {} -> 阶段序号: {}, 阶段名称: {}", 
+            log.debug("selectMinStatusEarliestNode: 映射前端阶段,原始状态: {} -> 阶段序号: {}, 阶段名称: {}",
                     minStatus, phase.getPhaseOrder(), phase.getPhaseLabel());
             selected.setOrderStatus(phase.getPhaseOrder());
             selected.setOrderStatusName(phase.getPhaseLabel());
         });
-        
+
         return selected;
     }
 

+ 4 - 2
sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderV1Mapper.xml

@@ -528,11 +528,13 @@
                             ON klo.id = a.l_order_id AND klo.del_flag = 0
                  INNER JOIN kwt_logistics_order_goods klog
                             ON klog.l_order_id = a.l_order_id AND klog.del_flag = 0
+        inner JOIN kwt_logistics_order_unit d ON a.l_order_id = d.l_order_id AND d.unit_type = 1 AND d.del_flag = 0
         <where>
             a.del_flag = 0
               AND b.status = 25              -- 已完成
-              AND b.update_time >= CURDATE() -- 今日完成
-              AND b.update_time &lt; CURDATE() + INTERVAL 1 DAY
+              AND b.update_time >= #{date}
+              AND b.update_time &lt; #{end}
+                and d.ent_id in (538038314096136193,538039617157337089,538040297439891457)
             <if test="list != null and list.size() != 0">
                 AND klog.goods_type IN
                 <foreach collection="list" open="(" close=")" separator="," item="item">