Browse Source

倍力优 erp接旗舰版

xgb 4 weeks ago
parent
commit
5a5e858d80
29 changed files with 3170 additions and 585 deletions
  1. 0 2
      fs-admin/src/main/java/com/fs/his/task/WatchCourseTask.java
  2. 0 2
      fs-admin/src/main/java/com/fs/hisStore/controller/FsStoreHealthOrderScrmController.java
  3. 0 2
      fs-admin/src/main/java/com/fs/hisStore/controller/FsStoreOrderPromotionScrmController.java
  4. 36 38
      fs-admin/src/main/java/com/fs/hisStore/task/ErpTask.java
  5. 38 37
      fs-admin/src/main/java/com/fs/hisStore/task/MallStoreTask.java
  6. 81 3
      fs-company/src/main/java/com/fs/company/controller/common/CommonController.java
  7. 1 2
      fs-company/src/main/java/com/fs/company/controller/common/Test.java
  8. 0 2
      fs-company/src/main/java/com/fs/company/controller/store/FsStoreOrderController.java
  9. 1 1
      fs-quartz/src/main/java/com/fs/quartz/config/ScheduleConfig.java
  10. 3 0
      fs-service/src/main/java/com/fs/erp/domain/ErpOrderQuery.java
  11. 1 1
      fs-service/src/main/java/com/fs/erp/dto/sdk/wangdian/api/WdtClient.java
  12. 4 4
      fs-service/src/main/java/com/fs/erp/dto/sdk/wangdianTwo/api/WdtTradeAPI.java
  13. 29 0
      fs-service/src/main/java/com/fs/erp/dto/sdk/wangdianTwo/api/dto/ErrorInfo.java
  14. 32 0
      fs-service/src/main/java/com/fs/erp/dto/sdk/wangdianTwo/api/dto/PushSelf2Request.java
  15. 6 3
      fs-service/src/main/java/com/fs/erp/dto/sdk/wangdianTwo/api/dto/PushSelf2Response.java
  16. 1899 391
      fs-service/src/main/java/com/fs/erp/dto/sdk/wangdianTwo/api/dto/QuerySelfOrderDetailResponse.java
  17. 15 1
      fs-service/src/main/java/com/fs/erp/dto/sdk/wangdianTwo/api/dto/RawRefundUpload2Request.java
  18. 5 5
      fs-service/src/main/java/com/fs/erp/dto/sdk/wangdianTwo/api/dto/RawRefundUpload2Response.java
  19. 13 6
      fs-service/src/main/java/com/fs/erp/dto/sdk/wangdianTwo/impl/WdtTwoClient.java
  20. 108 47
      fs-service/src/main/java/com/fs/erp/service/impl/WdtTwoErpGoodsServiceImpl.java
  21. 848 0
      fs-service/src/main/java/com/fs/erp/service/impl/WdtTwoErpOrderServiceImpl.java
  22. 7 0
      fs-service/src/main/java/com/fs/his/service/impl/FsStoreAfterSalesServiceImpl.java
  23. 6 0
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreCartScrmServiceImpl.java
  24. 37 28
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreOrderScrmServiceImpl.java
  25. 0 2
      fs-store/src/main/java/com/fs/hisStore/controller/store/FsStoreOrderScrmController.java
  26. 0 2
      fs-store/src/main/java/com/fs/store/controller/store/FsStoreOrderController.java
  27. 0 2
      fs-user-app/src/main/java/com/fs/app/controller/store/PayScrmController.java
  28. 0 2
      fs-user-app/src/main/java/com/fs/app/controller/store/ProductScrmController.java
  29. 0 2
      fs-user-app/src/main/java/com/fs/app/controller/store/StoreOrderScrmController.java

+ 0 - 2
fs-admin/src/main/java/com/fs/his/task/WatchCourseTask.java

