浏览代码

确认采购单新增数据到出库表

1018653686@qq.com 1 年之前
父节点
当前提交
4142b0e640

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

@@ -11,6 +11,7 @@ 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.BaseSelectDto;
 import com.ruoyi.common.utils.SecurityUtils;
@@ -19,6 +20,7 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.annotation.Resource;
 import java.util.List;
 
 
@@ -36,6 +38,8 @@ public class JdOrderController {
 
     @Autowired
     private JdOrderService jdOrderService;
+    @Resource
+    private JdOrderDetailsService jdOrderDetailsService;
 
     /**
      * 京东订单分页
@@ -125,6 +129,12 @@ public class JdOrderController {
         if(!NumberUtil.isValidNumber(jdOrderDto.getId()) || !NumberUtil.isValidNumber(jdOrderDto.getBusinessStatus())){
             throw new RuntimeException("参数错误");
         }
+        //校验明细内的商品是否都有productId
+        jdOrderDetailsService.findListByJdOrderId(jdOrderDto.getId()).forEach(jdOrderDetails -> {
+            if(ObjectUtil.isNull(jdOrderDetails.getProductId())){
+                throw new RuntimeException("采购单明细内商品:"+jdOrderDetails.getWareId()+"没有关联到产品,无法进行确认");
+            }
+        });
         jdOrderService.confirmBusinessStatus(jdOrderDto);
     }
 

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

@@ -1,8 +1,11 @@
 package com.fjhx.victoriatourist.service.jd;
 
 import com.fjhx.victoriatourist.entity.jd.po.JdOrderDetails;
+import com.fjhx.victoriatourist.entity.jd.vo.JdOrderDetailsVo;
 import com.ruoyi.common.core.service.BaseService;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -14,4 +17,5 @@ import com.ruoyi.common.core.service.BaseService;
  */
 public interface JdOrderDetailsService extends BaseService<JdOrderDetails> {
 
+    List<JdOrderDetailsVo> findListByJdOrderId(Long id);
 }

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

@@ -1,11 +1,16 @@
 package com.fjhx.victoriatourist.service.jd.impl;
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 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.service.jd.JdOrderDetailsService;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -18,4 +23,9 @@ import org.springframework.stereotype.Service;
 @Service
 public class JdOrderDetailsServiceImpl extends ServiceImpl<JdOrderDetailsMapper, JdOrderDetails> implements JdOrderDetailsService {
 
+    @Override
+    public List<JdOrderDetailsVo> findListByJdOrderId(Long jdOrderId) {
+        List<JdOrderDetails> list = lambdaQuery().eq(JdOrderDetails::getJdOrderId, jdOrderId).list();
+        return BeanUtil.copyToList(list, JdOrderDetailsVo.class);
+    }
 }

+ 31 - 2
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdOrderServiceImpl.java

@@ -62,6 +62,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.math.BigInteger;
 import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
@@ -125,8 +126,8 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
         wrapper.like(ObjectUtil.isNotNull(dto.getOrderId()),"jo.order_id",dto.getOrderId());
 
         List<Long> jdOrderIdList = new ArrayList<>();
-        if(ObjectUtil.isNotNull(dto.getWareId())){
-            List<JdOrderDetails> list = jdOrderDetailsService.lambdaQuery().like(JdOrderDetails::getWareId, dto.getWareId()).list();
+        if(ObjectUtil.isNotNull(dto.getKeyword())){
+            List<JdOrderDetails> list = jdOrderDetailsService.lambdaQuery().like(JdOrderDetails::getWareId, dto.getKeyword()).list();
             if(CollectionUtil.isNotEmpty(list)){
                 jdOrderIdList = list.stream().map(JdOrderDetails::getJdOrderId).distinct().collect(Collectors.toList());
             }
@@ -676,10 +677,38 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
     }
 
     @Override
+    @DSTransactional
     public void confirmBusinessStatus(JdOrderDto jdOrderDto) {
         lambdaUpdate()
             .set(JdOrder::getBusinessStatus, jdOrderDto.getBusinessStatus())
             .eq(JdOrder::getId,jdOrderDto.getId()).update();
+        //插入到库存调整记录
+        DynamicDataSourceContextHolder.push(SourceConstant.WMS);
+        StockWait stockWait = new StockWait();
+        stockWait.setType(2);//待出库
+        stockWait.setBusinessType(StockWaitType.JD_ORDER_OUT.getDetailType());
+        stockWait.setBusinessId(jdOrderDto.getId());
+        stockWait.setBusinessCode(StrUtil.toString(jdOrderDto.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);
+
+        DynamicDataSourceContextHolder.poll();
+
     }
 
     @Override