diff --git a/src/main/java/com/project/logistics/controller/WenDavScammerController.java b/src/main/java/com/project/logistics/controller/WenDavScammerController.java new file mode 100644 index 0000000..08bbf09 --- /dev/null +++ b/src/main/java/com/project/logistics/controller/WenDavScammerController.java @@ -0,0 +1,23 @@ +package com.project.logistics.controller; + + +import com.project.base.domain.result.Result; +import com.project.logistics.domain.scheduler.WebDavScannerJob; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +@RestController +@Slf4j +@RequestMapping("/api/") +public class WenDavScammerController { + + @Autowired + private WebDavScannerJob webDavScannerJob; + + @GetMapping("/doScan") + public Result receiveOrderState() { + webDavScannerJob.doScanWork(); + return Result.success("扫描成功"); + } +} diff --git a/src/main/java/com/project/receive/domain/service/ReceiveService.java b/src/main/java/com/project/receive/domain/service/ReceiveService.java index e0bfde7..ce629f5 100644 --- a/src/main/java/com/project/receive/domain/service/ReceiveService.java +++ b/src/main/java/com/project/receive/domain/service/ReceiveService.java @@ -1,5 +1,6 @@ package com.project.receive.domain.service; +import cn.hutool.core.util.StrUtil; import com.jayway.jsonpath.JsonPath; import com.project.logistics.domain.entity.LogisticsOrderEntity; @@ -49,12 +50,17 @@ public class ReceiveService { log.info(">>> 正在解析路由: 单号={}, 操作码={}, 描述={}", detail.getOrderid(), detail.getOpCode(), detail.getRemark()); - + if (StrUtil.equals(detail.getRemark() , "test")) { + continue; + } // 1. 存入流水日志 saveToLogTable(detail); // 2. 状态机流转 (仅针对揽收50和签收80) - handleStatusMachine(detail); +// handleStatusMachine(detail); + + updateLocalOrderStatus(detail); + } } @@ -85,6 +91,36 @@ public class ReceiveService { apiRetryTaskService.createNextTask(orderNo, RetryActionEnum.ERP_UPDATE_DELIVERED); } } + private void updateLocalOrderStatus(SfRoutePushRequest.WaybillRouteDetail detail) throws Exception { + String orderNo = detail.getOrderid(); + String opCode = detail.getOpCode(); + + LogisticsOrderEntity order = logisticsOrderService.getByOrderNo(orderNo); + if (order == null) { + log.warn(">>> 收到推送,但本地库找不到单号: {}", orderNo); + return; + } + + // --- 核心逻辑:更新自己库表的状态 --- + + // 记录顺丰最原始的状态码(如 50, 31, 307, 80 等) + order.setSfCurrentStateCode(opCode); + + // 根据核心节点跳转 order_status 状态机 + if ("50".equals(opCode)) { + // 顺丰已揽收 + order.setOrderStatus(OrderStatusEnum.PICKED_UP.getCode()); + log.info(">>> 单号 {} 状态机流转至: [PICKED_UP]", orderNo); + } + else if ("80".equals(opCode)) { + // 客户已签收 + order.setOrderStatus(OrderStatusEnum.DELIVERED.getCode()); + log.info(">>> 单号 {} 状态机流转至: [DELIVERED]", orderNo); + + } + + logisticsOrderService.updateById(order); + } private void saveToLogTable(SfRoutePushRequest.WaybillRouteDetail detail) { RoutePushLogEntity logEntity = new RoutePushLogEntity();