瀏覽代碼

销售订单问题处理

yzc 2 年之前
父節點
當前提交
fd4acae124

+ 0 - 2
hx-purchase/src/main/java/com/fjhx/purchase/service/WdlyService.java

@@ -10,8 +10,6 @@ public interface WdlyService {
 
     /**
      * 获取发货信息
-     *
-     * @return
      */
     DeliverGoodsPo getDeliverGoodsInfo(Long id);
 }

+ 10 - 1
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/WdlyServiceImpl.java

@@ -5,6 +5,8 @@ import com.fjhx.purchase.entity.deliver.DeliverGoodsPo;
 import com.fjhx.purchase.service.WdlyService;
 import com.fjhx.victoriatourist.entity.deliver.po.DeliverGoods;
 import com.fjhx.victoriatourist.service.deliver.DeliverGoodsService;
+import com.fjhx.victoriatourist.service.order.OrderInfoService;
+import com.fjhx.wms.entity.stock.dto.StockWaitDetailsDto;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -12,8 +14,12 @@ import org.springframework.stereotype.Service;
 public class WdlyServiceImpl implements WdlyService {
     @Autowired
     DeliverGoodsService deliverGoodsService;
+    @Autowired
+    OrderInfoService orderInfoService;
 
-    /**更新发货记录的状态为到货*/
+    /**
+     * 更新发货记录的状态为到货
+     */
     @Override
     public void updateDeliverGoodsStatus(Long id) {
         DeliverGoods byId = deliverGoodsService.getById(id);
@@ -21,6 +27,9 @@ public class WdlyServiceImpl implements WdlyService {
         deliverGoodsService.updateById(byId);
     }
 
+    /**
+     * 获取发货信息
+     */
     @Override
     public DeliverGoodsPo getDeliverGoodsInfo(Long id) {
         DeliverGoods byId = deliverGoodsService.getById(id);

+ 21 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/WmsServiceImpl.java

@@ -0,0 +1,21 @@
+package com.fjhx.victoriatourist.service;
+
+import com.fjhx.purchase.service.WdlyService;
+import com.fjhx.victoriatourist.service.order.OrderInfoService;
+import com.fjhx.wms.entity.stock.dto.StockWaitDetailsDto;
+import com.fjhx.wms.service.WmsService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class WmsServiceImpl implements WmsService {
+    @Autowired
+    OrderInfoService orderInfoService;
+    /**
+     * 销售订单出库
+     */
+    @Override
+    public void outbound(StockWaitDetailsDto stockWaitDetailsDto) {
+        orderInfoService.outbound(stockWaitDetailsDto);
+    }
+}

+ 6 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/order/OrderInfoService.java

@@ -1,6 +1,8 @@
 package com.fjhx.victoriatourist.service.order;
 
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.fjhx.victoriatourist.entity.order.po.OrderInfo;
+import com.fjhx.wms.entity.stock.dto.StockWaitDetailsDto;
 import com.ruoyi.common.core.service.BaseService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.victoriatourist.entity.order.vo.OrderInfoVo;
@@ -43,4 +45,8 @@ public interface OrderInfoService extends BaseService<OrderInfo> {
      */
     void delete(Long id);
 
+    /**
+     * 销售订单出库
+     */
+    void outbound(StockWaitDetailsDto stockWaitDetailsDto);
 }

+ 70 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/order/impl/OrderInfoServiceImpl.java

@@ -2,6 +2,7 @@ package com.fjhx.victoriatourist.service.order.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.area.service.AreaInfoService;
@@ -20,11 +21,18 @@ import com.fjhx.victoriatourist.service.order.OrderDetailsService;
 import com.fjhx.victoriatourist.service.order.OrderInfoService;
 import com.fjhx.victoriatourist.utils.Assert;
 import com.fjhx.victoriatourist.utils.CodeEnum;
+import com.fjhx.wms.entity.stock.dto.StockWaitDetailsDto;
+import com.fjhx.wms.entity.stock.emums.StockWaitType;
+import com.fjhx.wms.entity.stock.po.StockWait;
+import com.fjhx.wms.entity.stock.po.StockWaitDetails;
+import com.fjhx.wms.service.stock.StockWaitDetailsService;
+import com.fjhx.wms.service.stock.StockWaitService;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -47,6 +55,10 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
     OrderDetailsService orderDetailsService;
     @Autowired
     ProductInfoService productInfoService;
+    @Autowired
+    StockWaitService stockWaitService;
+    @Autowired
+    StockWaitDetailsService stockWaitDetailsService;
 
     @Override
     public Page<OrderInfoVo> getPage(OrderInfoSelectDto dto) {
@@ -98,6 +110,7 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
         return result;
     }
 
+    @DSTransactional
     @Override
     public void add(OrderInfoDto orderInfoDto) {
         // 订单明细
@@ -131,12 +144,35 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
             this.save(orderInfoDto);
         }
 
+
         // 添加订单明细
         for (OrderDetails orderDetails : orderDetailsList) {
             orderDetails.setOrderId(orderInfoDto.getId());
             orderDetails.setNotIssuedQuantity(orderDetails.getQuantity());
         }
         orderDetailsService.saveBatch(orderDetailsList);
+
+
+        //添加待出库记录
+        StockWait stockWait = new StockWait();
+        stockWait.setType(2);//待出库
+        stockWait.setBusinessType(StockWaitType.SALE_ORDER_OUT.getDetailType());
+        stockWait.setBusinessId(orderInfoDto.getId());
+        stockWait.setBusinessCode(orderInfoDto.getCode());
+        stockWait.setStatus(0);//待出库
+        stockWaitService.save(stockWait);
+        //创建待出库明细
+        List<StockWaitDetails> stockWaitDetailsList = new ArrayList<>();
+        for (OrderDetails orderDetails : orderDetailsList) {
+            StockWaitDetails stockWaitDetails = new StockWaitDetails();
+            stockWaitDetails.setStockWaitId(stockWait.getId());
+            stockWaitDetails.setBusinessDetailsId(orderDetails.getId());
+            stockWaitDetails.setProductId(orderDetails.getProductId());
+            stockWaitDetails.setQuantity(orderDetails.getQuantity());
+            stockWaitDetails.setReceiptQuantity(BigDecimal.ZERO);
+            stockWaitDetailsList.add(stockWaitDetails);
+        }
+        stockWaitDetailsService.saveBatch(stockWaitDetailsList);
     }
 
     @Override
@@ -149,4 +185,38 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
         this.removeById(id);
     }
 
+    /**
+     * 销售订单待出库出库
+     */
+    @DSTransactional
+    @Override
+    public void outbound(StockWaitDetailsDto stockWaitDetailsDto) {
+        //操作销售订单
+        StockWaitDetails stockWaitDetails = stockWaitDetailsService.getById(stockWaitDetailsDto.getId());
+        OrderDetails orderDetails = orderDetailsService.getById(stockWaitDetails.getBusinessDetailsId());
+        //减少未出库数量
+        orderDetails.setNotIssuedQuantity(orderDetails.getNotIssuedQuantity().subtract(stockWaitDetailsDto.getQuantity()));
+        orderDetailsService.updateById(orderDetails);
+        //修改销售订单状态
+        Integer statusFlag = 0;
+        List<OrderDetails> orderDetailsList = orderDetailsService.list(q -> q.eq(OrderDetails::getOrderId, orderDetails.getOrderId()));
+        for (OrderDetails details : orderDetailsList) {
+            //统计已经完全出库的条数
+            if(details.getNotIssuedQuantity().compareTo(BigDecimal.ZERO)==0){
+                statusFlag++;
+            }
+        }
+        OrderInfo orderInfo = getById(orderDetails.getOrderId());
+        if(statusFlag == orderDetailsList.size()){
+            //完全出库
+            orderInfo.setStatus(2);//订单状态 1进行中 2已完成 3已取消
+            orderInfo.setIssueStatus(3);//出库状态 1未出库 2进行中 3已出库
+        }else{
+            //部分出库
+            orderInfo.setStatus(1);//订单状态 1进行中 2已完成 3已取消
+            orderInfo.setIssueStatus(2);//出库状态 1未出库 2进行中 3已出库
+        }
+        updateById(orderInfo);
+    }
+
 }

