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

维多利亚待出库修改 json长数值类型处理

yzc 2 жил өмнө
parent
commit
dba763ae6f

+ 9 - 8
hx-item/src/main/java/com/fjhx/item/service/product/impl/ProductInfoServiceImpl.java

@@ -3,8 +3,9 @@ package com.fjhx.item.service.product.impl;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
+import com.alibaba.fastjson2.JSONWriter;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
@@ -238,7 +239,7 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
                 ProductInfoEhsdJson productInfoEhsdJson = JSONObject.parseObject(record.getEhsdJson(), ProductInfoEhsdJson.class);
                 String customerName = customerMap.get(Long.parseLong(productInfoEhsdJson.getCustomerId()));
                 productInfoEhsdJson.setCustomerName(customerName);
-                record.setEhsdJson(JSONObject.toJSONString(productInfoEhsdJson));
+                record.setEhsdJson(JSONObject.toJSONString(productInfoEhsdJson,JSONWriter.Feature.WriteLongAsString));
             }
         }
         //赋值创建人名称
@@ -280,7 +281,7 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
                     jsonArray.add(item);
                 }
                 json.put("productCombinationList",jsonArray);
-                result.setVictoriatouristJson(JSONObject.toJSONString(json));
+                result.setVictoriatouristJson(JSONObject.toJSONString(json, JSONWriter.Feature.WriteLongAsString));
             }
         }
         return result;
@@ -318,7 +319,7 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
             productInfoEhsdJson.setCustomerId("0");
             productInfoEhsdJson.setType("1");//默认公司产品
         }
-        productInfoDto.setEhsdJson(JSONObject.toJSONString(productInfoEhsdJson));
+        productInfoDto.setEhsdJson(JSONObject.toJSONString(productInfoEhsdJson,JSONWriter.Feature.WriteLongAsString));
 
         // 赋值产品编号
         productInfoDto.setCode(CodeEnum.PRODUCT.getCode());
@@ -343,7 +344,7 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
         productInfoEhsdJson.setCostPrice(newProductInfoEhsdJson.getCostPrice());//成本价
         productInfoEhsdJson.setNetWeight(newProductInfoEhsdJson.getNetWeight());//净重
         productInfo.setRemark(productInfoDto.getRemark());//备注
-        productInfo.setEhsdJson(JSONObject.toJSONString(productInfoEhsdJson));
+        productInfo.setEhsdJson(JSONObject.toJSONString(productInfoEhsdJson,JSONWriter.Feature.WriteLongAsString));
         this.updateById(productInfo);
         //修改图片
         ObsFileUtil.editFile(productInfoDto.getFileList(), productInfoDto.getId());
@@ -361,7 +362,7 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
             Customer customer = customerService.getById(productInfoEhsdJson.getCustomerId());
             if (ObjectUtil.isNotEmpty(customer)) {
                 productInfoEhsdJson.setCustomerName(customer.getName());
-                result.setEhsdJson(JSONObject.toJSONString(productInfoEhsdJson));
+                result.setEhsdJson(JSONObject.toJSONString(productInfoEhsdJson,JSONWriter.Feature.WriteLongAsString));
             }
         }
         //赋值创建人名称
@@ -432,7 +433,7 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
                 }
                 productInfoEhsdJson.setOuterPackMethod(String.join(",", split));
             }
-            productInfo.setEhsdJson(JSONObject.toJSONString(productInfoEhsdJson));
+            productInfo.setEhsdJson(JSONObject.toJSONString(productInfoEhsdJson,JSONWriter.Feature.WriteLongAsString));
             productInfoList.add(productInfo);
         }
         saveBatch(productInfoList);

+ 6 - 1
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/WmsServiceImpl.java

@@ -1,8 +1,8 @@
 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.entity.stock.dto.StockWaitDto;
 import com.fjhx.wms.service.WmsService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -18,4 +18,9 @@ public class WmsServiceImpl implements WmsService {
     public void outbound(StockWaitDetailsDto stockWaitDetailsDto) {
         orderInfoService.outbound(stockWaitDetailsDto);
     }
+
+    @Override
+    public void outbounds(StockWaitDto stockWaitDto) {
+        orderInfoService.outbounds(stockWaitDto);
+    }
 }

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

