24282 8 tháng trước cách đây
mục cha
commit
d1ee238500
18 tập tin đã thay đổi với 497 bổ sung292 xóa
  1. 1 1
      hx-victoriatourist/pom.xml
  2. 16 2
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/jd/JdRefundController.java
  3. 17 1
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/jd/JdRefundDetailController.java
  4. 22 1
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/dto/JdRefundSelectDto.java
  5. 8 7
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/po/JdRefund.java
  6. 5 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/po/JdRefundDetail.java
  7. 4 4
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/JdApiService.java
  8. 5 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/JdRefundDetailService.java
  9. 4 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/JdRefundService.java
  10. 2 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/constants/RunParamConstant.java
  11. 38 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/entity/RefundDetailRequest.java
  12. 13 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/entity/RefundDetailResponse.java
  13. 15 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/entity/RefundDetailResult.java
  14. 266 258
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdApiServiceImpl.java
  15. 7 1
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdOrderServiceImpl.java
  16. 9 2
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdRefundDetailServiceImpl.java
  17. 26 2
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdRefundServiceImpl.java
  18. 39 13
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/initializers/JdInitializer.java

+ 1 - 1
hx-victoriatourist/pom.xml

@@ -38,7 +38,7 @@
         <dependency>
             <groupId>com.jd.open.api</groupId>
             <artifactId>open-api-sdk</artifactId>
-            <version>3.0</version>
+            <version>2.0</version>
         </dependency>
         <dependency>
             <groupId>org.codehaus.jackson</groupId>

+ 16 - 2
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/jd/JdRefundController.java

@@ -1,6 +1,13 @@
 package com.fjhx.victoriatourist.controller.jd;
 
-import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.victoriatourist.entity.jd.dto.JdRefundSelectDto;
+import com.fjhx.victoriatourist.entity.jd.po.JdRefund;
+import com.fjhx.victoriatourist.service.jd.JdRefundService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 
 /**
@@ -8,12 +15,19 @@ import org.springframework.web.bind.annotation.*;
  * 京东售后退货 前端控制器
  * </p>
  *
- * @author 
+ * @author
  * @since 2024-09-25
  */
 @RestController
 @RequestMapping("/jdRefund")
 public class JdRefundController {
 
+    @Autowired
+    private JdRefundService JdRefundService;
+
+    @GetMapping("/getPage")
+    public Page<JdRefund> getPage(JdRefundSelectDto dto) {
+        return JdRefundService.getPage(dto);
+    }
 
 }

+ 17 - 1
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/jd/JdRefundDetailController.java

@@ -1,6 +1,15 @@
 package com.fjhx.victoriatourist.controller.jd;
 
-import org.springframework.web.bind.annotation.*;
+import com.fjhx.victoriatourist.entity.jd.dto.JdRefundDetailSelectDto;
+import com.fjhx.victoriatourist.entity.jd.po.JdRefundDetail;
+import com.fjhx.victoriatourist.service.jd.JdRefundDetailService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
 
 
 /**
@@ -15,5 +24,12 @@ import org.springframework.web.bind.annotation.*;
 @RequestMapping("/jdRefundDetail")
 public class JdRefundDetailController {
 
+    @Autowired
+    private JdRefundDetailService jdRefundDetailService;
+
+    @GetMapping("/getList")
+    public List<JdRefundDetail> getList(@RequestBody JdRefundDetailSelectDto dto) {
+        return jdRefundDetailService.getList(dto);
+    }
 
 }

+ 22 - 1
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/dto/JdRefundSelectDto.java

@@ -7,11 +7,32 @@ import lombok.Setter;
 /**
  * 京东售后退货列表查询入参实体
  *
- * @author 
+ * @author
  * @since 2024-09-25
  */
 @Getter
 @Setter
 public class JdRefundSelectDto extends BaseSelectDto {
 
+    /**
+     * 采销员
+     */
+    private String salesPin;
+
+    /**
+     * 出库单号
+     */
+    private Integer outNo;
+
+    /**
+     * 退货单号
+     */
+    private Long refundId;
+
+    /**
+     * 供应商名称
+     */
+    private String providerName;
+
+
 }

+ 8 - 7
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/po/JdRefund.java

@@ -1,18 +1,19 @@
 package com.fjhx.victoriatourist.entity.jd.po;
 
-import com.ruoyi.common.core.domain.BasePo;
 import com.baomidou.mybatisplus.annotation.TableName;
-import java.math.BigDecimal;
-import java.util.Date;
+import com.ruoyi.common.core.domain.BasePo;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.math.BigDecimal;
+import java.util.Date;
+
 /**
  * <p>
  * 京东售后退货
  * </p>
  *
- * @author 
+ * @author
  * @since 2024-09-25
  */
 @Getter
