Эх сурвалжийг харах

Merge remote-tracking branch 'origin/jd_v2'

yzc 1 жил өмнө
parent
commit
323b792443
16 өөрчлөгдсөн 576 нэмэгдсэн , 63 устгасан
  1. 15 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/jd/JdOrderController.java
  2. 66 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/jd/JdOrderExController.java
  3. 13 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/dto/JdOrderDto.java
  4. 10 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/dto/JdOrderSelectDto.java
  5. 4 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/po/JdOrder.java
  6. 29 1
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/po/JdOrderDetails.java
  7. 5 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/vo/JdOrderDetailsVo.java
  8. 6 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/JdOrderDetailsService.java
  9. 2 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/JdOrderService.java
  10. 3 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/constants/JdParamConstant.java
  11. 51 1
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/constants/RunParamConstant.java
  12. 46 3
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdApiServiceImpl.java
  13. 255 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdOrderDetailsServiceImpl.java
  14. 67 56
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdOrderServiceImpl.java
  15. 1 1
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/initializers/JdInitializer.java
  16. 3 1
      hx-victoriatourist/src/main/resources/mapper/jd/JdOrderMapper.xml

+ 15 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/jd/JdOrderController.java

@@ -8,6 +8,7 @@ import com.fjhx.victoriatourist.entity.jd.dto.JdOrderDto;
 import com.fjhx.victoriatourist.entity.jd.dto.JdOrderSelectDto;
 import com.fjhx.victoriatourist.entity.jd.po.JdOrder;
 import com.fjhx.victoriatourist.entity.jd.po.JdOrderDetails;
+import com.fjhx.victoriatourist.entity.jd.vo.JdOrderDetailsVo;
 import com.fjhx.victoriatourist.entity.jd.vo.JdOrderVo;
 import com.fjhx.victoriatourist.entity.logistics.vo.LogisticsInfosVo;
 import com.fjhx.victoriatourist.entity.stock.dto.StockTransferDto;
@@ -147,4 +148,18 @@ public class JdOrderController {
     public void tellBackOrer(@RequestBody JdOrderDto jdOrderDto){
         jdOrderService.tellBackOrer(jdOrderDto);
     }
+    
+    /**
+     * 保存备注
+     * @author hj
+     * @date 2024/1/15 10:07
+     * @return null
+     */
+    @PostMapping("/saveRemark")
+    public void saveRemark(@RequestBody JdOrderDto jdOrderDto){
+        if (ObjectUtil.isNull(jdOrderDto.getId())){
+            throw new RuntimeException("参数错误");
+        }
+        jdOrderService.saveRemark(jdOrderDto);
+    }
 }

+ 66 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/jd/JdOrderExController.java

@@ -0,0 +1,66 @@
+package com.fjhx.victoriatourist.controller.jd;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.item.entity.product.po.ProductInfo;
+import com.fjhx.item.service.product.ProductInfoService;
+import com.fjhx.victoriatourist.entity.jd.dto.JdOrderSelectDto;
+import com.fjhx.victoriatourist.entity.jd.vo.JdOrderDetailsVo;
+import com.fjhx.victoriatourist.service.jd.JdOrderDetailsService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RestController
+@RequestMapping("/jdOrderEx")
+public class JdOrderExController {
+
+    @Resource
+    private JdOrderDetailsService jdOrderDetailsService;
+
+    @Resource
+    private ProductInfoService productInfoService;
+
+
+    /**
+     * 采购单明细异常列表
+     * @author hj
+     * @date 2024/1/15 10:09
+     */
+    @PostMapping("/jdOrderDetailExList")
+    public Page<JdOrderDetailsVo> jdOrderDetailExList(@RequestBody JdOrderSelectDto dto){
+        return jdOrderDetailsService.jdOrderDetailExList(dto);
+    }
+
+
+
+    /**
+     * 处理异常
+     * @author hj
+     * @date 2024/1/15 22:18
+     */
+    @PostMapping("/dealEx")
+    public void dealEx(@RequestBody JdOrderDetailsVo vo){
+        if(ObjectUtil.isNull(vo.getId()) || StrUtil.isBlank(vo.getExHandle())){
+            throw new RuntimeException("参数异常");
+        }
+        jdOrderDetailsService.dealEx(vo);
+    }
+
+
+    @PostMapping("/productInfoById")
+    public List<ProductInfo> productInfo(@RequestBody JdOrderDetailsVo vo){
+        DynamicDataSourceContextHolder.push(SourceConstant.ITEM);
+
+        List<ProductInfo> productInfo = productInfoService.lambdaQuery().eq(ProductInfo::getId, vo.getProductId()).list();
+        DynamicDataSourceContextHolder.clear();
+        return productInfo;
+    }
+}

+ 13 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/dto/JdOrderDto.java

@@ -64,4 +64,17 @@ public class JdOrderDto extends JdOrder implements SetCustomizeAreaId {
      * 预约号
      */
     private String reservationCode;
+    /**
+     * 是否需要出库
+     */
+    private boolean isOut;
+
+
+    public boolean getIsOut() {
+        return isOut;
+    }
+
+    public void setIsOut(boolean out) {
+        this.isOut = out;
+    }
 }

+ 10 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/dto/JdOrderSelectDto.java

@@ -41,4 +41,14 @@ public class JdOrderSelectDto extends BaseSelectDto {
 
     /**回告状态**/
     private Integer confirmState;
+
+    private String hasEx;
+
+    private String hasRemark;
+
+    private String handleStatus;
+
+    private String exHandle;
+
+    private String exDesc;
 }

+ 4 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/po/JdOrder.java

@@ -145,4 +145,8 @@ public class JdOrder extends BasePo {
     private Date bookTime;
     //----------------------------京东字段结束------------------------------------
 
+    /**是否有异常**/
+    private String hasEx;
+
+    private String remark;
 }