@@ -3,6 +3,7 @@ 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.fjhx.wms.entity.stock.dto.StockWaitDto;
 import com.ruoyi.common.core.service.BaseService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.victoriatourist.entity.order.vo.OrderInfoVo;
@@ -49,4 +50,6 @@ public interface OrderInfoService extends BaseService<OrderInfo> {
      * 销售订单出库
      */
     void outbound(StockWaitDetailsDto stockWaitDetailsDto);
+
+    void outbounds(StockWaitDto stockWaitDto);
 }

+ 66 - 1
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/order/impl/OrderInfoServiceImpl.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.area.service.AreaInfoService;
 import com.fjhx.area.utils.CustomizeAreaUtil;
+import com.fjhx.common.utils.Assert;
 import com.fjhx.customer.entity.customer.po.Customer;
 import com.fjhx.customer.service.customer.CustomerService;
 import com.fjhx.item.service.product.ProductInfoService;
@@ -23,9 +24,9 @@ import com.fjhx.victoriatourist.service.logistics.LogisticsDetailsService;
 import com.fjhx.victoriatourist.service.logistics.LogisticsInfosService;
 import com.fjhx.victoriatourist.service.order.OrderDetailsService;
 import com.fjhx.victoriatourist.service.order.OrderInfoService;
-import com.fjhx.common.utils.Assert;
 import com.fjhx.victoriatourist.utils.CodeEnum;
 import com.fjhx.wms.entity.stock.dto.StockWaitDetailsDto;
+import com.fjhx.wms.entity.stock.dto.StockWaitDto;
 import com.fjhx.wms.entity.stock.emums.StockWaitType;
 import com.fjhx.wms.entity.stock.po.StockWait;
 import com.fjhx.wms.entity.stock.po.StockWaitDetails;
@@ -259,4 +260,68 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
         logisticsDetailsService.save(logisticsDetails);
     }
 
+    @DSTransactional
+    @Override
+    public void outbounds(StockWaitDto stockWaitDto) {
+        Assert.notEmpty(stockWaitDto.getId(), "待出库id不能为空");
+        StockWait stockWait = stockWaitService.getById(stockWaitDto.getId());
+
+        //创建物流数据
+        LogisticsInfos logisticsInfos = new LogisticsInfos();
+        logisticsInfos.setBusinessId(stockWait.getBusinessId());
+        logisticsInfos.setBusinessCode(stockWait.getBusinessCode());
+        logisticsInfos.setBusinessType(3);//销售订单出库
+        logisticsInfos.setLogisticsCompanyCode(stockWaitDto.getLogisticsCompanyCode());
+        logisticsInfos.setCode(stockWaitDto.getLogisticsCode());
+        logisticsInfos.setWarehouseId(stockWaitDto.getWarehouseId());
+        logisticsInfos.setIsKd100(0);
+        logisticsInfosService.save(logisticsInfos);
+
+        List<StockWaitDetails> stockWaitDetailsList = stockWaitDto.getStockWaitDetailsList();
+
+
+        List<LogisticsDetails> logisticsDetailsList = new ArrayList<>();
+
+        for (StockWaitDetails stockWaitDetailsDto : stockWaitDetailsList) {
+            Assert.notEmpty(stockWaitDetailsDto.getId(), "待出库明细id不能为空");
+            //操作销售订单
+            StockWaitDetails stockWaitDetails = stockWaitDetailsService.getById(stockWaitDetailsDto.getId());
+            OrderDetails orderDetails = orderDetailsService.getById(stockWaitDetails.getBusinessDetailsId());
+            //减少未出库数量
+            orderDetails.setNotIssuedQuantity(orderDetails.getNotIssuedQuantity().subtract(stockWaitDetailsDto.getQuantity()));
+            orderDetailsService.updateById(orderDetails);
+
+            LogisticsDetails logisticsDetails = new LogisticsDetails();
+            logisticsDetails.setLogisticsInfoId(logisticsInfos.getId());
+            logisticsDetails.setLogisticsInfoCode(logisticsInfos.getCode());
+            logisticsDetails.setBusinessDetailsId(orderDetails.getId());
+            logisticsDetails.setReceiptQuantity(orderDetails.getQuantity());
+            logisticsDetailsList.add(logisticsDetails);
+        }
+        logisticsDetailsService.saveBatch(logisticsDetailsList);
+
+        //修改销售订单状态
+        OrderInfo orderInfo = getById(stockWaitDto.getBusinessId());
+        Assert.notEmpty(orderInfo, "查询不到订单信息");
+        int statusFlag = 0;
+        List<OrderDetails> orderDetailsList = orderDetailsService.list(q -> q.eq(OrderDetails::getOrderId, orderInfo.getId()));
+        for (OrderDetails details : orderDetailsList) {
+            //统计已经完全出库的条数
+            if (details.getNotIssuedQuantity().compareTo(BigDecimal.ZERO) <= 0) {
+                statusFlag++;
+            }
+        }
+        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);
+    }
+
+
 }