@@ -51,7 +52,7 @@ public class JdRefund extends BasePo {
     private Integer orgId;
 
     /**
-     * 		支付方式(100 抵退款 200 银行转账 300 现金 400 现金转账)
+     * 支付方式(100 抵退款 200 银行转账 300 现金 400 现金转账)
      */
     private Integer payType;
 
@@ -63,7 +64,7 @@ public class JdRefund extends BasePo {
     /**
      * 审核状态(100 审核通过 200 待采销审核 300 待质控审核 -100 驳回 0 待审核 1 已审核 2 待采销审核(老备件库) 3 待质控审核(老备件库) -1 驳回(老备件库) -2 撤销)
      */
-    private Integer statusName;
+    private String statusName;
 
     /**
      * 采销员
@@ -88,7 +89,7 @@ public class JdRefund extends BasePo {
     /**
      * 退货单号
      */
-    private Integer refundId;
+    private Long refundId;
 
     /**
      * 供应商名称

+ 5 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/po/JdRefundDetail.java

@@ -21,6 +21,11 @@ import lombok.Setter;
 public class JdRefundDetail extends BasePo {
 
     /**
+     * 京东售后退货id
+     */
+    private Long jdRefundId;
+
+    /**
      * 商品编号
      */
     private String wareId;

+ 4 - 4
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/JdApiService.java

@@ -25,17 +25,17 @@ public interface JdApiService {
     /**
      * 开始京东订单采集
      */
-    void startJdOrder(JdInfoVo jdInfoVo);
+    void startJdOrder(JdInfoVo jdInfoVo) throws Exception;
 
     /**
      * 开始京东退货单采集
      */
-    void startJdBackOrder(JdInfoVo jdInfoVo);
+    void startJdBackOrder(JdInfoVo jdInfoVo) throws Exception;
 
     /**
      * 刷新京东状态
      */
-    void refreshJdState(JdInfoVo jdInfoVo);
+    void refreshJdState(JdInfoVo jdInfoVo) throws Exception;
 
     /**
      * 初始化租户字典表
@@ -50,6 +50,6 @@ public interface JdApiService {
     /**
      * 查询售后退货列表
      */
-    void refundInfo(JdInfoVo jdInfoVo);
+    void refundInfo(JdInfoVo jdInfoVo) throws Exception;
 
 }

+ 5 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/JdRefundDetailService.java

@@ -1,8 +1,11 @@
 package com.fjhx.victoriatourist.service.jd;
 
+import com.fjhx.victoriatourist.entity.jd.dto.JdRefundDetailSelectDto;
 import com.fjhx.victoriatourist.entity.jd.po.JdRefundDetail;
 import com.ruoyi.common.core.service.BaseService;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -14,4 +17,6 @@ import com.ruoyi.common.core.service.BaseService;
  */
 public interface JdRefundDetailService extends BaseService<JdRefundDetail> {
 
+    List<JdRefundDetail> getList(JdRefundDetailSelectDto dto);
+
 }

+ 4 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/JdRefundService.java

@@ -1,5 +1,7 @@
 package com.fjhx.victoriatourist.service.jd;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.victoriatourist.entity.jd.dto.JdRefundSelectDto;
 import com.fjhx.victoriatourist.entity.jd.po.JdRefund;
 import com.ruoyi.common.core.service.BaseService;
 
@@ -14,4 +16,6 @@ import com.ruoyi.common.core.service.BaseService;
  */
 public interface JdRefundService extends BaseService<JdRefund> {
 
+    Page<JdRefund> getPage(JdRefundSelectDto dto);
+
 }

+ 2 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/constants/RunParamConstant.java

@@ -13,6 +13,8 @@ public class RunParamConstant {
     public static final String ACCESS_TOKEN = "access_token";
     public static final String REFRESH_TOKEN = "refresh_token";
 
+    public static final String VENDOR_CODE = "ves0003220";
+
     public static final int SLEEP_ONE_MINUTE = 1000 * 60 * 5;
 
     /**

+ 38 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/entity/RefundDetailRequest.java

@@ -0,0 +1,38 @@
+package com.fjhx.victoriatourist.service.jd.entity;
+
+import com.jd.open.api.sdk.internal.util.JsonUtil;
+import com.jd.open.api.sdk.request.AbstractRequest;
+import com.jd.open.api.sdk.request.JdRequest;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.IOException;
+import java.util.Map;
+import java.util.TreeMap;
+
+@Setter
+@Getter
+public class RefundDetailRequest extends AbstractRequest implements JdRequest<RefundDetailResponse> {
+    private String loginName;
+    private Long refundId;
+    private String vendorCode;
+
+    public RefundDetailRequest() {
+    }
+
+    public String getApiMethod() {
+        return "jingdong.ediws.ro.refundInfoDetail.get";
+    }
+
+    public String getAppJsonParams() throws IOException {
+        Map<String, Object> pmap = new TreeMap();
+        pmap.put("loginName", this.loginName);
+        pmap.put("refundId", this.refundId);
+        pmap.put("vendorCode", this.vendorCode);
+        return JsonUtil.toJson(pmap);
+    }
+
+    public Class<RefundDetailResponse> getResponseClass() {
+        return RefundDetailResponse.class;
+    }
+}

+ 13 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/entity/RefundDetailResponse.java

@@ -0,0 +1,13 @@
+package com.fjhx.victoriatourist.service.jd.entity;
+
+import com.jd.open.api.sdk.response.AbstractResponse;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class RefundDetailResponse extends AbstractResponse {
+
+    private RefundDetailResult result;
+
+}

+ 15 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/entity/RefundDetailResult.java

@@ -0,0 +1,15 @@
+package com.fjhx.victoriatourist.service.jd.entity;
+
+import com.fjhx.victoriatourist.entity.jd.po.JdRefundDetail;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+@Getter
+@Setter
+public class RefundDetailResult {
+    private Boolean success;
+    private String message;
+    private List<JdRefundDetail> data;
+}

+ 266 - 258
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdApiServiceImpl.java

@@ -25,6 +25,8 @@ import com.fjhx.victoriatourist.entity.jd.po.JdBack;
 import com.fjhx.victoriatourist.entity.jd.po.JdBackDetails;
 import com.fjhx.victoriatourist.entity.jd.po.JdOrder;
 import com.fjhx.victoriatourist.entity.jd.po.JdOrderDetails;
+import com.fjhx.victoriatourist.entity.jd.po.JdRefund;
+import com.fjhx.victoriatourist.entity.jd.po.JdRefundDetail;
 import com.fjhx.victoriatourist.entity.jd.vo.CommonDictData;
 import com.fjhx.victoriatourist.entity.jd.vo.JdInfoVo;
 import com.fjhx.victoriatourist.entity.jd.vo.TellBackOrderVO;
@@ -34,9 +36,14 @@ import com.fjhx.victoriatourist.service.jd.JdBackService;
 import com.fjhx.victoriatourist.service.jd.JdInfoService;
 import com.fjhx.victoriatourist.service.jd.JdOrderDetailsService;
 import com.fjhx.victoriatourist.service.jd.JdOrderService;
+import com.fjhx.victoriatourist.service.jd.JdRefundDetailService;
+import com.fjhx.victoriatourist.service.jd.JdRefundService;
 import com.fjhx.victoriatourist.service.jd.constants.InitDictConstant;
 import com.fjhx.victoriatourist.service.jd.constants.JdParamConstant;
 import com.fjhx.victoriatourist.service.jd.constants.RunParamConstant;
+import com.fjhx.victoriatourist.service.jd.entity.RefundDetailRequest;
+import com.fjhx.victoriatourist.service.jd.entity.RefundDetailResponse;
+import com.fjhx.victoriatourist.service.jd.entity.RefundDetailResult;
 import com.google.common.collect.HashBasedTable;
 import com.google.common.collect.Table;
 import com.jd.open.api.sdk.JdClient;
@@ -49,6 +56,8 @@ import com.jd.open.api.sdk.domain.supplier.PoQueryForJosWebService.response.getp
 import com.jd.open.api.sdk.domain.supplier.ReturnOrderForJosWebService.response.detail.DetailResultDto;
 import com.jd.open.api.sdk.domain.supplier.ReturnOrderForJosWebService.response.get.RoDto;
 import com.jd.open.api.sdk.domain.supplier.ReturnOrderForJosWebService.response.get.RoResultDto;
+import com.jd.open.api.sdk.domain.supplier.SparePartInventoryJosService.response.list.JosResult;
+import com.jd.open.api.sdk.request.supplier.EdiwsRoRefundInfoListRequest;
 import com.jd.open.api.sdk.request.supplier.VcConfirmpurchaseorderRequest;
 import com.jd.open.api.sdk.request.supplier.VcGetReturnOrderDetailRequest;
 import com.jd.open.api.sdk.request.supplier.VcGetcomponentlistRequest;
@@ -57,6 +66,7 @@ import com.jd.open.api.sdk.request.supplier.VcGetpurchaseorderlistRequest;
 import com.jd.open.api.sdk.request.supplier.VcGetwaredeliverdistinctlistRequest;
 import com.jd.open.api.sdk.request.supplier.VcReturnOrderListPageGetRequest;
 import com.jd.open.api.sdk.response.AbstractResponse;
+import com.jd.open.api.sdk.response.supplier.EdiwsRoRefundInfoListResponse;
 import com.jd.open.api.sdk.response.supplier.VcConfirmpurchaseorderResponse;
 import com.jd.open.api.sdk.response.supplier.VcGetReturnOrderDetailResponse;
 import com.jd.open.api.sdk.response.supplier.VcGetcomponentlistResponse;
@@ -146,6 +156,10 @@ public class JdApiServiceImpl implements JdApiService {
     @Resource
     private DictTenantDataService dictTenantDataService;
     @Resource
+    private JdRefundService jdRefundService;
+    @Resource
+    private JdRefundDetailService jdRefundDetailService;
+    @Resource
     private JdClient jdClient;
 
     //每小时执行一次
@@ -280,16 +294,57 @@ public class JdApiServiceImpl implements JdApiService {
      */
     @DSTransactional
     @Override
-    public void startJdOrder(JdInfoVo jdInfoVo) {
+    public void startJdOrder(JdInfoVo jdInfoVo) throws Exception {
         if (ObjectUtil.isNull(jdInfoVo)) {
             return;
         }
-        try {
-            saveJdOrder(jdInfoVo);
-            log.info("京东订单采集完成");
-        } catch (Exception e) {
-            log.error("京东订单采集出错:{}", e.getMessage(), e);
+        //获取开始同步的时间
+        Date startTime = jdInfoVo.getInitQueryDate();
+        Date endTime = new Date();
+
+        //根据下单时间获取数据库里最后一个订单
+        JdOrder lastJdOrder = jdOrderService.getOne(q -> q.orderByDesc(JdOrder::getCreatedDate));
+        if (ObjectUtil.isNotNull(lastJdOrder)) {
+            startTime = lastJdOrder.getCreatedDate();
+        }
+
+        List<PurchaseOrderDto> purchaseOrderDtoList = getJdOrderInfo(startTime, endTime, null);
+
+        if (CollectionUtil.isEmpty(purchaseOrderDtoList)) {
+            return;
+        }
+
+        // 订单id集合
+        Set<Long> orderIdSet = purchaseOrderDtoList.stream().map(PurchaseOrderDto::getOrderId).collect(Collectors.toSet());
+
+        // 获取已同步的京东订单id
+        Set<Long> existOrderIdSet = jdOrderService.list(q -> q.select(JdOrder::getOrderId).in(JdOrder::getOrderId, orderIdSet))
+                .stream().map(JdOrder::getOrderId).collect(Collectors.toSet());
+
+        // 过滤已同步的订单
+        purchaseOrderDtoList = purchaseOrderDtoList.stream()
+                .filter(item -> !existOrderIdSet.contains(item.getOrderId()))
+                .collect(Collectors.toList());
+
+        // 转为系统自己的实体类
+        List<JdOrder> jdOrderList = BeanUtil.copyToList(purchaseOrderDtoList, JdOrder.class);
+
+        // 获取明细
+        List<JdOrderDetails> jdOrderDetailsList = new ArrayList<>();
+
+        for (JdOrder jdOrder : jdOrderList) {
+            jdOrder.setId(IdWorker.getId());
+            jdOrder.setTenantId(RunParamConstant.tenantId);
+            boolean hasExFlag = dealOrderDetail(jdOrder, jdOrderDetailsList);
+            if (hasExFlag) {
+                jdOrder.setHasEx(RunParamConstant.EXCEPTION);
+                jdOrder.setHandleStatus(RunParamConstant.EXCEPTION_STATE_UNTREATED);
+            }
         }
+
+        // 将数据存储到库
+        jdOrderService.saveBatch(jdOrderList);
+        jdOrderDetailsService.saveOrUpdateBatch(jdOrderDetailsList);
     }
 
     /**
@@ -297,16 +352,66 @@ public class JdApiServiceImpl implements JdApiService {
      */
     @DSTransactional
     @Override
-    public void startJdBackOrder(JdInfoVo jdInfoVo) {
+    public void startJdBackOrder(JdInfoVo jdInfoVo) throws Exception {
         if (ObjectUtil.isNull(jdInfoVo)) {
             return;
         }
+        Date startTime = jdInfoVo.getInitQueryDate();
+        Date endTime = new Date();
+        //根据下单时间获取数据库里最后一个订单
+        JdBack lastJdBack = jdBackService.getOne(q -> q.orderByDesc(JdBack::getCreateDate));
+        if (ObjectUtil.isNotNull(lastJdBack)) {
+            //将最后一个下单时间设置为开始时间
+            startTime = lastJdBack.getCreateDate();
+        }
+
+        List<RoDto> roDtoList = getJdBackInfo(startTime, endTime);
+        if (CollectionUtil.isEmpty(roDtoList)) {
+            return;
+        }
+
+        //过滤出不在数据库里的新数据
+        List<Long> returnIds = roDtoList.stream().map(RoDto::getReturnId).collect(Collectors.toList());
+        List<Long> existReturnIds = jdBackService.list(q -> q.select(JdBack::getReturnId).in(JdBack::getReturnId, returnIds))
+                .stream().map(JdBack::getReturnId).collect(Collectors.toList());
+        roDtoList = roDtoList.stream().filter(item -> !existReturnIds.contains(item.getReturnId())).collect(Collectors.toList());
+
+        //转成我们自己的实体类
+        List<JdBack> jdBackList = BeanUtil.copyToList(roDtoList, JdBack.class);
+
+        //获取明细
+        List<JdBackDetails> JdBackDetailsList = new ArrayList<>();
+
+        Set<Long> wareIdSet = new HashSet<>();
+
+        for (JdBack jdBack : jdBackList) {
+            jdBack.setId(IdWorker.getId());
+
+            VcGetReturnOrderDetailRequest request = new VcGetReturnOrderDetailRequest();
+            request.setReturnId(jdBack.getReturnId());
+            VcGetReturnOrderDetailResponse response = jdClient.execute(request);
+            DetailResultDto detailResultDto = response.getDetailResultDto();
+            List<JdBackDetails> jdBackDetails = BeanUtil.copyToList(detailResultDto.getDetailDtoList(), JdBackDetails.class);
+
+            jdBackDetails.forEach(item -> {
+                item.setJdBackId(jdBack.getId());
+                wareIdSet.add(item.getWareId());
+            });
+            JdBackDetailsList.addAll(jdBackDetails);
+        }
+
+        // 赋值产品编码
         try {
-            getJdBackOrder(jdInfoVo);
-            log.info("京东退货单采集完成");
-        } catch (Exception e) {
-            log.error("京东退货单采集出错:{}", e.getMessage(), e);
+            DynamicDataSourceContextHolder.push(SourceConstant.ITEM);
+            Map<String, Long> map = productInfoService.mapKV(ProductInfo::getCustomCode, BaseIdPo::getId,
+                    q -> q.in(ProductInfo::getCustomCode, wareIdSet));
+            JdBackDetailsList.forEach(item -> item.setProductId(map.get(item.getWareId().toString())));
+        } finally {
+            DynamicDataSourceContextHolder.poll();
         }
+
+        jdBackService.saveBatch(jdBackList);
+        jdBackDetailsService.saveBatch(JdBackDetailsList);
     }
 
     /**
@@ -314,15 +419,79 @@ public class JdApiServiceImpl implements JdApiService {
      */
     @DSTransactional
     @Override
-    public void refreshJdState(JdInfoVo jdInfoVo) {
+    public void refreshJdState(JdInfoVo jdInfoVo) throws Exception {
         if (ObjectUtil.isNull(jdInfoVo)) {
             return;
         }
-        try {
-            handleRefreshDate();
-            log.info("刷新京东状态完成");
-        } catch (Exception e) {
-            log.error("刷新京东状态失败", e);
+        Date endDate = new Date();
+        Date startDate = DateUtil.offsetMonth(endDate, -3);
+
+        //1.查询列表订单状态不为审核不通过/供应商驳回/已完成
+        List<JdOrder> jdOrders = jdOrderService.list(q -> q
+                .notIn(JdOrder::getState, notIn)
+                .between(JdOrder::getCreatedDate, startDate, endDate)
+                .orderByDesc(JdOrder::getCreatedDate)
+        );
+
+        if (CollectionUtil.isEmpty(jdOrders)) {
+            return;
+        }
+
+        Map<Long, JdOrder> jdOrderMap = jdOrders.stream().collect(Collectors.toMap(JdOrder::getOrderId, Function.identity()));
+
+        // 2.按50个订单查询京东订单状态
+        List<List<JdOrder>> splitJdOrder = ListUtil.split(jdOrders, 50);
+
+        for (List<JdOrder> orders : splitJdOrder) {
+            List<Long> orderIdList = orders.stream().map(JdOrder::getOrderId).collect(Collectors.toList());
+            List<PurchaseOrderDto> jdOrderInfo = getJdOrderInfo(null, null, orderIdList);
+            List<JdOrder> jdOrderList = BeanUtil.copyToList(jdOrderInfo, JdOrder.class);
+
+            //3.更新订单信息
+            for (JdOrder jdOrder : jdOrderList) {
+                Long id = jdOrderMap.get(jdOrder.getOrderId()).getId();
+                jdOrder.setId(id);
+                if (JdParamConstant.JD_ORDER_STATE_FINISH.equals(jdOrder.getState())) {
+                    List<JdOrderDetails> jdOrderDetailsList = new ArrayList<>();
+
+                    //重新插入明细
+                    boolean hasExFlag = dealOrderDetail(jdOrder, jdOrderDetailsList);
+
+                    //获取当前明细记录
+                    List<JdOrderDetails> dbJdOrderDetails = jdOrderDetailsService.list(q -> q.eq(JdOrderDetails::getJdOrderId, id));
+                    Table<Long, Long, JdOrderDetails> jdOrderDetailsTable = HashBasedTable.create();
+                    jdOrderDetailsList.forEach(item -> jdOrderDetailsTable.put(item.getOrderId(), item.getWareId(), item));
+
+                    for (JdOrderDetails dbJdOrderDetail : dbJdOrderDetails) {
+                        JdOrderDetails onlineJdOrderDetails = jdOrderDetailsTable.get(dbJdOrderDetail.getOrderId(), dbJdOrderDetail.getWareId());
+                        dbJdOrderDetail.setDeliverCenterId(onlineJdOrderDetails.getDeliverCenterId());
+                        dbJdOrderDetail.setDeliverCenterName(onlineJdOrderDetails.getDeliverCenterName());
+                        dbJdOrderDetail.setWareName(onlineJdOrderDetails.getWareName());
+                        dbJdOrderDetail.setPurchasePrice(onlineJdOrderDetails.getPurchasePrice());
+                        dbJdOrderDetail.setOriginalNum(onlineJdOrderDetails.getOriginalNum());
+                        dbJdOrderDetail.setConfirmNum(onlineJdOrderDetails.getConfirmNum());
+                        dbJdOrderDetail.setActualNum(onlineJdOrderDetails.getActualNum());
+                        dbJdOrderDetail.setNonDeliveryReason(onlineJdOrderDetails.getNonDeliveryReason());
+                        dbJdOrderDetail.setTotoalPrice(onlineJdOrderDetails.getTotoalPrice());
+                        dbJdOrderDetail.setStoreId(onlineJdOrderDetails.getStoreId());
+                        dbJdOrderDetail.setStoreName(onlineJdOrderDetails.getStoreName());
+                        dbJdOrderDetail.setHasEx(onlineJdOrderDetails.getHasEx());
+                        dbJdOrderDetail.setExDesc(onlineJdOrderDetails.getExDesc());
+                        dbJdOrderDetail.setHandleStatus(onlineJdOrderDetails.getHandleStatus());
+                    }
+
+                    if (hasExFlag) {
+                        jdOrder.setHasEx(RunParamConstant.EXCEPTION);
+                        jdOrder.setHandleStatus(RunParamConstant.EXCEPTION_STATE_UNTREATED);
+                    } else {
+                        jdOrder.setHasEx(RunParamConstant.NO_EXCEPTION);
+                        jdOrder.setHandleStatus(null);
+                    }
+
+                    jdOrderDetailsService.updateBatchById(dbJdOrderDetails);
+                }
+                jdOrderService.updateById(jdOrder);
+            }
         }
     }
 
@@ -340,7 +509,6 @@ public class JdApiServiceImpl implements JdApiService {
         } finally {
             DynamicDataSourceContextHolder.poll();
         }
-        log.info("字典初始化完成");
     }
 
     /**
@@ -385,67 +553,98 @@ public class JdApiServiceImpl implements JdApiService {
         }
 
         jdOrderDetailsService.updateBatchById(updateList);
-
-        log.info("补偿商品id完成");
     }
 
+    @DSTransactional
     @Override
-    public void refundInfo(JdInfoVo jdInfoVo) {
+    public void refundInfo(JdInfoVo jdInfoVo) throws Exception {
         if (ObjectUtil.isNull(jdInfoVo)) {
             return;
         }
-        try {
-            saveRefundInfo(jdInfoVo);
-            log.info("京东收集售后退货列表完成");
-        } catch (Exception e) {
-            log.error("京东收集售后退货列表出错:{}", e.getMessage(), e);
+
+        //获取开始同步的时间
+        Date startTime = DateUtil.parseDateTime("2024-09-20 00:00:00");
+        Date endTime = new Date();
+
+        //根据下单时间获取数据库里最后一个订单
+        JdRefund lastJdRefund = jdRefundService.getOne(q -> q.orderByDesc(JdRefund::getApplyDateTime));
+        if (ObjectUtil.isNotNull(lastJdRefund)) {
+            startTime = DateUtil.offsetSecond(lastJdRefund.getApplyDateTime(), 1);
+        }
+
+        List<JdRefund> jdRefunds = getRefundInfoList(startTime, endTime);
+        jdRefundService.saveBatch(jdRefunds);
+
+        List<JdRefundDetail> jdRefundDetails = getJdRefundDetails(jdRefunds);
+        jdRefundDetailService.saveBatch(jdRefundDetails);
+
+    }
+
+    private List<JdRefundDetail> getJdRefundDetails(List<JdRefund> jdRefunds) throws Exception {
+
+        List<JdRefundDetail> jdRefundDetails = new ArrayList<>();
+        for (JdRefund jdRefund : jdRefunds) {
+            RefundDetailRequest request = new RefundDetailRequest();
+            request.setRefundId(jdRefund.getRefundId());
+            request.setVendorCode(RunParamConstant.VENDOR_CODE);
+
+            RefundDetailResponse response = jdClient.execute(request);
+            validSuccess(response, "获取京东售后退货详情");
+
+            RefundDetailResult result = response.getResult();
+
+            if (!result.getSuccess()) {
+                throw new RuntimeException("获取京东售后退货详情失败:" + result.getMessage());
+            }
+
+            List<JdRefundDetail> data = result.getData();
+            data.forEach(item -> item.setJdRefundId(jdRefund.getId()));
+            jdRefundDetails.addAll(data);
         }
+
+        return jdRefundDetails;
     }
 
-    private void saveRefundInfo(JdInfoVo jdInfoVo) {
+    /**
+     * 获取京东订单信息分页
+     */
+    private JSONObject getRefundInfoList(Integer pageIndex, Integer pageSize, Date startTime, Date endTime) throws Exception {
+        EdiwsRoRefundInfoListRequest request = new EdiwsRoRefundInfoListRequest();
+        request.setApplyBeginTime(startTime);
+        request.setApplyEndTime(endTime);
+        request.setPageIndex(pageIndex);
+        request.setPageSize(pageSize);
+        request.setVendorCode(RunParamConstant.VENDOR_CODE);
+        EdiwsRoRefundInfoListResponse response = jdClient.execute(request);
+        validSuccess(response, "获取京东售后退货列表");
+        JosResult result = response.getResult();
+        boolean success = result.getSuccess();
+        if (!success) {
+            throw new RuntimeException("获取京东售后退货列表失败:" + result.getMessage());
+        }
 
+        return JSONObject.parseObject(response.getMsg())
+                .getJSONObject("jingdong_ediws_ro_refundInfo_list_responce")
+                .getJSONObject("result");
     }
 
-    ///**
-    // * 获取京东订单信息分页
-    // */
-    //private JOSOrderResultDto getRefundInfoList(Integer pageIndex, Integer pageSize, Date startTime, Date endTime) throws Exception {
-    //    EdiwsRoRefundInfoListRequest request = new EdiwsRoRefundInfoListRequest();
-    //    request.setApplyBeginTime(startTime);
-    //    request.setApplyEndTime(endTime);
-    //    request.setPageIndex(pageIndex);
-    //    request.setPageSize(pageSize);
-    //    EdiwsRoRefundInfoListResponse response = jdClient.execute(request);
-    //
-    //    validSuccess(response, "获取京东售后退货列表");
-    //    JOSOrderResultDto josOrderResultDto = response.getJosOrderResultDto();
-    //
-    //    boolean success = josOrderResultDto.getSuccess();
-    //    if (!success) {
-    //        log.error("获取京东售后退货列表失败:{}", josOrderResultDto.getResultMessage());
-    //        throw new RuntimeException("获取京东售后退货列表失败:" + josOrderResultDto.getResultMessage());
-    //    }
-    //
-    //    return josOrderResultDto;
-    //}
-    //
-    //
-    //private void getRefundInfoList(Date startTime, Date endTime) {
-    //    int pageIndex = 1;
-    //    int pageSize = 50;
-    //    int recordCount;
-    //
-    //    List<PurchaseOrderDto> purchaseOrderDtoList = new ArrayList<>();
-    //    do {
-    //        JOSOrderResultDto jdOrderInfo = getJdOrderInfo(pageIndex, pageSize, startTime, endTime, orderIds);
-    //        pageIndex++;
-    //        purchaseOrderDtoList.addAll(jdOrderInfo.getPurchaseOrderList());
-    //        recordCount = jdOrderInfo.getRecordCount();
-    //    } while (recordCount > (pageIndex - 1) * pageSize);
-    //    Collections.reverse(purchaseOrderDtoList);
-    //
-    //    return purchaseOrderDtoList;
-    //}
+
+    private List<JdRefund> getRefundInfoList(Date startTime, Date endTime) throws Exception {
+        int pageIndex = 1;
+        int pageSize = 50;
+        long recordCount;
+
+        List<JdRefund> list = new ArrayList<>();
+        do {
+            JSONObject result = getRefundInfoList(pageIndex, pageSize, startTime, endTime);
+            pageIndex++;
+            list.addAll(result.getJSONArray("data").toList(JdRefund.class));
+            recordCount = result.getIntValue("recordCount");
+        } while (recordCount > (long) (pageIndex - 1) * pageSize);
+        Collections.reverse(list);
+
+        return list;
+    }
 
     /**
      * 请求API工具方法
@@ -463,82 +662,6 @@ public class JdApiServiceImpl implements JdApiService {
         return JSONObject.parseObject(responseStr);
     }
 
-    /**
-     * 处理刷新token数据
-     */
-    private void handleRefreshDate() throws Exception {
-        Date endDate = new Date();
-        Date startDate = DateUtil.offsetMonth(endDate, -3);
-
-        //1.查询列表订单状态不为审核不通过/供应商驳回/已完成
-        List<JdOrder> jdOrders = jdOrderService.list(q -> q
-                .notIn(JdOrder::getState, notIn)
-                .between(JdOrder::getCreatedDate, startDate, endDate)
-                .orderByDesc(JdOrder::getCreatedDate)
-        );
-
-        if (CollectionUtil.isEmpty(jdOrders)) {
-            return;
-        }
-
-        Map<Long, JdOrder> jdOrderMap = jdOrders.stream().collect(Collectors.toMap(JdOrder::getOrderId, Function.identity()));
-
-        // 2.按50个订单查询京东订单状态
-        List<List<JdOrder>> splitJdOrder = ListUtil.split(jdOrders, 50);
-
-        for (List<JdOrder> orders : splitJdOrder) {
-            List<Long> orderIdList = orders.stream().map(JdOrder::getOrderId).collect(Collectors.toList());
-            List<PurchaseOrderDto> jdOrderInfo = getJdOrderInfo(null, null, orderIdList);
-            List<JdOrder> jdOrderList = BeanUtil.copyToList(jdOrderInfo, JdOrder.class);
-
-            //3.更新订单信息
-            for (JdOrder jdOrder : jdOrderList) {
-                Long id = jdOrderMap.get(jdOrder.getOrderId()).getId();
-                jdOrder.setId(id);
-                if (JdParamConstant.JD_ORDER_STATE_FINISH.equals(jdOrder.getState())) {
-                    List<JdOrderDetails> jdOrderDetailsList = new ArrayList<>();
-
-                    //重新插入明细
-                    boolean hasExFlag = dealOrderDetail(jdOrder, jdOrderDetailsList);
-
-                    //获取当前明细记录
-                    List<JdOrderDetails> dbJdOrderDetails = jdOrderDetailsService.list(q -> q.eq(JdOrderDetails::getJdOrderId, id));
-                    Table<Long, Long, JdOrderDetails> jdOrderDetailsTable = HashBasedTable.create();
-                    jdOrderDetailsList.forEach(item -> jdOrderDetailsTable.put(item.getOrderId(), item.getWareId(), item));
-
-                    for (JdOrderDetails dbJdOrderDetail : dbJdOrderDetails) {
-                        JdOrderDetails onlineJdOrderDetails = jdOrderDetailsTable.get(dbJdOrderDetail.getOrderId(), dbJdOrderDetail.getWareId());
-                        dbJdOrderDetail.setDeliverCenterId(onlineJdOrderDetails.getDeliverCenterId());
-                        dbJdOrderDetail.setDeliverCenterName(onlineJdOrderDetails.getDeliverCenterName());
-                        dbJdOrderDetail.setWareName(onlineJdOrderDetails.getWareName());
-                        dbJdOrderDetail.setPurchasePrice(onlineJdOrderDetails.getPurchasePrice());
-                        dbJdOrderDetail.setOriginalNum(onlineJdOrderDetails.getOriginalNum());
-                        dbJdOrderDetail.setConfirmNum(onlineJdOrderDetails.getConfirmNum());
-                        dbJdOrderDetail.setActualNum(onlineJdOrderDetails.getActualNum());
-                        dbJdOrderDetail.setNonDeliveryReason(onlineJdOrderDetails.getNonDeliveryReason());
-                        dbJdOrderDetail.setTotoalPrice(onlineJdOrderDetails.getTotoalPrice());
-                        dbJdOrderDetail.setStoreId(onlineJdOrderDetails.getStoreId());
-                        dbJdOrderDetail.setStoreName(onlineJdOrderDetails.getStoreName());
-                        dbJdOrderDetail.setHasEx(onlineJdOrderDetails.getHasEx());
-                        dbJdOrderDetail.setExDesc(onlineJdOrderDetails.getExDesc());
-                        dbJdOrderDetail.setHandleStatus(onlineJdOrderDetails.getHandleStatus());
-                    }
-
-                    if (hasExFlag) {
-                        jdOrder.setHasEx(RunParamConstant.EXCEPTION);
-                        jdOrder.setHandleStatus(RunParamConstant.EXCEPTION_STATE_UNTREATED);
-                    } else {
-                        jdOrder.setHasEx(RunParamConstant.NO_EXCEPTION);
-                        jdOrder.setHandleStatus(null);
-                    }
-
-                    jdOrderDetailsService.updateBatchById(dbJdOrderDetails);
-                }
-                jdOrderService.updateById(jdOrder);
-            }
-        }
-    }
-
     private boolean dealOrderDetail(JdOrder jdOrder, List<JdOrderDetails> jdOrderDetailsList) throws Exception {
 
         DynamicDataSourceContextHolder.push(SourceConstant.ITEM);
@@ -710,121 +833,6 @@ public class JdApiServiceImpl implements JdApiService {
     }
 
     /**
-     * 获取京东订单
-     */
-    private void saveJdOrder(JdInfoVo jdInfoVo) throws Exception {
-        //获取开始同步的时间
-        Date startTime = jdInfoVo.getInitQueryDate();
-        Date endTime = new Date();
-
-        //根据下单时间获取数据库里最后一个订单
-        JdOrder lastJdOrder = jdOrderService.getOne(q -> q.orderByDesc(JdOrder::getCreatedDate));
-        if (ObjectUtil.isNotNull(lastJdOrder)) {
-            startTime = lastJdOrder.getCreatedDate();
-        }
-
-        List<PurchaseOrderDto> purchaseOrderDtoList = getJdOrderInfo(startTime, endTime, null);
-
-        if (CollectionUtil.isEmpty(purchaseOrderDtoList)) {
-            return;
-        }
-
-        // 订单id集合
-        Set<Long> orderIdSet = purchaseOrderDtoList.stream().map(PurchaseOrderDto::getOrderId).collect(Collectors.toSet());
-
-        // 获取已同步的京东订单id
-        Set<Long> existOrderIdSet = jdOrderService.list(q -> q.select(JdOrder::getOrderId).in(JdOrder::getOrderId, orderIdSet))
-                .stream().map(JdOrder::getOrderId).collect(Collectors.toSet());
-
-        // 过滤已同步的订单
-        purchaseOrderDtoList = purchaseOrderDtoList.stream()
-                .filter(item -> !existOrderIdSet.contains(item.getOrderId()))
-                .collect(Collectors.toList());
-
-        // 转为系统自己的实体类
-        List<JdOrder> jdOrderList = BeanUtil.copyToList(purchaseOrderDtoList, JdOrder.class);
-
-        // 获取明细
-        List<JdOrderDetails> jdOrderDetailsList = new ArrayList<>();
-
-        for (JdOrder jdOrder : jdOrderList) {
-            jdOrder.setId(IdWorker.getId());
-            jdOrder.setTenantId(RunParamConstant.tenantId);
-            boolean hasExFlag = dealOrderDetail(jdOrder, jdOrderDetailsList);
-            if (hasExFlag) {
-                jdOrder.setHasEx(RunParamConstant.EXCEPTION);
-                jdOrder.setHandleStatus(RunParamConstant.EXCEPTION_STATE_UNTREATED);
-            }
-        }
-
-        // 将数据存储到库
-        jdOrderService.saveBatch(jdOrderList);
-        jdOrderDetailsService.saveOrUpdateBatch(jdOrderDetailsList);
-    }
-
-    /**
-     * 获取京东退货订单
-     */
-    private void getJdBackOrder(JdInfoVo jdInfoVo) throws Exception {
-        Date startTime = jdInfoVo.getInitQueryDate();
-        Date endTime = new Date();
-        //根据下单时间获取数据库里最后一个订单
-        JdBack lastJdBack = jdBackService.getOne(q -> q.orderByDesc(JdBack::getCreateDate));
-        if (ObjectUtil.isNotNull(lastJdBack)) {
-            //将最后一个下单时间设置为开始时间
-            startTime = lastJdBack.getCreateDate();
-        }
-
-        List<RoDto> roDtoList = getJdBackInfo(startTime, endTime);
-        if (CollectionUtil.isEmpty(roDtoList)) {
-            return;
-        }
-
-        //过滤出不在数据库里的新数据
-        List<Long> returnIds = roDtoList.stream().map(RoDto::getReturnId).collect(Collectors.toList());
-        List<Long> existReturnIds = jdBackService.list(q -> q.select(JdBack::getReturnId).in(JdBack::getReturnId, returnIds))
-                .stream().map(JdBack::getReturnId).collect(Collectors.toList());
-        roDtoList = roDtoList.stream().filter(item -> !existReturnIds.contains(item.getReturnId())).collect(Collectors.toList());
-
-        //转成我们自己的实体类
-        List<JdBack> jdBackList = BeanUtil.copyToList(roDtoList, JdBack.class);
-
-        //获取明细
-        List<JdBackDetails> JdBackDetailsList = new ArrayList<>();
-
-        Set<Long> wareIdSet = new HashSet<>();
-
-        for (JdBack jdBack : jdBackList) {
-            jdBack.setId(IdWorker.getId());
-
-            VcGetReturnOrderDetailRequest request = new VcGetReturnOrderDetailRequest();
-            request.setReturnId(jdBack.getReturnId());
-            VcGetReturnOrderDetailResponse response = jdClient.execute(request);
-            DetailResultDto detailResultDto = response.getDetailResultDto();
-            List<JdBackDetails> jdBackDetails = BeanUtil.copyToList(detailResultDto.getDetailDtoList(), JdBackDetails.class);
-
-            jdBackDetails.forEach(item -> {
-                item.setJdBackId(jdBack.getId());
-                wareIdSet.add(item.getWareId());
-            });
-            JdBackDetailsList.addAll(jdBackDetails);
-        }
-
-        // 赋值产品编码
-        try {
-            DynamicDataSourceContextHolder.push(SourceConstant.ITEM);
-            Map<String, Long> map = productInfoService.mapKV(ProductInfo::getCustomCode, BaseIdPo::getId,
-                    q -> q.in(ProductInfo::getCustomCode, wareIdSet));
-            JdBackDetailsList.forEach(item -> item.setProductId(map.get(item.getWareId().toString())));
-        } finally {
-            DynamicDataSourceContextHolder.poll();
-        }
-
-        jdBackService.saveBatch(jdBackList);
-        jdBackDetailsService.saveBatch(JdBackDetailsList);
-    }
-
-    /**
      * 将jd返回的json对象转换成jdInfoVo
      */
     private void convertJdInfoVO(JSONObject responseJson, JdInfoVo jdInfoVo) {

+ 7 - 1
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdOrderServiceImpl.java

@@ -951,13 +951,19 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
 
         ArrayList<StockWaitDetailsDto> outStockWaitDetailsList = new ArrayList<>();
         for (JdBatchOutStockBo teaBo : outList) {
+
+            BigDecimal quantity = teaBo.getQuantity();
+            if (ObjectUtil.isEmpty(quantity) || quantity.compareTo(BigDecimal.ZERO) <= 0) {
+                continue;
+            }
+
             StockWaitDetails dataBaseInfo = list1.stream()
                     .filter(item -> item.getBusinessId().equals(teaBo.getOrderInfoId()) && item.getProductId().equals(teaBo.getProductId()))
                     .findFirst()
                     .orElse(null);
 
             if (dataBaseInfo == null) {
-                continue;
+                throw new ServiceException(String.format("订单号:%s,产品编号:%s 未找到对应待出库信息", teaBo.getOrderId(), teaBo.getProductCode()));
             }
 
             //数量校验

+ 9 - 2
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdRefundDetailServiceImpl.java

@@ -1,21 +1,28 @@
 package com.fjhx.victoriatourist.service.jd.impl;
 
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.victoriatourist.entity.jd.dto.JdRefundDetailSelectDto;
 import com.fjhx.victoriatourist.entity.jd.po.JdRefundDetail;
 import com.fjhx.victoriatourist.mapper.jd.JdRefundDetailMapper;
 import com.fjhx.victoriatourist.service.jd.JdRefundDetailService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 
 /**
  * <p>
  * 京东售后退货明细 服务实现类
  * </p>
  *
- * @author 
+ * @author
  * @since 2024-09-25
  */
 @Service
 public class JdRefundDetailServiceImpl extends ServiceImpl<JdRefundDetailMapper, JdRefundDetail> implements JdRefundDetailService {
 
+    @Override
+    public List<JdRefundDetail> getList(JdRefundDetailSelectDto dto) {
+        return list(q -> q.eq(JdRefundDetail::getJdRefundId, dto.getId()));
+    }
 }

+ 26 - 2
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdRefundServiceImpl.java

@@ -1,21 +1,45 @@
 package com.fjhx.victoriatourist.service.jd.impl;
 
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.victoriatourist.entity.jd.dto.JdRefundSelectDto;
 import com.fjhx.victoriatourist.entity.jd.po.JdRefund;
 import com.fjhx.victoriatourist.mapper.jd.JdRefundMapper;
 import com.fjhx.victoriatourist.service.jd.JdRefundService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
+
 
 /**
  * <p>
  * 京东售后退货 服务实现类
  * </p>
  *
- * @author 
+ * @author
  * @since 2024-09-25
  */
 @Service
 public class JdRefundServiceImpl extends ServiceImpl<JdRefundMapper, JdRefund> implements JdRefundService {
 
+    @Override
+    public Page<JdRefund> getPage(JdRefundSelectDto dto) {
+
+        Date beginTime = dto.getBeginTime();
+        Date endTime = dto.getEndTime();
+        String keyword = dto.getKeyword();
+
+        return page(dto.getPage(), q -> q
+                .between(ObjectUtil.isAllNotEmpty(beginTime, endTime), JdRefund::getApplyDateTime, beginTime, endTime)
+                .and(ObjectUtil.isNotEmpty(keyword),
+                        k -> k.like(JdRefund::getSalesPin, keyword).or()
+                                .like(JdRefund::getOutNo, keyword).or()
+                                .like(JdRefund::getRefundId, keyword).or()
+                                .like(JdRefund::getProviderName, keyword)
+                )
+        );
+
+    }
+
 }

+ 39 - 13
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/initializers/JdInitializer.java

@@ -6,6 +6,7 @@ import com.fjhx.victoriatourist.entity.jd.vo.JdInfoVo;
 import com.fjhx.victoriatourist.service.jd.JdApiService;
 import com.fjhx.victoriatourist.service.jd.constants.RunParamConstant;
 import com.ruoyi.common.utils.SecurityUtils;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.context.annotation.Profile;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.Scheduled;
@@ -19,6 +20,7 @@ import javax.annotation.Resource;
  * @author hj
  * @date 2023/12/21 9:11
  */
+@Slf4j
 @Profile("prod")
 @Component
 @EnableScheduling
@@ -34,24 +36,48 @@ public class JdInitializer {
 
         JdInfoVo jdInfoVo = jdApiService.validJdInfo();
 
-        // 收集京东采购单
-        jdApiService.startJdOrder(jdInfoVo);
+        try {
+            jdApiService.startJdOrder(jdInfoVo);
+            log.info("京东订单采集完成");
+        } catch (Exception e) {
+            log.error("京东订单采集出错:{}", e.getMessage(), e);
+        }
 
-        // 收集京东退货单
-        jdApiService.startJdBackOrder(jdInfoVo);
+        try {
+            jdApiService.startJdBackOrder(jdInfoVo);
+            log.info("京东退货单采集完成");
+        } catch (Exception e) {
+            log.error("京东退货单采集出错:{}", e.getMessage(), e);
+        }
 
-        // 刷新京东订单状态与信息
-        jdApiService.refreshJdState(jdInfoVo);
+        try {
+            jdApiService.refreshJdState(jdInfoVo);
+            log.info("刷新京东状态完成");
+        } catch (Exception e) {
+            log.error("刷新京东状态出错:{}", e.getMessage(), e);
+        }
 
-        // 收集售后退货列表
-        // https://jos.jd.com/apilistnewdetail?apiGroupId=86&apiId=19455&apiName=null
-        jdApiService.refundInfo(jdInfoVo);
+        try {
+            // https://jos.jd.com/apilistnewdetail?apiGroupId=86&apiId=19455&apiName=null
+            jdApiService.refundInfo(jdInfoVo);
+            log.info("京东收集售后退货列表完成");
+        } catch (Exception e) {
+            log.error("京东收集售后退货列表出错:{}", e.getMessage(), e);
+        }
 
-        // 初始化字典
-        jdApiService.initTenantDict();
+        try {
+            jdApiService.initTenantDict();
+            log.info("字典初始化完成");
+        } catch (Exception e) {
+            log.error("字典初始化出错:{}", e.getMessage(), e);
+        }
 
-        // 补偿商品id为空
-        jdApiService.compensatingProductNon();
+        try {
+            jdApiService.compensatingProductNon();
+            log.info("补偿商品id完成");
+        } catch (Exception e) {
+            log.error("补偿商品id出错:{}", e.getMessage(), e);
+        }
 
         SecurityUtils.clearTenantId();
         DynamicDataSourceContextHolder.poll();