Przeglądaj źródła

feat: 对接erp

xdd 2 dni temu
rodzic
commit
e11c42e467
20 zmienionych plików z 373 dodań i 6 usunięć
  1. 26 0
      fs-admin/src/main/java/com/fs/store/controller/FsStoreOrderController.java
  2. 34 0
      fs-admin/src/main/java/com/fs/task/StoreTask.java
  3. 9 0
      fs-service-system/src/main/java/com/fs/erp/constant/ErpTypeConstant.java
  4. 1 1
      fs-service-system/src/main/java/com/fs/erp/service/impl/ErpGoodsServiceImpl.java
  5. 68 0
      fs-service-system/src/main/java/com/fs/erp/service/impl/ErpGoodsServiceProxy.java
  6. 1 1
      fs-service-system/src/main/java/com/fs/erp/service/impl/ErpOrderServiceImpl.java
  7. 80 0
      fs-service-system/src/main/java/com/fs/erp/service/impl/ErpOrderServiceProxy.java
  8. 1 2
      fs-service-system/src/main/java/com/fs/erp/service/impl/JSTErpGoodsServiceImpl.java
  9. 0 1
      fs-service-system/src/main/java/com/fs/erp/service/impl/JSTErpOrderServiceImpl.java
  10. 64 0
      fs-service-system/src/main/java/com/fs/erp/utils/ErpContextHolder.java
  11. 6 0
      fs-service-system/src/main/java/com/fs/oms/domain/OmsWarehouse.java
  12. 2 0
      fs-service-system/src/main/java/com/fs/store/domain/FsStoreProduct.java
  13. 4 0
      fs-service-system/src/main/java/com/fs/store/domain/FsWarehouses.java
  14. 8 0
      fs-service-system/src/main/java/com/fs/store/mapper/FsStoreProductMapper.java
  15. 5 0
      fs-service-system/src/main/java/com/fs/store/mapper/FsWarehousesMapper.java
  16. 18 0
      fs-service-system/src/main/java/com/fs/store/service/impl/FsStoreAfterSalesServiceImpl.java
  17. 26 0
      fs-service-system/src/main/java/com/fs/store/service/impl/FsStoreOrderServiceImpl.java
  18. 8 0
      fs-service-system/src/main/java/com/fs/store/service/impl/FsWarehousesServiceImpl.java
  19. 7 0
      fs-service-system/src/main/resources/application-config.yml
  20. 5 1
      fs-service-system/src/main/resources/mapper/store/FsWarehousesMapper.xml

+ 26 - 0
fs-admin/src/main/java/com/fs/store/controller/FsStoreOrderController.java

@@ -18,12 +18,15 @@ import com.fs.erp.domain.ErpOrderQuery;
 import com.fs.erp.dto.ErpOrderQueryRequert;
 import com.fs.erp.dto.ErpOrderQueryResponse;
 import com.fs.erp.service.IErpOrderService;
+import com.fs.erp.utils.ErpContextHolder;
 import com.fs.express.FsStoreDeliversService;
 import com.fs.express.dto.DeliveryDTO;
 import com.fs.store.cache.IFsStoreProductCacheService;
 import com.fs.store.domain.*;
 import com.fs.store.dto.*;
 import com.fs.store.enums.ShipperCodeEnum;
+import com.fs.store.mapper.FsStoreOrderMapper;
+import com.fs.store.mapper.FsWarehousesMapper;
 import com.fs.store.param.*;
 import com.fs.store.service.*;
 import com.fs.store.vo.*;