+ 5 - 1
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/purchase/impl/PurchaseBackServiceImpl.java

@@ -30,11 +30,11 @@ import com.fjhx.wms.entity.stock.po.*;
 import com.fjhx.wms.service.stock.*;
 import com.fjhx.wms.utils.CodeEnum;
 import com.obs.services.internal.ServiceException;
-import com.ruoyi.common.core.domain.entity.SysUser;
 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.Arrays;
 import java.util.List;
@@ -112,6 +112,10 @@ public class PurchaseBackServiceImpl extends ServiceImpl<PurchaseBackMapper, Pur
         stockWaitService.save(stockWait);
         List<StockWaitDetails> stockWaitDetailsList = new ArrayList<>();
         for (PurchaseBackDetails purchaseBackDetails : purchaseBackDetailsList) {
+            //忽略数量为0的退货记录
+            if (BigDecimal.ZERO.compareTo(purchaseBackDetails.getQuantity()) == 0) {
+                continue;
+            }
             StockWaitDetails stockWaitDetails = new StockWaitDetails();
             stockWaitDetails.setStockWaitId(stockWait.getId());
             stockWaitDetails.setProductId(purchaseBackDetails.getProductId());

+ 10 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/stock/dto/StockWaitDto.java

@@ -27,4 +27,14 @@ public class StockWaitDto extends StockWait {
      */
     private List<StockWaitDetails> stockWaitDetailsList;
 
+
+    /**
+     * 物流公司编号
+     */
+    private String logisticsCompanyCode;
+    /**
+     * 物流编号
+     */
+    private String logisticsCode;
+
 }

+ 3 - 1
hx-wms/src/main/java/com/fjhx/wms/service/WmsService.java

@@ -1,6 +1,7 @@
 package com.fjhx.wms.service;
 
 import com.fjhx.wms.entity.stock.dto.StockWaitDetailsDto;
+import com.fjhx.wms.entity.stock.dto.StockWaitDto;
 
 public interface WmsService {
 
@@ -9,4 +10,5 @@ public interface WmsService {
      */
     void outbound(StockWaitDetailsDto stockWaitDetailsDto);
 
-    }
+    void outbounds(StockWaitDto stockWaitDto);
+}

+ 1 - 0
hx-wms/src/main/java/com/fjhx/wms/service/stock/StockWaitService.java

@@ -59,4 +59,5 @@ public interface StockWaitService extends BaseService<StockWait> {
      */
     void delete(Long id);
 
+    Integer getStockJournalType(int businessType);
 }

+ 11 - 24
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockWaitDetailsServiceImpl.java

@@ -9,7 +9,6 @@ import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.wms.entity.stock.dto.StockWaitDetailsDto;
 import com.fjhx.wms.entity.stock.dto.StockWaitDetailsSelectDto;
-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.entity.stock.vo.StockWaitDetailsVo;
@@ -109,39 +108,26 @@ public class StockWaitDetailsServiceImpl extends ServiceImpl<StockWaitDetailsMap
         changeStockWaitStatus(stockWaitDetailsDto);
         StockWaitDetails stockWaitDetails = getById(stockWaitDetailsDto.getId());
         StockWait byId = stockWaitService.getById(stockWaitDetails.getStockWaitId());
-
-        //创建出入库记录
-        StockJournal stockJournal = new StockJournal();
-        stockJournal.setOpType(byId.getType());
-        //根据待入库业务类型创建待出入库记录
         Integer businessType = byId.getBusinessType();
-        if (StockWaitType.BORDER_OF_LINE_IN.getDetailType().equals(businessType)) {
-            //线边回仓库
-            stockJournal.setType(JournalType.BORDER_OF_LINE_IN.getDetailType());
-        } else if (StockWaitType.COMPLETION_IN.getDetailType().equals(businessType)) {
-            //完工入库
-            stockJournal.setType(JournalType.COMPLETION_IN.getDetailType());
-        } else if (StockWaitType.PURCHASE_ARRIVAL_IN.getDetailType().equals(businessType)) {
-            //采购到货
-            stockJournal.setType(JournalType.PURCHASE_ARRIVAL_IN.getDetailType());
-        } else if (StockWaitType.BACK_OUT.getDetailType().equals(businessType)) {
-            //退货出货
-            stockJournal.setType(JournalType.BACK_OUT.getDetailType());
-        } else if (StockWaitType.SALE_ORDER_OUT.getDetailType().equals(businessType)) {
+
+        if (StockWaitType.SALE_ORDER_OUT.getDetailType().equals(businessType)) {
             //销售订单出库
-            stockJournal.setType(JournalType.SALES_OUT.getDetailType());
             wmsService.outbound(stockWaitDetailsDto);
-        } else if (StockWaitType.PRODUCTION_TASK_OUT.getDetailType().equals(businessType)) {
+        }
+        if (StockWaitType.PRODUCTION_TASK_OUT.getDetailType().equals(businessType)) {
             //生产任务待出库
-            stockJournal.setType(JournalType.PRODUCTION_TASK_OUT.getDetailType());
             //减少冻结库存
             StockFrozen stockFrozen = stockFrozenService.getOne(q -> q.eq(StockFrozen::getProductId, stockWaitDetails.getProductId()));
             BigDecimal subtract = stockFrozen.getFrozenQuantity().subtract(stockWaitDetailsDto.getQuantity());
             stockFrozen.setFrozenQuantity(subtract);
             stockFrozenService.updateById(stockFrozen);
-        } else {
-            throw new ServiceException("未知待出入库业务类型");
         }
+
+        //创建出入库记录
+        StockJournal stockJournal = new StockJournal();
+        stockJournal.setOpType(byId.getType());
+        //根据待入库业务类型创建待出入库记录
+        stockJournal.setType(stockWaitService.getStockJournalType(businessType));
         stockJournal.setCode(byId.getType() == 1 ? CodeEnum.SIN_CODE.getCode() : CodeEnum.SOUT_CODE.getCode());
         stockJournal.setWarehouseId(stockWaitDetailsDto.getWarehouseId());
         stockJournal.setBusinessId(byId.getId());
@@ -156,6 +142,7 @@ public class StockWaitDetailsServiceImpl extends ServiceImpl<StockWaitDetailsMap
         stockJournalDetailsService.saveBatch(stockJournalDetailsList);
     }
 
+
     /**
      * 更新待出入库状态
      */

+ 71 - 18
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockWaitServiceImpl.java

@@ -15,12 +15,14 @@ import com.fjhx.wms.entity.arrival.po.ArrivalStockRecordsDetails;
 import com.fjhx.wms.entity.stock.dto.StockWaitDetailsDto;
 import com.fjhx.wms.entity.stock.dto.StockWaitDto;
 import com.fjhx.wms.entity.stock.dto.StockWaitSelectDto;
+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.entity.stock.vo.StockWaitDetailsVo;
 import com.fjhx.wms.entity.stock.vo.StockWaitVo;
 import com.fjhx.wms.entity.warehouse.po.Warehouse;
 import com.fjhx.wms.mapper.stock.StockWaitMapper;
+import com.fjhx.wms.service.WmsService;
 import com.fjhx.wms.service.arrival.ArrivalStockRecordsDetailsService;
 import com.fjhx.wms.service.arrival.ArrivalStockRecordsService;
 import com.fjhx.wms.service.stock.*;
@@ -52,21 +54,25 @@ import java.util.stream.Collectors;
 @Service
 public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait> implements StockWaitService {
     @Autowired
-    ProductInfoService productInfoService;
+    private ProductInfoService productInfoService;
     @Autowired
-    StockService stockService;
+    private StockService stockService;
     @Autowired
-    StockJournalService stockJournalService;
+    private StockJournalService stockJournalService;
     @Autowired
-    StockJournalDetailsService stockJournalDetailsService;
+    private StockJournalDetailsService stockJournalDetailsService;
     @Autowired
-    StockWaitDetailsService stockWaitDetailsService;
+    private StockWaitDetailsService stockWaitDetailsService;
     @Autowired
-    WarehouseService warehouseService;
+    private WarehouseService warehouseService;
     @Autowired
-    ArrivalStockRecordsService arrivalStockRecordsService;
+    private ArrivalStockRecordsService arrivalStockRecordsService;
     @Autowired
-    ArrivalStockRecordsDetailsService arrivalStockRecordsDetailsService;
+    private ArrivalStockRecordsDetailsService arrivalStockRecordsDetailsService;
+    @Autowired
+    private WmsService wmsService;
+    @Autowired
+    private StockFrozenService stockFrozenService;
 
     @Override
     public Page<StockWaitVo> getPage(StockWaitSelectDto dto) {
@@ -196,14 +202,14 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
     public void addByWdly(StockWaitDto stockWaitDto) {
         List<Stock> stockList = new ArrayList<>();
 
-        List<StockWaitDetails> stockWaitDetailsList = stockWaitDto.getStockWaitDetailsList();
-        List<Long> dids = stockWaitDetailsList.stream().map(StockWaitDetails::getId).collect(Collectors.toList());
-        Map<Long, StockWaitDetails> stockWaitDetailsMap = stockWaitDetailsList.stream().collect(Collectors.toMap(StockWaitDetails::getId, Function.identity()));
-        List<StockWaitDetails> stockWaitDetails = stockWaitDetailsService.listByIds(dids);
+        List<StockWaitDetails> stockWaitDetailsDtoList = stockWaitDto.getStockWaitDetailsList();
+        List<Long> dids = stockWaitDetailsDtoList.stream().map(StockWaitDetails::getId).collect(Collectors.toList());
+        Map<Long, StockWaitDetails> stockWaitDetailsMap = stockWaitDetailsDtoList.stream().collect(Collectors.toMap(StockWaitDetails::getId, Function.identity()));
+        List<StockWaitDetails> stockWaitDetailss = stockWaitDetailsService.listByIds(dids);
 
         //已经完全入库数量统计
         Integer statusFlag = 0;
-        for (StockWaitDetails stockWaitDetail : stockWaitDetails) {
+        for (StockWaitDetails stockWaitDetail : stockWaitDetailss) {
             StockWaitDetails temp = stockWaitDetailsMap.get(stockWaitDetail.getId());
             //更新已入库数量
             BigDecimal receiptQuantity = stockWaitDetail.getReceiptQuantity() == null ? BigDecimal.ZERO : stockWaitDetail.getReceiptQuantity();
@@ -219,17 +225,17 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
         }
 
         //操作库存
-        for (StockWaitDetails waitDetails : stockWaitDetailsList) {
+        for (StockWaitDetails waitDetails : stockWaitDetailsDtoList) {
             Stock stock = new Stock();
             stock.setQuantity(waitDetails.getQuantity());
             stock.setProductId(waitDetails.getProductId());
             stockList.add(stock);
         }
 
-        stockWaitDetailsService.updateBatchById(stockWaitDetails);
+        stockWaitDetailsService.updateBatchById(stockWaitDetailss);
         //修改待入库状态
         StockWait stockWait = getById(stockWaitDto.getId());
-        if (statusFlag == stockWaitDetails.size()) {
+        if (statusFlag == stockWaitDetailss.size()) {
             stockWait.setStatus(2);//入库完成
         } else {
             stockWait.setStatus(1);//部分入库
@@ -241,9 +247,10 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
         updateById(stockWait);
 
         //创建出入库记录
+        Integer businessType = stockWaitDto.getBusinessType();
         StockJournal stockJournal = new StockJournal();
         stockJournal.setOpType(stockWaitDto.getType() == 1 ? 1 : 2);
-        stockJournal.setType(stockWaitDto.getType() == 1 ? 4 : 5);
+        stockJournal.setType(getStockJournalType(businessType));
         stockJournal.setCode(stockWait.getType() == 1 ? CodeEnum.SIN_CODE.getCode() : CodeEnum.SOUT_CODE.getCode());
         stockJournal.setWarehouseId(stockWaitDto.getWarehouseId());
         stockJournal.setBusinessId(stockWaitDto.getId());
@@ -265,7 +272,7 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
             arrivalStockRecordsService.save(arrivalStockRecords);
             //创建入库明细
             List<ArrivalStockRecordsDetails> arrivalStockRecordsDetailsList = new ArrayList<>();
-            for (StockWaitDetails waitDetails : stockWaitDetailsList) {
+            for (StockWaitDetails waitDetails : stockWaitDetailsDtoList) {
                 ArrivalStockRecordsDetails arrivalStockRecordsDetails = new ArrivalStockRecordsDetails();
                 arrivalStockRecordsDetails.setArrivalStockRecordsId(arrivalStockRecords.getId());
                 arrivalStockRecordsDetails.setProductInfoId(waitDetails.getProductId());
@@ -275,6 +282,22 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
             }
             arrivalStockRecordsDetailsService.saveBatch(arrivalStockRecordsDetailsList);
         }
+
+        //销售订单出库
+        if (StockWaitType.SALE_ORDER_OUT.getDetailType().equals(businessType)) {
+            wmsService.outbounds(stockWaitDto);
+        }
+        //生产任务待出库
+        if (StockWaitType.PRODUCTION_TASK_OUT.getDetailType().equals(businessType)) {
+            for (StockWaitDetails stockWaitDetailsDto : stockWaitDetailsDtoList) {
+                StockWaitDetails stockWaitDetails = stockWaitDetailsMap.get(stockWaitDetailsDto.getId());
+                //减少冻结库存
+                StockFrozen stockFrozen = stockFrozenService.getOne(q -> q.eq(StockFrozen::getProductId, stockWaitDetails.getProductId()));
+                BigDecimal subtract = stockFrozen.getFrozenQuantity().subtract(stockWaitDetailsDto.getQuantity());
+                stockFrozen.setFrozenQuantity(subtract);
+                stockFrozenService.updateById(stockFrozen);
+            }
+        }
     }
 
     @Override
@@ -287,4 +310,34 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
         this.removeById(id);
     }
 
+    /**
+     * 根据待出入库业务类型获取对应的出入库记录类型
+     *
+     * @return
+     */
+    @Override
+    public Integer getStockJournalType(int businessType) {
+        if (StockWaitType.BORDER_OF_LINE_IN.getDetailType().equals(businessType)) {
+            //线边回仓库
+            return JournalType.BORDER_OF_LINE_IN.getDetailType();
+        } else if (StockWaitType.COMPLETION_IN.getDetailType().equals(businessType)) {
+            //完工入库
+            return JournalType.COMPLETION_IN.getDetailType();
+        } else if (StockWaitType.PURCHASE_ARRIVAL_IN.getDetailType().equals(businessType)) {
+            //采购到货
+            return JournalType.PURCHASE_ARRIVAL_IN.getDetailType();
+        } else if (StockWaitType.BACK_OUT.getDetailType().equals(businessType)) {
+            //退货出货
+            return JournalType.BACK_OUT.getDetailType();
+        } else if (StockWaitType.SALE_ORDER_OUT.getDetailType().equals(businessType)) {
+            //销售订单出库
+            return JournalType.SALES_OUT.getDetailType();
+        } else if (StockWaitType.PRODUCTION_TASK_OUT.getDetailType().equals(businessType)) {
+            //生产任务待出库
+            return JournalType.PRODUCTION_TASK_OUT.getDetailType();
+        } else {
+            throw new ServiceException("未知待出入库业务类型");
+        }
+    }
+
 }