+ 29 - 1
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/po/JdOrderDetails.java

@@ -7,6 +7,7 @@ import lombok.Setter;
 
 import javax.validation.constraints.NotNull;
 import java.math.BigDecimal;
+import java.util.Date;
 
 /**
  * <p>
@@ -81,5 +82,32 @@ public class JdOrderDetails extends BasePo {
     private String storeName;
     private String wareProperty;//目前是json考虑新表
     //----------------------京东订单明细字段结束--------------------------------------
-
+    /**是否有异常**/
+    private String hasEx;
+    /**异常描述**/
+    private String exDesc;
+    /**处理状态**/
+    private String handleStatus;
+    /**异常处理**/
+    private String exHandle;
+    /**异常处理备注**/
+    private String handleRemark;
+    /**异常处理人**/
+    private Long handleUser;
+    /**异常处理时间**/
+    private Date handleTime;
+    /**快递单号**/
+    private String expressNo;
+    /**增加仓库ID**/
+    private Long addWarehouseId;
+    /**增加库存数量**/
+    private BigDecimal addQuantity;
+    /**增加商品id**/
+    private Long addProductId;
+    /**减少仓库id**/
+    private Long reduceWarehouseId;
+    /**减少库存数量**/
+    private BigDecimal reduceQuantity;
+    /**减少商品id**/
+    private Long reduceProductId;
 }

+ 5 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/vo/JdOrderDetailsVo.java

@@ -4,6 +4,8 @@ import com.fjhx.victoriatourist.entity.jd.po.JdOrderDetails;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.math.BigDecimal;
+
 /**
  * 京东订单明细列表查询返回值实体
  *
@@ -29,4 +31,7 @@ public class JdOrderDetailsVo extends JdOrderDetails {
      */
     private String productCustomCode;
 
+
+
+
 }

+ 6 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/JdOrderDetailsService.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.JdOrderSelectDto;
 import com.fjhx.victoriatourist.entity.jd.po.JdOrderDetails;
 import com.fjhx.victoriatourist.entity.jd.vo.JdOrderDetailsVo;
 import com.ruoyi.common.core.service.BaseService;
@@ -18,4 +20,8 @@ import java.util.List;
 public interface JdOrderDetailsService extends BaseService<JdOrderDetails> {
 
     List<JdOrderDetailsVo> findListByJdOrderId(Long id);
+
+    Page<JdOrderDetailsVo> jdOrderDetailExList(JdOrderSelectDto dto);
+
+    void dealEx(JdOrderDetailsVo vo);
 }

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

@@ -67,4 +67,6 @@ public interface JdOrderService extends BaseService<JdOrder> {
     void tellBackOrer(JdOrderDto jdOrderDto);
 
     boolean validJdOrderId(Long jdOrderId);
+
+    void saveRemark(JdOrderDto jdOrderDto);
 }

+ 3 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/constants/JdParamConstant.java

@@ -4,4 +4,7 @@ public class JdParamConstant {
     public static final String appKey = "ECCD5CE82A501C7E0D8BB41C030C447D";
     public static final String appSecret = "5b55c3f3eb874b0d8746ff28e7f91f64";
     public static String SERVER_URL = "http://api.jd.com/routerjson";
+
+    /**京东订单状态-已完成**/
+    public static final Integer JD_ORDER_STATE_FINISH = 3;
 }

+ 51 - 1
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/constants/RunParamConstant.java

