Browse Source

fix: 直播发货任务

xdd 2 weeks ago
parent
commit
010926f3a6

+ 2 - 2
fs-admin/src/main/java/com/fs/live/controller/LiveOrderController.java

@@ -409,7 +409,7 @@ public class LiveOrderController extends BaseController
             ErpContextHolder.setErpType(erp);
         }
 
-        ErpOrderQueryResponse response = erpOrderService.getOrder(request);
+        ErpOrderQueryResponse response = erpOrderService.getOrderLive(request);
         return R.ok().put("data",response);
     }
 
@@ -452,7 +452,7 @@ public class LiveOrderController extends BaseController
             ErpContextHolder.setErpType(erp);
         }
 
-        ErpOrderQueryResponse response = erpOrderService.getOrder(request);
+        ErpOrderQueryResponse response = erpOrderService.getOrderLive(request);
         if(response.getOrders()!=null&&response.getOrders().size()>0){
             for(ErpOrderQuery orderQuery : response.getOrders()){
                 if(orderQuery.getDeliverys()!=null&&orderQuery.getDeliverys().size()>0){

+ 1 - 1
fs-admin/src/main/java/com/fs/task/LiveTask.java

@@ -90,7 +90,7 @@ public class LiveTask {
                     String erp = fsWarehousesMapper.selectErpByCode(order.getStoreHouseCode());
                     ErpContextHolder.setErpType(erp);
                 }
-                ErpOrderQueryResponse response = erpOrderService.getOrder(request);
+                ErpOrderQueryResponse response = erpOrderService.getOrderLive(request);
                 if (CollectionUtils.isNotEmpty(response.getOrders())) {
                     for (ErpOrderQuery orderQuery : response.getOrders()) {
                         if (CollectionUtils.isNotEmpty(orderQuery.getDeliverys())) {

+ 1 - 1
fs-admin/src/main/resources/application.yml

@@ -72,7 +72,7 @@ token:
     # 令牌密钥
     secret: abcdefghijklmnopqrstuvwxyz
     # 令牌有效期(默认30分钟)
-    expireTime: 180
+    expireTime: 1440
 
 # MyBatis配置
 mybatis:

+ 1 - 0
fs-service-system/src/main/java/com/fs/erp/service/IErpOrderService.java

@@ -13,6 +13,7 @@ public interface IErpOrderService
     ErpOrderResponse refundOrder(ErpRefundOrder order);
     ErpDeliverysResponse getDeliver(ErpDeliverysRequest param);
     ErpOrderQueryResponse getOrder(ErpOrderQueryRequert param);
+    ErpOrderQueryResponse getOrderLive(ErpOrderQueryRequert param);
     BaseResponse refundUpdate(ErpRefundUpdateRequest param);
 
     ErpOrderResponse addLiveOrder(ErpOrder erpOrder);

+ 5 - 0
fs-service-system/src/main/java/com/fs/erp/service/impl/ErpOrderServiceImpl.java

@@ -108,6 +108,11 @@ public class ErpOrderServiceImpl implements IErpOrderService
         return response;
     }
 
+    @Override
+    public ErpOrderQueryResponse getOrderLive(ErpOrderQueryRequert param) {
+        return null;
+    }
+
     @Override
     public BaseResponse refundUpdate(ErpRefundUpdateRequest request) {
         JSONObject param = JSONUtil.createObj();

+ 5 - 0
fs-service-system/src/main/java/com/fs/erp/service/impl/ErpOrderServiceProxy.java

@@ -109,6 +109,11 @@ public class ErpOrderServiceProxy implements IErpOrderService {
         return getCurrentErpService().getOrder(param);
     }
 
+    @Override
+    public ErpOrderQueryResponse getOrderLive(ErpOrderQueryRequert param) {
+        return getCurrentErpService().getOrderLive(param);
+    }
+
     @Override
     public BaseResponse refundUpdate(ErpRefundUpdateRequest param) {
         return getCurrentErpService().refundUpdate(param);

+ 111 - 1
fs-service-system/src/main/java/com/fs/erp/service/impl/JSTErpOrderServiceImpl.java

@@ -54,6 +54,9 @@ public class JSTErpOrderServiceImpl implements IErpOrderService {
     @Autowired
     private IFsStoreOrderService fsStoreOrderService;
 
+    @Autowired
+    private ILiveOrderService liveOrderService;
+
     @Autowired
     private LiveOrderMapper liveorderMapper;
 
@@ -238,6 +241,35 @@ public class JSTErpOrderServiceImpl implements IErpOrderService {
         return response;
     }
 
+    @Override
+    public ErpOrderQueryResponse getOrderLive(ErpOrderQueryRequert param) {
+        // 1. 构建查询请求DTO
+        OrderQueryRequestDTO requestDTO = new OrderQueryRequestDTO();
+        requestDTO.setOIds(Collections.singletonList(Long.valueOf(param.getCode())));
+
+
+        // 2. 调用ERP服务查询订单
+        OrderQueryResponseDTO query = jstErpHttpService.query(requestDTO);
+
+        // 3. 构建响应对象
+        ErpOrderQueryResponse response = new ErpOrderQueryResponse();
+
+        // 4. 设置基本响应信息
+
+        // 5. 转换订单数据
+        if (query.getOrders() != null && !query.getOrders().isEmpty()) {
+            List<ErpOrderQuery> erpOrders = query.getOrders().stream()
+                    .map(this::convertToErpOrderQueryLive)
+                    .collect(Collectors.toList());
+
+            response.setOrders(erpOrders);
+        } else {
+            response.setOrders(Collections.emptyList());
+        }
+
+        return response;
+    }
+
     /**
      * 将OrderQueryResponseDTO.Order转换为ErpOrderQuery
      *
@@ -248,7 +280,6 @@ public class JSTErpOrderServiceImpl implements IErpOrderService {
         ErpOrderQuery erpOrder = new ErpOrderQuery();
 
         FsStoreOrder fsStoreOrder = fsStoreOrderService.selectFsStoreOrderByOrderCode(order.getSoId());
-        if(fsStoreOrder == null)
         Asserts.notNull(fsStoreOrder,"该订单号没有找到!");
 
         // 设置基本订单信息
@@ -319,7 +350,86 @@ public class JSTErpOrderServiceImpl implements IErpOrderService {
 
         return erpOrder;
     }
+    /**
+     * 将OrderQueryResponseDTO.Order转换为ErpOrderQuery
+     *
+     * @param order 订单数据
+     * @return ErpOrderQuery 转换后的订单数据
+     */
+    private ErpOrderQuery convertToErpOrderQueryLive(OrderQueryResponseDTO.Order order) {
+        ErpOrderQuery erpOrder = new ErpOrderQuery();
 
+        LiveOrder liveOrder = liveOrderService.selectLiveOrderByOrderCode(order.getSoId());
+        Asserts.notNull(liveOrder, "该订单号没有找到!");
+
+        // 设置基本订单信息
+        erpOrder.setCode(order.getSoId());
+
+        // 计算订单总数量
+        if (order.getItems() != null && !order.getItems().isEmpty()) {
+            int totalQty = order.getItems().stream()
+                    .mapToInt(OrderQueryResponseDTO.OrderItem::getQty)
+                    .sum();
+            erpOrder.setQty(totalQty);
+        }
+
+        // 设置金额相关信息
+        erpOrder.setAmount(order.getAmount() != null ? order.getAmount().doubleValue() : null);
+        erpOrder.setPayment(order.getPaidAmount() != null ? order.getPaidAmount().doubleValue() : null);
+
+        // 设置其他订单属性
+        erpOrder.setCod(order.getIsCod());
+        erpOrder.setPlatform_code(order.getOrderFrom());
+
+        // 尝试解析创建时间
+        try {
+            if (order.getCreated() != null) {
+                SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                erpOrder.setCreatetime(formatter.parse(order.getCreated()));
+            }
+        } catch (Exception e) {
+            // 日期解析异常处理
+            // 可以记录日志或保持为null
+        }
+
+        // 设置店铺信息
+        erpOrder.setShop_name(order.getShopName());
+        erpOrder.setShop_code(String.valueOf(order.getShopId()));
+
+        // 设置物流信息
+        erpOrder.setExpress_name(order.getLogisticsCompany());
+        erpOrder.setExpress_code(order.getLId());
+
+        // 设置收件人信息
+        erpOrder.setReceiver_name(liveOrder.getUserName());
+        erpOrder.setReceiver_phone(liveOrder.getUserPhone());
+        erpOrder.setReceiver_mobile(liveOrder.getUserPhone());
+
+        // 构建完整地址
+        erpOrder.setReceiver_address(liveOrder.getUserAddress());
+
+        // 如果是已发货
+        if(ObjectUtil.equal(order.getStatus(), ErpQueryOrderStatusEnum.SENT.getCode())){
+            List<ErpDeliverys> deliverysList = new ArrayList<>();
+
+            ErpDeliverys delivery = new ErpDeliverys();
+            delivery.setMail_no(order.getLId());
+            delivery.setExpress_code(order.getLcId());
+            delivery.setExpress_name(order.getLogisticsCompany());
+            delivery.setDelivery(true);
+            delivery.setCode(order.getSoId());
+
+            deliverysList.add(delivery);
+            erpOrder.setDeliverys(deliverysList);
+
+            // 设置发货状态,假设有物流单号就是已发货状态
+            erpOrder.setDelivery_state(1);
+        } else {
+            erpOrder.setDelivery_state(0);
+        }
+
+        return erpOrder;
+    }
 
     @Override
     public BaseResponse refundUpdate(ErpRefundUpdateRequest param) {

+ 3 - 0
fs-service-system/src/main/java/com/fs/live/mapper/LiveOrderMapper.java

@@ -110,4 +110,7 @@ public interface LiveOrderMapper {
 
     @Select("select * from live_order where extend_order_id = #{extendOrderId}")
     LiveOrder selectLiveOrderByExtendId(@Param("extendOrderId") String extendOrderId);
+
+    @Select("select * from live_order where order_code=#{orderCode} limit 1")
+    LiveOrder selectLiveOrderByOrderCode(@Param("orderCode") String orderCode);
 }

+ 2 - 0
fs-service-system/src/main/java/com/fs/live/service/ILiveOrderService.java

@@ -190,4 +190,6 @@ public interface ILiveOrderService {
     LiveOrder selectLiveOrderByExtendId(String extendOrderId);
 
     R editTuiMoney(Long orderId);
+
+    LiveOrder selectLiveOrderByOrderCode(String soId);
 }

+ 7 - 2
fs-service-system/src/main/java/com/fs/live/service/impl/LiveOrderServiceImpl.java

@@ -900,7 +900,7 @@ public class LiveOrderServiceImpl implements ILiveOrderService {
             String erp = fsWarehousesMapper.selectErpByCode(order.getStoreHouseCode());
             ErpContextHolder.setErpType(erp);
         }
-        ErpOrderQueryResponse response = erpOrderService.getOrder(request);
+        ErpOrderQueryResponse response = erpOrderService.getOrderLive(request);
         if (CollectionUtils.isNotEmpty(response.getOrders())) {
             for (ErpOrderQuery orderQuery : response.getOrders()) {
                 // 部分发货或者全部发货
@@ -1395,7 +1395,7 @@ public class LiveOrderServiceImpl implements ILiveOrderService {
             String erp = fsWarehousesMapper.selectErpByCode(order.getStoreHouseCode());
             ErpContextHolder.setErpType(erp);
         }
-        ErpOrderQueryResponse response = erpOrderService.getOrder(request);
+        ErpOrderQueryResponse response = erpOrderService.getOrderLive(request);
         if(response.getOrders()!=null&&response.getOrders().size()>0){
             for(ErpOrderQuery orderQuery : response.getOrders()){
                 if(orderQuery.getDeliverys()!=null&&orderQuery.getDeliverys().size()>0){
@@ -1484,6 +1484,11 @@ public class LiveOrderServiceImpl implements ILiveOrderService {
         }
     }
 
+    @Override
+    public LiveOrder selectLiveOrderByOrderCode(String orderCode) {
+        return liveOrderMapper.selectLiveOrderByOrderCode(orderCode);
+    }
+
     private BigDecimal handleDeliveryMoney(Long cityId, FsStoreProduct fsStoreProduct, String totalNumSize) {
         BigDecimal storePostage = BigDecimal.ZERO;
         List<Long> citys = new ArrayList<>();