@@ -15,8 +15,6 @@ import org.springframework.stereotype.Component;
 @Component("storeTask")
 public class WatchCourseTask
 {
-    @Autowired
-    IErpOrderService erpOrderService;
 
     @Autowired
     private IFsUserWatchCourseStatisticsService fsUserWatchCourseStatisticsService;

+ 0 - 2
fs-admin/src/main/java/com/fs/hisStore/controller/FsStoreHealthOrderScrmController.java

@@ -44,8 +44,6 @@ public class FsStoreHealthOrderScrmController extends BaseController {
     @Autowired
     private IFsStoreOrderStatusScrmService orderStatusService;
 
-    @Autowired
-    IErpOrderService erpOrderService;
     @Autowired
     IFsStorePaymentScrmService paymentService;
 

+ 0 - 2
fs-admin/src/main/java/com/fs/hisStore/controller/FsStoreOrderPromotionScrmController.java

@@ -47,8 +47,6 @@ public class FsStoreOrderPromotionScrmController extends BaseController {
     @Autowired
     private IFsStoreOrderStatusScrmService orderStatusService;
 
-    @Autowired
-    IErpOrderService erpOrderService;
     @Autowired
     IFsStorePaymentScrmService paymentService;
 

+ 36 - 38
fs-admin/src/main/java/com/fs/hisStore/task/ErpTask.java

@@ -21,8 +21,6 @@ public class ErpTask {
 
     @Autowired
     private FsErpFinishPushMapper fsErpFinishPushMapper;
-    @Autowired
-    private IErpOrderService erpOrderService;
 
     @Autowired
     private IFsStoreOrderScrmService fsStoreOrderService;
@@ -31,41 +29,41 @@ public class ErpTask {
     /**
      * 推送完成订单到ERP
      */
-    public void pushFinishOrderToErp(){
-        List<FsErpFinishPush> fsErpFinishPushes = fsErpFinishPushMapper.queryPenddingOrder();
-        for (FsErpFinishPush fsErpFinishPush : fsErpFinishPushes) {
-            FsStoreOrderScrm fsStoreOrder = fsStoreOrderService.selectFsStoreOrderById(fsErpFinishPush.getOrderId());
-
-            try {
-
-                ErpOrder erpOrder = fsStoreOrderService.getErpOrder(fsStoreOrder);
-
-                ErpOrderResponse erpOrderResponse = erpOrderService.finishOrder(erpOrder);
-
-                fsErpFinishPush.setParams(erpOrderResponse.getRequestRawData());
-                fsErpFinishPush.setResult(erpOrderResponse.getResponseRawData());
-                fsErpFinishPush.setUpdateTime(new Date());
-
-                if(erpOrderResponse.getSuccess()!= null && erpOrderResponse.getSuccess()){
-                    fsErpFinishPush.setTaskStatus(1);
-
-                    log.error("推送完成订单到ERP成功! 订单号: {}",fsErpFinishPush.getOrderId());
-                } else {
-                    fsErpFinishPush.setTaskStatus(2);
-                    fsErpFinishPush.setRetryCount(fsErpFinishPush.getRetryCount()+1);
-                    log.error("推送完成订单到ERP失败! 订单号: {}",fsErpFinishPush.getOrderId());
-                }
-            } catch (Throwable e) {
-                fsErpFinishPush.setRetryCount(fsErpFinishPush.getRetryCount()+1);
-                fsErpFinishPush.setErrorMessage(ExceptionUtils.getStackTrace(e));
-                fsErpFinishPush.setTaskStatus(2);
-                log.error("订单推送失败!原因: {}", ExceptionUtils.getStackTrace(e),e);
-            }
-
-
-            fsErpFinishPushMapper.updateById(fsErpFinishPush);
-        }
-
-    }
+//    public void pushFinishOrderToErp(){
+//        List<FsErpFinishPush> fsErpFinishPushes = fsErpFinishPushMapper.queryPenddingOrder();
+//        for (FsErpFinishPush fsErpFinishPush : fsErpFinishPushes) {
+//            FsStoreOrderScrm fsStoreOrder = fsStoreOrderService.selectFsStoreOrderById(fsErpFinishPush.getOrderId());
+//
+//            try {
+//
+//                ErpOrder erpOrder = fsStoreOrderService.getErpOrder(fsStoreOrder);
+//
+//                ErpOrderResponse erpOrderResponse = erpOrderService.finishOrder(erpOrder);
+//
+//                fsErpFinishPush.setParams(erpOrderResponse.getRequestRawData());
+//                fsErpFinishPush.setResult(erpOrderResponse.getResponseRawData());
+//                fsErpFinishPush.setUpdateTime(new Date());
+//
+//                if(erpOrderResponse.getSuccess()!= null && erpOrderResponse.getSuccess()){
+//                    fsErpFinishPush.setTaskStatus(1);
+//
+//                    log.error("推送完成订单到ERP成功! 订单号: {}",fsErpFinishPush.getOrderId());
+//                } else {
+//                    fsErpFinishPush.setTaskStatus(2);
+//                    fsErpFinishPush.setRetryCount(fsErpFinishPush.getRetryCount()+1);
+//                    log.error("推送完成订单到ERP失败! 订单号: {}",fsErpFinishPush.getOrderId());
+//                }
+//            } catch (Throwable e) {
+//                fsErpFinishPush.setRetryCount(fsErpFinishPush.getRetryCount()+1);
+//                fsErpFinishPush.setErrorMessage(ExceptionUtils.getStackTrace(e));
+//                fsErpFinishPush.setTaskStatus(2);
+//                log.error("订单推送失败!原因: {}", ExceptionUtils.getStackTrace(e),e);
+//            }
+//
+//
+//            fsErpFinishPushMapper.updateById(fsErpFinishPush);
+//        }
+//
+//    }
 
 }

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

@@ -87,9 +87,6 @@ public class MallStoreTask
     @Autowired
     private FsStorePaymentScrmMapper fsStorePaymentMapper;
 
-
-    @Autowired
-    private IErpGoodsService erpGoodsService;
     @Autowired
     private ISysConfigService configService;
     @Autowired
@@ -119,6 +116,10 @@ public class MallStoreTask
     @Qualifier("wdtErpOrderServiceImpl")
     private IErpOrderService wdtOrderService;
 
+    @Autowired
+    @Qualifier("wdtTwoErpOrderServiceImpl")
+    private IErpOrderService wdtTwoOrderService;
+
     @Autowired
     @Qualifier("hzOMSErpOrderServiceImpl")
     private IErpOrderService hzOMSOrderService;
@@ -142,8 +143,6 @@ public class MallStoreTask
     private FsCourseRedPacketLogMapper fsCourseRedPacketLogMapper;
 
 
-    @Autowired
-    IErpOrderService erpOrderService;
 
     //@Autowired
     //private IFsUserWatchCourseStatisticsService fsUserWatchCourseStatisticsService;
@@ -238,38 +237,38 @@ public class MallStoreTask
     }
 
 
-    public void storeProdUpdateCostPrice()
-    {
-        String json=configService.selectConfigByKey("store.config");
-        StoreConfig config=JSONUtil.toBean(json,StoreConfig.class);
-
-        List<FsStoreProductAttrValueScrm> values = fsStoreProductAttrValueMapper.selectFsStoreProductAttrValueList(new FsStoreProductAttrValueScrm());
-        for (FsStoreProductAttrValueScrm value : values) {
-            ErpGoodsQueryRequert query = new ErpGoodsQueryRequert();
-            query.setCode(value.getBarCode());
-            ErpGoodsQueryResponse goods = erpGoodsService.getGoods(query);
-            List<ErpGoods> items = goods.getItems();
-
-            if (items!=null&&items.size()>0){
-                ErpGoods erpGoods = items.get(0);
-                BigDecimal salesPrice = erpGoods.getSales_price();
-                if (salesPrice!=null&&salesPrice.compareTo(BigDecimal.ZERO) != 0){
-                    BigDecimal divide = salesPrice.multiply(new BigDecimal(config.getSalesPriceRate())).divide(new BigDecimal("100"));
-                    System.out.println("代理价格"+divide);
-                    System.out.println("成本价"+salesPrice);
-                    FsStoreProductAttrValueScrm va = new FsStoreProductAttrValueScrm();
-                    va.setCost(salesPrice);
-                    va.setAgentPrice(divide);
-                    va.setId(value.getId());
-                    fsStoreProductAttrValueMapper.updateFsStoreProductAttrValue(va);
-                }
-            }
-            System.out.println(goods);
-        }
-
-
-
-    }
+//    public void storeProdUpdateCostPrice()
+//    {
+//        String json=configService.selectConfigByKey("store.config");
+//        StoreConfig config=JSONUtil.toBean(json,StoreConfig.class);
+//
+//        List<FsStoreProductAttrValueScrm> values = fsStoreProductAttrValueMapper.selectFsStoreProductAttrValueList(new FsStoreProductAttrValueScrm());
+//        for (FsStoreProductAttrValueScrm value : values) {
+//            ErpGoodsQueryRequert query = new ErpGoodsQueryRequert();
+//            query.setCode(value.getBarCode());
+//            ErpGoodsQueryResponse goods = erpGoodsService.getGoods(query);
+//            List<ErpGoods> items = goods.getItems();
+//
+//            if (items!=null&&items.size()>0){
+//                ErpGoods erpGoods = items.get(0);
+//                BigDecimal salesPrice = erpGoods.getSales_price();
+//                if (salesPrice!=null&&salesPrice.compareTo(BigDecimal.ZERO) != 0){
+//                    BigDecimal divide = salesPrice.multiply(new BigDecimal(config.getSalesPriceRate())).divide(new BigDecimal("100"));
+//                    System.out.println("代理价格"+divide);
+//                    System.out.println("成本价"+salesPrice);
+//                    FsStoreProductAttrValueScrm va = new FsStoreProductAttrValueScrm();
+//                    va.setCost(salesPrice);
+//                    va.setAgentPrice(divide);
+//                    va.setId(value.getId());
+//                    fsStoreProductAttrValueMapper.updateFsStoreProductAttrValue(va);
+//                }
+//            }
+//            System.out.println(goods);
+//        }
+//
+//
+//
+//    }
     public void couponOp()
     {
         couponUserService.updateFsCouponByExpire();
@@ -493,6 +492,8 @@ public class MallStoreTask
                     erpOrderService = jSTOrderService;
                 }else if (erpType == 6) {
                     erpOrderService = k9OrderService;
+                }else if (erpType == 7) {
+                    erpOrderService = wdtTwoOrderService;
                 }
             }
         }

+ 81 - 3
fs-company/src/main/java/com/fs/company/controller/common/CommonController.java

@@ -12,12 +12,25 @@ import com.fs.common.utils.file.FileUploadUtils;
 import com.fs.common.utils.file.FileUtils;
 import com.fs.company.utils.AudioUtils;
 import com.fs.company.vo.WangUploadVO;
+import com.fs.erp.domain.ErpDeliverys;
+import com.fs.erp.domain.ErpOrderQuery;
+import com.fs.erp.dto.ErpGoodsStockQueryRequert;
+import com.fs.erp.dto.ErpGoodsStockQueryResponse;
+import com.fs.erp.dto.ErpOrderQueryRequert;
+import com.fs.erp.dto.ErpOrderQueryResponse;
+import com.fs.erp.service.IErpOrderService;
+import com.fs.erp.service.impl.WdtTwoErpGoodsServiceImpl;
 import com.fs.framework.config.ServerConfig;
 import com.fs.framework.security.LoginUser;
 import com.fs.framework.service.TokenService;
+import com.fs.his.config.FsSysConfig;
 import com.fs.his.domain.FsExportTask;
 import com.fs.his.dto.InquiryConfigDTO;
 import com.fs.his.service.IFsExportTaskService;
+import com.fs.his.utils.ConfigUtil;
+import com.fs.hisStore.domain.FsStoreOrderScrm;
+import com.fs.hisStore.mapper.FsStoreOrderScrmMapper;
+import com.fs.hisStore.service.IFsStoreOrderScrmService;
 import com.fs.im.dto.OpenImResponseDTO;
 import com.fs.im.service.OpenIMService;
 import com.fs.qw.service.IQwWorkTaskService;
@@ -28,6 +41,7 @@ import com.fs.system.service.ISysConfigService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
@@ -42,6 +56,8 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
+import static com.fs.hisStore.constants.StoreConstants.DELIVERY;
+
 /**
  * 通用请求处理
  *
@@ -61,6 +77,12 @@ public class CommonController
     @Autowired
     private QwApiService qwApiService;
 
+    @Autowired
+    private FsStoreOrderScrmMapper fsStoreOrderMapper;
+
+    @Autowired
+    private IFsStoreOrderScrmService orderService;
+
 
     @Autowired
     private ISysConfigService configService;
@@ -68,6 +90,13 @@ public class CommonController
     @Autowired
     private OpenIMService openIMService;
 
+    @Autowired
+    private ConfigUtil configUtil;
+
+    @Autowired
+    @Qualifier("wdtTwoErpOrderServiceImpl")
+    private IErpOrderService wdtTwoOrderService;
+
     @Autowired
     private TokenService tokenService;
 //    @Autowired
@@ -81,15 +110,64 @@ public class CommonController
     @Autowired
     private IQwWorkTaskService qwWorkTaskService;
 
-    @PostMapping("common/test")
-    public R test() throws Exception
+    @Autowired
+    private WdtTwoErpGoodsServiceImpl wdtTwoErpGoodsService;
+
+    @GetMapping("common/test")
+    public R test(String barcode) throws Exception
     {
-        qwWorkTaskService.delQwWorkTaskByOver();
+//        qwWorkTaskService.delQwWorkTaskByOver();
       //  qwWorkTaskService.addQwWorkByFirstCourse();
 //        qwWorkTaskService.addQwWorkByCourse();
 //        qwWorkTaskService.addQwWorkByConversionDay();
+        List<FsStoreOrderScrm> list = fsStoreOrderMapper.selectUpdateExpress();
+        for (FsStoreOrderScrm order : list){
+            if(!"2016767346466619392".equals(order.getExtendOrderId())){
+                continue;
+            }
+
+            ErpOrderQueryRequert request = new ErpOrderQueryRequert();
+            request.setCode(order.getExtendOrderId());
+            IErpOrderService erpOrderService = getErpOrderService();
+            ErpOrderQueryResponse response = erpOrderService.getOrder(request);
+            if(response.getOrders()!=null&&response.getOrders().size()>0){
+                for(ErpOrderQuery orderQuery : response.getOrders()){
+                    if(orderQuery.getDeliverys()!=null&&orderQuery.getDeliverys().size()>0){
+                        for(ErpDeliverys delivery:orderQuery.getDeliverys()){
+                            if(delivery.getDelivery()&& org.apache.commons.lang3.StringUtils.isNotEmpty(delivery.getMail_no())){
+                                //更新商订单状态 删除REDIS
+                                orderService.deliveryOrder(order.getOrderCode(),order.getExtendOrderId(),delivery.getMail_no(),delivery.getExpress_code(),delivery.getExpress_name());
+//                                redisCache.deleteObject(DELIVERY+":"+order.getExtendOrderId());
+                            }
+                        }
+
+                    }
+                }
+
+            }
+
+        }
+
+
       return R.ok();
     }
+
+    private IErpOrderService getErpOrderService(){
+        //判断是否开启erp
+        IErpOrderService erpOrderService = null;
+        FsSysConfig erpConfig = configUtil.getSysConfig();
+        Integer erpOpen = erpConfig.getErpOpen();
+        if (erpOpen != null && erpOpen == 1) {
+            //判断erp类型
+            Integer erpType = erpConfig.getErpType();
+            if (erpType != null) {
+                 if (erpType == 7) {
+                    erpOrderService = wdtTwoOrderService;
+                }
+            }
+        }
+        return erpOrderService;
+    }
     /**
      * 通用下载请求
      *

+ 1 - 2
fs-company/src/main/java/com/fs/company/controller/common/Test.java

@@ -175,8 +175,7 @@ public class Test {
     @Autowired
     @Qualifier("k9OrderScrmServiceImpl")
     private IErpOrderService k9OrderService;
-    @Autowired
-    IErpOrderService erpOrderService;
+
     @GetMapping("test")
     public void fileDownload() {
         deliveryOpScrm();

+ 0 - 2
fs-company/src/main/java/com/fs/company/controller/store/FsStoreOrderController.java

@@ -469,8 +469,6 @@ public class FsStoreOrderController extends BaseController
         }
         return R.ok().put("data",expressInfoDTO);
     }
-    @Autowired
-    IErpOrderService erpOrderService;
 
     @GetMapping("/getEroOrder/{extendOrderId}")
     public R getEroOrder(@PathVariable("extendOrderId") String extendOrderId) {

+ 1 - 1
fs-quartz/src/main/java/com/fs/quartz/config/ScheduleConfig.java

@@ -8,7 +8,7 @@ import java.util.Properties;
 
 /**
  * 定时任务配置
- * 
+ *
 
  */
 @Configuration

+ 3 - 0
fs-service/src/main/java/com/fs/erp/domain/ErpOrderQuery.java

@@ -28,6 +28,9 @@ public class ErpOrderQuery {
     String receiver_address;
     Integer delivery_state;
 
+    // 发货时间
+    Date consignTime;
+
 
 
     List<ErpDeliverys> deliverys;

+ 1 - 1
fs-service/src/main/java/com/fs/erp/dto/sdk/wangdian/api/WdtClient.java

@@ -47,7 +47,7 @@ public class WdtClient {
 	private int readTimeout = 15000;//15秒
 
 
-	private WdtClient(){}
+	public WdtClient(){}
 
 
 	private static String getStringFromException(Throwable e) {

+ 4 - 4
fs-service/src/main/java/com/fs/erp/dto/sdk/wangdianTwo/api/WdtTradeAPI.java

@@ -11,8 +11,8 @@ public interface WdtTradeAPI
 	// blyjkcy3
 	// 原接口 trade_push.php  ??? ??
 	@Api(value = "sales.RawTrade.pushSelf2", paged = false)
-	PushSelfResponse pushSelf(String shopNo, List<PushSelfRequest.RawTrade> rawTradeList,
-							  List<PushSelfRequest.RawTradeOrder> rawTradeOrderList, List<PushSelfRequest.RawTradeDiscount> rawTradeDiscountList);
+	PushSelf2Response pushSelf2(String shopNo, List<PushSelf2Request.RawTrade> rawTradeList,
+							  List<PushSelf2Request.RawTradeOrder> rawTradeOrderList, List<PushSelf2Request.DiscountInfo> rawTradeDiscountList);
 
 
 	// stock_query.php
@@ -24,8 +24,8 @@ public interface WdtTradeAPI
 	QuerySelfOrderDetailResponse querySelfOrderWithDetail(QuerySelfOrderDetailRequest request, Pager pager);
 
     // sales_refund_push.php
-	@Api(value = "aftersales.refund.RawRefund.upload2", paged = true)
-	StockSearch2Response rawRefundUpload(StockSearch2Request request, Pager pager);
+	@Api(value = "aftersales.refund.RawRefund.upload2", paged = false)
+	RawRefundUpload2Response rawRefundUpload(String shopNo,List<RawRefundUpload2Request.RefundOrder> orderList);
 
 
 

+ 29 - 0
fs-service/src/main/java/com/fs/erp/dto/sdk/wangdianTwo/api/dto/ErrorInfo.java

@@ -0,0 +1,29 @@
+package com.fs.erp.dto.sdk.wangdianTwo.api.dto;
+
+/**
+ * @description: xgb
+ * @author: Xgb
+ * @createDate: 2026/1/28
+ * @version: 1.0
+ */
+public class ErrorInfo {
+    private String no;
+
+    private String error;
+
+    public String getNo() {
+        return no;
+    }
+
+    public void setNo(String no) {
+        this.no = no;
+    }
+
+    public String getError() {
+        return error;
+    }
+
+    public void setError(String error) {
+        this.error = error;
+    }
+}

+ 32 - 0
fs-service/src/main/java/com/fs/erp/dto/sdk/wangdianTwo/api/dto/PushSelf2Request.java

@@ -2,6 +2,7 @@ package com.fs.erp.dto.sdk.wangdianTwo.api.dto;
 
 import com.google.gson.annotations.SerializedName;
 import java.math.BigDecimal;
+import java.util.List;
 
 /**
  * 订单同步接口请求参数实体类
@@ -14,7 +15,15 @@ public class PushSelf2Request {
     @SerializedName("shop_no")
     private String shopNo;
 
+    /**
+     * 原始单信息
+     */
+    private List<RawTrade> rawTrades;
+
+
+    private List<RawTradeOrder> RawTradeOrders;
 
+    private List<DiscountInfo> DiscountInfos;
 
     // Getters and Setters
     public String getShopNo() {
@@ -25,6 +34,29 @@ public class PushSelf2Request {
         this.shopNo = shopNo;
     }
 
+    public List<RawTrade> getRawTrades() {
+        return rawTrades;
+    }
+
+    public void setRawTrades(List<RawTrade> rawTrades) {
+        this.rawTrades = rawTrades;
+    }
+
+    public List<RawTradeOrder> getRawTradeOrders() {
+        return RawTradeOrders;
+    }
+
+    public void setRawTradeOrders(List<RawTradeOrder> rawTradeOrders) {
+        RawTradeOrders = rawTradeOrders;
+    }
+
+    public List<DiscountInfo> getDiscountInfos() {
+        return DiscountInfos;
+    }
+
+    public void setDiscountInfos(List<DiscountInfo> discountInfos) {
+        DiscountInfos = discountInfos;
+    }
 
     /**
      * 原始单信息实体类

+ 6 - 3
fs-service/src/main/java/com/fs/erp/dto/sdk/wangdianTwo/api/dto/PushSelf2Response.java

@@ -20,7 +20,7 @@ public class PushSelf2Response
 	// 单号 no	String
 	// 错误信息	error	String
 	@SerializedName("error_list")
-	private List<Map<String,Object>> errorList;
+	private List<ErrorInfo> errorList;
 
 	public Integer getChgCount()
 	{
@@ -42,13 +42,16 @@ public class PushSelf2Response
 		this.newCount = newCount;
 	}
 
-	public List<Map<String,Object>> getErrorList()
+
+	public List<ErrorInfo> getErrorList()
 	{
 		return errorList;
 	}
 
-	public void setErrorList(List<Map<String,Object>> errorList)
+	public void setErrorList(List<ErrorInfo> errorList)
 	{
 		this.errorList = errorList;
 	}
+
+
 }

+ 1899 - 391
fs-service/src/main/java/com/fs/erp/dto/sdk/wangdianTwo/api/dto/QuerySelfOrderDetailResponse.java

@@ -20,7 +20,7 @@ public class QuerySelfOrderDetailResponse {
      * 单据数据(订单相关数据)
      */
     @SerializedName("order")
-    private List<Map<String, Object>> order;
+    private List<OrderInfo> order;
 
     // Getters and Setters
     public Integer getTotalCount() {
@@ -31,11 +31,11 @@ public class QuerySelfOrderDetailResponse {
         this.totalCount = totalCount;
     }
 
-    public List<Map<String, Object>> getOrder() {
+    public List<OrderInfo> getOrder() {
         return order;
     }
 
-    public void setOrder(List<Map<String, Object>> order) {
+    public void setOrder(List<OrderInfo> order) {
         this.order = order;
     }
 
@@ -751,471 +751,1979 @@ public class QuerySelfOrderDetailResponse {
         @SerializedName("detail_list")
         private List<OrderDetail> detailList;
 
-        // Getters and Setters 省略,请根据需要添加...
+        public Long getTradeId() {
+            return tradeId;
+        }
+
+        public void setTradeId(Long tradeId) {
+            this.tradeId = tradeId;
+        }
+
+        public String getTradeNo() {
+            return tradeNo;
+        }
+
+        public void setTradeNo(String tradeNo) {
+            this.tradeNo = tradeNo;
+        }
+
+        public Integer getPlatformId() {
+            return platformId;
+        }
+
+        public void setPlatformId(Integer platformId) {
+            this.platformId = platformId;
+        }
+
+        public Integer getWarehouseType() {
+            return warehouseType;
+        }
+
+        public void setWarehouseType(Integer warehouseType) {
+            this.warehouseType = warehouseType;
+        }
+
+        public String getSrcTids() {
+            return srcTids;
+        }
+
+        public void setSrcTids(String srcTids) {
+            this.srcTids = srcTids;
+        }
+
+        public String getPayAccount() {
+            return payAccount;
+        }
+
+        public void setPayAccount(String payAccount) {
+            this.payAccount = payAccount;
+        }
+
+        public Integer getTradeStatus() {
+            return tradeStatus;
+        }
+
+        public void setTradeStatus(Integer tradeStatus) {
+            this.tradeStatus = tradeStatus;
+        }
+
+        public Integer getTradeType() {
+            return tradeType;
+        }
+
+        public void setTradeType(Integer tradeType) {
+            this.tradeType = tradeType;
+        }
+
+        public Integer getDeliveryTerm() {
+            return deliveryTerm;
+        }
+
+        public void setDeliveryTerm(Integer deliveryTerm) {
+            this.deliveryTerm = deliveryTerm;
+        }
+
+        public String getReceiverRing() {
+            return receiverRing;
+        }
+
+        public void setReceiverRing(String receiverRing) {
+            this.receiverRing = receiverRing;
+        }
+
+        public String getFreezeReason() {
+            return freezeReason;
+        }
+
+        public void setFreezeReason(String freezeReason) {
+            this.freezeReason = freezeReason;
+        }
+
+        public Integer getRefundStatus() {
+            return refundStatus;
+        }
+
+        public void setRefundStatus(Integer refundStatus) {
+            this.refundStatus = refundStatus;
+        }
+
+        public Integer getFenxiaoType() {
+            return fenxiaoType;
+        }
+
+        public void setFenxiaoType(Integer fenxiaoType) {
+            this.fenxiaoType = fenxiaoType;
+        }
+
+        public String getFenxiaoNick() {
+            return fenxiaoNick;
+        }
+
+        public void setFenxiaoNick(String fenxiaoNick) {
+            this.fenxiaoNick = fenxiaoNick;
+        }
+
+        public String getTradeTime() {
+            return tradeTime;
+        }
+
+        public void setTradeTime(String tradeTime) {
+            this.tradeTime = tradeTime;
+        }
+
+        public String getPayTime() {
+            return payTime;
+        }
+
+        public void setPayTime(String payTime) {
+            this.payTime = payTime;
+        }
+
+        public String getConsignTime() {
+            return consignTime;
+        }
+
+        public void setConsignTime(String consignTime) {
+            this.consignTime = consignTime;
+        }
+
+        public String getBuyerNick() {
+            return buyerNick;
+        }
+
+        public void setBuyerNick(String buyerNick) {
+            this.buyerNick = buyerNick;
+        }
+
+        public String getReceiverName() {
+            return receiverName;
+        }
+
+        public void setReceiverName(String receiverName) {
+            this.receiverName = receiverName;
+        }
+
+        public Integer getReceiverProvince() {
+            return receiverProvince;
+        }
+
+        public void setReceiverProvince(Integer receiverProvince) {
+            this.receiverProvince = receiverProvince;
+        }
+
+        public Integer getReceiverCity() {
+            return receiverCity;
+        }
+
+        public void setReceiverCity(Integer receiverCity) {
+            this.receiverCity = receiverCity;
+        }
+
+        public Integer getReceiverDistrict() {
+            return receiverDistrict;
+        }
+
+        public void setReceiverDistrict(Integer receiverDistrict) {
+            this.receiverDistrict = receiverDistrict;
+        }
+
+        public String getReceiverAddress() {
+            return receiverAddress;
+        }
+
+        public void setReceiverAddress(String receiverAddress) {
+            this.receiverAddress = receiverAddress;
+        }
+
+        public String getReceiverMobile() {
+            return receiverMobile;
+        }
+
+        public void setReceiverMobile(String receiverMobile) {
+            this.receiverMobile = receiverMobile;
+        }
+
+        public String getReceiverTelno() {
+            return receiverTelno;
+        }
+
+        public void setReceiverTelno(String receiverTelno) {
+            this.receiverTelno = receiverTelno;
+        }
+
+        public String getReceiverZip() {
+            return receiverZip;
+        }
+
+        public void setReceiverZip(String receiverZip) {
+            this.receiverZip = receiverZip;
+        }
+
+        public String getReceiverArea() {
+            return receiverArea;
+        }
+
+        public void setReceiverArea(String receiverArea) {
+            this.receiverArea = receiverArea;
+        }
+
+        public String getReceiverDtb() {
+            return receiverDtb;
+        }
+
+        public void setReceiverDtb(String receiverDtb) {
+            this.receiverDtb = receiverDtb;
+        }
+
+        public Integer getBadReason() {
+            return badReason;
+        }
+
+        public void setBadReason(Integer badReason) {
+            this.badReason = badReason;
+        }
+
+        public String getLogisticsNo() {
+            return logisticsNo;
+        }
+
+        public void setLogisticsNo(String logisticsNo) {
+            this.logisticsNo = logisticsNo;
+        }
+
+        public String getBuyerMessage() {
+            return buyerMessage;
+        }
+
+        public void setBuyerMessage(String buyerMessage) {
+            this.buyerMessage = buyerMessage;
+        }
+
+        public String getCsRemark() {
+            return csRemark;
+        }
+
+        public void setCsRemark(String csRemark) {
+            this.csRemark = csRemark;
+        }
+
+        public Integer getRemarkFlag() {
+            return remarkFlag;
+        }
+
+        public void setRemarkFlag(Integer remarkFlag) {
+            this.remarkFlag = remarkFlag;
+        }
+
+        public String getPrintRemark() {
+            return printRemark;
+        }
+
+        public void setPrintRemark(String printRemark) {
+            this.printRemark = printRemark;
+        }
+
+        public BigDecimal getGoodsTypeCount() {
+            return goodsTypeCount;
+        }
+
+        public void setGoodsTypeCount(BigDecimal goodsTypeCount) {
+            this.goodsTypeCount = goodsTypeCount;
+        }
+
+        public BigDecimal getGoodsCount() {
+            return goodsCount;
+        }
+
+        public void setGoodsCount(BigDecimal goodsCount) {
+            this.goodsCount = goodsCount;
+        }
+
+        public BigDecimal getGoodsAmount() {
+            return goodsAmount;
+        }
+
+        public void setGoodsAmount(BigDecimal goodsAmount) {
+            this.goodsAmount = goodsAmount;
+        }
+
+        public BigDecimal getPostAmount() {
+            return postAmount;
+        }
+
+        public void setPostAmount(BigDecimal postAmount) {
+            this.postAmount = postAmount;
+        }
+
+        public BigDecimal getOtherAmount() {
+            return otherAmount;
+        }
+
+        public void setOtherAmount(BigDecimal otherAmount) {
+            this.otherAmount = otherAmount;
+        }
+
+        public BigDecimal getDiscount() {
+            return discount;
+        }
+
+        public void setDiscount(BigDecimal discount) {
+            this.discount = discount;
+        }
+
+        public BigDecimal getReceivable() {
+            return receivable;
+        }
+
+        public void setReceivable(BigDecimal receivable) {
+            this.receivable = receivable;
+        }
+
+        public BigDecimal getCodAmount() {
+            return codAmount;
+        }
+
+        public void setCodAmount(BigDecimal codAmount) {
+            this.codAmount = codAmount;
+        }
+
+        public BigDecimal getExtCodFee() {
+            return extCodFee;
+        }
+
+        public void setExtCodFee(BigDecimal extCodFee) {
+            this.extCodFee = extCodFee;
+        }
+
+        public BigDecimal getGoodsCost() {
+            return goodsCost;
+        }
+
+        public void setGoodsCost(BigDecimal goodsCost) {
+            this.goodsCost = goodsCost;
+        }
+
+        public BigDecimal getPostCost() {
+            return postCost;
+        }
+
+        public void setPostCost(BigDecimal postCost) {
+            this.postCost = postCost;
+        }
+
+        public BigDecimal getWeight() {
+            return weight;
+        }
+
+        public void setWeight(BigDecimal weight) {
+            this.weight = weight;
+        }
+
+        public BigDecimal getProfit() {
+            return profit;
+        }
+
+        public void setProfit(BigDecimal profit) {
+            this.profit = profit;
+        }
+
+        public BigDecimal getTax() {
+            return tax;
+        }
+
+        public void setTax(BigDecimal tax) {
+            this.tax = tax;
+        }
+
+        public BigDecimal getTaxRate() {
+            return taxRate;
+        }
+
+        public void setTaxRate(BigDecimal taxRate) {
+            this.taxRate = taxRate;
+        }
+
+        public BigDecimal getCommission() {
+            return commission;
+        }
+
+        public void setCommission(BigDecimal commission) {
+            this.commission = commission;
+        }
+
+        public Integer getInvoiceType() {
+            return invoiceType;
+        }
+
+        public void setInvoiceType(Integer invoiceType) {
+            this.invoiceType = invoiceType;
+        }
+
+        public String getInvoiceTitle() {
+            return invoiceTitle;
+        }
+
+        public void setInvoiceTitle(String invoiceTitle) {
+            this.invoiceTitle = invoiceTitle;
+        }
+
+        public String getInvoiceContent() {
+            return invoiceContent;
+        }
+
+        public void setInvoiceContent(String invoiceContent) {
+            this.invoiceContent = invoiceContent;
+        }
+
+        public String getSalesmanName() {
+            return salesmanName;
+        }
+
+        public void setSalesmanName(String salesmanName) {
+            this.salesmanName = salesmanName;
+        }
+
+        public String getCheckerName() {
+            return checkerName;
+        }
+
+        public void setCheckerName(String checkerName) {
+            this.checkerName = checkerName;
+        }
+
+        public String getFcheckerName() {
+            return fcheckerName;
+        }
+
+        public void setFcheckerName(String fcheckerName) {
+            this.fcheckerName = fcheckerName;
+        }
+
+        public String getCheckouterName() {
+            return checkouterName;
+        }
+
+        public void setCheckouterName(String checkouterName) {
+            this.checkouterName = checkouterName;
+        }
+
+        public String getStockoutNo() {
+            return stockoutNo;
+        }
+
+        public void setStockoutNo(String stockoutNo) {
+            this.stockoutNo = stockoutNo;
+        }
+
+        public String getFlagName() {
+            return flagName;
+        }
+
+        public void setFlagName(String flagName) {
+            this.flagName = flagName;
+        }
+
+        public Integer getTradeFrom() {
+            return tradeFrom;
+        }
+
+        public void setTradeFrom(Integer tradeFrom) {
+            this.tradeFrom = tradeFrom;
+        }
+
+        public String getSingleSpecNo() {
+            return singleSpecNo;
+        }
+
+        public void setSingleSpecNo(String singleSpecNo) {
+            this.singleSpecNo = singleSpecNo;
+        }
+
+        public BigDecimal getRawGoodsCount() {
+            return rawGoodsCount;
+        }
+
+        public void setRawGoodsCount(BigDecimal rawGoodsCount) {
+            this.rawGoodsCount = rawGoodsCount;
+        }
+
+        public Integer getRawGoodsTypeCount() {
+            return rawGoodsTypeCount;
+        }
+
+        public void setRawGoodsTypeCount(Integer rawGoodsTypeCount) {
+            this.rawGoodsTypeCount = rawGoodsTypeCount;
+        }
+
+        public String getCurrency() {
+            return currency;
+        }
+
+        public void setCurrency(String currency) {
+            this.currency = currency;
+        }
+
+        public Integer getInvoiceId() {
+            return invoiceId;
+        }
+
+        public void setInvoiceId(Integer invoiceId) {
+            this.invoiceId = invoiceId;
+        }
+
+        public Integer getVersionId() {
+            return versionId;
+        }
+
+        public void setVersionId(Integer versionId) {
+            this.versionId = versionId;
+        }
+
+        public String getModified() {
+            return modified;
+        }
+
+        public void setModified(String modified) {
+            this.modified = modified;
+        }
+
+        public String getCreated() {
+            return created;
+        }
+
+        public void setCreated(String created) {
+            this.created = created;
+        }
+
+        public String getCheckTime() {
+            return checkTime;
+        }
+
+        public void setCheckTime(String checkTime) {
+            this.checkTime = checkTime;
+        }
+
+        public Integer getIdCardType() {
+            return idCardType;
+        }
+
+        public void setIdCardType(Integer idCardType) {
+            this.idCardType = idCardType;
+        }
+
+        public String getShopNo() {
+            return shopNo;
+        }
+
+        public void setShopNo(String shopNo) {
+            this.shopNo = shopNo;
+        }
+
+        public String getShopName() {
+            return shopName;
+        }
+
+        public void setShopName(String shopName) {
+            this.shopName = shopName;
+        }
+
+        public String getShopRemark() {
+            return shopRemark;
+        }
+
+        public void setShopRemark(String shopRemark) {
+            this.shopRemark = shopRemark;
+        }
+
+        public String getWarehouseNo() {
+            return warehouseNo;
+        }
+
+        public void setWarehouseNo(String warehouseNo) {
+            this.warehouseNo = warehouseNo;
+        }
+
+        public String getCustomerName() {
+            return customerName;
+        }
+
+        public void setCustomerName(String customerName) {
+            this.customerName = customerName;
+        }
+
+        public String getCustomerNo() {
+            return customerNo;
+        }
+
+        public void setCustomerNo(String customerNo) {
+            this.customerNo = customerNo;
+        }
+
+        public String getLogisticsName() {
+            return logisticsName;
+        }
+
+        public void setLogisticsName(String logisticsName) {
+            this.logisticsName = logisticsName;
+        }
+
+        public String getLogisticsCode() {
+            return logisticsCode;
+        }
+
+        public void setLogisticsCode(String logisticsCode) {
+            this.logisticsCode = logisticsCode;
+        }
+
+        public String getLogisticsTypeName() {
+            return logisticsTypeName;
+        }
+
+        public void setLogisticsTypeName(String logisticsTypeName) {
+            this.logisticsTypeName = logisticsTypeName;
+        }
+
+        public String getToDeliverTime() {
+            return toDeliverTime;
+        }
+
+        public void setToDeliverTime(String toDeliverTime) {
+            this.toDeliverTime = toDeliverTime;
+        }
+
+        public String getDelayToTime() {
+            return delayToTime;
+        }
+
+        public void setDelayToTime(String delayToTime) {
+            this.delayToTime = delayToTime;
+        }
+
+        public String getEstimateConsignTime() {
+            return estimateConsignTime;
+        }
+
+        public void setEstimateConsignTime(String estimateConsignTime) {
+            this.estimateConsignTime = estimateConsignTime;
+        }
+
+        public Integer getShopId() {
+            return shopId;
+        }
+
+        public void setShopId(Integer shopId) {
+            this.shopId = shopId;
+        }
+
+        public Integer getWarehouseId() {
+            return warehouseId;
+        }
+
+        public void setWarehouseId(Integer warehouseId) {
+            this.warehouseId = warehouseId;
+        }
+
+        public BigDecimal getVolume() {
+            return volume;
+        }
+
+        public void setVolume(BigDecimal volume) {
+            this.volume = volume;
+        }
+
+        public String getTradeLabel() {
+            return tradeLabel;
+        }
+
+        public void setTradeLabel(String tradeLabel) {
+            this.tradeLabel = tradeLabel;
+        }
+
+        public Integer getTradeMask() {
+            return tradeMask;
+        }
+
+        public void setTradeMask(Integer tradeMask) {
+            this.tradeMask = tradeMask;
+        }
+
+        public Integer getShopPlatformId() {
+            return shopPlatformId;
+        }
+
+        public void setShopPlatformId(Integer shopPlatformId) {
+            this.shopPlatformId = shopPlatformId;
+        }
+
+        public Integer getSubPlatformId() {
+            return subPlatformId;
+        }
+
+        public void setSubPlatformId(Integer subPlatformId) {
+            this.subPlatformId = subPlatformId;
+        }
+
+        public String getPackageName() {
+            return packageName;
+        }
+
+        public void setPackageName(String packageName) {
+            this.packageName = packageName;
+        }
+
+        public Integer getPackageId() {
+            return packageId;
+        }
+
+        public void setPackageId(Integer packageId) {
+            this.packageId = packageId;
+        }
+
+        public BigDecimal getPackageCost() {
+            return packageCost;
+        }
+
+        public void setPackageCost(BigDecimal packageCost) {
+            this.packageCost = packageCost;
+        }
+
+        public BigDecimal getPaid() {
+            return paid;
+        }
+
+        public void setPaid(BigDecimal paid) {
+            this.paid = paid;
+        }
+
+        public Integer getLargeType() {
+            return largeType;
+        }
+
+        public void setLargeType(Integer largeType) {
+            this.largeType = largeType;
+        }
+
+        public Integer getGiftMask() {
+            return giftMask;
+        }
+
+        public void setGiftMask(Integer giftMask) {
+            this.giftMask = giftMask;
+        }
+
+        public Integer getCustomerId() {
+            return customerId;
+        }
+
+        public void setCustomerId(Integer customerId) {
+            this.customerId = customerId;
+        }
+
+        public BigDecimal getOtherCost() {
+            return otherCost;
+        }
+
+        public void setOtherCost(BigDecimal otherCost) {
+            this.otherCost = otherCost;
+        }
+
+        public Boolean getSealed() {
+            return isSealed;
+        }
+
+        public void setSealed(Boolean sealed) {
+            isSealed = sealed;
+        }
+
+        public Integer getCustomerType() {
+            return customerType;
+        }
+
+        public void setCustomerType(Integer customerType) {
+            this.customerType = customerType;
+        }
+
+        public Integer getLogisticsId() {
+            return logisticsId;
+        }
+
+        public void setLogisticsId(Integer logisticsId) {
+            this.logisticsId = logisticsId;
+        }
+
+        public String getCancelReason() {
+            return cancelReason;
+        }
+
+        public void setCancelReason(String cancelReason) {
+            this.cancelReason = cancelReason;
+        }
+
+        public String getRevertReason() {
+            return revertReason;
+        }
+
+        public void setRevertReason(String revertReason) {
+            this.revertReason = revertReason;
+        }
+
+        public String getNewTradeLabel() {
+            return newTradeLabel;
+        }
+
+        public void setNewTradeLabel(String newTradeLabel) {
+            this.newTradeLabel = newTradeLabel;
+        }
+
+        public String getFenxiaoTid() {
+            return fenxiaoTid;
+        }
+
+        public void setFenxiaoTid(String fenxiaoTid) {
+            this.fenxiaoTid = fenxiaoTid;
+        }
+
+        public String getCustomerUniqueId() {
+            return customerUniqueId;
+        }
+
+        public void setCustomerUniqueId(String customerUniqueId) {
+            this.customerUniqueId = customerUniqueId;
+        }
+
+        public String getPlatformLabel() {
+            return platformLabel;
+        }
+
+        public void setPlatformLabel(String platformLabel) {
+            this.platformLabel = platformLabel;
+        }
+
+        public String getFenxiaoNickNo() {
+            return fenxiaoNickNo;
+        }
+
+        public void setFenxiaoNickNo(String fenxiaoNickNo) {
+            this.fenxiaoNickNo = fenxiaoNickNo;
+        }
+
+        public String getPreSyncLogisticsNo() {
+            return preSyncLogisticsNo;
+        }
+
+        public void setPreSyncLogisticsNo(String preSyncLogisticsNo) {
+            this.preSyncLogisticsNo = preSyncLogisticsNo;
+        }
+
+        public String getPreSyncTime() {
+            return preSyncTime;
+        }
+
+        public void setPreSyncTime(String preSyncTime) {
+            this.preSyncTime = preSyncTime;
+        }
+
+        public String getEndTime() {
+            return endTime;
+        }
+
+        public void setEndTime(String endTime) {
+            this.endTime = endTime;
+        }
+
+        public String getSettleTime() {
+            return settleTime;
+        }
+
+        public void setSettleTime(String settleTime) {
+            this.settleTime = settleTime;
+        }
+
+        public String getTasks() {
+            return tasks;
+        }
+
+        public void setTasks(String tasks) {
+            this.tasks = tasks;
+        }
+
+        public Integer getFreezeReasonId() {
+            return freezeReasonId;
+        }
+
+        public void setFreezeReasonId(Integer freezeReasonId) {
+            this.freezeReasonId = freezeReasonId;
+        }
+
+        public Integer getFlagId() {
+            return flagId;
+        }
+
+        public void setFlagId(Integer flagId) {
+            this.flagId = flagId;
+        }
+
+        public List<OrderDetail> getDetailList() {
+            return detailList;
+        }
+
+        public void setDetailList(List<OrderDetail> detailList) {
+            this.detailList = detailList;
+        }
     }
 
-    /**
-     * 订单明细实体类
-     */
-    public static class OrderDetail {
+    /**
+     * 订单明细实体类
+     */
+    public static class OrderDetail {
+
+        /**
+         * 订单唯一键
+         */
+        @SerializedName("trade_id")
+        private Long tradeId;
+
+        /**
+         * 订单明细唯一键
+         */
+        @SerializedName("rec_id")
+        private Long recId;
+
+        /**
+         * 平台ID
+         */
+        @SerializedName("platform_id")
+        private Integer platformId;
+
+        /**
+         * 原始子单号
+         */
+        @SerializedName("src_oid")
+        private String srcOid;
+
+        /**
+         * 原始单号
+         */
+        @SerializedName("src_tid")
+        private String srcTid;
+
+        /**
+         * 赠品方式
+         * 0非赠品 1自动赠送 2手工赠送 4周期购赠送 8平台赠送 32阶梯满赠 64CRM追加赠送 65 主品
+         */
+        @SerializedName("gift_type")
+        private Integer giftType;
+
+        /**
+         * 支付状态(0:未付款 1:部分付款 2:已付款)
+         */
+        @SerializedName("pay_status")
+        private Integer payStatus;
+
+        /**
+         * 退款状态
+         * 0、无退款 1、取消退款 2、申请退款 3、待退款 4、待还原 5、退款成功 6、已退(未付款关闭)
+         */
+        @SerializedName("refund_status")
+        private Integer refundStatus;
+
+        /**
+         * 退款模式(1、担保 2、非担保 3、在线非担保)
+         */
+        @SerializedName("guarantee_mode")
+        private Integer guaranteeMode;
+
+        /**
+         * 子单平台状态
+         * 10、未确认 20、待尾款 30、待发货 40、部分发货 50、已发货 60、已签收 70、已完成 80、已退款 90、已关闭
+         */
+        @SerializedName("platform_status")
+        private Integer platformStatus;
+
+        /**
+         * 发货条件(1、款到发货 2、货到付款(包含部分货到付款) 3、分期付款)
+         */
+        @SerializedName("delivery_term")
+        private Integer deliveryTerm;
+
+        /**
+         * 数量
+         */
+        @SerializedName("num")
+        private BigDecimal num;
+
+        /**
+         * 标价,手工新建时使用货品属性中的"零售价"
+         */
+        @SerializedName("price")
+        private BigDecimal price;
+
+        /**
+         * 售后退款数量
+         */
+        @SerializedName("refund_num")
+        private BigDecimal refundNum;
+
+        /**
+         * 成交价,原始单折扣及分摊之后的价格
+         */
+        @SerializedName("order_price")
+        private BigDecimal orderPrice;
+
+        /**
+         * 分摊后价格,进入ERP后再次调整的价格,默认值与order_price一致
+         */
+        @SerializedName("share_price")
+        private BigDecimal sharePrice;
+
+        /**
+         * 手工调整价,正数为加价,负数为减价,暂未处理
+         */
+        @SerializedName("adjust")
+        private BigDecimal adjust;
+
+        /**
+         * 优惠
+         */
+        @SerializedName("discount")
+        private BigDecimal discount;
+
+        /**
+         * 分摊后总价
+         */
+        @SerializedName("share_amount")
+        private BigDecimal shareAmount;
+
+        /**
+         * 税率
+         */
+        @SerializedName("tax_rate")
+        private BigDecimal taxRate;
+
+        /**
+         * 货品名称
+         */
+        @SerializedName("goods_name")
+        private String goodsName;
+
+        /**
+         * 货品编号
+         */
+        @SerializedName("goods_no")
+        private String goodsNo;
+
+        /**
+         * 规格名称
+         */
+        @SerializedName("spec_name")
+        private String specName;
+
+        /**
+         * 商家编码
+         */
+        @SerializedName("spec_no")
+        private String specNo;
+
+        /**
+         * 规格码
+         */
+        @SerializedName("spec_code")
+        private String specCode;
+
+        /**
+         * 组合装编码
+         */
+        @SerializedName("suite_no")
+        private String suiteNo;
+
+        /**
+         * 如果是组合装拆分的,此为组合装名称
+         */
+        @SerializedName("suite_name")
+        private String suiteName;
+
+        /**
+         * 组合装数量,不受拆分合并影响
+         */
+        @SerializedName("suite_num")
+        private BigDecimal suiteNum;
+
+        /**
+         * 组合装分摊后总价
+         */
+        @SerializedName("suite_amount")
+        private BigDecimal suiteAmount;
+
+        /**
+         * 组合装优惠
+         */
+        @SerializedName("suite_discount")
+        private BigDecimal suiteDiscount;
+
+        /**
+         * 平台货品名称
+         */
+        @SerializedName("api_goods_name")
+        private String apiGoodsName;
+
+        /**
+         * 平台规格名称
+         */
+        @SerializedName("api_spec_name")
+        private String apiSpecName;
+
+        /**
+         * 平台货品id
+         */
+        @SerializedName("api_goods_id")
+        private String apiGoodsId;
+
+        /**
+         * 平台规格id
+         */
+        @SerializedName("api_spec_id")
+        private String apiSpecId;
+
+        /**
+         * 货品id(系统货品主键)
+         */
+        @SerializedName("goods_id")
+        private Integer goodsId;
+
+        /**
+         * 单品id(系统单品主键)
+         */
+        @SerializedName("spec_id")
+        private Integer specId;
+
+        /**
+         * 佣金
+         */
+        @SerializedName("commission")
+        private BigDecimal commission;
+
+        /**
+         * 货品类型
+         * 0:其它 1:销售货品 2:原材料 3:包装物 4:周转材料 5:虚拟商品 6:固定资产 8:分装箱
+         */
+        @SerializedName("goods_type")
+        private Integer goodsType;
+
+        /**
+         * 订单内部来源
+         * 0:无来源 1:手机 2:聚划算 32:开具电子发票 2048:当日达 4096:次日达 8192:承诺时效
+         * 2097152:区域零售 4194304:拼多多厂家代打 8388608:周期购 1048576:预售单
+         * 33554432:前N有礼 524288:天猫物流升级 64:按需配送 256:承诺结构化/QIC 16384:商仓鸟配
+         */
+        @SerializedName("from_mask")
+        private Integer fromMask;
+
+        /**
+         * 订单内部来源扩展
+         * 2:小时达订单 4:自选物流 16:国补订单
+         */
+        @SerializedName("from_mask_ext")
+        private Integer fromMaskExt;
+
+        /**
+         * 子单备注
+         */
+        @SerializedName("remark")
+        private String remark;
+
+        /**
+         * 修改时间(毫秒级时间戳,例如:1631861379000)
+         */
+        @SerializedName("modified")
+        private String modified;
+
+        /**
+         * 创建时间(毫秒级时间戳,例如:1631861379000)
+         */
+        @SerializedName("created")
+        private String created;
+
+        /**
+         * 单品自定义属性1
+         */
+        @SerializedName("prop1")
+        private String prop1;
+
+        /**
+         * 单品自定义属性2
+         */
+        @SerializedName("prop2")
+        private String prop2;
+
+        /**
+         * 单品自定义属性3
+         */
+        @SerializedName("prop3")
+        private String prop3;
+
+        /**
+         * 单品自定义属性4
+         */
+        @SerializedName("prop4")
+        private String prop4;
+
+        /**
+         * 单品自定义属性5
+         */
+        @SerializedName("prop5")
+        private String prop5;
+
+        /**
+         * 单品自定义属性6
+         */
+        @SerializedName("prop6")
+        private String prop6;
+
+        /**
+         * 货品重量(子单预估货品总重量)
+         */
+        @SerializedName("weight")
+        private BigDecimal weight;
+
+        /**
+         * 图片路径
+         */
+        @SerializedName("img_url")
+        private String imgUrl;
+
+        /**
+         * 实发数量(此数量为发货数量,删除操作等于将此值设置为0)
+         */
+        @SerializedName("actual_num")
+        private BigDecimal actualNum;
+
+        /**
+         * 条码
+         */
+        @SerializedName("barcode")
+        private String barcode;
+
+        /**
+         * 已付
+         */
+        @SerializedName("paid")
+        private BigDecimal paid;
+
+        /**
+         * 组合装id
+         */
+        @SerializedName("suite_id")
+        private Integer suiteId;
+
+        /**
+         * bind_oid
+         */
+        @SerializedName("bind_oid")
+        private String bindOid;
+
+        /**
+         * 打印组合装(0:组合装明细 1:组合装及明细 2:组合装)
+         */
+        @SerializedName("print_suite_mode")
+        private Integer printSuiteMode;
+
+        /**
+         * 天猫物流升级信息(mask类型值,在判断的时候使用&运算)
+         * 1:天猫物流升级-顺丰配送 2:需要回传 4:天猫物流升级-按需配送 8:天猫物流升级-承诺发货时效
+         * 16:天猫物流升级-承诺达时效 32:天猫物流升级-预售下沉 64:天猫物流升级-预计到货时效
+         * 128:天猫物流升级-配送线路异常 1024:定金链接 2048:补款链接 4096:确认收货
+         */
+        @SerializedName("flag")
+        private Integer flag;
+
+        /**
+         * 库存保留情况
+         * 0:未保留(取消的订单或完成) 1:无库存记录 2:未付款 3:已保留待审核 4:待发货 5:预订单库存
+         */
+        @SerializedName("stock_state")
+        private Integer stockState;
+
+        /**
+         * 平台已发货
+         */
+        @SerializedName("is_consigned")
+        private Boolean isConsigned;
+
+        /**
+         * 是否付款
+         */
+        @SerializedName("is_received")
+        private Integer isReceived;
+
+        /**
+         * 平台类目主键
+         */
+        @SerializedName("cid")
+        private Integer cid;
+
+        /**
+         * 最后更新时间,DateTime格式
+         */
+        @SerializedName("modified_date")
+        private String modifiedDate;
+
+        /**
+         * 创建时间,DateTime格式
+         */
+        @SerializedName("created_date")
+        private String createdDate;
+
+        /**
+         * 分摊邮费
+         */
+        @SerializedName("share_post_price")
+        private BigDecimal sharePostPrice;
+
+        /**
+         * 发票内容
+         */
+        @SerializedName("invoice_content")
+        private String invoiceContent;
+
+        /**
+         * 支付时间,DateTime格式,取自原始订单支付时间
+         */
+        @SerializedName("pay_time")
+        private String payTime;
+
+        /**
+         * 货品简称
+         */
+        @SerializedName("short_name")
+        private String shortName;
+
+        /**
+         * 赠品关联关系
+         */
+        @SerializedName("goods_gift_relation")
+        private String goodsGiftRelation;
+
+        /**
+         * 成本价
+         */
+        @SerializedName("avg_cost")
+        private BigDecimal avgCost;
+
+        /**
+         * 分类名称
+         */
+        @SerializedName("class_name")
+        private String className;
+
+        /**
+         * 基本单位id
+         */
+        @SerializedName("base_unit_id")
+        private Integer baseUnitId;
+
+        /**
+         * 基本单位名称
+         */
+        @SerializedName("base_unit_name")
+        private String baseUnitName;
+
+        /**
+         * 分销商id
+         */
+        @SerializedName("fenxiao_rec_id")
+        private Integer fenxiaoRecId;
+
+        public Long getTradeId() {
+            return tradeId;
+        }
+
+        public void setTradeId(Long tradeId) {
+            this.tradeId = tradeId;
+        }
+
+        public Long getRecId() {
+            return recId;
+        }
+
+        public void setRecId(Long recId) {
+            this.recId = recId;
+        }
+
+        public Integer getPlatformId() {
+            return platformId;
+        }
+
+        public void setPlatformId(Integer platformId) {
+            this.platformId = platformId;
+        }
+
+        public String getSrcOid() {
+            return srcOid;
+        }
+
+        public void setSrcOid(String srcOid) {
+            this.srcOid = srcOid;
+        }
+
+        public String getSrcTid() {
+            return srcTid;
+        }
+
+        public void setSrcTid(String srcTid) {
+            this.srcTid = srcTid;
+        }
+
+        public Integer getGiftType() {
+            return giftType;
+        }
+
+        public void setGiftType(Integer giftType) {
+            this.giftType = giftType;
+        }
+
+        public Integer getPayStatus() {
+            return payStatus;
+        }
+
+        public void setPayStatus(Integer payStatus) {
+            this.payStatus = payStatus;
+        }
+
+        public Integer getRefundStatus() {
+            return refundStatus;
+        }
+
+        public void setRefundStatus(Integer refundStatus) {
+            this.refundStatus = refundStatus;
+        }
+
+        public Integer getGuaranteeMode() {
+            return guaranteeMode;
+        }
+
+        public void setGuaranteeMode(Integer guaranteeMode) {
+            this.guaranteeMode = guaranteeMode;
+        }
+
+        public Integer getPlatformStatus() {
+            return platformStatus;
+        }
+
+        public void setPlatformStatus(Integer platformStatus) {
+            this.platformStatus = platformStatus;
+        }
+
+        public Integer getDeliveryTerm() {
+            return deliveryTerm;
+        }
+
+        public void setDeliveryTerm(Integer deliveryTerm) {
+            this.deliveryTerm = deliveryTerm;
+        }
+
+        public BigDecimal getNum() {
+            return num;
+        }
+
+        public void setNum(BigDecimal num) {
+            this.num = num;
+        }
+
+        public BigDecimal getPrice() {
+            return price;
+        }
+
+        public void setPrice(BigDecimal price) {
+            this.price = price;
+        }
+
+        public BigDecimal getRefundNum() {
+            return refundNum;
+        }
+
+        public void setRefundNum(BigDecimal refundNum) {
+            this.refundNum = refundNum;
+        }
+
+        public BigDecimal getOrderPrice() {
+            return orderPrice;
+        }
+
+        public void setOrderPrice(BigDecimal orderPrice) {
+            this.orderPrice = orderPrice;
+        }
+
+        public BigDecimal getSharePrice() {
+            return sharePrice;
+        }
+
+        public void setSharePrice(BigDecimal sharePrice) {
+            this.sharePrice = sharePrice;
+        }
+
+        public BigDecimal getAdjust() {
+            return adjust;
+        }
+
+        public void setAdjust(BigDecimal adjust) {
+            this.adjust = adjust;
+        }
+
+        public BigDecimal getDiscount() {
+            return discount;
+        }
+
+        public void setDiscount(BigDecimal discount) {
+            this.discount = discount;
+        }
+
+        public BigDecimal getShareAmount() {
+            return shareAmount;
+        }
+
+        public void setShareAmount(BigDecimal shareAmount) {
+            this.shareAmount = shareAmount;
+        }
+
+        public BigDecimal getTaxRate() {
+            return taxRate;
+        }
+
+        public void setTaxRate(BigDecimal taxRate) {
+            this.taxRate = taxRate;
+        }
+
+        public String getGoodsName() {
+            return goodsName;
+        }
+
+        public void setGoodsName(String goodsName) {
+            this.goodsName = goodsName;
+        }
+
+        public String getGoodsNo() {
+            return goodsNo;
+        }
+
+        public void setGoodsNo(String goodsNo) {
+            this.goodsNo = goodsNo;
+        }
+
+        public String getSpecName() {
+            return specName;
+        }
+
+        public void setSpecName(String specName) {
+            this.specName = specName;
+        }
+
+        public String getSpecNo() {
+            return specNo;
+        }
+
+        public void setSpecNo(String specNo) {
+            this.specNo = specNo;
+        }
 
-        /**
-         * 订单唯一键
-         */
-        @SerializedName("trade_id")
-        private Long tradeId;
+        public String getSpecCode() {
+            return specCode;
+        }
 
-        /**
-         * 订单明细唯一键
-         */
-        @SerializedName("rec_id")
-        private Long recId;
+        public void setSpecCode(String specCode) {
+            this.specCode = specCode;
+        }
 
-        /**
-         * 平台ID
-         */
-        @SerializedName("platform_id")
-        private Integer platformId;
+        public String getSuiteNo() {
+            return suiteNo;
+        }
 
-        /**
-         * 原始子单号
-         */
-        @SerializedName("src_oid")
-        private String srcOid;
+        public void setSuiteNo(String suiteNo) {
+            this.suiteNo = suiteNo;
+        }
 
-        /**
-         * 原始单号
-         */
-        @SerializedName("src_tid")
-        private String srcTid;
+        public String getSuiteName() {
+            return suiteName;
+        }
 
-        /**
-         * 赠品方式
-         * 0非赠品 1自动赠送 2手工赠送 4周期购赠送 8平台赠送 32阶梯满赠 64CRM追加赠送 65 主品
-         */
-        @SerializedName("gift_type")
-        private Integer giftType;
+        public void setSuiteName(String suiteName) {
+            this.suiteName = suiteName;
+        }
 
-        /**
-         * 支付状态(0:未付款 1:部分付款 2:已付款)
-         */
-        @SerializedName("pay_status")
-        private Integer payStatus;
+        public BigDecimal getSuiteNum() {
+            return suiteNum;
+        }
 
-        /**
-         * 退款状态
-         * 0、无退款 1、取消退款 2、申请退款 3、待退款 4、待还原 5、退款成功 6、已退(未付款关闭)
-         */
-        @SerializedName("refund_status")
-        private Integer refundStatus;
+        public void setSuiteNum(BigDecimal suiteNum) {
+            this.suiteNum = suiteNum;
+        }
 
-        /**
-         * 退款模式(1、担保 2、非担保 3、在线非担保)
-         */
-        @SerializedName("guarantee_mode")
-        private Integer guaranteeMode;
+        public BigDecimal getSuiteAmount() {
+            return suiteAmount;
+        }
 
-        /**
-         * 子单平台状态
-         * 10、未确认 20、待尾款 30、待发货 40、部分发货 50、已发货 60、已签收 70、已完成 80、已退款 90、已关闭
-         */
-        @SerializedName("platform_status")
-        private Integer platformStatus;
+        public void setSuiteAmount(BigDecimal suiteAmount) {
+            this.suiteAmount = suiteAmount;
+        }
 
-        /**
-         * 发货条件(1、款到发货 2、货到付款(包含部分货到付款) 3、分期付款)
-         */
-        @SerializedName("delivery_term")
-        private Integer deliveryTerm;
+        public BigDecimal getSuiteDiscount() {
+            return suiteDiscount;
+        }
 
-        /**
-         * 数量
-         */
-        @SerializedName("num")
-        private BigDecimal num;
+        public void setSuiteDiscount(BigDecimal suiteDiscount) {
+            this.suiteDiscount = suiteDiscount;
+        }
 
-        /**
-         * 标价,手工新建时使用货品属性中的"零售价"
-         */
-        @SerializedName("price")
-        private BigDecimal price;
+        public String getApiGoodsName() {
+            return apiGoodsName;
+        }
 
-        /**
-         * 售后退款数量
-         */
-        @SerializedName("refund_num")
-        private BigDecimal refundNum;
+        public void setApiGoodsName(String apiGoodsName) {
+            this.apiGoodsName = apiGoodsName;
+        }
 
-        /**
-         * 成交价,原始单折扣及分摊之后的价格
-         */
-        @SerializedName("order_price")
-        private BigDecimal orderPrice;
+        public String getApiSpecName() {
+            return apiSpecName;
+        }
 
-        /**
-         * 分摊后价格,进入ERP后再次调整的价格,默认值与order_price一致
-         */
-        @SerializedName("share_price")
-        private BigDecimal sharePrice;
+        public void setApiSpecName(String apiSpecName) {
+            this.apiSpecName = apiSpecName;
+        }
 
-        /**
-         * 手工调整价,正数为加价,负数为减价,暂未处理
-         */
-        @SerializedName("adjust")
-        private BigDecimal adjust;
+        public String getApiGoodsId() {
+            return apiGoodsId;
+        }
 
-        /**
-         * 优惠
-         */
-        @SerializedName("discount")
-        private BigDecimal discount;
+        public void setApiGoodsId(String apiGoodsId) {
+            this.apiGoodsId = apiGoodsId;
+        }
 
-        /**
-         * 分摊后总价
-         */
-        @SerializedName("share_amount")
-        private BigDecimal shareAmount;
+        public String getApiSpecId() {
+            return apiSpecId;
+        }
 
-        /**
-         * 税率
-         */
-        @SerializedName("tax_rate")
-        private BigDecimal taxRate;
+        public void setApiSpecId(String apiSpecId) {
+            this.apiSpecId = apiSpecId;
+        }
 
-        /**
-         * 货品名称
-         */
-        @SerializedName("goods_name")
-        private String goodsName;
+        public Integer getGoodsId() {
+            return goodsId;
+        }
 
-        /**
-         * 货品编号
-         */
-        @SerializedName("goods_no")
-        private String goodsNo;
+        public void setGoodsId(Integer goodsId) {
+            this.goodsId = goodsId;
+        }
 
-        /**
-         * 规格名称
-         */
-        @SerializedName("spec_name")
-        private String specName;
+        public Integer getSpecId() {
+            return specId;
+        }
 
-        /**
-         * 商家编码
-         */
-        @SerializedName("spec_no")
-        private String specNo;
+        public void setSpecId(Integer specId) {
+            this.specId = specId;
+        }
 
-        /**
-         * 规格码
-         */
-        @SerializedName("spec_code")
-        private String specCode;
+        public BigDecimal getCommission() {
+            return commission;
+        }
 
-        /**
-         * 组合装编码
-         */
-        @SerializedName("suite_no")
-        private String suiteNo;
+        public void setCommission(BigDecimal commission) {
+            this.commission = commission;
+        }
 
-        /**
-         * 如果是组合装拆分的,此为组合装名称
-         */
-        @SerializedName("suite_name")
-        private String suiteName;
+        public Integer getGoodsType() {
+            return goodsType;
+        }
 
-        /**
-         * 组合装数量,不受拆分合并影响
-         */
-        @SerializedName("suite_num")
-        private BigDecimal suiteNum;
+        public void setGoodsType(Integer goodsType) {
+            this.goodsType = goodsType;
+        }
 
-        /**
-         * 组合装分摊后总价
-         */
-        @SerializedName("suite_amount")
-        private BigDecimal suiteAmount;
+        public Integer getFromMask() {
+            return fromMask;
+        }
 
-        /**
-         * 组合装优惠
-         */
-        @SerializedName("suite_discount")
-        private BigDecimal suiteDiscount;
+        public void setFromMask(Integer fromMask) {
+            this.fromMask = fromMask;
+        }
 
-        /**
-         * 平台货品名称
-         */
-        @SerializedName("api_goods_name")
-        private String apiGoodsName;
+        public Integer getFromMaskExt() {
+            return fromMaskExt;
+        }
 
-        /**
-         * 平台规格名称
-         */
-        @SerializedName("api_spec_name")
-        private String apiSpecName;
+        public void setFromMaskExt(Integer fromMaskExt) {
+            this.fromMaskExt = fromMaskExt;
+        }
 
-        /**
-         * 平台货品id
-         */
-        @SerializedName("api_goods_id")
-        private String apiGoodsId;
+        public String getRemark() {
+            return remark;
+        }
+
+        public void setRemark(String remark) {
+            this.remark = remark;
+        }
+
+        public String getModified() {
+            return modified;
+        }
+
+        public void setModified(String modified) {
+            this.modified = modified;
+        }
+
+        public String getCreated() {
+            return created;
+        }
+
+        public void setCreated(String created) {
+            this.created = created;
+        }
+
+        public String getProp1() {
+            return prop1;
+        }
+
+        public void setProp1(String prop1) {
+            this.prop1 = prop1;
+        }
+
+        public String getProp2() {
+            return prop2;
+        }
+
+        public void setProp2(String prop2) {
+            this.prop2 = prop2;
+        }
+
+        public String getProp3() {
+            return prop3;
+        }
+
+        public void setProp3(String prop3) {
+            this.prop3 = prop3;
+        }
+
+        public String getProp4() {
+            return prop4;
+        }
+
+        public void setProp4(String prop4) {
+            this.prop4 = prop4;
+        }
+
+        public String getProp5() {
+            return prop5;
+        }
+
+        public void setProp5(String prop5) {
+            this.prop5 = prop5;
+        }
+
+        public String getProp6() {
+            return prop6;
+        }
+
+        public void setProp6(String prop6) {
+            this.prop6 = prop6;
+        }
+
+        public BigDecimal getWeight() {
+            return weight;
+        }
+
+        public void setWeight(BigDecimal weight) {
+            this.weight = weight;
+        }
+
+        public String getImgUrl() {
+            return imgUrl;
+        }
+
+        public void setImgUrl(String imgUrl) {
+            this.imgUrl = imgUrl;
+        }
+
+        public BigDecimal getActualNum() {
+            return actualNum;
+        }
+
+        public void setActualNum(BigDecimal actualNum) {
+            this.actualNum = actualNum;
+        }
+
+        public String getBarcode() {
+            return barcode;
+        }
+
+        public void setBarcode(String barcode) {
+            this.barcode = barcode;
+        }
 
-        /**
-         * 平台规格id
-         */
-        @SerializedName("api_spec_id")
-        private String apiSpecId;
+        public BigDecimal getPaid() {
+            return paid;
+        }
 
-        /**
-         * 货品id(系统货品主键)
-         */
-        @SerializedName("goods_id")
-        private Integer goodsId;
+        public void setPaid(BigDecimal paid) {
+            this.paid = paid;
+        }
 
-        /**
-         * 单品id(系统单品主键)
-         */
-        @SerializedName("spec_id")
-        private Integer specId;
+        public Integer getSuiteId() {
+            return suiteId;
+        }
 
-        /**
-         * 佣金
-         */
-        @SerializedName("commission")
-        private BigDecimal commission;
+        public void setSuiteId(Integer suiteId) {
+            this.suiteId = suiteId;
+        }
 
-        /**
-         * 货品类型
-         * 0:其它 1:销售货品 2:原材料 3:包装物 4:周转材料 5:虚拟商品 6:固定资产 8:分装箱
-         */
-        @SerializedName("goods_type")
-        private Integer goodsType;
+        public String getBindOid() {
+            return bindOid;
+        }
 
-        /**
-         * 订单内部来源
-         * 0:无来源 1:手机 2:聚划算 32:开具电子发票 2048:当日达 4096:次日达 8192:承诺时效
-         * 2097152:区域零售 4194304:拼多多厂家代打 8388608:周期购 1048576:预售单
-         * 33554432:前N有礼 524288:天猫物流升级 64:按需配送 256:承诺结构化/QIC 16384:商仓鸟配
-         */
-        @SerializedName("from_mask")
-        private Integer fromMask;
+        public void setBindOid(String bindOid) {
+            this.bindOid = bindOid;
+        }
 
-        /**
-         * 订单内部来源扩展
-         * 2:小时达订单 4:自选物流 16:国补订单
-         */
-        @SerializedName("from_mask_ext")
-        private Integer fromMaskExt;
+        public Integer getPrintSuiteMode() {
+            return printSuiteMode;
+        }
 
-        /**
-         * 子单备注
-         */
-        @SerializedName("remark")
-        private String remark;
+        public void setPrintSuiteMode(Integer printSuiteMode) {
+            this.printSuiteMode = printSuiteMode;
+        }
 
-        /**
-         * 修改时间(毫秒级时间戳,例如:1631861379000)
-         */
-        @SerializedName("modified")
-        private String modified;
+        public Integer getFlag() {
+            return flag;
+        }
 
-        /**
-         * 创建时间(毫秒级时间戳,例如:1631861379000)
-         */
-        @SerializedName("created")
-        private String created;
+        public void setFlag(Integer flag) {
+            this.flag = flag;
+        }
 
-        /**
-         * 单品自定义属性1
-         */
-        @SerializedName("prop1")
-        private String prop1;
+        public Integer getStockState() {
+            return stockState;
+        }
 
-        /**
-         * 单品自定义属性2
-         */
-        @SerializedName("prop2")
-        private String prop2;
+        public void setStockState(Integer stockState) {
+            this.stockState = stockState;
+        }
 
-        /**
-         * 单品自定义属性3
-         */
-        @SerializedName("prop3")
-        private String prop3;
+        public Boolean getConsigned() {
+            return isConsigned;
+        }
 
-        /**
-         * 单品自定义属性4
-         */
-        @SerializedName("prop4")
-        private String prop4;
+        public void setConsigned(Boolean consigned) {
+            isConsigned = consigned;
+        }
 
-        /**
-         * 单品自定义属性5
-         */
-        @SerializedName("prop5")
-        private String prop5;
+        public Integer getIsReceived() {
+            return isReceived;
+        }
 
-        /**
-         * 单品自定义属性6
-         */
-        @SerializedName("prop6")
-        private String prop6;
+        public void setIsReceived(Integer isReceived) {
+            this.isReceived = isReceived;
+        }
 
-        /**
-         * 货品重量(子单预估货品总重量)
-         */
-        @SerializedName("weight")
-        private BigDecimal weight;
+        public Integer getCid() {
+            return cid;
+        }
 
-        /**
-         * 图片路径
-         */
-        @SerializedName("img_url")
-        private String imgUrl;
+        public void setCid(Integer cid) {
+            this.cid = cid;
+        }
 
-        /**
-         * 实发数量(此数量为发货数量,删除操作等于将此值设置为0)
-         */
-        @SerializedName("actual_num")
-        private BigDecimal actualNum;
+        public String getModifiedDate() {
+            return modifiedDate;
+        }
 
-        /**
-         * 条码
-         */
-        @SerializedName("barcode")
-        private String barcode;
+        public void setModifiedDate(String modifiedDate) {
+            this.modifiedDate = modifiedDate;
+        }
 
-        /**
-         * 已付
-         */
-        @SerializedName("paid")
-        private BigDecimal paid;
+        public String getCreatedDate() {
+            return createdDate;
+        }
 
-        /**
-         * 组合装id
-         */
-        @SerializedName("suite_id")
-        private Integer suiteId;
+        public void setCreatedDate(String createdDate) {
+            this.createdDate = createdDate;
+        }
 
-        /**
-         * bind_oid
-         */
-        @SerializedName("bind_oid")
-        private String bindOid;
+        public BigDecimal getSharePostPrice() {
+            return sharePostPrice;
+        }
 
-        /**
-         * 打印组合装(0:组合装明细 1:组合装及明细 2:组合装)
-         */
-        @SerializedName("print_suite_mode")
-        private Integer printSuiteMode;
+        public void setSharePostPrice(BigDecimal sharePostPrice) {
+            this.sharePostPrice = sharePostPrice;
+        }
 
-        /**
-         * 天猫物流升级信息(mask类型值,在判断的时候使用&运算)
-         * 1:天猫物流升级-顺丰配送 2:需要回传 4:天猫物流升级-按需配送 8:天猫物流升级-承诺发货时效
-         * 16:天猫物流升级-承诺达时效 32:天猫物流升级-预售下沉 64:天猫物流升级-预计到货时效
-         * 128:天猫物流升级-配送线路异常 1024:定金链接 2048:补款链接 4096:确认收货
-         */
-        @SerializedName("flag")
-        private Integer flag;
+        public String getInvoiceContent() {
+            return invoiceContent;
+        }
 
-        /**
-         * 库存保留情况
-         * 0:未保留(取消的订单或完成) 1:无库存记录 2:未付款 3:已保留待审核 4:待发货 5:预订单库存
-         */
-        @SerializedName("stock_state")
-        private Integer stockState;
+        public void setInvoiceContent(String invoiceContent) {
+            this.invoiceContent = invoiceContent;
+        }
 
-        /**
-         * 平台已发货
-         */
-        @SerializedName("is_consigned")
-        private Boolean isConsigned;
+        public String getPayTime() {
+            return payTime;
+        }
 
-        /**
-         * 是否付款
-         */
-        @SerializedName("is_received")
-        private Integer isReceived;
+        public void setPayTime(String payTime) {
+            this.payTime = payTime;
+        }
 
-        /**
-         * 平台类目主键
-         */
-        @SerializedName("cid")
-        private Integer cid;
+        public String getShortName() {
+            return shortName;
+        }
 
-        /**
-         * 最后更新时间,DateTime格式
-         */
-        @SerializedName("modified_date")
-        private String modifiedDate;
+        public void setShortName(String shortName) {
+            this.shortName = shortName;
+        }
 
-        /**
-         * 创建时间,DateTime格式
-         */
-        @SerializedName("created_date")
-        private String createdDate;
+        public String getGoodsGiftRelation() {
+            return goodsGiftRelation;
+        }
 
-        /**
-         * 分摊邮费
-         */
-        @SerializedName("share_post_price")
-        private BigDecimal sharePostPrice;
+        public void setGoodsGiftRelation(String goodsGiftRelation) {
+            this.goodsGiftRelation = goodsGiftRelation;
+        }
 
-        /**
-         * 发票内容
-         */
-        @SerializedName("invoice_content")
-        private String invoiceContent;
+        public BigDecimal getAvgCost() {
+            return avgCost;
+        }
 
-        /**
-         * 支付时间,DateTime格式,取自原始订单支付时间
-         */
-        @SerializedName("pay_time")
-        private String payTime;
+        public void setAvgCost(BigDecimal avgCost) {
+            this.avgCost = avgCost;
+        }
 
-        /**
-         * 货品简称
-         */
-        @SerializedName("short_name")
-        private String shortName;
+        public String getClassName() {
+            return className;
+        }
 
-        /**
-         * 赠品关联关系
-         */
-        @SerializedName("goods_gift_relation")
-        private String goodsGiftRelation;
+        public void setClassName(String className) {
+            this.className = className;
+        }
 
-        /**
-         * 成本价
-         */
-        @SerializedName("avg_cost")
-        private BigDecimal avgCost;
+        public Integer getBaseUnitId() {
+            return baseUnitId;
+        }
 
-        /**
-         * 分类名称
-         */
-        @SerializedName("class_name")
-        private String className;
+        public void setBaseUnitId(Integer baseUnitId) {
+            this.baseUnitId = baseUnitId;
+        }
 
-        /**
-         * 基本单位id
-         */
-        @SerializedName("base_unit_id")
-        private Integer baseUnitId;
+        public String getBaseUnitName() {
+            return baseUnitName;
+        }
 
-        /**
-         * 基本单位名称
-         */
-        @SerializedName("base_unit_name")
-        private String baseUnitName;
+        public void setBaseUnitName(String baseUnitName) {
+            this.baseUnitName = baseUnitName;
+        }
 
-        /**
-         * 分销商id
-         */
-        @SerializedName("fenxiao_rec_id")
-        private Integer fenxiaoRecId;
+        public Integer getFenxiaoRecId() {
+            return fenxiaoRecId;
+        }
 
-        // Getters and Setters 省略,请根据需要添加...
+        public void setFenxiaoRecId(Integer fenxiaoRecId) {
+            this.fenxiaoRecId = fenxiaoRecId;
+        }
     }
 
     /**

+ 15 - 1
fs-service/src/main/java/com/fs/erp/dto/sdk/wangdianTwo/api/dto/RawRefundUploadRequest.java → fs-service/src/main/java/com/fs/erp/dto/sdk/wangdianTwo/api/dto/RawRefundUpload2Request.java

@@ -2,12 +2,13 @@ package com.fs.erp.dto.sdk.wangdianTwo.api.dto;
 
 import com.google.gson.annotations.SerializedName;
 import java.math.BigDecimal;
+import java.util.List;
 
 
 /**
  * 退款单同步接口请求参数实体类
  */
-public class RawRefundUploadRequest {
+public class RawRefundUpload2Request {
 
     /**
      * 店铺编号
@@ -15,6 +16,11 @@ public class RawRefundUploadRequest {
     @SerializedName("shop_no")
     private String shopNo;
 
+    /**
+     * 原始退款单实体类
+     */
+    private List<RefundOrder> orderList;
+
 
     // Getters and Setters
     public String getShopNo() {
@@ -25,6 +31,14 @@ public class RawRefundUploadRequest {
         this.shopNo = shopNo;
     }
 
+    public List<RefundOrder> getOrderList() {
+        return orderList;
+    }
+
+    public void setOrderList(List<RefundOrder> refundOrder) {
+        this.orderList = refundOrder;
+    }
+
     /**
      * 原始退款单实体类
      */

+ 5 - 5
fs-service/src/main/java/com/fs/erp/dto/sdk/wangdianTwo/api/dto/RawRefundUploadResponse.java → fs-service/src/main/java/com/fs/erp/dto/sdk/wangdianTwo/api/dto/RawRefundUpload2Response.java

@@ -3,14 +3,13 @@ package com.fs.erp.dto.sdk.wangdianTwo.api.dto;
 
 import com.google.gson.annotations.SerializedName;
 
-import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
 
 /**
  * 退款单同步接口响应参数实体类
  */
-public class RawRefundUploadResponse {
+public class RawRefundUpload2Response {
 
     /**
      * {"status":0,"data":{"chg_count":0,"new_count":1}}
@@ -26,7 +25,7 @@ public class RawRefundUploadResponse {
     // 单号 no	String
     // 错误信息	error	String
     @SerializedName("error_list")
-    private List<Map<String,Object>> errorList;
+    private List<ErrorInfo> errorList;
 
     public Integer getChgCount()
     {
@@ -48,13 +47,14 @@ public class RawRefundUploadResponse {
         this.newCount = newCount;
     }
 
-    public List<Map<String,Object>> getErrorList()
+    public List<ErrorInfo> getErrorList()
     {
         return errorList;
     }
 
-    public void setErrorList(List<Map<String,Object>> errorList)
+    public void setErrorList(List<ErrorInfo> errorList)
     {
         this.errorList = errorList;
     }
+
 }

+ 13 - 6
fs-service/src/main/java/com/fs/erp/dto/sdk/wangdianTwo/impl/DefaultClient.java → fs-service/src/main/java/com/fs/erp/dto/sdk/wangdianTwo/impl/WdtTwoClient.java

@@ -5,6 +5,8 @@ import com.fs.erp.dto.sdk.wangdianTwo.Client;
 import com.fs.erp.dto.sdk.wangdianTwo.Pager;
 import com.fs.erp.dto.sdk.wangdianTwo.WdtErpException;
 import com.google.gson.*;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
 
 import java.io.*;
 import java.lang.reflect.InvocationTargetException;
@@ -19,7 +21,8 @@ import java.security.NoSuchAlgorithmException;
 import java.util.Map;
 import java.util.TreeMap;
 
-public class DefaultClient implements Client
+@Slf4j
+public class WdtTwoClient implements Client
 {
 	private static final String WDT_SERVICE_URL = "http://wdt.wangdian.cn/";
 	// 协议版本号
@@ -68,7 +71,7 @@ public class DefaultClient implements Client
 
 	private static JsonParser parser = new JsonParser();
 
-	private DefaultClient(String sid, String url, String key, String secret, boolean isMultiTenantMode)
+	private WdtTwoClient(String sid, String url, String key, String secret, boolean isMultiTenantMode)
 	{
 		if (url.endsWith("/"))
 			url += "openapi";
@@ -207,7 +210,7 @@ public class DefaultClient implements Client
 		// 请求参数
 		String body = gson.toJson(args);
 		requestParams.put("body", body);
-
+		log.info("requestParams: {}", requestParams);
 		// 计算签名
 		String sign = this.sign(requestParams, this.secret);
 		requestParams.remove("body");
@@ -215,6 +218,8 @@ public class DefaultClient implements Client
 
 		String requestUrl = this.url + "?" + this.ToQueryString(requestParams);
 
+
+
 		PrintWriter outWriter = null;
 		BufferedReader inReader = null;
 		String responseBody;
@@ -262,6 +267,8 @@ public class DefaultClient implements Client
 
 		JsonObject jsonResponse = parser.parse(responseBody).getAsJsonObject();
 
+		log.info("responseBody: {}", responseBody);
+
 		int status = jsonResponse.get("status").getAsInt();
 		if (status > 0)
 		{
@@ -327,16 +334,16 @@ public class DefaultClient implements Client
 
 	public static Client get(String sid, String url, String key, String secret, boolean isMultiTenantMode)
 	{
-		return new DefaultClient(sid, url, key, secret, isMultiTenantMode);
+		return new WdtTwoClient(sid, url, key, secret, isMultiTenantMode);
 	}
 
 	public static Client get(String sid, String url, String key, String secret)
 	{
-		return new DefaultClient(sid, url, key, secret, false);
+		return new WdtTwoClient(sid, url, key, secret, false);
 	}
 
 	public static Client get(String sid, String key, String secret)
 	{
-		return new DefaultClient(sid, WDT_SERVICE_URL, key, secret, false);
+		return new WdtTwoClient(sid, WDT_SERVICE_URL, key, secret, false);
 	}
 }

+ 108 - 47
fs-service/src/main/java/com/fs/erp/service/impl/WdtTwoErpGoodsServiceImpl.java

@@ -1,27 +1,43 @@
 package com.fs.erp.service.impl;
 
 import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.PropertyNamingStrategy;
-import com.alibaba.fastjson.parser.ParserConfig;
-import com.fs.erp.domain.ErpGoods;
-import com.fs.erp.domain.ErpGoodsStock;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.fs.erp.domain.*;
 import com.fs.erp.dto.*;
-import com.fs.erp.dto.sdk.wangdian.api.WdtClient;
-import com.fs.erp.dto.wdt.*;
+import com.fs.erp.dto.sdk.wangdian.enums.DeliveryTerm;
+import com.fs.erp.dto.sdk.wangdian.enums.PaymentStatus;
+import com.fs.erp.dto.sdk.wangdian.enums.RefundStatus;
+import com.fs.erp.dto.sdk.wangdian.enums.TradeStatus;
+import com.fs.erp.dto.sdk.wangdianTwo.Pager;
+import com.fs.erp.dto.sdk.wangdianTwo.api.WdtTradeAPI;
+import com.fs.erp.dto.sdk.wangdianTwo.api.dto.*;
+import com.fs.erp.dto.sdk.wangdianTwo.impl.ApiFactory;
+import com.fs.erp.dto.sdk.wangdianTwo.impl.WdtTwoClient;
 import com.fs.erp.service.IErpGoodsService;
-import com.hc.openapi.tool.util.ObjectUtils;
+import com.fs.his.domain.FsUser;
+import com.fs.his.mapper.FsUserMapper;
+import com.fs.his.utils.ConfigUtil;
+import com.fs.hisStore.config.FsErpConfig;
+import com.fs.hisStore.domain.FsStoreOrderScrm;
+import com.fs.hisStore.domain.FsStoreProductScrm;
+import com.fs.hisStore.service.IFsStoreOrderItemScrmService;
+import com.fs.hisStore.service.IFsStoreOrderScrmService;
+import com.fs.hisStore.service.IFsStoreProductScrmService;
+import com.fs.hisStore.vo.FsStoreOrderItemVO;
+import com.hc.openapi.tool.util.StringUtils;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.exception.ExceptionUtils;
+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.context.annotation.Primary;
 import org.springframework.stereotype.Service;
 
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import javax.annotation.PostConstruct;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.*;
 
 /**
  * @Description: 旗舰版 erp
@@ -34,8 +50,40 @@ import java.util.Map;
 @Service
 @Primary
 public class WdtTwoErpGoodsServiceImpl implements IErpGoodsService {
+
+    @Autowired
+    ConfigUtil configUtil;
+
+    @Autowired
+    private IFsStoreOrderScrmService fsStoreOrderScrmService;
+
     @Autowired
-    private WdtClient client;
+    private IFsStoreOrderItemScrmService fsStoreOrderItemScrmService;
+
+    @Autowired
+    private IFsStoreProductScrmService fsStoreProductScrmService;
+
+    @Autowired
+    private FsUserMapper fsUserMapper;
+
+
+
+    // 延迟初始化这些字段
+    private WdtTwoClient client;
+    private WdtTradeAPI api;
+
+    @PostConstruct
+    private void init() {
+        // 在 Spring 容器完成依赖注入后初始化
+        this.client = (WdtTwoClient)WdtTwoClient.get(
+                configUtil.getErpConfig().getErpWdSid(),
+                configUtil.getSysConfig().getErpWdBaseUrl(),
+                configUtil.getErpConfig().getErpWdAppKey(),
+                configUtil.getErpConfig().getErpWdAppsecret()
+        );
+        this.api = ApiFactory.get(client, WdtTradeAPI.class);
+    }
+
 
     @Override
     public BaseResponse addGoods(ErpGoods goods) {
@@ -47,54 +95,67 @@ public class WdtTwoErpGoodsServiceImpl implements IErpGoodsService {
         return null;
     }
 
+
     @Override
     public ErpGoodsQueryResponse getGoods(ErpGoodsQueryRequert param) {
         return null;
     }
 
+
     @Override
     public ErpGoodsQueryResponse getGoodsScrm(ErpGoodsQueryRequert param) {
         return null;
     }
 
+    @Override
+    public ErpGoodsStockQueryResponse getGoodsStockScrm(ErpGoodsStockQueryRequert param) {
+        return null;
+    }
+
+
+    /**
+     * @Description: 库存查询
+     * @Param:
+     * @Return:
+     * @Author xgb
+     * @Date 2026/1/27 16:24
+     */
     @Override
     public ErpGoodsStockQueryResponse getGoodsStock(ErpGoodsStockQueryRequert param) {
         String barcode = param.getBarcode();
-        Asserts.notNull(barcode,"barcode不能为空!");
-
-        Map<String,String> map = new HashMap<>();
-        map.put("spec_no",barcode);
-        try {
-            String response = client.execute("stock_query.php", map);
-            ParserConfig config = new ParserConfig();
-            config.propertyNamingStrategy = PropertyNamingStrategy.CamelCase;
-            ErpWdtStockRespDTO erpWdtStockRespDTO = JSON.parseObject(response, ErpWdtStockRespDTO.class,config);
-            List<ErpGoodsStock> list = new ArrayList<>();
-            if(ObjectUtils.equals(0,erpWdtStockRespDTO.getCode())){
-                List<ErpWdtStockDTO> stocks = erpWdtStockRespDTO.getStocks();
-                for (ErpWdtStockDTO stock : stocks) {
-                    ErpGoodsStock erpGoodsStock = new ErpGoodsStock();
-                    erpGoodsStock.setBarcode(barcode);
-                    erpGoodsStock.setQty(stock.getStock_num().split("\\.")[0]); //999979.0000
-                    erpGoodsStock.setSalable_qty(stock.getAvaliable_num().split("\\.")[0]); //999976.0000
-                    list.add(erpGoodsStock);
-                }
-            } else {
-                log.info("获取erp库存失败! 错误原因: {}", JSON.toJSONString(erpWdtStockRespDTO));
-                throw new RuntimeException(erpWdtStockRespDTO.getMessage());
-            }
-            ErpGoodsStockQueryResponse erpGoodsStockQueryResponse = new ErpGoodsStockQueryResponse();
-            erpGoodsStockQueryResponse.setStocks(list);
-            return erpGoodsStockQueryResponse;
-        } catch (IOException e) {
-            log.info("获取erp库存失败! 错误原因: {}", ExceptionUtils.getStackTrace(e));
-            throw new RuntimeException(e);
+        Asserts.notNull(barcode, "barcode不能为空!");
+
+        StockSearch2Request request = new StockSearch2Request();
+        request.setSpecNos(Collections.singletonList(barcode));
+
+
+        StockSearch2Response response = api.search2(request, new Pager(1, 0, true));
+        if (response.getTotal() <= 0) {
+            log.info("获取erp库存失败! 商品编码{}", barcode);
+            throw new RuntimeException("该商品erp系统不存在");
+        }
+        List<StockSearch2Response.Detail> detailList = response.getDetailList();
+        List<ErpGoodsStock> list = new ArrayList<>();
+        for (StockSearch2Response.Detail stock : detailList) {
+            ErpGoodsStock erpGoodsStock = new ErpGoodsStock();
+            erpGoodsStock.setBarcode(barcode);
+            erpGoodsStock.setQty(String.valueOf(stock.getStockNum()).split("\\.")[0]); //999979.0000
+            erpGoodsStock.setSalable_qty(String.valueOf(stock.getAvailableSendStock()).split("\\.")[0]); //999976.0000
+            list.add(erpGoodsStock);
         }
-    }
 
-    @Override
-    public ErpGoodsStockQueryResponse getGoodsStockScrm(ErpGoodsStockQueryRequert param) {
-        return null;
+        ErpGoodsStockQueryResponse erpGoodsStockQueryResponse = new ErpGoodsStockQueryResponse();
+        erpGoodsStockQueryResponse.setStocks(list);
+        return erpGoodsStockQueryResponse;
+
+
     }
+
+
+
 }
 
+
+
+
+

+ 848 - 0
fs-service/src/main/java/com/fs/erp/service/impl/WdtTwoErpOrderServiceImpl.java

@@ -0,0 +1,848 @@
+package com.fs.erp.service.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+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.exception.ServiceException;
+import com.fs.erp.converter.ErpWdtToErpOrderMapper;
+import com.fs.erp.domain.*;
+import com.fs.erp.dto.*;
+import com.fs.erp.dto.sdk.wangdian.api.WdtClient;
+import com.fs.erp.dto.sdk.wangdian.enums.*;
+import com.fs.erp.dto.sdk.wangdianTwo.Pager;
+import com.fs.erp.dto.sdk.wangdianTwo.api.WdtTradeAPI;
+import com.fs.erp.dto.sdk.wangdianTwo.api.dto.*;
+import com.fs.erp.dto.sdk.wangdianTwo.impl.ApiFactory;
+import com.fs.erp.dto.sdk.wangdianTwo.impl.WdtTwoClient;
+import com.fs.erp.dto.wdt.*;
+import com.fs.erp.service.IErpOrderService;
+import com.fs.his.config.FsSysConfig;
+import com.fs.his.domain.FsStoreOrder;
+import com.fs.his.domain.FsStoreOrderItem;
+import com.fs.his.domain.FsStoreProduct;
+import com.fs.his.domain.FsUser;
+import com.fs.his.mapper.FsStoreOrderMapper;
+import com.fs.his.mapper.FsUserMapper;
+import com.fs.his.service.IFsStoreOrderItemService;
+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.FsStoreOrderScrm;
+import com.fs.hisStore.domain.FsStoreProductScrm;
+import com.fs.hisStore.service.IFsStoreOrderItemScrmService;
+import com.fs.hisStore.service.IFsStoreOrderScrmService;
+import com.fs.hisStore.service.IFsStoreProductScrmService;
+import com.fs.hisStore.vo.FsStoreOrderItemVO;
+import com.hc.openapi.tool.util.StringUtils;
+import lombok.extern.slf4j.Slf4j;
+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.context.annotation.Primary;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PostConstruct;
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+
+@Slf4j
+@Service
+@Primary
+public class WdtTwoErpOrderServiceImpl implements IErpOrderService {
+
+    @Autowired
+    ConfigUtil configUtil;
+
+    @Autowired
+    private IFsStoreOrderScrmService fsStoreOrderScrmService;
+
+    @Autowired
+    private IFsStoreOrderItemScrmService fsStoreOrderItemScrmService;
+
+    @Autowired
+    private IFsStoreProductScrmService fsStoreProductScrmService;
+
+    @Autowired
+    private FsUserMapper fsUserMapper;
+
+
+
+    // 延迟初始化这些字段
+    private WdtTwoClient client;
+    private WdtTradeAPI api;
+
+    @PostConstruct
+    private void init() {
+        // 在 Spring 容器完成依赖注入后初始化
+        this.client = (WdtTwoClient)WdtTwoClient.get(
+                configUtil.getErpConfig().getErpWdSid(),
+                configUtil.getSysConfig().getErpWdBaseUrl(),
+                configUtil.getErpConfig().getErpWdAppKey(),
+                configUtil.getErpConfig().getErpWdAppsecret()
+        );
+        this.api = ApiFactory.get(client, WdtTradeAPI.class);
+    }
+
+
+    @Override
+    public ErpOrderResponse addOrder(ErpOrder order) {
+        return null;
+    }
+
+
+    /**
+     * @Description: 物流推送
+     * @Param:
+     * @Return:
+     * @Author xgb
+     * @Date 2026/1/27 11:35
+     */
+    @Override
+    public ErpOrderResponse addOrderScrm(ErpOrder order) {
+        PushSelf2Request request = new PushSelf2Request();
+        if (StringUtils.isNotEmpty(order.getShopNo())) {
+            request.setShopNo(order.getShopNo());
+        }
+
+        PushSelf2Request.RawTrade rawTrade = new PushSelf2Request.RawTrade();
+
+        FsStoreOrderScrm fsStoreOrder = fsStoreOrderScrmService.selectFsStoreOrderByOrderCode(order.getPlatform_code());
+        BigDecimal couponPrice = fsStoreOrder.getCouponPrice();
+
+        // 订单id
+        rawTrade.setTid(order.getPlatform_code());
+        // 平台状态
+        rawTrade.setTradeStatus(TradeStatus.PAID_WAITING_FOR_SHIPMENT.getValue());
+        // 是否执行自动递交以系统配置为准 10: 待递交, 20: 已递交,30: 部分发货,40: 已发货,60: 已完成,70: 已取消
+        rawTrade.setProcessStatus(10);
+        // 0无退款 1申请退款 2部分退款 3全部退款
+        rawTrade.setRefundStatus(0);
+
+        // 1在线转帐 2现金,3银行转账,4邮局汇款 5预付款 6刷卡 7支付宝 8微信支付
+        rawTrade.setPayMethod(1);
+        // 下单时间
+        rawTrade.setTradeTime(order.getDeal_datetime());
+        // 支付时间
+        rawTrade.setPayTime(order.getDeal_datetime());
+        // 交易结束时间
+        rawTrade.setEndTime(null);
+        // 买家昵称/客户网名
+        rawTrade.setBuyerNick(order.getReceiver_name());
+        // 买家备注
+        rawTrade.setBuyerMessage(order.getBuyer_memo());
+        // 买家邮箱
+        rawTrade.setBuyerEmail("");
+        // 买家地区
+        rawTrade.setBuyerArea("");
+        // 收件人姓名
+        rawTrade.setReceiverName(order.getReceiver_name());
+        // 省市区空格分隔,示例【北京 北京市 朝阳区】,省市区推送旺店通地址库
+        rawTrade.setReceiverArea(order.getReceiver_province() + " " + order.getReceiver_city() + " " + order.getReceiver_district());
+        // 收件人详细地址,不包含省市区
+        rawTrade.setReceiverAddress(order.getReceiver_address());
+        // 收件人邮编
+        rawTrade.setReceiverZip("");
+        // 收件人手机
+        rawTrade.setReceiverMobile(order.getReceiver_mobile());
+        // 收件人电话
+        rawTrade.setReceiverTelno("");
+        // 邮费
+        rawTrade.setPostAmount(fsStoreOrder.getFreightPrice());
+        // 其他费用
+        rawTrade.setOtherAmount(BigDecimal.ZERO);
+        // 优惠金额
+        rawTrade.setDiscount(BigDecimal.ZERO);
+        // 应收金额
+        rawTrade.setReceivable(fsStoreOrder.getPayPrice());
+        // 平台费用
+        rawTrade.setPlatformCost(BigDecimal.ZERO);
+        // 发票类别 0:不需要,1:普通发票,2:增值税普通发票电子,3:增值税普通发票纸质,4:增值税专用发票
+//        rawTrade.setInvoiceType();
+        // 发票内容
+//        rawTrade.setInvoiceContent("");
+        // 物流类别
+//        rawTrade.setLogisticsType();
+        // 物流编号
+//        rawTrade.setCustData();
+
+
+        // 如果是货到付款
+        if ("2".equals(fsStoreOrder.getPayType())) {
+            // 支付状态
+            rawTrade.setPayStatus(PaymentStatus.PARTIALLY_PAID.getValue());
+            // 发货条件
+            rawTrade.setDeliveryTerm(DeliveryTerm.CASH_ON_DELIVERY.getValue());
+            // 货到付款金额 = 物流代收金额-优惠金额
+            rawTrade.setCodAmount(fsStoreOrder.getPayDelivery().subtract(couponPrice));
+
+        } else if ("3".equals(fsStoreOrder.getPayType())) {
+            // 支付状态
+            rawTrade.setPayStatus(PaymentStatus.UNPAID.getValue());
+            // 发货条件
+            rawTrade.setDeliveryTerm(DeliveryTerm.CASH_ON_DELIVERY.getValue());
+            // 货到付款金额 = 物流代收金额-优惠金额
+            rawTrade.setCodAmount(fsStoreOrder.getPayDelivery().subtract(couponPrice));
+        } else { // 如果是线上付款
+            // 支付状态
+            rawTrade.setPayStatus(PaymentStatus.FULLY_PAID.getValue());
+            // 发货条件
+            rawTrade.setDeliveryTerm(DeliveryTerm.PAYMENT_BEFORE_DELIVERY.getValue());
+        }
+        // 平台支付订单ID
+        rawTrade.setPayId(String.valueOf(fsStoreOrder.getOrderCode()));
+        // 客服备注
+        rawTrade.setRemark(order.getSeller_memo());
+        // 客服备注标记 标旗(1 红、2 黄、3 绿、4 蓝、5 紫 无则填0)
+        rawTrade.setRemarkFlag(0);
+        // 是否是自流转 true自流转,false 非自流转
+        rawTrade.setIsAutoWms(false);
+        // 仓库编号
+        rawTrade.setWarehouseNo("");
+        if (fsStoreOrder.getPayMoney() != null) {
+            // 已付
+            rawTrade.setPaid(fsStoreOrder.getPayMoney());
+        }
+
+        // 还有的字段看接口文档 ....
+        request.setRawTrades(Collections.singletonList(rawTrade));
+
+        // 商品总价
+        BigDecimal totalPrice = fsStoreOrder.getTotalPrice();
+        // 总折扣金额 = 优惠券金额 + 折扣金额
+        BigDecimal totalDiscountPrice = BigDecimal.ZERO;
+        // 折扣金额
+        BigDecimal discountPrice = totalPrice.subtract(fsStoreOrder.getPayPrice());
+        totalDiscountPrice = couponPrice.add(discountPrice);
+
+        // 防止除零错误
+        if (totalPrice.compareTo(BigDecimal.ZERO) == 0) {
+            totalPrice = BigDecimal.ONE;
+        }
+
+        List<FsStoreOrderItemVO> fsStoreOrderItemVOS = fsStoreOrderItemScrmService.selectFsStoreOrderItemListByOrderId(fsStoreOrder.getId());
+        List<PushSelf2Request.RawTradeOrder> rawTradeOrders = new ArrayList<>();
+        BigDecimal nummber = BigDecimal.ZERO;
+        for (FsStoreOrderItemVO fsStoreOrderItem : fsStoreOrderItemVOS) {
+            PushSelf2Request.RawTradeOrder rawTradeOrder = new PushSelf2Request.RawTradeOrder();
+            // 原始订单号
+            rawTradeOrder.setTid(order.getPlatform_code());
+
+            // 原始子单号
+            rawTradeOrder.setOid(String.format("%s%s", fsStoreOrderItem.getOrderCode(), fsStoreOrderItem.getItemId()));
+            // 状态
+            rawTradeOrder.setStatus(TradeStatus.PAID_WAITING_FOR_SHIPMENT.getValue());
+            // 退款状态
+            rawTradeOrder.setRefundStatus(RefundStatus.NO_REFUND.getValue());
+
+            FsStoreProductScrm fsStoreProduct = fsStoreProductScrmService.selectFsStoreProductById(fsStoreOrderItem.getProductId());
+            if (fsStoreProduct == null) {
+                log.error("该商品不存在! 商品id[{}] ", fsStoreOrderItem.getProductId());
+                throw new RuntimeException("该商品不存在!");
+            }
+
+            // 平台货品ID
+            rawTradeOrder.setGoodsId(String.valueOf(fsStoreProduct.getProductId()));
+            JSONObject jsonObject = JSON.parseObject(fsStoreOrderItem.getJsonInfo());
+            rawTradeOrder.setSpecId(jsonObject.getString("sku"));
+            rawTradeOrder.setGoodsNo(jsonObject.getString("barCode"));
+            rawTradeOrder.setSpecNo(jsonObject.getString("sku"));
+            // 货品名称
+            rawTradeOrder.setGoodsName(fsStoreProduct.getProductName());
+            // 子单类型 0正常货品 1虚拟货品 2服务
+            rawTradeOrder.setOrderType(0);
+            // 平台类目
+//            rawTradeOrder.setCid();
+            // 数量
+            rawTradeOrder.setNum(BigDecimal.valueOf(fsStoreOrderItem.getNum()));
+            nummber = nummber.add(rawTradeOrder.getNum());
+            // 单价
+            //由于商品改价 用item里面的单价
+            rawTradeOrder.setPrice(jsonObject.getBigDecimal("price"));
+            // 调整
+            rawTradeOrder.setAdjustAmount(BigDecimal.ZERO);
+            // 优惠
+            rawTradeOrder.setDiscount(BigDecimal.ZERO);
+
+            // 分摊优惠
+            // 分摊比例
+            BigDecimal price = fsStoreProduct.getPrice().multiply(BigDecimal.valueOf(fsStoreOrderItem.getNum()));
+            BigDecimal divide = price.divide(totalPrice, RoundingMode.HALF_UP);
+            rawTradeOrder.setShareDiscount(divide.multiply(totalDiscountPrice));
+
+            // 总价格
+            rawTradeOrder.setTotalAmount(rawTradeOrder.getPrice().multiply(rawTradeOrder.getNum()));
+            // 退款金额
+            rawTradeOrder.setRefundAmount(BigDecimal.ZERO);
+            // 备注
+            rawTradeOrder.setRemark("");
+            // json串
+            rawTradeOrder.setJson("");
+            // 赠品方式 赠品方式 0非赠品1自动赠送2手工赠送4周期购赠送8平台赠送32阶梯满赠64CRM追加赠送65 主品
+            rawTradeOrder.setGiftType(0);
+
+            rawTradeOrders.add(rawTradeOrder);
+        }
+
+        // 最后一个商品的分摊优惠等于总优惠减去前面分摊优惠之和
+        Asserts.check(CollectionUtils.isNotEmpty(rawTradeOrders), "订单 {} 商品不能为空!", order.getPlatform_code());
+        long size = rawTradeOrders.size();
+        if (size > 1) {
+            PushSelf2Request.RawTradeOrder rawTradeOrder = rawTradeOrders.get(rawTradeOrders.size() - 1);
+            rawTradeOrder.setShareDiscount(totalDiscountPrice.subtract(rawTradeOrders.stream()
+                    .limit(size - 1L)
+                    .map(item -> Optional.ofNullable(item.getShareDiscount()).orElse(BigDecimal.ZERO))
+                    .reduce(BigDecimal.ZERO, BigDecimal::add)));
+        }
+
+
+        request.setRawTradeOrders(rawTradeOrders);
+
+        // 原始单包含的子订单数,rawTradeOrderList节点下所有子单数之和
+        rawTrade.setOrderCount(fsStoreOrderItemVOS.size());
+        // 货品总数量,rawTradeOrderList节点下所有“num”数量之和
+        rawTrade.setGoodsCount(nummber);
+
+        // 优惠券 目前不添加
+        PushSelf2Response response = api.pushSelf2(request.getShopNo(), request.getRawTrades(), request.getRawTradeOrders(), request.getDiscountInfos());
+        if (response.getChgCount() <= 0 && response.getNewCount()<=0) {
+            log.info("订单推送失败: [{}]", response.getErrorList().get(0).getError());
+            throw new RuntimeException(String.format("订单推送失败, 原因: %s", response.getErrorList().get(0).getError()));
+        } else {
+            log.info("订单推送成功!");
+            ErpOrderResponse erpOrderResponse = new ErpOrderResponse();
+            erpOrderResponse.setCode(order.getPlatform_code());
+            erpOrderResponse.setSuccess(true);
+            erpOrderResponse.setRequestRawData(JSON.toJSONString(request));
+            erpOrderResponse.setResponseRawData(JSON.toJSONString(response));
+            return erpOrderResponse;
+        }
+    }
+
+
+
+
+    @Override
+    public ErpOrderResponse refundOrder(ErpRefundOrder order) {
+        return null;
+    }
+
+    @Override
+    public ErpOrderResponse refundOrderScrm(ErpRefundOrder order) {
+        return null;
+    }
+
+    @Override
+    public ErpDeliverysResponse getDeliver(ErpDeliverysRequest param) {
+        return null;
+    }
+
+
+    @Override
+    public ErpOrderQueryResponse getScrmOrder(ErpOrderQueryRequert param) {
+        return null;
+    }
+
+    @Override
+    public ErpOrderQueryResponse getOrder(ErpOrderQueryRequert param){
+        QuerySelfOrderDetailRequest request = new QuerySelfOrderDetailRequest();
+        request.setSrcTid(param.getCode());
+        QuerySelfOrderDetailResponse response = api.querySelfOrderWithDetail(request, new Pager(1, 0, true));
+        if (response.getTotalCount() <= 0) {
+            log.info("订单信息不存在 订单号{}", param.getCode());
+            throw new RuntimeException("订单信息不存在");
+        }
+        return toErpOrderQueryResponse(response);
+    }
+
+    /**
+     * @Description: 订单查询
+     * @Param:
+     * @Return:
+     * @Author xgb
+     * @Date 2026/1/27 16:53
+     */
+    public ErpOrderQueryResponse getOrderScrm(ErpOrderQueryRequert param) {
+
+        QuerySelfOrderDetailRequest request = new QuerySelfOrderDetailRequest();
+        request.setSrcTid(param.getCode());
+        QuerySelfOrderDetailResponse response = api.querySelfOrderWithDetail(request, new Pager(1, 0, true));
+        if (response.getTotalCount() <= 0) {
+            log.info("订单信息不存在 订单号{}", param.getCode());
+            throw new RuntimeException("订单信息不存在");
+        }
+        return toErpOrderQueryResponse(response);
+
+    }
+
+    /**
+     * @Description: 只用于单个订单查询的返回结果转换
+     * @Param:
+     * @Return:
+     * @Author xgb
+     * @Date 2026/1/28 9:20
+     */
+    private ErpOrderQueryResponse toErpOrderQueryResponse(QuerySelfOrderDetailResponse source) {
+        ErpOrderQueryResponse response = new ErpOrderQueryResponse();
+        QuerySelfOrderDetailResponse.OrderInfo order = source.getOrder().get(0);
+
+        // 订单信息
+        ErpOrderQuery erpOrderQuery = new ErpOrderQuery();
+        // 快递编号
+        if (order.getLogisticsCode() != null) {
+            erpOrderQuery.setExpress_code(order.getLogisticsCode());
+        }
+        // 快递名称
+        if (order.getLogisticsName() != null) {
+            erpOrderQuery.setExpress_name(order.getLogisticsName());
+        }
+
+        // 收货人
+        if (order.getReceiverName() != null) {
+            erpOrderQuery.setReceiver_name(order.getReceiverName());
+        }
+
+        // 电话
+        if (order.getReceiverMobile() != null) {
+            erpOrderQuery.setReceiver_mobile(order.getReceiverMobile());
+        }
+
+        //地址
+        if (order.getReceiverAddress() != null) {
+            erpOrderQuery.setReceiver_address(order.getReceiverAddress());
+        }
+
+        // 运单号
+        if (order.getLogisticsNo() != null) {
+            erpOrderQuery.setExpress_code(order.getLogisticsNo());
+        }
+
+        // 订单状态
+        if (order.getTradeStatus() != null) {
+            erpOrderQuery.setDelivery_state(order.getTradeStatus());
+        }
+
+        // 订单号
+        if (order.getSrcTids() != null) {
+            erpOrderQuery.setCode(order.getSrcTids());
+        }
+        // 商品数量
+        if (order.getGoodsCount() != null) {
+            erpOrderQuery.setQty(order.getGoodsCount().intValue());
+        }
+        // 商品金额
+        if (order.getReceivable() != null) {
+            erpOrderQuery.setAmount(order.getReceivable().doubleValue());
+        }
+        // 支付金额
+        if (order.getPaid() != null) {
+            erpOrderQuery.setPayment(order.getPaid().doubleValue());
+        }
+
+        if(order.getConsignTime() != null){
+            // todo
+        }
+
+        // 物流信息
+        ErpDeliverys erpDeliverys = new ErpDeliverys();
+        erpDeliverys.setExpress_code(order.getLogisticsCode());
+        erpDeliverys.setExpress_name(order.getLogisticsName());
+        erpDeliverys.setMail_no(order.getLogisticsNo());
+        erpDeliverys.setDelivery(true);
+        erpOrderQuery.setDeliverys(Collections.singletonList(erpDeliverys));
+
+        response.setOrders(Collections.singletonList(erpOrderQuery));
+        return response;
+    }
+
+    //   // sales_refund_push.php
+    //	@Api(value = "aftersales.refund.RawRefund.upload2", paged = true)
+    //	StockSearch2Response rawRefundUpload(StockSearch2Request request, Pager pager);
+
+    /**
+     * @Description: 退款
+     * @Param:
+     * @Return:
+     * @Author xgb
+     * @Date 2026/1/28 9:23
+     */
+    @Override
+    public BaseResponse refundUpdateScrm(ErpRefundUpdateRequest param) {
+
+
+        FsErpConfig erpconfig = configUtil.getErpConfig();
+        log.info("退款单更新: {}", param);
+        FsStoreOrderScrm fsStoreOrder = fsStoreOrderScrmService.selectFsStoreOrderByOrderCode(param.getTid());
+
+        ErpOrderQueryRequert queryRequert = new ErpOrderQueryRequert();
+        queryRequert.setCode(fsStoreOrder.getExtendOrderId());
+
+        // 95已发货
+        //
+        //96 成本确认(待录入计划成本,订单结算时有货品无计划成本)
+        //
+        //101 已过账
+        //
+        //110已完成
+        Set<Integer> status = new HashSet<>();
+        status.add(95);
+        status.add(96);
+        status.add(101);
+        status.add(105);
+        status.add(110);
+
+        ErpOrderQueryResponse orderScrm = getOrderScrm(queryRequert);
+        ErpOrderQuery erpOrderQuery = orderScrm.getOrders().get(0);
+        Integer deliveryState = erpOrderQuery.getDelivery_state();
+        // 如果是未发货
+        if (!status.contains(deliveryState)) {
+            log.info("售前退款 参数: {}", param);
+            try {
+                ErpOrder order = fsStoreOrderScrmService.getErpOrder(fsStoreOrder);
+
+                Asserts.check(ObjectUtils.isNotNull(order), "该订单不存在!");
+
+                return getErpOrderRefundScrmResponse(order);
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+        }
+
+        //--------------售后退款------------
+        log.info("售后退款 参数: {}", param);
+        Map<String, String> map = new HashMap<>();
+
+
+        Asserts.check(ObjectUtils.isNotNull(fsStoreOrder), "该订单不存在! 订单id: {} ", param.getTid());
+
+        List<FsStoreOrderItemVO> fsStoreOrderItemVOS = fsStoreOrderItemScrmService.selectFsStoreOrderItemListByOrderId(fsStoreOrder.getId());
+
+        // 查询用户名称
+        FsUser fsUser = fsUserMapper.selectFsUserById(fsStoreOrder.getUserId());
+
+        RawRefundUpload2Request request = new RawRefundUpload2Request();
+        request.setShopNo(erpconfig.getErpWdShopCode());
+        List<RawRefundUpload2Request.RefundOrder> orders = new ArrayList<>();
+        for (FsStoreOrderItemVO item : fsStoreOrderItemVOS) {
+
+
+            RawRefundUpload2Request.RefundOrder order = new RawRefundUpload2Request.RefundOrder();
+            // 原始退款单号
+            order.setRefundNo(String.format("%s%s", item.getOrderCode(), item.getItemId()));
+            // 货品数量
+            order.setNum(BigDecimal.valueOf(item.getNum()));
+            // 原始单号
+            order.setTid(param.getTid());
+            // 原始子单号
+            order.setOid(String.format("%s%s", item.getOrderCode(), item.getItemId()));
+            // 退款单类型 0取消订单1退款(未发货,退款申请)2退货3换货4退款不退货
+            order.setType(2);
+            // 1取消退款,2已申请退款,3等待退货,4等待收货,5退款成功
+            order.setStatus(5);
+            // 退款版本
+            order.setRefundVersion("1");
+            JSONObject jsonObject = JSON.parseObject(item.getJsonInfo());
+            BigDecimal onePrice = jsonObject.getBigDecimal("price");
+            // 申请退款金额
+            order.setRefundAmount(onePrice.multiply(order.getNum()));
+            // 实际退款金额
+            order.setActualRefundAmount(order.getRefundAmount());
+            // 标题,对应原始退款单页面主单货品字段,若无传空字符串
+            order.setTitle("");
+            // 客户网名
+            order.setBuyerNick(fsUser != null ? fsUser.getNickName() : "");
+            // 是否售后退款单 0:否 1:是
+            order.setIsAftersale(1);
+            //
+            order.setReason("自研平台退款");
+            // 单价
+            order.setPrice(onePrice);
+            // 退款创建时间
+            order.setRefundTime(DateUtils.formatDate(new Date(), "yyyy-MM-dd HH:mm:ss"));
+            // 退款完成时间
+            order.setCurrentPhaseTimeout(order.getRefundTime());
+            // 物流
+            order.setLogisticsNo("");
+            order.setLogisticsName("");
+
+            orders.add(order);
+        }
+
+        request.setOrderList(orders);
+
+
+        RawRefundUpload2Response response = api.rawRefundUpload(request.getShopNo(),request.getOrderList());
+        if (response.getChgCount() <= 0 && response.getNewCount()<=0) {
+            log.info("退款单更新失败: {}", response);
+            throw new RuntimeException(String.format("退款单更新失败, 原因: %s", response.getErrorList().get(0).getError()));
+
+        } else {
+            log.info("退款单更新成功");
+            return new BaseResponse();
+        }
+    }
+
+
+    @Override
+    public BaseResponse refundUpdate(ErpRefundUpdateRequest param){
+        return null;
+    }
+
+    @Override
+    public ErpOrderResponse finishOrder(ErpOrder order){
+        return null;
+    }
+
+    @Override
+    public void getOrderDeliveryStatus(FsStoreOrder order) {
+
+    }
+
+    @Override
+    public void getOrderScrmDeliveryStatus(FsStoreOrderScrm order) {
+
+    }
+
+    /**
+     * scrm 如果未发货 修改订单为退款
+     *
+     * @param order 订单参数
+     * @return
+     */
+    private BaseResponse getErpOrderRefundScrmResponse(ErpOrder order) {
+
+        PushSelf2Request request = new PushSelf2Request();
+        if (StringUtils.isNotEmpty(order.getShopNo())) {
+            request.setShopNo(order.getShopNo());
+        }
+
+        PushSelf2Request.RawTrade rawTrade = new PushSelf2Request.RawTrade();
+
+        FsStoreOrderScrm fsStoreOrder = fsStoreOrderScrmService.selectFsStoreOrderByOrderCode(order.getPlatform_code());
+        BigDecimal couponPrice = fsStoreOrder.getCouponPrice();
+
+        // 订单id
+        rawTrade.setTid(order.getPlatform_code());
+        // 平台状态
+        rawTrade.setTradeStatus(TradeStatus.REFUNDED.getValue());
+        // 是否执行自动递交以系统配置为准 10: 待递交, 20: 已递交,30: 部分发货,40: 已发货,60: 已完成,70: 已取消
+        rawTrade.setProcessStatus(70);
+        // 0无退款 1申请退款 2部分退款 3全部退款
+        rawTrade.setRefundStatus(3);
+
+        // 1在线转帐 2现金,3银行转账,4邮局汇款 5预付款 6刷卡 7支付宝 8微信支付
+        rawTrade.setPayMethod(1);
+        // 下单时间
+        rawTrade.setTradeTime(order.getDeal_datetime());
+        // 支付时间
+        rawTrade.setPayTime(order.getDeal_datetime());
+        // 交易结束时间
+        rawTrade.setEndTime(null);
+        // 买家昵称/客户网名
+        rawTrade.setBuyerNick(order.getReceiver_name());
+        // 买家备注
+        rawTrade.setBuyerMessage(order.getBuyer_memo());
+        // 买家邮箱
+        rawTrade.setBuyerEmail("");
+        // 买家地区
+        rawTrade.setBuyerArea("");
+        // 收件人姓名
+        rawTrade.setReceiverName(order.getReceiver_name());
+        // 省市区空格分隔,示例【北京 北京市 朝阳区】,省市区推送旺店通地址库
+        rawTrade.setReceiverArea(order.getReceiver_province() + " " + order.getReceiver_city() + " " + order.getReceiver_district());
+        // 收件人详细地址,不包含省市区
+        rawTrade.setReceiverAddress(order.getReceiver_address());
+        // 收件人邮编
+        rawTrade.setReceiverZip("");
+        // 收件人手机
+        rawTrade.setReceiverMobile(order.getReceiver_mobile());
+        // 收件人电话
+        rawTrade.setReceiverTelno("");
+        // 邮费
+        rawTrade.setPostAmount(fsStoreOrder.getFreightPrice());
+        // 其他费用
+        rawTrade.setOtherAmount(BigDecimal.ZERO);
+        // 优惠金额
+        rawTrade.setDiscount(BigDecimal.ZERO);
+        // 应收金额
+        rawTrade.setReceivable(fsStoreOrder.getPayPrice());
+        // 平台费用
+        rawTrade.setPlatformCost(BigDecimal.ZERO);
+        // 发票类别 0:不需要,1:普通发票,2:增值税普通发票电子,3:增值税普通发票纸质,4:增值税专用发票
+//        rawTrade.setInvoiceType();
+        // 发票内容
+//        rawTrade.setInvoiceContent("");
+        // 物流类别
+//        rawTrade.setLogisticsType();
+        // 物流编号
+//        rawTrade.setCustData();
+
+
+        // 如果是货到付款
+        if ("2".equals(fsStoreOrder.getPayType())) {
+            // 支付状态
+            rawTrade.setPayStatus(PaymentStatus.PARTIALLY_PAID.getValue());
+            // 发货条件
+            rawTrade.setDeliveryTerm(DeliveryTerm.CASH_ON_DELIVERY.getValue());
+            // 货到付款金额 = 物流代收金额-优惠金额
+            rawTrade.setCodAmount(fsStoreOrder.getPayDelivery().subtract(couponPrice));
+
+        } else if ("3".equals(fsStoreOrder.getPayType())) {
+            // 支付状态
+            rawTrade.setPayStatus(PaymentStatus.UNPAID.getValue());
+            // 发货条件
+            rawTrade.setDeliveryTerm(DeliveryTerm.CASH_ON_DELIVERY.getValue());
+            // 货到付款金额 = 物流代收金额-优惠金额
+            rawTrade.setCodAmount(fsStoreOrder.getPayDelivery().subtract(couponPrice));
+        } else { // 如果是线上付款
+            // 支付状态
+            rawTrade.setPayStatus(PaymentStatus.FULLY_PAID.getValue());
+            // 发货条件
+            rawTrade.setDeliveryTerm(DeliveryTerm.PAYMENT_BEFORE_DELIVERY.getValue());
+        }
+        // 平台支付订单ID
+        rawTrade.setPayId(String.valueOf(fsStoreOrder.getOrderCode()));
+        // 客服备注
+        rawTrade.setRemark(order.getSeller_memo());
+        // 客服备注标记 标旗(1 红、2 黄、3 绿、4 蓝、5 紫 无则填0)
+        rawTrade.setRemarkFlag(0);
+        // 是否是自流转 true自流转,false 非自流转
+        rawTrade.setIsAutoWms(false);
+        // 仓库编号
+        rawTrade.setWarehouseNo("");
+        if (fsStoreOrder.getPayMoney() != null) {
+            // 已付
+            rawTrade.setPaid(fsStoreOrder.getPayMoney());
+        }
+
+        // 还有的字段看接口文档 ....
+        request.setRawTrades(Collections.singletonList(rawTrade));
+
+        // 商品总价
+        BigDecimal totalPrice = fsStoreOrder.getTotalPrice();
+        // 总折扣金额 = 优惠券金额 + 折扣金额
+        BigDecimal totalDiscountPrice = BigDecimal.ZERO;
+        // 折扣金额
+        BigDecimal discountPrice = totalPrice.subtract(fsStoreOrder.getPayPrice());
+        totalDiscountPrice = couponPrice.add(discountPrice);
+
+        // 防止除零错误
+        if (totalPrice.compareTo(BigDecimal.ZERO) == 0) {
+            totalPrice = BigDecimal.ONE;
+        }
+
+        List<FsStoreOrderItemVO> fsStoreOrderItemVOS = fsStoreOrderItemScrmService.selectFsStoreOrderItemListByOrderId(fsStoreOrder.getId());
+        List<PushSelf2Request.RawTradeOrder> rawTradeOrders = new ArrayList<>();
+        BigDecimal nummber = BigDecimal.ZERO;
+        for (FsStoreOrderItemVO fsStoreOrderItem : fsStoreOrderItemVOS) {
+            PushSelf2Request.RawTradeOrder rawTradeOrder = new PushSelf2Request.RawTradeOrder();
+            // 原始订单号
+            rawTradeOrder.setTid(order.getPlatform_code());
+
+            // 原始子单号
+            rawTradeOrder.setOid(String.format("%s%s", fsStoreOrderItem.getOrderCode(), fsStoreOrderItem.getItemId()));
+            // 状态
+            rawTradeOrder.setStatus(TradeStatus.PAID_WAITING_FOR_SHIPMENT.getValue());
+            // 退款状态
+            rawTradeOrder.setRefundStatus(RefundStatus.NO_REFUND.getValue());
+
+            FsStoreProductScrm fsStoreProduct = fsStoreProductScrmService.selectFsStoreProductById(fsStoreOrderItem.getProductId());
+            if (fsStoreProduct == null) {
+                log.error("该商品不存在! 商品id[{}] ", fsStoreOrderItem.getProductId());
+                throw new RuntimeException("该商品不存在!");
+            }
+
+            // 平台货品ID
+            rawTradeOrder.setGoodsId(String.valueOf(fsStoreProduct.getProductId()));
+            JSONObject jsonObject = JSON.parseObject(fsStoreOrderItem.getJsonInfo());
+            rawTradeOrder.setSpecId(jsonObject.getString("sku"));
+            rawTradeOrder.setGoodsNo(jsonObject.getString("barCode"));
+            rawTradeOrder.setSpecNo(jsonObject.getString("sku"));
+            // 货品名称
+            rawTradeOrder.setGoodsName(fsStoreProduct.getProductName());
+            // 子单类型 0正常货品 1虚拟货品 2服务
+            rawTradeOrder.setOrderType(0);
+            // 平台类目
+//            rawTradeOrder.setCid();
+            // 数量
+            rawTradeOrder.setNum(BigDecimal.valueOf(fsStoreOrderItem.getNum()));
+            nummber = nummber.add(rawTradeOrder.getNum());
+            // 单价
+            //由于商品改价 用item里面的单价
+            rawTradeOrder.setPrice(jsonObject.getBigDecimal("price"));
+            // 调整
+            rawTradeOrder.setAdjustAmount(BigDecimal.ZERO);
+            // 优惠
+            rawTradeOrder.setDiscount(BigDecimal.ZERO);
+
+            // 分摊优惠
+            // 分摊比例
+            BigDecimal price = fsStoreProduct.getPrice().multiply(BigDecimal.valueOf(fsStoreOrderItem.getNum()));
+            BigDecimal divide = price.divide(totalPrice, RoundingMode.HALF_UP);
+            rawTradeOrder.setShareDiscount(divide.multiply(totalDiscountPrice));
+
+            // 总价格
+            rawTradeOrder.setTotalAmount(rawTradeOrder.getPrice().multiply(rawTradeOrder.getNum()));
+            // 退款金额
+            rawTradeOrder.setRefundAmount(BigDecimal.ZERO);
+            // 备注
+            rawTradeOrder.setRemark("");
+            // json串
+            rawTradeOrder.setJson("");
+            // 赠品方式 赠品方式 0非赠品1自动赠送2手工赠送4周期购赠送8平台赠送32阶梯满赠64CRM追加赠送65 主品
+            rawTradeOrder.setGiftType(0);
+
+            rawTradeOrders.add(rawTradeOrder);
+        }
+
+        // 最后一个商品的分摊优惠等于总优惠减去前面分摊优惠之和
+        Asserts.check(CollectionUtils.isNotEmpty(rawTradeOrders), "订单 {} 商品不能为空!", order.getPlatform_code());
+        long size = rawTradeOrders.size();
+        if (size > 1) {
+            PushSelf2Request.RawTradeOrder rawTradeOrder = rawTradeOrders.get(rawTradeOrders.size() - 1);
+            rawTradeOrder.setShareDiscount(totalDiscountPrice.subtract(rawTradeOrders.stream()
+                    .limit(size - 1L)
+                    .map(item -> Optional.ofNullable(item.getShareDiscount()).orElse(BigDecimal.ZERO))
+                    .reduce(BigDecimal.ZERO, BigDecimal::add)));
+        }
+
+
+        request.setRawTradeOrders(rawTradeOrders);
+
+        // 原始单包含的子订单数,rawTradeOrderList节点下所有子单数之和
+        rawTrade.setOrderCount(fsStoreOrderItemVOS.size());
+        // 货品总数量,rawTradeOrderList节点下所有“num”数量之和
+        rawTrade.setGoodsCount(nummber);
+
+        // 优惠券 目前不添加
+        PushSelf2Response response = api.pushSelf2(request.getShopNo(), request.getRawTrades(), request.getRawTradeOrders(), request.getDiscountInfos());
+        if (response.getChgCount() <= 0 && response.getNewCount()<=0) {
+            log.info("未发货退款单更新失败: {}", response);
+            throw new RuntimeException(String.format("退款单更新失败, 原因: %s", response.getErrorList().get(0).getError()));
+        } else {
+            log.info("未发货退款单更新成功");
+            ErpOrderResponse erpOrderResponse = new ErpOrderResponse();
+            erpOrderResponse.setCode(order.getPlatform_code());
+            erpOrderResponse.setSuccess(true);
+            erpOrderResponse.setRequestRawData(JSON.toJSONString(request));
+            erpOrderResponse.setResponseRawData(JSON.toJSONString(response));
+            return erpOrderResponse;
+        }
+    }
+
+    @Override
+    public Map<String,Object>  stockOutOrderQueryTrade(ErpOrderQueryRequert param){
+        return null;
+    }
+
+}

+ 7 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsStoreAfterSalesServiceImpl.java

@@ -106,6 +106,7 @@ public class FsStoreAfterSalesServiceImpl implements IFsStoreAfterSalesService {
     @Autowired
     private TzBankService tzBankService;
     @Autowired
+    @Qualifier("erpOrderServiceImpl")
     private IErpOrderService erpOrderService;
     @Autowired
     @Qualifier("hzOMSErpOrderServiceImpl")
@@ -126,6 +127,10 @@ public class FsStoreAfterSalesServiceImpl implements IFsStoreAfterSalesService {
     @Qualifier("k9OrderScrmServiceImpl")
     private IErpOrderService k9OrderService;
 
+    @Autowired
+    @Qualifier("wdtTwoErpOrderServiceImpl")
+    private IErpOrderService wdtTwoOrderService;
+
     @Autowired
     private FsStorePaymentMapper fsStorePaymentMapper;
     @Autowired
@@ -617,6 +622,8 @@ public class FsStoreAfterSalesServiceImpl implements IFsStoreAfterSalesService {
                         jSTOrderService.refundUpdate(request);
                     } else if (erpType == 6) {
                         k9OrderService.refundUpdate(request);
+                    }else if (erpType == 7) {
+                        wdtTwoOrderService.refundUpdate(request);
                     }
                 }
             }

+ 6 - 0
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreCartScrmServiceImpl.java

@@ -58,6 +58,10 @@ public class FsStoreCartScrmServiceImpl implements IFsStoreCartScrmService
     @Qualifier("wdtErpGoodsServiceImpl")
     private IErpGoodsService wdtErpGoodsService;
 
+    @Autowired
+    @Qualifier("wdtTwoErpGoodsServiceImpl")
+    private IErpGoodsService wdtTwoErpGoodsService;
+
     @Autowired
     @Qualifier("k9StockScrmServiceImpl")
     private IErpGoodsService k9StockService;
@@ -340,6 +344,8 @@ public class FsStoreCartScrmServiceImpl implements IFsStoreCartScrmService
                 } else if (erpType == 3) {
                     //旺店通
                     goodsService = k9StockService;
+                }else if(erpType == 7){ // 旺店通旗舰版
+                    goodsService = wdtTwoErpGoodsService;
                 }
             }
         }

+ 37 - 28
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreOrderScrmServiceImpl.java

@@ -245,6 +245,10 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
     @Qualifier("wdtErpOrderServiceImpl")
     private IErpOrderService wdtOrderService;
 
+    @Autowired
+    @Qualifier("wdtTwoErpOrderServiceImpl")
+    private IErpOrderService wdtTwoOrderService;
+
     @Autowired
     @Qualifier("k9OrderScrmServiceImpl")
     private IErpOrderService k9OrderService;
@@ -1145,17 +1149,17 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
         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);
-                }
-            }
+//            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) {
@@ -1164,17 +1168,19 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
             }
             order.setStatus(OrderInfoEnum.STATUS_2.getValue());
             order.setDeliveryId(deliveryId);
-//            if(StringUtils.isEmpty(consignTime)){
+//            if(StringUtils.isEmptconsignTime)){
 //                // 后期优化
 //                logger.info("发货时间为空更新为当前时间,订单:{}",orderCode);
 //                order.setDeliverySendTime(new Date());
 //            }else {
 //                order.setDeliverySendTime(DateUtils.parseDate(consignTime));
 //            }
+            // todo 后面优化
+            order.setDeliverySendTime(new Date());
             // 定时每2小时同步物流信息
-            if(StringUtils.isNotBlank(consignTime) && !consignTime.startsWith("0000")){
-                order.setDeliverySendTime(DateUtils.parseDate(consignTime));
-            }
+//            if(StringUtils.isNotBlank(consignTime) && !consignTime.startsWith("0000")){
+//                order.setDeliverySendTime(DateUtils.parseDate(consignTime));
+//            }
 
 
             fsStoreOrderMapper.updateFsStoreOrder(order);
@@ -1804,17 +1810,6 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
             erpOrder.setShop_code(erpConfig.getErpJstShopCode());
         }
 
-
-            //查询出这个订单是哪个公司得,并且拿到绑定店铺id
-        Company company =companyMapper.selectCompanyById(order.getCompanyId());
-
-        //判定公司是否绑定店铺,绑定则赋值,不绑定则跳过
-        if (ObjectUtil.isNotEmpty(company)&&ObjectUtil.isNotEmpty(company.getStoreId())){
-            FsStoreScrm fsStoreScrm = fsStoreMapper.selectFsStoreByStoreId(company.getStoreId());
-            if (ObjectUtil.isNotEmpty(fsStoreScrm)){
-                erpOrder.setShopNo(fsStoreScrm.getStoreNo());
-            }
-        }
         log.info("进入到erp传入参数erpOrder={}",erpOrder);
         ErpOrderResponse response = erpOrderService.addOrderScrm(erpOrder);
 //        ErpOrderResponse response= k9OrderService.addOmsOrder(order.getId());
@@ -1841,6 +1836,18 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
         erpOrder.setPlatform_code(order.getOrderCode());
         erpOrder.setWarehouse_code(erpConfig.getErpWarehouseCode());
         erpOrder.setShop_code(erpConfig.getErpShopCode());
+        erpOrder.setShopNo(erpConfig.getErpWdShopCode());
+        //查询出这个订单是哪个公司得,并且拿到绑定店铺id
+        Company company =companyMapper.selectCompanyById(order.getCompanyId());
+
+        //判定公司是否绑定店铺,绑定则赋值,不绑定则跳过
+        if (ObjectUtil.isNotEmpty(company)&&ObjectUtil.isNotEmpty(company.getStoreId())){
+            FsStoreScrm fsStoreScrm = fsStoreMapper.selectFsStoreByStoreId(company.getStoreId());
+            if (ObjectUtil.isNotEmpty(fsStoreScrm)){
+                erpOrder.setShopNo(fsStoreScrm.getStoreNo());
+            }
+        }
+
         erpOrder.setBuyer_account(order.getRealName());
 
 //      erpOrder.setPost_fee(order.getTotalPostage().doubleValue());
@@ -1886,7 +1893,7 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
             CompanyUser companyUser = companyUserService.selectCompanyUserById(order.getCompanyUserId());
             if (companyUser != null) {
                 // 获取公司名称
-                Company company = companyService.selectCompanyById(companyUser.getCompanyId());
+//                Company company = companyService.selectCompanyById(companyUser.getCompanyId());
                 if(company !=null){
                     erpOrder.setSeller_memo(company.getCompanyName());
                 }
@@ -3081,7 +3088,7 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
                 //管易
                 erpOrderService = gyOrderService;
             } else if (erpType == 2) {
-                //旺店通
+                //旺店通 企业版
                 erpOrderService = wdtOrderService;
             } else if (erpType == 3) {
                 //瀚智OMS
@@ -3095,6 +3102,8 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
             } else if (erpType == 6) {
                 //金博
                 erpOrderService = k9OrderService;
+            }else if(erpType == 7){ // 旺店通旗舰版
+                erpOrderService = wdtTwoOrderService;
             }
         }
         return erpOrderService;

+ 0 - 2
fs-store/src/main/java/com/fs/hisStore/controller/store/FsStoreOrderScrmController.java

@@ -57,8 +57,6 @@ public class FsStoreOrderScrmController extends BaseController
     @Autowired
     private IFsExpressService expressService;
 
-    @Autowired
-    IErpOrderService erpOrderService;
     @Autowired
     FsStoreOrderItemScrmMapper fsStoreOrderItemMapper;
     @Autowired

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

@@ -55,8 +55,6 @@ public class FsStoreOrderController extends BaseController
     @Autowired
     private IFsExpressService expressService;
 
-    @Autowired
-    IErpOrderService erpOrderService;
     @Autowired
     FsStoreOrderItemMapper fsStoreOrderItemMapper;
     @Autowired

+ 0 - 2
fs-user-app/src/main/java/com/fs/app/controller/store/PayScrmController.java

@@ -48,8 +48,6 @@ public class PayScrmController {
 
     @Autowired
     private FSSysConfig sysConfig;
-    @Autowired
-    IErpOrderService erpOrderService;
 
     @Autowired
     private IFsStoreOrderItemScrmService storeOrderItemService;

+ 0 - 2
fs-user-app/src/main/java/com/fs/app/controller/store/ProductScrmController.java

@@ -49,8 +49,6 @@ public class ProductScrmController extends AppBaseController {
     private IFsStoreOrderScrmService orderService;
     @Autowired
     private IFsStoreProductRelationScrmService productRelationService;
-    @Autowired
-    IErpGoodsService goodsService;
 
     @Autowired
     private IFsStoreScrmService storeScrmService;

+ 0 - 2
fs-user-app/src/main/java/com/fs/app/controller/store/StoreOrderScrmController.java

@@ -99,8 +99,6 @@ public class StoreOrderScrmController extends AppBaseController {
     @Autowired
     private FSSysConfig sysConfig;
     @Autowired
-    private IErpOrderService erpOrderService;
-    @Autowired
     private ISysConfigService configService;
     @Autowired
     private IFsStoreAfterSalesScrmService afterSalesService;