@@ -77,6 +80,12 @@ public class FsStoreOrderController extends BaseController {
 
     @Autowired
     private IFsStoreProductCacheService fsStoreProductCacheService;
+
+    @Autowired
+    private FsWarehousesMapper fsWarehousesMapper;
+
+    @Autowired
+    private FsStoreOrderMapper fsStoreOrderMapper;
     /**
      * 查询订单列表
      */
@@ -410,6 +419,13 @@ public class FsStoreOrderController extends BaseController {
         FsStoreOrder order = fsStoreOrderService.selectFsStoreOrderById(param.getOrderId());
         ErpOrderQueryRequert request = new ErpOrderQueryRequert();
         request.setCode(order.getExtendOrderId());
+
+        // 根据仓库code找erp
+        if(com.fs.common.utils.StringUtils.isNotBlank(order.getStoreHouseCode())){
+            String erp = fsWarehousesMapper.selectErpByCode(order.getStoreHouseCode());
+            ErpContextHolder.setErpType(erp);
+        }
+
         ErpOrderQueryResponse response = erpOrderService.getOrder(request);
         if(response.getOrders()!=null&&response.getOrders().size()>0){
             for(ErpOrderQuery orderQuery : response.getOrders()){
@@ -500,6 +516,16 @@ public class FsStoreOrderController extends BaseController {
     public R getEroOrder(@RequestParam("extendOrderId") String extendOrderId) {
         ErpOrderQueryRequert request = new ErpOrderQueryRequert();
         request.setCode(extendOrderId);
+
+        FsStoreOrder order = fsStoreOrderMapper.selectFsStoreOrderByExtendOrderId(extendOrderId);
+
+        // 根据仓库code找erp
+        if(com.fs.common.utils.StringUtils.isNotBlank(order.getStoreHouseCode())){
+            String erp = fsWarehousesMapper.selectErpByCode(order.getStoreHouseCode());
+            ErpContextHolder.setErpType(erp);
+        }
+
+
         ErpOrderQueryResponse response = erpOrderService.getOrder(request);
         return R.ok().put("data",response);
     }

+ 34 - 0
fs-admin/src/main/java/com/fs/task/StoreTask.java

@@ -7,12 +7,14 @@ import com.fs.common.core.redis.RedisCache;
 import com.fs.company.domain.CompanyUser;
 import com.fs.company.mapper.CompanyUserMapper;
 import com.fs.core.security.SecurityUtils;
+import com.fs.erp.constant.ErpTypeConstant;
 import com.fs.erp.domain.ErpDeliverys;
 import com.fs.erp.domain.ErpGoods;
 import com.fs.erp.domain.ErpOrderQuery;
 import com.fs.erp.dto.*;
 import com.fs.erp.service.IErpGoodsService;
 import com.fs.erp.service.IErpOrderService;
+import com.fs.erp.utils.ErpContextHolder;
 import com.fs.store.config.StoreConfig;
 import com.fs.store.domain.*;
 import com.fs.store.dto.StoreProductGroupDTO;
@@ -39,6 +41,7 @@ import java.text.ParseException;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 import static com.fs.store.constants.StoreConstants.DELIVERY;
@@ -63,6 +66,9 @@ public class StoreTask {
     @Autowired
     private IFsUserService userService;
 
+    @Autowired
+    private FsStoreProductMapper fsStoreProductMapper;
+
     @Autowired
     private IErpOrderService erpOrderService;
 
@@ -112,6 +118,8 @@ public class StoreTask {
     @Autowired
     private FsWxExpressTaskMapper fsWxExpressTaskMapper;
 
+    @Autowired
+    private FsWarehousesMapper fsWarehousesMapper;
 
     /**
      * 发货任务
@@ -125,6 +133,11 @@ public class StoreTask {
             String orderCode = order.getOrderCode();
             ErpOrderQueryRequert request = new ErpOrderQueryRequert();
             request.setCode(order.getExtendOrderId());
+            // 根据仓库code找erp
+            if(com.fs.common.utils.StringUtils.isNotBlank(order.getStoreHouseCode())){
+                String erp = fsWarehousesMapper.selectErpByCode(order.getStoreHouseCode());
+                ErpContextHolder.setErpType(erp);
+            }
             ErpOrderQueryResponse response = erpOrderService.getOrder(request);
             if (CollectionUtils.isNotEmpty(response.getOrders())) {
                 for (ErpOrderQuery orderQuery : response.getOrders()) {
@@ -227,12 +240,20 @@ public class StoreTask {
         String json = configService.selectConfigByKey("store.config");
         StoreConfig config = JSONUtil.toBean(json, StoreConfig.class);
         List<FsStoreProductAttrValue> values = fsStoreProductAttrValueMapper.selectFsStoreProductAttrValueList(new FsStoreProductAttrValue());
+
+        Map<Long, FsStoreProduct> fsStoreProductMap = fsStoreProductMapper.selectAllProductMappingInfo();
+
         int i = 0;
         for (FsStoreProductAttrValue value : values) {
             try {
                 if (StringUtils.isNotEmpty(value.getBarCode())) {
                     ErpGoodsQueryRequert query = new ErpGoodsQueryRequert();
                     query.setCode(value.getBarCode());
+
+                    FsStoreProduct fsStoreProduct = fsStoreProductMap.get(value.getProductId());
+                    String erp = fsStoreProduct.getErp();
+                    ErpContextHolder.setErpType(erp);
+
                     ErpGoodsQueryResponse goods = erpGoodsService.getGoods(query);
                     List<ErpGoods> items = goods.getItems();
                     if (items != null && items.size() > 0) {
@@ -261,6 +282,11 @@ public class StoreTask {
                                 String barCode = attrValue.getBarCode();
                                 ErpGoodsQueryRequert query = new ErpGoodsQueryRequert();
                                 query.setCode(barCode);
+
+                                FsStoreProduct fsStoreProduct = fsStoreProductMap.get(value.getProductId());
+                                String erp = fsStoreProduct.getErp();
+                                ErpContextHolder.setErpType(erp);
+
                                 ErpGoodsQueryResponse goods = erpGoodsService.getGoods(query);
                                 List<ErpGoods> items = goods.getItems();
                                 if (items != null && items.size() > 0) {
@@ -286,6 +312,8 @@ public class StoreTask {
                 }
             } catch (Exception e) {
                 logger.info("商品更新成本价错误:" + value.getId());
+            }finally {
+                ErpContextHolder.clear();
             }
 
 
@@ -454,6 +482,12 @@ public class StoreTask {
         for (FsStoreOrder order : list) {
             ErpOrderQueryRequert request = new ErpOrderQueryRequert();
             request.setCode(order.getExtendOrderId());
+            // 根据仓库code找erp
+            if(com.fs.common.utils.StringUtils.isNotBlank(order.getStoreHouseCode())){
+                String erp = fsWarehousesMapper.selectErpByCode(order.getStoreHouseCode());
+                ErpContextHolder.setErpType(erp);
+            }
+
             ErpOrderQueryResponse response = erpOrderService.getOrder(request);
             if (CollectionUtils.isNotEmpty(response.getOrders())) {
                 for (ErpOrderQuery orderQuery : response.getOrders()) {

+ 9 - 0
fs-service-system/src/main/java/com/fs/erp/constant/ErpTypeConstant.java

@@ -0,0 +1,9 @@
+package com.fs.erp.constant;
+
+/**
+ * ERP类型
+ */
+public class ErpTypeConstant {
+    public static final String JST_ERP = "JST";
+    public static final String GY_ERP = "GY";
+}

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

@@ -18,7 +18,7 @@ import org.springframework.stereotype.Service;
  *
 
  */
-@Service
+@Service("erpGoodsServiceImpl")
 public class ErpGoodsServiceImpl implements IErpGoodsService
 {
 

+ 68 - 0
fs-service-system/src/main/java/com/fs/erp/service/impl/ErpGoodsServiceProxy.java

@@ -0,0 +1,68 @@
+package com.fs.erp.service.impl;
+
+import com.fs.erp.constant.ErpTypeConstant;
+import com.fs.erp.domain.ErpGoods;
+import com.fs.erp.dto.*;
+import com.fs.erp.service.IErpGoodsService;
+import com.fs.erp.utils.ErpContextHolder;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.context.annotation.Primary;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * ERP商品服务动态代理类
+ * 通过ThreadLocal存储当前ERP类型,实现多ERP系统无感切换
+ */
+@Service
+@Primary
+public class ErpGoodsServiceProxy implements IErpGoodsService {
+
+    /**
+     * 存储所有实现的ERP服务
+     */
+    private final Map<String, IErpGoodsService> erpGoodsServiceMap = new HashMap<>();
+
+    /**
+     * 构造函数注入各种ERP实现
+     */
+    @Autowired
+    public ErpGoodsServiceProxy(
+            @Qualifier("JSTErpGoodsServiceImpl") IErpGoodsService jstErpGoodsService,
+            @Qualifier("erpGoodsServiceImpl") IErpGoodsService gyErpGoodsService) {
+        erpGoodsServiceMap.put(ErpTypeConstant.JST_ERP, jstErpGoodsService);
+        erpGoodsServiceMap.put(ErpTypeConstant.GY_ERP, gyErpGoodsService);
+    }
+
+    /**
+     * 获取当前应该使用的ERP服务实现
+     * @return 对应ERP类型的服务实现
+     */
+    private IErpGoodsService getCurrentErpService() {
+        String erpType = ErpContextHolder.getErpType();
+
+        IErpGoodsService service = erpGoodsServiceMap.get(erpType);
+        if (service == null) {
+            throw new IllegalStateException("未找到ERP类型 [" + erpType + "] 的实现");
+        }
+        return service;
+    }
+
+    @Override
+    public BaseResponse addGoods(ErpGoods goods) {
+        return getCurrentErpService().addGoods(goods);
+    }
+
+    @Override
+    public ErpGoodsQueryResponse getGoods(ErpGoodsQueryRequert param) {
+        return getCurrentErpService().getGoods(param);
+    }
+
+    @Override
+    public ErpGoodsStockQueryResponse getGoodsStock(ErpGoodsStockQueryRequert param) {
+        return getCurrentErpService().getGoodsStock(param);
+    }
+}

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

@@ -16,7 +16,7 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-@Service
+@Service("erpOrderServiceImpl")
 public class ErpOrderServiceImpl implements IErpOrderService
 {
     public final static Logger LOGGER = LoggerFactory.getLogger(ErpOrderServiceImpl.class);

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

@@ -0,0 +1,80 @@
+package com.fs.erp.service.impl;
+
+import com.fs.erp.constant.ErpTypeConstant;
+import com.fs.erp.domain.ErpOrder;
+import com.fs.erp.domain.ErpRefundOrder;
+import com.fs.erp.domain.ErpUser;
+import com.fs.erp.dto.*;
+import com.fs.erp.service.IErpOrderService;
+import com.fs.erp.utils.ErpContextHolder;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.context.annotation.Primary;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * ERP订单服务动态代理类
+ * 通过ErpContextHolder获取当前ERP类型,实现多ERP系统无感切换
+ */
+@Service
+@Primary
+public class ErpOrderServiceProxy implements IErpOrderService {
+
+    /**
+     * 存储所有实现的ERP订单服务
+     */
+    private final Map<String, IErpOrderService> erpOrderServiceMap = new HashMap<>();
+
+    /**
+     * 构造函数注入各种ERP实现
+     */
+    @Autowired
+    public ErpOrderServiceProxy(
+            @Qualifier("JSTErpOrderServiceImpl") IErpOrderService jstErpOrderService,
+            @Qualifier("erpOrderServiceImpl") IErpOrderService gyErpOrderService) {
+        erpOrderServiceMap.put(ErpTypeConstant.JST_ERP, jstErpOrderService);
+        erpOrderServiceMap.put(ErpTypeConstant.GY_ERP, gyErpOrderService);
+    }
+
+    /**
+     * 获取当前应该使用的ERP服务实现
+     * @return 对应ERP类型的服务实现
+     */
+    private IErpOrderService getCurrentErpService() {
+        String erpType = ErpContextHolder.getErpType();
+
+        IErpOrderService service = erpOrderServiceMap.get(erpType);
+        if (service == null) {
+            throw new IllegalStateException("未找到ERP类型 [" + erpType + "] 的实现");
+        }
+        return service;
+    }
+
+    @Override
+    public ErpOrderResponse addOrder(ErpOrder order) {
+        return getCurrentErpService().addOrder(order);
+    }
+
+    @Override
+    public ErpOrderResponse refundOrder(ErpRefundOrder order) {
+        return getCurrentErpService().refundOrder(order);
+    }
+
+    @Override
+    public ErpDeliverysResponse getDeliver(ErpDeliverysRequest param) {
+        return getCurrentErpService().getDeliver(param);
+    }
+
+    @Override
+    public ErpOrderQueryResponse getOrder(ErpOrderQueryRequert param) {
+        return getCurrentErpService().getOrder(param);
+    }
+
+    @Override
+    public BaseResponse refundUpdate(ErpRefundUpdateRequest param) {
+        return getCurrentErpService().refundUpdate(param);
+    }
+}

+ 1 - 2
fs-service-system/src/main/java/com/fs/erp/service/impl/JSTErpGoodsServiceImpl.java

@@ -12,8 +12,7 @@ import org.springframework.stereotype.Service;
 import java.util.ArrayList;
 import java.util.List;
 
-@Service
-@Primary
+@Service("JSTErpGoodsServiceImpl")
 public class JSTErpGoodsServiceImpl implements IErpGoodsService {
     @Autowired
     private JstErpHttpService jstErpHttpService;

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

@@ -25,7 +25,6 @@ import java.util.stream.Collectors;
 
 @Slf4j
 @Service
-@Primary
 public class JSTErpOrderServiceImpl implements IErpOrderService {
     @Autowired
     private JstErpHttpService jstErpHttpService;

+ 64 - 0
fs-service-system/src/main/java/com/fs/erp/utils/ErpContextHolder.java

@@ -0,0 +1,64 @@
+package com.fs.erp.utils;
+
+import com.fs.erp.constant.ErpTypeConstant;
+
+/**
+ * ERP上下文管理工具类
+ * 用于管理当前线程的ERP类型信息,供多个服务共享使用
+ */
+public class ErpContextHolder {
+
+    /**
+     * 存储当前线程的ERP类型
+     */
+    private static final ThreadLocal<String> ERP_TYPE_CONTEXT = new ThreadLocal<>();
+
+    /**
+     * 设置当前线程的ERP类型
+     * @param erpType ERP类型代码
+     */
+    public static void setErpType(String erpType) {
+        ERP_TYPE_CONTEXT.set(erpType);
+    }
+
+    /**
+     * 获取当前线程的ERP类型
+     * @return 当前ERP类型
+     */
+    public static String getErpType() {
+        String erpType = ERP_TYPE_CONTEXT.get();
+        return erpType != null ? erpType : ErpTypeConstant.GY_ERP; // 默认返回GY类型
+    }
+
+    /**
+     * 清除当前线程的ERP类型
+     */
+    public static void clear() {
+        ERP_TYPE_CONTEXT.remove();
+    }
+
+    /**
+     * 使用指定的ERP类型执行操作,并自动清理上下文
+     * @param erpType ERP类型
+     * @param operation 要执行的操作
+     * @param <T> 返回值类型
+     * @return 操作的返回值
+     */
+    public static <T> T executeWithErpType(String erpType, ErpOperation<T> operation) {
+        try {
+            setErpType(erpType);
+            return operation.execute();
+        } finally {
+            clear();
+        }
+    }
+
+    /**
+     * 用于定义在ERP上下文中执行的操作
+     * @param <T> 操作返回值类型
+     */
+    @FunctionalInterface
+    public interface ErpOperation<T> {
+        T execute();
+    }
+}

+ 6 - 0
fs-service-system/src/main/java/com/fs/oms/domain/OmsWarehouse.java

@@ -28,6 +28,12 @@ public class OmsWarehouse extends BaseEntity
     @Excel(name = "仓库编码")
     private String warehouseCode;
 
+    /**
+     * erp jst/gy
+     */
+    @Excel(name = "erp")
+    private String erp;
+
     /** 类型 1渠道仓 2逻辑仓 3实体仓 4比例虚仓*/
     @Excel(name = "类型  1渠道仓 2逻辑仓 3实体仓 4比例虚仓")
     private Integer warehouseType;

+ 2 - 0
fs-service-system/src/main/java/com/fs/store/domain/FsStoreProduct.java

@@ -184,4 +184,6 @@ public class FsStoreProduct extends BaseEntity
     @Excel(name = "仓库代码")
     private String warehouseCode;
 
+    private String erp;
+
 }

+ 4 - 0
fs-service-system/src/main/java/com/fs/store/domain/FsWarehouses.java

@@ -35,6 +35,10 @@ public class FsWarehouses extends BaseEntity
     @Excel(name = "仓库编码")
     private String warehouseCode;
 
+    @Excel(name = "erp推送")
+    private String erp;
+    private String erpText;
+
     /** 仓库地址 */
     @Excel(name = "仓库地址")
     private String warehouseAddress;

+ 8 - 0
fs-service-system/src/main/java/com/fs/store/mapper/FsStoreProductMapper.java

@@ -1,6 +1,8 @@
 package com.fs.store.mapper;
 
 import java.util.List;
+import java.util.Map;
+
 import com.fs.store.domain.FsStoreProduct;
 import com.fs.store.param.FsStoreProductQueryParam;
 import com.fs.store.vo.*;
@@ -202,4 +204,10 @@ public interface FsStoreProductMapper
             "</foreach>"+
             "</script>"})
     Integer updateFsStoreProductIsShow(@Param("productIds")Long[] productIds,@Param("status") int status);
+
+    @Select(" select sp.product_id as product_id,sp.warehouse_code as warehouse_code,fw.erp as erp from fs_store_product sp " +
+            " left join fs_warehouses fw " +
+            " on sp.warehouse_code=fw.warehouse_code ")
+    Map<Long,FsStoreProduct> selectAllProductMappingInfo();
+
 }

+ 5 - 0
fs-service-system/src/main/java/com/fs/store/mapper/FsWarehousesMapper.java

@@ -1,6 +1,8 @@
 package com.fs.store.mapper;
 
 import com.fs.store.domain.FsWarehouses;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 
 import java.util.List;
 
@@ -59,4 +61,7 @@ public interface FsWarehousesMapper
      * @return 结果
      */
     public int deleteFsWarehousesByIds(List<Long> ids);
+
+    @Select("select erp from fs_warehouses where warehouse_code=#{warehouseCode} limit 1")
+    String selectErpByCode(@Param("warehouseCode") String warehouseCode);
 }

+ 18 - 0
fs-service-system/src/main/java/com/fs/store/service/impl/FsStoreAfterSalesServiceImpl.java

@@ -23,10 +23,12 @@ import com.fs.company.service.ICompanyService;
 import com.fs.erp.dto.BaseResponse;
 import com.fs.erp.dto.ErpRefundUpdateRequest;
 import com.fs.erp.service.IErpOrderService;
+import com.fs.erp.utils.ErpContextHolder;
 import com.fs.huifuPay.domain.HuiFuRefundResult;
 import com.fs.huifuPay.dto.*;
 import com.fs.huifuPay.sdk.opps.core.request.V2TradePaymentScanpayRefundRequest;
 import com.fs.huifuPay.service.HuiFuService;
+import com.fs.store.mapper.FsWarehousesMapper;
 import com.fs.tzBank.TzBankService;
 import com.fs.pay.pay.domain.RefundResult;
 import com.fs.pay.pay.service.PayService;
@@ -107,6 +109,9 @@ public class FsStoreAfterSalesServiceImpl implements IFsStoreAfterSalesService
     @Autowired
     private IFsCouponScheduleService fsCouponScheduleService;
 
+    @Autowired
+    private FsWarehousesMapper fsWarehousesMapper;
+
 
     /**
      * 查询售后记录
@@ -311,6 +316,12 @@ public class FsStoreAfterSalesServiceImpl implements IFsStoreAfterSalesService
         request.setTid(order.getOrderCode());
         request.setOid(order.getOrderCode());
         request.setRefund_state(1);
+        // 根据仓库code找erp
+        if(StringUtils.isNotBlank(order.getStoreHouseCode())){
+            String erp = fsWarehousesMapper.selectErpByCode(order.getStoreHouseCode());
+            ErpContextHolder.setErpType(erp);
+        }
+
         BaseResponse response=erpOrderService.refundUpdate(request);
         if(response.getSuccess()){
             return R.ok();
@@ -971,6 +982,13 @@ public class FsStoreAfterSalesServiceImpl implements IFsStoreAfterSalesService
         request.setTid(order.getOrderCode());
         request.setOid(order.getOrderCode());
         request.setRefund_state(1);
+
+        // 根据仓库code找erp
+        if(StringUtils.isNotBlank(order.getStoreHouseCode())){
+            String erp = fsWarehousesMapper.selectErpByCode(order.getStoreHouseCode());
+            ErpContextHolder.setErpType(erp);
+        }
+
         BaseResponse response=erpOrderService.refundUpdate(request);
         if(response.getSuccess()){
             return R.ok();

+ 26 - 0
fs-service-system/src/main/java/com/fs/store/service/impl/FsStoreOrderServiceImpl.java

@@ -48,6 +48,7 @@ import com.fs.company.service.ICompanyUserService;
 import com.fs.erp.domain.*;
 import com.fs.erp.dto.*;
 import com.fs.erp.service.IErpOrderService;
+import com.fs.erp.utils.ErpContextHolder;
 import com.fs.express.FsStoreDeliversService;
 import com.fs.express.cache.FsStoreDeliversCacheService;
 import com.fs.huifuPay.domain.HuiFuCreateOrder;
@@ -261,6 +262,9 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
     @Autowired
     private OrderQueryService orderQueryService;
 
+    @Autowired
+    private FsWarehousesMapper fsWarehousesMapper;
+
 
     @Override
     public void syncExpressToWx() {
@@ -2175,6 +2179,11 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
                 }
                 erpOrder.setWarehouse_code(warehouseCode);
                 order.setStoreHouseCode(warehouseCode);
+
+                // 根据仓库code找erp
+                String erp = fsWarehousesMapper.selectErpByCode(warehouseCode);
+                ErpContextHolder.setErpType(erp);
+
             }
 
         }
@@ -2197,6 +2206,10 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
             }
             order.setStoreHouseCode(warehouseCode);
             erpOrder.setWarehouse_code(warehouseCode);
+
+            // 根据仓库code找erp
+            String erp = fsWarehousesMapper.selectErpByCode(warehouseCode);
+            ErpContextHolder.setErpType(erp);
         }
 
         ErpOrderResponse response= erpOrderService.addOrder(erpOrder);
@@ -2207,6 +2220,8 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
         //写入外部订单号
         order.setExtendOrderId(response.getCode());
         fsStoreOrderMapper.updateFsStoreOrder(order);
+
+        ErpContextHolder.clear();
     }
 
     @Override
@@ -2323,6 +2338,12 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
             request.setTid(order.getOrderCode());
             request.setOid(order.getOrderCode());
             request.setRefund_state(1);
+
+            // 根据仓库code找erp
+            if(StringUtils.isNotBlank(order.getStoreHouseCode())){
+                String erp = fsWarehousesMapper.selectErpByCode(order.getStoreHouseCode());
+                ErpContextHolder.setErpType(erp);
+            }
             BaseResponse response=erpOrderService.refundUpdate(request);
             if(ObjectUtil.isNull(response) || !response.getSuccess()){
                 logger.error("调用erp退款接口失败! {}",JSON.toJSONString(response));
@@ -2385,6 +2406,11 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
         }
         ErpOrderQueryRequert request = new ErpOrderQueryRequert();
         request.setCode(order.getExtendOrderId());
+        // 根据仓库code找erp
+        if(com.fs.common.utils.StringUtils.isNotBlank(order.getStoreHouseCode())){
+            String erp = fsWarehousesMapper.selectErpByCode(order.getStoreHouseCode());
+            ErpContextHolder.setErpType(erp);
+        }
         ErpOrderQueryResponse response = erpOrderService.getOrder(request);
         if(response.getOrders()!=null&&response.getOrders().size()>0){
             for(ErpOrderQuery orderQuery : response.getOrders()){

+ 8 - 0
fs-service-system/src/main/java/com/fs/store/service/impl/FsWarehousesServiceImpl.java

@@ -4,6 +4,7 @@ import java.util.Collections;
 import java.util.List;
 
 import cn.hutool.core.util.ObjectUtil;
+import com.fs.common.utils.StringUtils;
 import com.fs.store.domain.FsWarehouses;
 import com.fs.store.mapper.FsWarehousesMapper;
 import com.fs.store.service.IFsWarehousesService;
@@ -57,6 +58,13 @@ public class FsWarehousesServiceImpl implements IFsWarehousesService
             String isActiveText = sysDictDataCacheService
                     .selectDictLabel("enable_options", String.valueOf(isActive));
             warehouse.setIsActiveText(isActiveText);
+
+            if(StringUtils.isNotBlank(warehouse.getErp())){
+                String erpText = sysDictDataCacheService.selectDictLabel("erp_type", warehouse.getErp());
+                if(StringUtils.isNotBlank(erpText)){
+                    warehouse.setErpText(erpText);
+                }
+            }
         }
 
         return warehouses;

+ 7 - 0
fs-service-system/src/main/resources/application-config.yml

@@ -15,6 +15,7 @@ fsConfig:
   erpSecret: 96f774dbd60847b59a16f92fd963a0c8
   erpUrl: http://v2.api.guanyierp.com/rest/erp_open
   erpShopCode: "0080"
+
   #第三方支付配置
   payOpen: 1
   payPartnerId: 22051909542647100020
@@ -47,6 +48,12 @@ fsConfig:
 #  appId: 1661496555
 #  manuId: 0212af1e742b41b09089afeec98f8276
 #  callbackUrl: https://api.yjf.runtzh.com/app/prescribe/presribeNotify
+
+# 聚水潭API配置
+jst:
+  app_key: bd7a7d06a6d54377842f883f9a4c502a
+  app_secret: 1d112cb9d21d41e187ff824b5852f4cf
+  authorization_code: zzzzzz
 logging:
   level:
     org.springframework.web: INFO

+ 5 - 1
fs-service-system/src/main/resources/mapper/store/FsWarehousesMapper.xml

@@ -7,6 +7,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <resultMap type="FsWarehouses" id="FsWarehousesResult">
         <result property="id"    column="id"    />
         <result property="warehouseName"    column="warehouse_name"    />
+        <result property="erp"    column="erp"    />
         <result property="warehouseCode"    column="warehouse_code"    />
         <result property="warehouseAddress"    column="warehouse_address"    />
         <result property="contactPerson"    column="contact_person"    />
@@ -18,7 +19,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectFsWarehousesVo">
-        select id, warehouse_name, warehouse_code, warehouse_address, contact_person, contact_phone, is_active, created_at, updated_at, remark from fs_warehouses
+        select id, warehouse_name, warehouse_code,erp, warehouse_address, contact_person, contact_phone, is_active, created_at, updated_at, remark from fs_warehouses
     </sql>
 
     <select id="selectFsWarehousesList" parameterType="FsWarehouses" resultMap="FsWarehousesResult">
@@ -46,6 +47,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="warehouseName != null and warehouseName != ''">warehouse_name,</if>
             <if test="warehouseCode != null">warehouse_code,</if>
             <if test="warehouseAddress != null">warehouse_address,</if>
+            <if test="erp != null">erp,</if>
             <if test="contactPerson != null">contact_person,</if>
             <if test="contactPhone != null">contact_phone,</if>
             <if test="isActive != null">is_active,</if>
@@ -57,6 +59,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="warehouseName != null and warehouseName != ''">#{warehouseName},</if>
             <if test="warehouseCode != null">#{warehouseCode},</if>
             <if test="warehouseAddress != null">#{warehouseAddress},</if>
+            <if test="erp != null">#{erp},</if>
             <if test="contactPerson != null">#{contactPerson},</if>
             <if test="contactPhone != null">#{contactPhone},</if>
             <if test="isActive != null">#{isActive},</if>
@@ -72,6 +75,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="warehouseName != null and warehouseName != ''">warehouse_name = #{warehouseName},</if>
             <if test="warehouseCode != null">warehouse_code = #{warehouseCode},</if>
             <if test="warehouseAddress != null">warehouse_address = #{warehouseAddress},</if>
+            <if test="erp != null">erp = #{erp},</if>
             <if test="contactPerson != null">contact_person = #{contactPerson},</if>
             <if test="contactPhone != null">contact_phone = #{contactPhone},</if>
             <if test="isActive != null">is_active = #{isActive},</if>