Browse Source

调接口逻辑

master
luoweijian 3 weeks ago
parent
commit
179d23f46b
  1. 23
      src/main/java/com/project/logistics/controller/WenDavScammerController.java
  2. 40
      src/main/java/com/project/receive/domain/service/ReceiveService.java

23
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<String> receiveOrderState() {
webDavScannerJob.doScanWork();
return Result.success("扫描成功");
}
}

40
src/main/java/com/project/receive/domain/service/ReceiveService.java

@ -1,5 +1,6 @@
package com.project.receive.domain.service; package com.project.receive.domain.service;
import cn.hutool.core.util.StrUtil;
import com.jayway.jsonpath.JsonPath; import com.jayway.jsonpath.JsonPath;
import com.project.logistics.domain.entity.LogisticsOrderEntity; import com.project.logistics.domain.entity.LogisticsOrderEntity;
@ -49,12 +50,17 @@ public class ReceiveService {
log.info(">>> 正在解析路由: 单号={}, 操作码={}, 描述={}", log.info(">>> 正在解析路由: 单号={}, 操作码={}, 描述={}",
detail.getOrderid(), detail.getOpCode(), detail.getRemark()); detail.getOrderid(), detail.getOpCode(), detail.getRemark());
if (StrUtil.equals(detail.getRemark() , "test")) {
continue;
}
// 1. 存入流水日志 // 1. 存入流水日志
saveToLogTable(detail); saveToLogTable(detail);
// 2. 状态机流转 (仅针对揽收50和签收80) // 2. 状态机流转 (仅针对揽收50和签收80)
handleStatusMachine(detail); // handleStatusMachine(detail);
updateLocalOrderStatus(detail);
} }
} }
@ -85,6 +91,36 @@ public class ReceiveService {
apiRetryTaskService.createNextTask(orderNo, RetryActionEnum.ERP_UPDATE_DELIVERED); 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) { private void saveToLogTable(SfRoutePushRequest.WaybillRouteDetail detail) {
RoutePushLogEntity logEntity = new RoutePushLogEntity(); RoutePushLogEntity logEntity = new RoutePushLogEntity();

Loading…
Cancel
Save