2 Komitmen 6a32874a78 ... 477048624c

Pembuat SHA1 Pesan Tanggal
  xgb 477048624c 发货时间同步erp 1 Minggu lalu
  xgb bc2718e855 发货时间同步erp 1 Minggu lalu

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

@@ -223,7 +223,7 @@ public class MallStoreTask
                         for(ErpDeliverys delivery:orderQuery.getDeliverys()){
                             if(delivery.getDelivery()&&StringUtils.isNotEmpty(delivery.getMail_no())){
                                 //更新商订单状态 删除REDIS
-                                orderService.deliveryOrder(order.getOrderCode(),delivery.getMail_no(),delivery.getExpress_code(),delivery.getExpress_name());
+                                orderService.deliveryOrder(order.getOrderCode(),order.getExtendOrderId(),delivery.getMail_no(),delivery.getExpress_code(),delivery.getExpress_name());
                                 redisCache.deleteObject(DELIVERY+":"+order.getExtendOrderId());
                             }
                         }

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

@@ -6,6 +6,8 @@ import com.fs.erp.dto.*;
 import com.fs.his.domain.FsStoreOrder;
 import com.fs.hisStore.domain.FsStoreOrderScrm;
 
+import java.util.Map;
+
 public interface IErpOrderService
 {
 
@@ -27,5 +29,12 @@ public interface IErpOrderService
     void getOrderDeliveryStatus(FsStoreOrder order);
 
     void getOrderScrmDeliveryStatus(FsStoreOrderScrm order);
+
+    //  出库查询接口 目前只实现了 旺店通
+    default Map<String, Object> stockOutOrderQueryTrade(ErpOrderQueryRequert param)
+    {
+        throw new RuntimeException("不支持该方法");
+    }
+
 }
 

+ 24 - 2
fs-service/src/main/java/com/fs/erp/service/impl/WdtErpOrderServiceImpl.java

@@ -7,6 +7,8 @@ import com.alibaba.fastjson.PropertyNamingStrategy;
 import com.alibaba.fastjson.parser.ParserConfig;
 import com.alibaba.fastjson.serializer.SerializeConfig;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.fs.common.core.domain.R;
+import com.fs.common.exception.ServiceException;
 import com.fs.erp.converter.ErpWdtToErpOrderMapper;
 import com.fs.erp.domain.ErpOrder;
 import com.fs.erp.domain.ErpOrderQuery;
@@ -26,7 +28,6 @@ import com.fs.his.service.IFsStoreOrderService;
 import com.fs.his.service.IFsStoreProductService;
 import com.fs.his.utils.ConfigUtil;
 import com.fs.hisStore.config.FsErpConfig;
-import com.fs.hisStore.domain.FsStoreOrderItemScrm;
 import com.fs.hisStore.domain.FsStoreOrderScrm;
 import com.fs.hisStore.domain.FsStoreProductScrm;
 import com.fs.hisStore.service.IFsStoreOrderItemScrmService;
@@ -39,7 +40,6 @@ import org.apache.commons.collections4.CollectionUtils;
 import org.apache.http.client.utils.DateUtils;
 import org.apache.http.util.Asserts;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Primary;
 import org.springframework.stereotype.Service;
 
@@ -1373,4 +1373,26 @@ public class WdtErpOrderServiceImpl implements IErpOrderService {
         return new ErpOrderResponse();
     }
 
+
+    @Override
+    public Map<String,Object>  stockOutOrderQueryTrade(ErpOrderQueryRequert param){
+        Map<String, String> map = new HashMap<>();
+        map.put("src_tid", param.getCode());
+        try {
+            String response = client.execute("stockout_order_query_trade.php", map);
+            ParserConfig config = new ParserConfig();
+            config.propertyNamingStrategy = PropertyNamingStrategy.CamelCase;
+            Map<String, Object> result= JSON.parseObject(response, Map.class,config);
+            log.info("result:{}",result);
+            if(!"0".equals(String.valueOf(result.get("code")))){
+                throw new ServiceException(String.valueOf(result.get("message")));
+            }
+            return result;
+        } catch (IOException e) {
+            log.error("stockOutOrderQueryTrade error:{}",e);
+            throw new ServiceException(e.getMessage());
+        }
+
+    }
+
 }

+ 1 - 1
fs-service/src/main/java/com/fs/hisStore/service/IFsStoreOrderScrmService.java

@@ -108,7 +108,7 @@ public interface IFsStoreOrderScrmService
 
     void refundOrder(Long orderId);
 
-    void deliveryOrder(String orderCode,String deliveryId,String deliverCode,String deliverName);
+    void deliveryOrder(String orderCode,String extendOrderId,String deliveryId,String deliverCode,String deliverName);
 
     void updateDeliveryOrder(Long id,String deliveryId,String deliverCode,String deliverName);
 

+ 22 - 2
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreOrderScrmServiceImpl.java

@@ -1142,9 +1142,22 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
     }
 
     @Override
-    public void deliveryOrder(String orderCode, String deliveryId, String deliverCode, String deliverName) {
+    public void deliveryOrder(String orderCode,String extendOrderId, String deliveryId, String deliverCode, String deliverName) {
         FsStoreOrderScrm order = fsStoreOrderMapper.selectFsStoreOrderByOrderCode(orderCode);
         if (order != null && order.getStatus() == OrderInfoEnum.STATUS_1.getValue()) {
+            // 查询订单出库时间
+            ErpOrderQueryRequert param=new ErpOrderQueryRequert();
+            param.setCode(extendOrderId);
+            Map<String, Object> result=wdtOrderService.stockOutOrderQueryTrade(param);
+            List<Map<String, Object>> stockoutList=(List<Map<String, Object>>) result.get("stockout_list");
+            String consignTime=null;
+            if(stockoutList!=null&& !stockoutList.isEmpty()){
+                if(stockoutList.get(0).get("consign_time")!=null){
+                    consignTime = stockoutList.get(0).get("consign_time").toString();
+                    log.info("发货时间:{}",consignTime);
+                }
+            }
+
             FsExpressScrm express = expressService.selectFsExpressByOmsCode(deliverCode);
             if (express != null) {
                 order.setDeliveryName(deliverName);
@@ -1152,7 +1165,14 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
             }
             order.setStatus(OrderInfoEnum.STATUS_2.getValue());
             order.setDeliveryId(deliveryId);
-            order.setDeliverySendTime(new Date());
+            if(StringUtils.isEmpty(consignTime)){
+                // 后期优化
+                logger.info("发货时间为空更新为当前时间,订单:{}",orderCode);
+                order.setDeliverySendTime(new Date());
+            }else {
+                order.setDeliverySendTime(DateUtils.parseDate(consignTime));
+            }
+
 
             fsStoreOrderMapper.updateFsStoreOrder(order);
             orderStatusService.create(order.getId(), OrderLogEnum.DELIVERY_GOODS.getValue(),