24282 9 mesiacov pred
rodič
commit
32f3908ff1

+ 30 - 2
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/jd/JdOrderController.java

@@ -3,19 +3,29 @@ package com.fjhx.victoriatourist.controller.jd;
 import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson2.JSONObject;
+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.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.JdOrderVo;
 import com.fjhx.victoriatourist.entity.logistics.vo.LogisticsInfosVo;
 import com.fjhx.victoriatourist.entity.stock.dto.StockTransferDto;
 import com.fjhx.victoriatourist.service.jd.JdOrderDetailsService;
 import com.fjhx.victoriatourist.service.jd.JdOrderService;
+import com.ruoyi.common.core.domain.BaseIdPo;
 import com.ruoyi.common.core.domain.BaseSelectDto;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
+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.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
@@ -36,9 +46,13 @@ public class JdOrderController {
 
     @Autowired
     private JdOrderService jdOrderService;
+
     @Resource
     private JdOrderDetailsService jdOrderDetailsService;
 
+    @Autowired
+    private ProductInfoService productInfoService;
+
     /**
      * 京东订单分页
      */
@@ -130,7 +144,21 @@ public class JdOrderController {
         //校验明细内的商品是否都有productId
         jdOrderDetailsService.findListByJdOrderId(jdOrderDto.getId()).forEach(jdOrderDetails -> {
             if (ObjectUtil.isNull(jdOrderDetails.getProductId())) {
-                throw new RuntimeException("采购单明细内商品:" + jdOrderDetails.getWareId() + "没有关联到产品,无法进行确认");
+
+                DynamicDataSourceContextHolder.push(SourceConstant.ITEM);
+                List<ProductInfo> list = productInfoService.lambdaQuery().eq(ProductInfo::getCustomCode, jdOrderDetails.getWareId()).list();
+                DynamicDataSourceContextHolder.poll();
+
+                if (list.isEmpty()) {
+                    throw new RuntimeException("采购单明细内商品:" + jdOrderDetails.getWareId() + "没有关联到产品,无法进行确认");
+                } else {
+                    //更新明细内的productId
+                    jdOrderDetailsService.update(q -> q
+                            .eq(BaseIdPo::getId, jdOrderDetails.getId())
+                            .set(JdOrderDetails::getProductId, list.get(0).getId())
+                    );
+                }
+
             }
         });
         jdOrderService.confirmBusinessStatus(jdOrderDto);

+ 21 - 25
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdApiServiceImpl.java

@@ -10,7 +10,6 @@ import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.fjhx.common.constant.SourceConstant;
-import com.fjhx.common.utils.TransactionUtil;
 import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.tenant.entity.dict.dto.DictTenantDataDto;
@@ -689,32 +688,32 @@ public class JdApiServiceImpl implements JdApiService {
                     //赋值租户id
                     jdOrderList.forEach(item -> item.setTenantId(RunParamConstant.tenantId));
 
-                    TransactionUtil.execute(() -> {
+                    //TransactionUtil.execute(() -> {
 
-                        //将数据存储到库
-                        jdOrderService.saveBatch(jdOrderList);
+                    //将数据存储到库
+                    jdOrderService.saveBatch(jdOrderList);
 
-                        //获取明细
-                        List<JdOrderDetails> jdOrderDetailsList = new ArrayList<>();
-
-                        for (JdOrder jdOrder : jdOrderList) {
-                            boolean hasExFlag;
-                            try {
-                                hasExFlag = dealOrderDetail(client, jdOrder, jdOrderDetailsList);
-                            } catch (Exception e) {
-                                throw new RuntimeException(e);
-                            }
+                    //获取明细
+                    List<JdOrderDetails> jdOrderDetailsList = new ArrayList<>();
+
+                    for (JdOrder jdOrder : jdOrderList) {
+                        boolean hasExFlag;
+                        try {
+                            hasExFlag = dealOrderDetail(client, jdOrder, jdOrderDetailsList);
+                        } catch (Exception e) {
+                            throw new RuntimeException(e);
+                        }
 
-                            if (hasExFlag) {
-                                jdOrder.setHasEx(RunParamConstant.EXCEPTION);
-                                jdOrder.setHandleStatus(RunParamConstant.EXCEPTION_STATE_UNTREATED);
-                                jdOrderService.updateById(jdOrder);
-                            }
+                        if (hasExFlag) {
+                            jdOrder.setHasEx(RunParamConstant.EXCEPTION);
+                            jdOrder.setHandleStatus(RunParamConstant.EXCEPTION_STATE_UNTREATED);
+                            jdOrderService.updateById(jdOrder);
                         }
+                    }
 
-                        DynamicDataSourceContextHolder.push(SourceConstant.VICTORIATOURIST);
-                        jdOrderDetailsService.saveOrUpdateBatch(jdOrderDetailsList);
-                    });
+                    DynamicDataSourceContextHolder.push(SourceConstant.VICTORIATOURIST);
+                    jdOrderDetailsService.saveOrUpdateBatch(jdOrderDetailsList);
+                    //});
 
                 }
                 pageIndex++;
@@ -1017,7 +1016,4 @@ public class JdApiServiceImpl implements JdApiService {
         return jdInfoVo;
     }
 
-    public static void main(String[] args) {
-    }
-
 }

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

@@ -875,6 +875,7 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
         return collect;
     }
 
+    @DSTransactional
     @Override
     public void batchOutStock(MultipartFile file, Long warehouseId, JSONObject outInfo) {
         //读取数据