@@ -9,7 +9,7 @@ import cn.hutool.extra.spring.SpringUtil;
 public class RunParamConstant {
     public static final String DOMAIN = "http://www.victoriatourist.ltd/prod-api";
     public static final String redirect_uri = DOMAIN + "/open/jd/callback";
-    public static final String tenantId = "prod".equals(SpringUtil.getActiveProfile()) ? "wdly" : "wdlytest";
+    public static final String tenantId = "wdly";
 
     public static final String ACCESS_TOKEN = "access_token";
     public static final String REFRESH_TOKEN = "refresh_token";
@@ -25,4 +25,54 @@ public class RunParamConstant {
     public static final String JD_GET_ACCESS_TOKEN_URL = "https://open-oauth.jd.com/oauth2/access_token?app_key=%s&app_secret=%s&grant_type=authorization_code&code=%s";
     /**登录获取code地址**/
     public static final String JD_LOGIN_URL = "https://open-oauth.jd.com/oauth2/to_login?app_key=%s&response_type=code&redirect_uri=%s&state=%s&scope=snsapi_base";
+
+
+    /**异常描述-少货**/
+    public static final String SHORTAGE = "2";
+    /**异常描述-多货**/
+    public static final String EXCESS = "1";
+
+    /**是否有异常-无异常**/
+    public static final String NO_EXCEPTION = "0";
+    /**是否有异常-有异常**/
+    public static final String EXCEPTION = "1";
+
+
+    /**异常处理状态-未处理**/
+    public static final String EXCEPTION_STATE_UNTREATED = "1";
+    /**异常处理状态-已处理**/
+    public static final String EXCEPTION_STATE_TREATED = "2";
+
+    /**出库**/
+    public static final int OUTBOUND = 2;
+    /**入库**/
+    public static final int INBOUND = 1;
+
+
+    /**多货-补单扣库存**/
+    public static final String MULTI_CARGO_REDUCE_STOCK = "101";
+
+    /**仓库已发-报损**/
+    public static final String SHIPPED_DAMAGE = "201";
+
+    /**仓库已发-补单不扣库存**/
+    public static final String SHIPPED_NOT_REDUCE_STOCK = "202";
+    /**仓库已发-索赔理赔**/
+    public static final String SHIPPED_CLAIM = "203";
+    /**仓库少发-退回仓库**/
+    public static final String SHORTAGE_RETURN = "301";
+    /**仓库发错货物-货物退回-退回库存**/
+    public static final String EXCESS_RETURN = "401";
+    /**仓库发错货物-不退回库存补单**/
+    public static final String EXCESS_NOT_RETURN = "402";
+    /**仓库发错货物-不退回库存报损**/
+    public static final String EXCESS_DAMAGE = "403";
+    /**条码错误-货物退回-退回库存**/
+    public static final String BARCODE_ERROR_RETURN = "501";
+    /**条码错误-不退回库存补单**/
+    public static final String BARCODE_ERROR_NOT_RETURN = "502";
+    /**条码错误-不退回库存报损**/
+    public static final String BARCODE_ERROR_DAMAGE = "503";
+
+
 }

+ 46 - 3
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdApiServiceImpl.java

@@ -7,7 +7,6 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.thread.ThreadUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
-import cn.hutool.extra.spring.SpringUtil;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -30,7 +29,6 @@ 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.factory.JdClientFactory;
-import com.jd.open.api.sdk.DefaultJdClient;
 import com.jd.open.api.sdk.JdClient;
 import com.jd.open.api.sdk.domain.supplier.PoCommonForJosWebService.response.getcomponentlist.Component;
 import com.jd.open.api.sdk.domain.supplier.PoCommonForJosWebService.response.getwaredeliverdistinctlist.WarehouseDto;
@@ -59,11 +57,11 @@ import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 
-import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.util.*;
+import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.stream.Collectors;
 
 @Slf4j
@@ -352,6 +350,30 @@ public class JdApiServiceImpl implements JdApiService {
                 for (JdOrder jdOrder : jdOrderList) {
                     Long id = collect.get(jdOrder.getOrderId()).getId();
                     jdOrder.setId(id);
+                    //如果京东采购单状态 = 已完成  &  明细数据中存在 实收 != 回告,则给京东采购单打上【异常】标记
+                    //如果实收>回告,则:给对应的明细打上【多货】标记;如果实收<回告,则:给对应的明细打上【少货】标记
+                    if(JdParamConstant.JD_ORDER_STATE_FINISH.equals(jdOrder.getState())){
+                        List<JdOrderDetails> jdOrderDetailsList = jdOrderDetailsService.lambdaQuery().eq(JdOrderDetails::getJdOrderId, jdOrder.getOrderId()).list();
+                        boolean flag = false;
+                        for (JdOrderDetails jdOrderDetail : jdOrderDetailsList) {
+                            if(ObjectUtil.isNotNull(jdOrderDetail.getActualNum()) && ObjectUtil.isNotNull(jdOrderDetail.getConfirmNum()) && jdOrderDetail.getActualNum().compareTo(jdOrderDetail.getConfirmNum()) != 0){
+                                flag = true;
+                                String exDesc = "";
+                                if (jdOrderDetail.getActualNum().compareTo(jdOrderDetail.getConfirmNum()) > 0){
+                                    exDesc = RunParamConstant.EXCESS;
+                                }else {
+                                    exDesc = RunParamConstant.SHORTAGE;
+                                }
+                                jdOrderDetail.setExDesc(exDesc);
+                                jdOrderDetail.setHasEx(RunParamConstant.EXCEPTION);
+                                jdOrderDetail.setHandleStatus(RunParamConstant.EXCEPTION_STATE_UNTREATED);
+                                jdOrderDetailsService.updateById(jdOrderDetail);
+                            }
+                        }
+                        if(flag){
+                            jdOrder.setHasEx(RunParamConstant.EXCEPTION);
+                        }
+                    }
                     jdOrderService.saveOrUpdate(jdOrder);
                 }
                 pageIndex++;
@@ -581,6 +603,7 @@ public class JdApiServiceImpl implements JdApiService {
                         List<PurchaseAllocationDetailDto> purchaseAllocationDetailList = josDetailResultDto.getPurchaseAllocationDetailList();
                         List<JdOrderDetails> jdOrderDetails = BeanUtil.copyToList(purchaseAllocationDetailList, JdOrderDetails.class);
                         DynamicDataSourceContextHolder.push(SourceConstant.ITEM);
+                        AtomicBoolean hasExFlag = new AtomicBoolean(false);
                         jdOrderDetails.forEach(item -> {
                             item.setJdOrderId(jdOrder.getId());
                             //产品编码
@@ -591,8 +614,27 @@ public class JdApiServiceImpl implements JdApiService {
                             } else {
                                 item.setProductId(list.get(0).getId());
                             }
+                            if(JdParamConstant.JD_ORDER_STATE_FINISH.equals(jdOrder.getState())){
+                                //如果京东采购单状态 = 已完成  &  明细数据中存在 实收 != 回告,则给京东采购单打上【异常】标记
+                                if(ObjectUtil.isNotNull(item.getActualNum()) && ObjectUtil.isNotNull(item.getConfirmNum()) && item.getActualNum().compareTo(item.getConfirmNum()) != 0){
+                                    String exDesc;
+                                    if (item.getActualNum().compareTo(item.getConfirmNum()) > 0){
+                                        exDesc = RunParamConstant.EXCESS;
+                                    }else {
+                                        exDesc = RunParamConstant.SHORTAGE;
+                                    }
+                                    item.setHasEx(RunParamConstant.EXCEPTION);
+                                    item.setExDesc(exDesc);
+                                    item.setHandleStatus(RunParamConstant.EXCEPTION_STATE_UNTREATED);
+                                    hasExFlag.set(true);
+                                }
+                            }
                         });
                         jdOrderDetailsList.addAll(jdOrderDetails);
+                        if (hasExFlag.get()){
+                            jdOrder.setHasEx(RunParamConstant.EXCEPTION);
+                            jdOrderService.updateById(jdOrder);
+                        }
                     }
                     //            //赋值租户id
                     //            jdOrderList.forEach(item -> item.setTenantId(tenantId));
@@ -841,6 +883,7 @@ public class JdApiServiceImpl implements JdApiService {
         request.setCreatedDateEnd(endTime);
         request.setPageIndex(pageIndex);
         request.setPageSize(pageSize);
+//        request.setOrderIds("1558586708");
         if(CollectionUtil.isNotEmpty(orderIds)){
             request.setOrderIds(orderIds.stream().map(o->StrUtil.toString(orderIds)).collect(Collectors.joining(",")));
         }

+ 255 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdOrderDetailsServiceImpl.java

@@ -2,13 +2,37 @@ package com.fjhx.victoriatourist.service.jd.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.item.service.product.ProductInfoService;
+import com.fjhx.victoriatourist.entity.jd.dto.JdOrderSelectDto;
+import com.fjhx.victoriatourist.entity.jd.po.JdOrder;
 import com.fjhx.victoriatourist.entity.jd.po.JdOrderDetails;
 import com.fjhx.victoriatourist.entity.jd.vo.JdOrderDetailsVo;
 import com.fjhx.victoriatourist.mapper.jd.JdOrderDetailsMapper;
+import com.fjhx.victoriatourist.mapper.jd.JdOrderMapper;
 import com.fjhx.victoriatourist.service.jd.JdOrderDetailsService;
+import com.fjhx.victoriatourist.service.jd.JdOrderService;
+import com.fjhx.victoriatourist.service.jd.constants.RunParamConstant;
+import com.fjhx.wms.entity.stock.emums.JournalType;
+import com.fjhx.wms.entity.stock.po.Stock;
+import com.fjhx.wms.entity.stock.po.StockJournal;
+import com.fjhx.wms.entity.stock.po.StockJournalDetails;
+import com.fjhx.wms.service.stock.StockJournalDetailsService;
+import com.fjhx.wms.service.stock.StockJournalService;
+import com.fjhx.wms.service.stock.StockService;
+import com.ruoyi.common.utils.SecurityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 
@@ -22,10 +46,241 @@ import java.util.List;
  */
 @Service
 public class JdOrderDetailsServiceImpl extends ServiceImpl<JdOrderDetailsMapper, JdOrderDetails> implements JdOrderDetailsService {
+    @Resource
+    private StockService stockService;
+    @Resource
+    private StockJournalService stockJournalService;
+    @Resource
+    private StockJournalDetailsService stockJournalDetailsService;
+    @Resource
+    private ProductInfoService productInfoService;
+    @Resource
+    private JdOrderMapper jdOrderMapper;
 
     @Override
     public List<JdOrderDetailsVo> findListByJdOrderId(Long jdOrderId) {
         List<JdOrderDetails> list = lambdaQuery().eq(JdOrderDetails::getJdOrderId, jdOrderId).list();
         return BeanUtil.copyToList(list, JdOrderDetailsVo.class);
     }
+
+    @Override
+    public Page<JdOrderDetailsVo> jdOrderDetailExList(JdOrderSelectDto dto) {
+        Page<JdOrderDetails> page = lambdaQuery()
+                .eq(StrUtil.isNotBlank(dto.getHasEx()), JdOrderDetails::getHasEx, dto.getHasEx())
+                .eq(StrUtil.isNotBlank(dto.getExDesc()), JdOrderDetails::getExDesc, dto.getExDesc())
+                .eq(StrUtil.isNotBlank(dto.getHandleStatus()), JdOrderDetails::getHandleStatus, dto.getHandleStatus())
+                .isNotNull(JdOrderDetails::getHandleStatus)
+                .like(ObjectUtil.isNotNull(dto.getOrderId()), JdOrderDetails::getOrderId, dto.getOrderId())
+                .eq(StrUtil.isNotBlank(dto.getHandleStatus()), JdOrderDetails::getHandleStatus, dto.getHandleStatus())
+                .eq(StrUtil.isNotBlank(dto.getExHandle()), JdOrderDetails::getExHandle, dto.getExHandle())
+                .and(StrUtil.isNotBlank(dto.getKeyword()),q->q.like(JdOrderDetails::getOrderId, dto.getKeyword())
+                    .or().like(JdOrderDetails::getWareId, dto.getKeyword())
+                    .or().like(JdOrderDetails::getProductId, dto.getKeyword()))
+                .orderByAsc(JdOrderDetails::getHandleStatus)
+                .orderByDesc(JdOrderDetails::getUpdateTime)
+                .page(new Page<>(dto.getPageNum(), dto.getPageSize()));
+
+        List<JdOrderDetails> records = page.getRecords();
+        List<JdOrderDetailsVo> voList = BeanUtil.copyToList(records, JdOrderDetailsVo.class);
+        Page<JdOrderDetailsVo> voPage = BeanUtil.copyProperties(page, Page.class);
+
+        productInfoService.attributeAssign(voList, JdOrderDetails::getProductId, (item, product) -> {
+            item.setProductCode(product.getCode());
+            item.setProductName(product.getName());
+            item.setProductCustomCode(product.getCustomCode());
+        });
+
+        voPage.setRecords(voList);
+
+        return voPage;
+    }
+
+
+    @Override
+    @DSTransactional
+    public void dealEx(JdOrderDetailsVo vo) {
+        JdOrderDetails byId = getById(vo.getId());
+        if (ObjectUtil.isNull(byId)){
+            throw new RuntimeException("数据不存在");
+        }
+        byId.setHasEx(RunParamConstant.NO_EXCEPTION);
+        byId.setHandleStatus(RunParamConstant.EXCEPTION_STATE_TREATED);
+        byId.setExHandle(vo.getExHandle());
+        byId.setHandleTime(new Date());
+        Long userId = SecurityUtils.getUserId();
+        byId.setHandleUser(userId);
+        //对应处理异常详细方法
+        switch (vo.getExHandle()){
+            case RunParamConstant.MULTI_CARGO_REDUCE_STOCK:
+                //弹窗提示,出库,减少库存
+                reduceStock(vo, byId);
+                break;
+            case RunParamConstant.SHIPPED_DAMAGE:
+            case RunParamConstant.SHIPPED_CLAIM:
+            case RunParamConstant.BARCODE_ERROR_DAMAGE:
+                fillRemark(vo, byId);
+                break;
+            case RunParamConstant.SHIPPED_NOT_REDUCE_STOCK:
+            case RunParamConstant.BARCODE_ERROR_NOT_RETURN:
+                //仅弹窗提醒与修改状态,不做其他操作,修改状态在上面已经统一处理,预留位置。
+                break;
+            case RunParamConstant.SHORTAGE_RETURN:
+                //选择仓库,增加库存
+                addStock(vo, byId);
+                break;
+            case RunParamConstant.EXCESS_RETURN:
+            case RunParamConstant.BARCODE_ERROR_RETURN:
+                fillExpressNoAndAddStock(vo, byId);
+                break;
+            case RunParamConstant.EXCESS_NOT_RETURN:
+                //增减库存
+                addAndReduceStock(vo, byId);
+                break;
+            case RunParamConstant.EXCESS_DAMAGE:
+                //填备注增减库存
+                fillRemarkAndAddReduceStock(vo, byId);
+                break;
+            default:
+                throw new RuntimeException("异常处理状态异常");
+        }
+        updateById(byId);
+
+        //判断当前采购单下所有明细是不是都已经无异常,如果是,修改采购单异常状态为无异常
+        List<JdOrderDetails> list = lambdaQuery().eq(JdOrderDetails::getJdOrderId, byId.getJdOrderId()).list();
+        if(CollectionUtil.isEmpty(list)){
+            throw new RuntimeException("采购单明细不存在");
+        }
+        boolean allMatch = list.stream().allMatch(jdOrderDetails -> StrUtil.equals(jdOrderDetails.getHasEx(), RunParamConstant.NO_EXCEPTION));
+        if(allMatch){
+            //修改采购单状态为已处理
+            JdOrder jdOrder = jdOrderMapper.selectById(byId.getJdOrderId());
+            jdOrder.setHasEx(RunParamConstant.NO_EXCEPTION);
+            jdOrderMapper.updateById(jdOrder);
+        }
+    }
+
+
+    /**
+     * 填充备注
+     * @author hj
+     * @date 2024/1/15 22:41
+     */
+    private void fillRemark(JdOrderDetailsVo vo, JdOrderDetails jdOrderDetails){
+        String remark = vo.getRemark();
+        if(StrUtil.isBlank(remark)){
+            throw new RuntimeException("备注不能为空");
+        }
+        jdOrderDetails.setRemark(remark);
+    }
+
+    /**
+     * 填写快递单号并增加库存
+     * @author hj
+     * @date 2024/1/15 22:42
+     */
+    @DSTransactional
+    public void fillExpressNoAndAddStock(JdOrderDetailsVo vo, JdOrderDetails jdOrderDetails) {
+        String expressNo = vo.getExpressNo();
+        if (StrUtil.isBlank(expressNo)) {
+            throw new RuntimeException("快递单号不能为空");
+        }
+        jdOrderDetails.setExpressNo(expressNo);
+        addStock(vo, jdOrderDetails);
+    }
+
+    /**
+     * 增减库存
+     * @author hj
+     * @date 2024/1/15 22:42
+     */
+    @DSTransactional
+    public void addAndReduceStock(JdOrderDetailsVo vo, JdOrderDetails jdOrderDetails) {
+        addStock(vo, jdOrderDetails);
+        reduceStock(vo, jdOrderDetails);
+    }
+
+
+    /**
+     * 填备注增减库存
+     * @author hj
+     * @date 2024/1/15 22:42
+     */
+    @DSTransactional
+    public void fillRemarkAndAddReduceStock(JdOrderDetailsVo vo, JdOrderDetails jdOrderDetails) {
+        fillRemark(vo, jdOrderDetails);
+        addStock(vo, jdOrderDetails);
+        reduceStock(vo, jdOrderDetails);
+    }
+
+    /**
+     * 增加库存
+     * @param vo
+     */
+    private void addStock(JdOrderDetailsVo vo, JdOrderDetails jdOrderDetails) {
+        //操作库存及记录
+        operateStock(vo.getAddWarehouseId(), RunParamConstant.INBOUND, vo.getAddQuantity(), vo.getAddProductId(), jdOrderDetails);
+        jdOrderDetails.setAddProductId(vo.getAddProductId());
+        jdOrderDetails.setAddQuantity(vo.getAddQuantity());
+        jdOrderDetails.setAddWarehouseId(vo.getAddWarehouseId());
+    }
+
+    /**
+     * 减少库存
+     * @author hj
+     * @date 2024/1/15 22:44
+     */
+    private void reduceStock(JdOrderDetailsVo vo, JdOrderDetails jdOrderDetails) {
+        //操作库存及记录
+        operateStock(vo.getReduceWarehouseId(), RunParamConstant.OUTBOUND, vo.getReduceQuantity(), vo.getReduceProductId(), jdOrderDetails);
+        jdOrderDetails.setReduceProductId(vo.getReduceProductId());
+        jdOrderDetails.setReduceQuantity(vo.getReduceQuantity());
+        jdOrderDetails.setReduceWarehouseId(vo.getReduceWarehouseId());
+    }
+
+
+
+    /**
+     * 操作库存及记录
+     * @param warehouseId 仓库id
+     * @param type 类型 1入库 2出库 3维多利亚冻结库存入库 4维多利亚待出库次品库存
+     * @param quantity 操作数量
+     */
+    @DSTransactional
+    public void operateStock(Long warehouseId, int type, BigDecimal quantity, Long productId, JdOrderDetails jdOrderDetails) {
+        if (ObjectUtil.isNull(warehouseId) || quantity.compareTo(BigDecimal.ZERO) <= 0) {
+            throw new RuntimeException("参数错误");
+        }
+
+        //要操作的数据
+        List<Stock> stockList = new ArrayList<>();
+        Stock stock = new Stock();
+        stock.setProductId(productId);
+        stock.setQuantity(quantity);
+        stockList.add(stock);
+
+        //操作库存
+        stockService.ModifyInventory(type, stockList, warehouseId);
+
+        //创建出入库记录
+        StockJournal stockJournal = new StockJournal();
+        stockJournal.setOpType(type);//1入库2出库
+        stockJournal.setType(JournalType.JD_BACK_IN.getDetailType());//流水类型 JournalType枚举
+        stockJournal.setCode("流水编号");//流水编号,没规范赋值业务编号也行
+        stockJournal.setWarehouseId(warehouseId);//仓库id
+        stockJournal.setBusinessId(jdOrderDetails.getJdOrderId());//业务id
+        stockJournal.setLinkCode(StrUtil.toString(jdOrderDetails.getOrderId()));//业务编号
+        stockJournalService.save(stockJournal);
+
+        //保存出入库流水明细
+        List<StockJournalDetails> stockJournalDetailsList = new ArrayList<>();
+        StockJournalDetails stockJournalDetails = new StockJournalDetails();
+        stockJournalDetails.setId(IdWorker.getId());
+        stockJournalDetails.setBusinessDetailsId(jdOrderDetails.getId());//业务明细id
+        stockJournalDetails.setQuantity(quantity);//操作数量;
+        stockJournalDetails.setProductId(productId);//操作产品id
+        stockJournalDetails.setStockJournalId(stockJournal.getId());//出入库流水id
+        stockJournalDetailsList.add(stockJournalDetails);
+        stockJournalDetailsService.saveBatch(stockJournalDetailsList);
+    }
+
 }

+ 67 - 56
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdOrderServiceImpl.java

@@ -103,14 +103,7 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
     @Autowired
     private LogisticsInfosService logisticsInfosService;
     @Autowired
-    private LogisticsDetailsService logisticsDetailsService;
-    @Autowired
-    private ISysRoleService sysRoleService;
-    @Autowired
     private CompanyInfoService companyInfoService;
-    @Resource
-    private JdApiService jdApiService;
-
 
 
     @Override
@@ -119,21 +112,31 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
         wrapper.eq("jo", JdOrder::getOutStatus, dto.getStatus());
         wrapper.orderByDesc("jo", JdOrder::getId);
 
-        wrapper.like(ObjectUtil.isNotNull(dto.getOrderId()),"jo.order_id",dto.getOrderId());
+        wrapper.like(ObjectUtil.isNotNull(dto.getOrderId()), "jo.order_id", dto.getOrderId());
 
         List<Long> jdOrderIdList = new ArrayList<>();
-        if(ObjectUtil.isNotNull(dto.getKeyword())){
+        if (ObjectUtil.isNotNull(dto.getKeyword())) {
             List<JdOrderDetails> list = jdOrderDetailsService.lambdaQuery().like(JdOrderDetails::getWareId, dto.getKeyword()).list();
-            if(CollectionUtil.isNotEmpty(list)){
+            if (CollectionUtil.isNotEmpty(list)) {
                 jdOrderIdList = list.stream().map(JdOrderDetails::getJdOrderId).distinct().collect(Collectors.toList());
             }
         }
 
         wrapper.in(CollectionUtil.isNotEmpty(jdOrderIdList), "jo.id", jdOrderIdList);
-        wrapper.eq(StrUtil.isNotBlank(dto.getBusinessStatus()),"jo.business_status",dto.getBusinessStatus());
-        wrapper.eq(ObjectUtil.isNotNull(dto.getIsCanConfirm()),"jo.is_can_confirm",dto.getIsCanConfirm());
+        wrapper.eq(StrUtil.isNotBlank(dto.getBusinessStatus()), "jo.business_status", dto.getBusinessStatus());
+        wrapper.eq(ObjectUtil.isNotNull(dto.getIsCanConfirm()), "jo.is_can_confirm", dto.getIsCanConfirm());
         wrapper.eq("jo", JdOrder::getState, dto.getState());
         wrapper.eq("jo", JdOrder::getConfirmState, dto.getConfirmState());
+        //是否异常
+        wrapper.eq("jo", JdOrder::getHasEx, dto.getHasEx());
+        //是否备注
+        if (StrUtil.isNotBlank(dto.getHasRemark())) {
+            if (dto.getHasRemark().equals("1")) {
+                wrapper.isNotNull("jo.remark");
+            } else {
+                wrapper.isNull("jo.remark");
+            }
+        }
 
         if (ObjectUtil.isNotEmpty(dto.getKeyword())) {
             wrapper.keyword(dto.getKeyword(),
@@ -179,7 +182,7 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
         JdOrder JdOrder = this.getById(id);
         JdOrderVo result = BeanUtil.toBean(JdOrder, JdOrderVo.class);
 
-        List<JdOrderDetails> jdOrderDetailsList = jdOrderDetailsService.list(q -> q.eq(JdOrderDetails::getJdOrderId, id));
+        List<JdOrderDetails> jdOrderDetailsList = jdOrderDetailsService.lambdaQuery().eq(JdOrderDetails::getJdOrderId, id).orderByDesc(JdOrderDetails::getHasEx).orderByDesc(JdOrderDetails::getId).list();
         List<JdOrderDetailsVo> jdOrderDetailsVoList = BeanUtil.copyToList(jdOrderDetailsList, JdOrderDetailsVo.class);
         productInfoService.attributeAssign(jdOrderDetailsVoList, JdOrderDetails::getProductId, (item, product) -> {
             item.setProductCode(product.getCode());
@@ -527,8 +530,8 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
                     List<Long> liIds = logisticsInfosList.stream().map(LogisticsInfos::getId).collect(Collectors.toList());
                     AbnormalInfo oldAbnormalInfo = abnormalInfoService.getOne(q -> q
                             .in(AbnormalInfo::getLogisticsInfosId, liIds)
-                            .eq(AbnormalInfo::getType,30)
-                            .eq(AbnormalInfo::getLinkId,stockTransfer.getId())
+                            .eq(AbnormalInfo::getType, 30)
+                            .eq(AbnormalInfo::getLinkId, stockTransfer.getId())
                     );
                     if (ObjectUtil.isNotEmpty(oldAbnormalInfo)) {
                         abnormalInfo = oldAbnormalInfo;
@@ -660,7 +663,7 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
     @Override
     public List<LogisticsInfosVo> getLogisticsInfo(Long jdOrderInfoId) {
         List<LogisticsInfos> list = logisticsInfosService.list(q -> q.eq(LogisticsInfos::getBusinessId, jdOrderInfoId));
-        if(ObjectUtil.isEmpty(list)){
+        if (ObjectUtil.isEmpty(list)) {
             return new ArrayList<>();
         }
         List<LogisticsInfosVo> logisticsInfosVos = BeanUtil.copyToList(list, LogisticsInfosVo.class);
@@ -668,7 +671,7 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
         List<String> codes = logisticsInfosVos.stream().map(LogisticsInfos::getLogisticsCompanyCode).collect(Collectors.toList());
         Map<String, String> companyInfoMap = companyInfoService.mapKV(CompanyInfo::getCode, CompanyInfo::getName,
                 q -> q.in(CompanyInfo::getCode, codes));
-        logisticsInfosVos.forEach(item->item.setLogisticsCompanyName(companyInfoMap.get(item.getLogisticsCompanyCode())));
+        logisticsInfosVos.forEach(item -> item.setLogisticsCompanyName(companyInfoMap.get(item.getLogisticsCompanyCode())));
         return logisticsInfosVos;
     }
 
@@ -676,35 +679,35 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
     @DSTransactional
     public void confirmBusinessStatus(JdOrderDto jdOrderDto) {
         lambdaUpdate()
-            .set(JdOrder::getBusinessStatus, jdOrderDto.getBusinessStatus())
-            .eq(JdOrder::getId,jdOrderDto.getId()).update();
+                .set(JdOrder::getBusinessStatus, jdOrderDto.getBusinessStatus())
+                .eq(JdOrder::getId, jdOrderDto.getId()).update();
 
         JdOrder jdOrder = getById(jdOrderDto.getId());
-        //插入到库存调整记录
-        DynamicDataSourceContextHolder.push(SourceConstant.WMS);
-        StockWait stockWait = new StockWait();
-        stockWait.setType(2);//待出库
-        stockWait.setBusinessType(StockWaitType.JD_ORDER_OUT.getDetailType());
-        stockWait.setBusinessId(jdOrder.getId());
-        stockWait.setBusinessCode(StrUtil.toString(jdOrder.getOrderId()));
-        stockWait.setStatus(0);
-        stockWaitService.save(stockWait);
-
-        List<StockWaitDetails> stockWaitDetailsList = new ArrayList<>();
-        List<JdOrderDetailsVo> jdOrderDetailsList = jdOrderDetailsService.findListByJdOrderId(jdOrderDto.getId());
-
-        for (JdOrderDetailsVo jdOrderDetailsVo : jdOrderDetailsList) {
-            //创建待出库明细
-            StockWaitDetails stockWaitDetails = new StockWaitDetails();
-            stockWaitDetails.setStockWaitId(stockWait.getId());
-            stockWaitDetails.setBusinessDetailsId(jdOrderDetailsVo.getId());
-            stockWaitDetails.setProductId(jdOrderDetailsVo.getProductId());
-            stockWaitDetails.setQuantity(new BigDecimal(jdOrderDetailsVo.getConfirmNum()));
-            stockWaitDetails.setReceiptQuantity(new BigDecimal(BigInteger.ZERO));
-            stockWaitDetailsList.add(stockWaitDetails);
+        if (jdOrderDto.getIsOut()) {
+            //插入到库存调整记录
+            DynamicDataSourceContextHolder.push(SourceConstant.WMS);
+            StockWait stockWait = new StockWait();
+            stockWait.setType(2);//待出库
+            stockWait.setBusinessType(StockWaitType.JD_ORDER_OUT.getDetailType());
+            stockWait.setBusinessId(jdOrder.getId());
+            stockWait.setBusinessCode(StrUtil.toString(jdOrder.getOrderId()));
+            stockWait.setStatus(0);
+            stockWaitService.save(stockWait);
+            List<StockWaitDetails> stockWaitDetailsList = new ArrayList<>();
+            List<JdOrderDetailsVo> jdOrderDetailsList = jdOrderDetailsService.findListByJdOrderId(jdOrderDto.getId());
+
+            for (JdOrderDetailsVo jdOrderDetailsVo : jdOrderDetailsList) {
+                //创建待出库明细
+                StockWaitDetails stockWaitDetails = new StockWaitDetails();
+                stockWaitDetails.setStockWaitId(stockWait.getId());
+                stockWaitDetails.setBusinessDetailsId(jdOrderDetailsVo.getId());
+                stockWaitDetails.setProductId(jdOrderDetailsVo.getProductId());
+                stockWaitDetails.setQuantity(new BigDecimal(jdOrderDetailsVo.getConfirmNum()));
+                stockWaitDetails.setReceiptQuantity(new BigDecimal(BigInteger.ZERO));
+                stockWaitDetailsList.add(stockWaitDetails);
+            }
+            stockWaitDetailsService.saveBatch(stockWaitDetailsList);
         }
-        stockWaitDetailsService.saveBatch(stockWaitDetailsList);
-
         DynamicDataSourceContextHolder.poll();
 
     }
@@ -713,22 +716,22 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
     @Transactional(rollbackFor = Exception.class)
     public void tellBackOrer(JdOrderDto jdOrderDto) {
         //参数校验
-        if(ObjectUtil.isNull(jdOrderDto.getId())){
+        if (ObjectUtil.isNull(jdOrderDto.getId())) {
             throw new RuntimeException("参数错误");
         }
-        if(ObjectUtil.isNull(jdOrderDto.getDeliveryTime())){
+        if (ObjectUtil.isNull(jdOrderDto.getDeliveryTime())) {
             throw new RuntimeException("预计送达时间不能为空");
         }
         List<JdOrderDetails> jdOrderDetailsList = jdOrderDto.getJdOrderDetailsList();
-        if(CollectionUtil.isEmpty(jdOrderDetailsList)){
+        if (CollectionUtil.isEmpty(jdOrderDetailsList)) {
             throw new RuntimeException("采购单明细不能为空");
         }
         for (JdOrderDetails jdOrderDetails : jdOrderDetailsList) {
-            if(ObjectUtil.isNull(jdOrderDetails.getWareId())){
+            if (ObjectUtil.isNull(jdOrderDetails.getWareId())) {
                 throw new RuntimeException("京东商品编号为空");
             }
-            if(ObjectUtil.isNull(jdOrderDetails.getConfirmNum())){
-                throw new RuntimeException("京东商品编号:"+jdOrderDetails.getWareId()+"确认数量为空");
+            if (ObjectUtil.isNull(jdOrderDetails.getConfirmNum())) {
+                throw new RuntimeException("京东商品编号:" + jdOrderDetails.getWareId() + "确认数量为空");
             }
         }
         JdOrder jdOrder = getById(jdOrderDto.getId());
@@ -738,19 +741,19 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
         tellBackOrderVO.setDeliveryTime(jdOrderDto.getDeliveryTime());
         List<TellBackOrderVO.BackInfo> backInfos = BeanUtil.copyToList(jdOrderDto.getJdOrderDetailsList(), TellBackOrderVO.BackInfo.class);
         tellBackOrderVO.setBackInfo(backInfos);
-        jdApiService.tellBackOrer(tellBackOrderVO);
+//        jdApiService.tellBackOrer(tellBackOrderVO);
         //修改订单状态
         lambdaUpdate()
                 .set(JdOrder::getBusinessStatus, 2)
                 .set(JdOrder::getDeliveryTime, jdOrderDto.getDeliveryTime())
-                .eq(JdOrder::getId,jdOrderDto.getId()).update();
+                .eq(JdOrder::getId, jdOrderDto.getId()).update();
         //修改明细信息
         for (JdOrderDetails jdOrderDetails : jdOrderDetailsList) {
             jdOrderDetailsService.lambdaUpdate()
-                    .set(JdOrderDetails::getConfirmNum,jdOrderDetails.getConfirmNum())
-                    .set(JdOrderDetails::getDeliverCenterId,jdOrder.getDeliverCenterId())
-                    .set(JdOrderDetails::getNonDeliveryReason,jdOrderDetails.getNonDeliveryReason())
-                    .eq(JdOrderDetails::getId,jdOrderDetails.getId()).update();
+                    .set(JdOrderDetails::getConfirmNum, jdOrderDetails.getConfirmNum())
+                    .set(JdOrderDetails::getDeliverCenterId, jdOrder.getDeliverCenterId())
+                    .set(JdOrderDetails::getNonDeliveryReason, jdOrderDetails.getNonDeliveryReason())
+                    .eq(JdOrderDetails::getId, jdOrderDetails.getId()).update();
         }
     }
 
@@ -758,9 +761,17 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
     @Override
     public boolean validJdOrderId(Long jdOrderId) {
         List<JdOrder> list = lambdaQuery().eq(JdOrder::getOrderId, jdOrderId).list();
-        if(CollectionUtil.isNotEmpty(list)){
+        if (CollectionUtil.isNotEmpty(list)) {
             return true;
         }
         return false;
     }
+
+    @Override
+    public void saveRemark(JdOrderDto jdOrderDto) {
+        lambdaUpdate()
+                .set(JdOrder::getRemark, jdOrderDto.getRemark())
+                .eq(JdOrder::getId, jdOrderDto.getId())
+                .update();
+    }
 }

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

@@ -35,7 +35,7 @@ public class JdInitializer {
         //初始化字典
 //        jdApiService.initTenantDict();
         //补偿商品id为空
-        jdApiService.compensatingProductNon();
+//        jdApiService.compensatingProductNon();
 
     }
 }

+ 3 - 1
hx-victoriatourist/src/main/resources/mapper/jd/JdOrderMapper.xml

@@ -54,7 +54,9 @@
             jo.storage_time,
             jo.tc_flag,
             jo.tc_flag_name,
-            jo.book_time
+            jo.book_time,
+            jo.has_ex,
+            jo.remark
         from jd_order jo
             <!--LEFT JOIN jd_order_details jod ON jod.jd_order_id = jo.id
             LEFT JOIN bytesailing_item.product_info pi ON jod.product_id = pi.id