+ 2 - 1
hx-wms/src/main/java/com/fjhx/wms/entity/stock/emums/StockWaitType.java

@@ -11,7 +11,8 @@ public enum StockWaitType {
     COMPLETION_IN(InOutType.IN, 2, "完工入库", ""),
     PURCHASE_ARRIVAL_IN(InOutType.IN, 3, "采购到货", ""),
     BACK_OUT(InOutType.OUT, 4, "退货出库", ""),
-    JD_ORDER_OUT(InOutType.OUT, 5, "京东订单出库", "jd_order")
+    JD_ORDER_OUT(InOutType.OUT, 5, "京东订单出库", "jd_order"),
+    SALE_ORDER_OUT(InOutType.OUT, 6, "销售订单出库", "order_info")
     ;
 
 

+ 12 - 0
hx-wms/src/main/java/com/fjhx/wms/service/WmsService.java

@@ -0,0 +1,12 @@
+package com.fjhx.wms.service;
+
+import com.fjhx.wms.entity.stock.dto.StockWaitDetailsDto;
+
+public interface WmsService {
+
+    /**
+     * 销售订单出库
+     */
+    void outbound(StockWaitDetailsDto stockWaitDetailsDto);
+
+    }

+ 25 - 1
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockWaitDetailsServiceImpl.java

@@ -1,11 +1,13 @@
 package com.fjhx.wms.service.stock.impl;
 
 import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.wms.entity.stock.emums.JournalType;
 import com.fjhx.wms.entity.stock.emums.StockWaitType;
 import com.fjhx.wms.entity.stock.po.*;
 import com.fjhx.wms.mapper.stock.StockWaitDetailsMapper;
+import com.fjhx.wms.service.WmsService;
 import com.fjhx.wms.service.stock.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.wms.utils.CodeEnum;
@@ -45,6 +47,8 @@ public class StockWaitDetailsServiceImpl extends ServiceImpl<StockWaitDetailsMap
     StockJournalDetailsService stockJournalDetailsService;
     @Autowired
     StockService stockService;
+    @Autowired
+    WmsService wmsService;
 
     @Override
     public Page<StockWaitDetailsVo> getPage(StockWaitDetailsSelectDto dto) {
@@ -83,6 +87,7 @@ public class StockWaitDetailsServiceImpl extends ServiceImpl<StockWaitDetailsMap
     }
 
     @Override
+    @DSTransactional
     public void add(StockWaitDetailsDto stockWaitDetailsDto) {
         //更新已入库数量 根据明细id
         StockWaitDetails stockWaitDetails = getById(stockWaitDetailsDto.getId());
@@ -91,12 +96,27 @@ public class StockWaitDetailsServiceImpl extends ServiceImpl<StockWaitDetailsMap
             throw new ServiceException("出库数量+已出库数量不能大于待出库数量");
         }
         updateById(stockWaitDetails);
+        //更新待出库记录状态
+        Integer statusFlag = 0;
+        List<StockWaitDetails> stockWaitDetailsList = list(q -> q.eq(StockWaitDetails::getStockWaitId, stockWaitDetails.getStockWaitId()));
+        for (StockWaitDetails waitDetails : stockWaitDetailsList) {
+            //计算已经完全出库的数量
+            if (waitDetails.getReceiptQuantity().compareTo(waitDetails.getQuantity()) == 0) {
+                statusFlag++;
+            }
+        }
         StockWait byId = stockWaitService.getById(stockWaitDetails.getStockWaitId());
+        if (statusFlag == stockWaitDetailsList.size()) {
+            byId.setStatus(2);//入库完成
+        } else {
+            byId.setStatus(1);//部分入库
+        }
+        stockWaitService.updateById(byId);
         //创建出入库记录
         StockJournal stockJournal = new StockJournal();
         stockJournal.setOpType(byId.getType());
         //根据待入库业务类型创建待出入库记录
-        Integer businessType = stockWaitDetailsDto.getBusinessType();
+        Integer businessType = byId.getBusinessType();
         if (StockWaitType.BORDER_OF_LINE_IN.getDetailType().equals(businessType)) {
             //线边回仓库
             stockJournal.setType(JournalType.BORDER_OF_LINE_IN.getDetailType());
@@ -109,6 +129,10 @@ public class StockWaitDetailsServiceImpl extends ServiceImpl<StockWaitDetailsMap
         } else if (StockWaitType.BACK_OUT.getDetailType().equals(businessType)) {
             //退货出货
             stockJournal.setType(JournalType.BACK_OUT.getDetailType());
+        }else if (StockWaitType.SALE_ORDER_OUT.getDetailType().equals(businessType)) {
+            //销售订单出库
+            stockJournal.setType(JournalType.SALES_OUT.getDetailType());
+            wmsService.outbound(stockWaitDetailsDto);
         } else {
             throw new ServiceException("未知待出入库业务类型");
         }