Explorar o código

Merge remote-tracking branch 'origin/master'

24282 %!s(int64=2) %!d(string=hai) anos
pai
achega
f06132b4f9
Modificáronse 22 ficheiros con 243 adicións e 107 borrados
  1. 12 11
      hx-item/src/main/java/com/fjhx/item/service/product/impl/ProductInfoServiceImpl.java
  2. 2 1
      hx-purchase/src/main/java/com/fjhx/purchase/service/arrival/impl/ArrivalServiceImpl.java
  3. 2 1
      hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchasePayRecordDetailServiceImpl.java
  4. 2 1
      hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchasePayRecordServiceImpl.java
  5. 2 1
      hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchaseServiceImpl.java
  6. 2 1
      hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeDetailServiceImpl.java
  7. 2 1
      hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeServiceImpl.java
  8. 2 1
      hx-sale/src/main/java/com/fjhx/sale/flow/PurchaseFlowByWdly.java
  9. 2 1
      hx-sale/src/main/java/com/fjhx/sale/service/documents/impl/DocumentsServiceImpl.java
  10. 2 1
      hx-supply/src/main/java/com/fjhx/supply/service/supplier/impl/SupplierInfoServiceImpl.java
  11. 6 1
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/WmsServiceImpl.java
  12. 6 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/order/OrderInfoService.java
  13. 66 16
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/order/impl/OrderInfoServiceImpl.java
  14. 5 1
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/purchase/impl/PurchaseBackServiceImpl.java
  15. 2 1
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/quality/impl/QualityInfoServiceImpl.java
  16. 10 0
      hx-wms/src/main/java/com/fjhx/wms/entity/stock/dto/StockWaitDto.java
  17. 5 0
      hx-wms/src/main/java/com/fjhx/wms/entity/stock/dto/StockWaitSelectDto.java
  18. 6 1
      hx-wms/src/main/java/com/fjhx/wms/service/WmsService.java
  19. 1 0
      hx-wms/src/main/java/com/fjhx/wms/service/stock/StockWaitService.java
  20. 9 8
      hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockServiceImpl.java
  21. 11 24
      hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockWaitDetailsServiceImpl.java
  22. 86 35
      hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockWaitServiceImpl.java

+ 12 - 11
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;
@@ -180,7 +181,7 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
             //将部门id转为字符串(帮助解决前端问题)
             json.put("deptId", json.getString("deptId"));
 
-            record.setVictoriatouristJson(json.toJSONString());
+            record.setVictoriatouristJson(json.toJSONString(JSONWriter.Feature.WriteLongAsString));
         }
 
         return page;
@@ -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);
@@ -446,7 +447,7 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
         if (ObjectUtil.isNotEmpty(victoriatouristJson)) {
             JSONObject json = JSONObject.parseObject(victoriatouristJson);
             json.put("deptId", SecurityUtils.getDeptId());
-            productInfoDto.setVictoriatouristJson(json.toJSONString());
+            productInfoDto.setVictoriatouristJson(json.toJSONString(JSONWriter.Feature.WriteLongAsString));
         }
         add(productInfoDto);
     }
@@ -510,7 +511,7 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
         String victoriatouristJson = productInfo.getVictoriatouristJson();
         JSONObject json = ObjectUtil.isNotEmpty(victoriatouristJson) ? JSONObject.parseObject(victoriatouristJson) : new JSONObject();
         json.put("deptId", productInfoDto.getDeptId());
-        productInfo.setVictoriatouristJson(json.toJSONString());
+        productInfo.setVictoriatouristJson(json.toJSONString(JSONWriter.Feature.WriteLongAsString));
         updateById(productInfo);
     }
 

+ 2 - 1
hx-purchase/src/main/java/com/fjhx/purchase/service/arrival/impl/ArrivalServiceImpl.java

@@ -3,6 +3,7 @@ package com.fjhx.purchase.service.arrival.impl;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson2.JSONObject;
+import com.alibaba.fastjson2.JSONWriter;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
@@ -249,7 +250,7 @@ public class ArrivalServiceImpl extends ServiceImpl<ArrivalMapper, Arrival> impl
 
         json.put("arrivalId", arrival.getId());
         json.put("arrivalCode", arrival.getCode());
-        stockWait.setVictoriatouristJson(json.toJSONString());
+        stockWait.setVictoriatouristJson(json.toJSONString(JSONWriter.Feature.WriteLongAsString));
         stockWaitService.save(stockWait);
 
         //取出到货明细

+ 2 - 1
hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchasePayRecordDetailServiceImpl.java

@@ -2,6 +2,7 @@ package com.fjhx.purchase.service.purchase.impl;
 
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson2.JSONObject;
+import com.alibaba.fastjson2.JSONWriter;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -61,7 +62,7 @@ public class PurchasePayRecordDetailServiceImpl extends ServiceImpl<PurchasePayR
         String victoriatouristJson = purchase.getVictoriatouristJson();
         JSONObject json = ObjectUtil.isEmpty(victoriatouristJson) ? new JSONObject() : JSONObject.parseObject(victoriatouristJson);
         json.put("paidAmount", BigDecimal.ZERO);
-        purchase.setVictoriatouristJson(json.toJSONString());
+        purchase.setVictoriatouristJson(json.toJSONString(JSONWriter.Feature.WriteLongAsString));
         purchaseService.updateById(purchase);
 
         //清空付款记录记录信息

+ 2 - 1
hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchasePayRecordServiceImpl.java

@@ -2,6 +2,7 @@ package com.fjhx.purchase.service.purchase.impl;
 
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson2.JSONObject;
+import com.alibaba.fastjson2.JSONWriter;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.common.utils.Assert;
 import com.fjhx.purchase.entity.purchase.dto.PurchasePayRecordDto;
@@ -83,7 +84,7 @@ public class PurchasePayRecordServiceImpl extends ServiceImpl<PurchasePayRecordM
             String victoriatouristJson = purchase.getVictoriatouristJson();
             JSONObject json = ObjectUtil.isEmpty(victoriatouristJson) ? new JSONObject() : JSONObject.parseObject(victoriatouristJson);
             json.put("paidAmount", add);
-            purchase.setVictoriatouristJson(json.toJSONString());
+            purchase.setVictoriatouristJson(json.toJSONString(JSONWriter.Feature.WriteLongAsString));
 
             purchaseService.updateById(purchase);
 

+ 2 - 1
hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchaseServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import com.alibaba.fastjson2.JSONObject;
+import com.alibaba.fastjson2.JSONWriter;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
@@ -238,7 +239,7 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
                     JSONObject json = JSONObject.parseObject(victoriatouristJson);
                     String warehouseName = warehousesMap.get(json.getLong("receiptWarehouseId"));
                     json.put("receiptWarehouseName", warehouseName);
-                    purchaseVo.setVictoriatouristJson(json.toJSONString());
+                    purchaseVo.setVictoriatouristJson(json.toJSONString(JSONWriter.Feature.WriteLongAsString));
                 }
             }
             //赋值到货状态

+ 2 - 1
hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeDetailServiceImpl.java

@@ -2,6 +2,7 @@ package com.fjhx.purchase.service.subscribe.impl;
 
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONWriter;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -179,7 +180,7 @@ public class SubscribeDetailServiceImpl extends ServiceImpl<SubscribeDetailMappe
                 if (ObjectUtil.isNotEmpty(victoriatouristJson)) {
                     JSONObject json = JSONObject.parseObject(victoriatouristJson);
                     json.put("receiptWarehouseName", warehousesMap.get(json.getLong("receiptWarehouseId")));
-                    subscribeDetailVo.setVictoriatouristJson(json.toJSONString());
+                    subscribeDetailVo.setVictoriatouristJson(json.toJSONString(JSONWriter.Feature.WriteLongAsString));
                 }
             }
         }

+ 2 - 1
hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeServiceImpl.java

@@ -2,6 +2,7 @@ package com.fjhx.purchase.service.subscribe.impl;
 
 import cn.hutool.extra.spring.SpringUtil;
 import com.alibaba.fastjson.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;
@@ -127,7 +128,7 @@ public class SubscribeServiceImpl extends ServiceImpl<SubscribeMapper, Subscribe
             Warehouse warehouse = warehouseService.getById(receiptWarehouseId);
             if (ObjectUtils.isNotEmpty(victoriatouristJson)) {
                 json.put("receiptWarehouseName", warehouse.getName());
-                subscribe.setVictoriatouristJson(json.toJSONString());
+                subscribe.setVictoriatouristJson(json.toJSONString(JSONWriter.Feature.WriteLongAsString));
             }
         }
         return subscribe;

+ 2 - 1
hx-sale/src/main/java/com/fjhx/sale/flow/PurchaseFlowByWdly.java

@@ -1,6 +1,7 @@
 package com.fjhx.sale.flow;
 
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONWriter;
 import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
@@ -123,7 +124,7 @@ public class PurchaseFlowByWdly extends FlowDelegate {
                 String victoriatouristJson1 = purchase.getVictoriatouristJson();
                 JSONObject json1 = JSONObject.parseObject(victoriatouristJson1);
                 json1.put("receiptWarehouseId", receiptWarehouseId);
-                purchase.setVictoriatouristJson(json1.toJSONString());
+                purchase.setVictoriatouristJson(json1.toJSONString(JSONWriter.Feature.WriteLongAsString));
                 purchaseService.updateById(purchase);
             }
             return purchase.getId();

+ 2 - 1
hx-sale/src/main/java/com/fjhx/sale/service/documents/impl/DocumentsServiceImpl.java

@@ -3,6 +3,7 @@ package com.fjhx.sale.service.documents.impl;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONWriter;
 import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -392,7 +393,7 @@ public class DocumentsServiceImpl extends ServiceImpl<DocumentsMapper, Documents
             pdfData.setDocumentId(documents.getId());
             pdfData.setContractCode(contract.getCode());
             pdfData.setDataType(0);//报关单
-            pdfData.setContent(data.toJSONString());
+            pdfData.setContent(data.toJSONString(JSONWriter.Feature.WriteLongAsString));
         }
         return pdfData;
     }

+ 2 - 1
hx-supply/src/main/java/com/fjhx/supply/service/supplier/impl/SupplierInfoServiceImpl.java

@@ -5,6 +5,7 @@ import cn.hutool.core.collection.ListUtil;
 import cn.hutool.core.stream.CollectorUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.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;
@@ -132,7 +133,7 @@ public class SupplierInfoServiceImpl extends ServiceImpl<SupplierInfoMapper, Sup
         JSONObject json = ObjectUtil.isNotEmpty(result.getVictoriatouristJson()) ? JSONObject.parseObject(result.getVictoriatouristJson()) : new JSONObject();
         json.put("accountPeriod",json.getString("accountPeriod"));
         json.put("returnPeriod",json.getString("returnPeriod"));
-        result.setVictoriatouristJson(json.toJSONString());
+        result.setVictoriatouristJson(json.toJSONString(JSONWriter.Feature.WriteLongAsString));
         return result;
     }
 

+ 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);
+    }
 }

+ 6 - 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,9 @@ public interface OrderInfoService extends BaseService<OrderInfo> {
      * 销售订单出库
      */
     void outbound(StockWaitDetailsDto stockWaitDetailsDto);
+
+    /**
+     * 销售订单出库 多条
+     */
+    void outbounds(StockWaitDto stockWaitDto);
 }

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

@@ -5,8 +5,8 @@ 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;
 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 +23,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;
@@ -54,8 +54,6 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
     @Autowired
     private CustomerService customerService;
     @Autowired
-    private AreaInfoService areaInfoService;
-    @Autowired
     private OrderDetailsService orderDetailsService;
     @Autowired
     private ProductInfoService productInfoService;
@@ -73,12 +71,7 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
     public Page<OrderInfoVo> getPage(OrderInfoSelectDto dto) {
         IWrapper<OrderInfo> wrapper = getWrapper();
         wrapper.like(OrderInfo::getCode, dto.getKeyword());
-//        if (ObjectUtil.isEmpty(dto.getType())) {
-//            //默认销售订单
-//            wrapper.in("oi", OrderInfo::getType, 1, 2);
-//        } else {
         wrapper.eq("oi", OrderInfo::getType, dto.getType());
-//        }
         wrapper.eq("oi", OrderInfo::getStatus, dto.getStatus());//根据状态过滤
         wrapper.orderByDesc("oi", OrderInfo::getId);
         Page<OrderInfoVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
@@ -126,13 +119,6 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
         List<OrderDetails> orderDetailsList = orderInfoDto.getOrderDetailsList();
         Assert.notEmpty(orderDetailsList, "订单明细不能为空");
 
-//        Integer type = orderInfoDto.getType();
-//        if (type == 3) {
-//            // 获取京东客户id
-//            Long jdCustomerId = systemConfigService.getValue(SystemConfigKeyConstant.JD_CUSTOMER_ID, Long.class);
-//            orderInfoDto.setCustomerInfoId(jdCustomerId);
-//        }
-
         // 订单时间
         orderInfoDto.setOrderTime(ObjectUtil.defaultIfNull(orderInfoDto.getOrderTime(), new Date()));
 
@@ -259,4 +245,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());

+ 2 - 1
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/quality/impl/QualityInfoServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONWriter;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -256,7 +257,7 @@ public class QualityInfoServiceImpl extends ServiceImpl<QualityInfoMapper, Quali
             }
             json.put("frozenQuantity", frozenQuantity);
 
-            stock.setVictoriatouristJson(json.toJSONString());
+            stock.setVictoriatouristJson(json.toJSONString(JSONWriter.Feature.WriteLongAsString));
             stockList.add(stock);
 
             StockJournalDetails stockJournalDetails = new StockJournalDetails();

+ 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;
+
 }

+ 5 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/stock/dto/StockWaitSelectDto.java

@@ -24,4 +24,9 @@ public class StockWaitSelectDto extends BaseSelectDto {
      */
     private Integer status;
 
+    /**
+     * 待出入库业务类型
+     */
+    private Integer businessType;
+
 }

+ 6 - 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,8 @@ 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);
 }

+ 9 - 8
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONWriter;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -153,7 +154,7 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
                 BigDecimal defectiveQuantity = json.getBigDecimal("defectiveQuantity");
                 defectiveQuantity = ObjectUtil.isEmpty(defectiveQuantity) ? BigDecimal.ZERO : defectiveQuantity;
                 json.put("defectiveQuantity", defectiveQuantity);
-                item.setVictoriatouristJson(json.toJSONString());
+                item.setVictoriatouristJson(json.toJSONString(JSONWriter.Feature.WriteLongAsString));
             });
         }
 
@@ -178,7 +179,7 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
             JSONObject json = ObjectUtil.isNotEmpty(victoriatouristJson) ? JSONObject.parseObject(victoriatouristJson) : new JSONObject();
             String warehouseName = warehouseMap.get(json.getLong("warehouseId"));
             json.put("warehouseName", warehouseName);
-            stockVo.setVictoriatouristJson(json.toJSONString());
+            stockVo.setVictoriatouristJson(json.toJSONString(JSONWriter.Feature.WriteLongAsString));
         }
         return page;
     }
@@ -210,7 +211,7 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
             BigDecimal defectiveQuantity = stockVo.getDefectiveQuantity();
             defectiveQuantity = defectiveQuantity == null ? BigDecimal.ZERO : defectiveQuantity;
             json.put("defectiveQuantity", defectiveQuantity);
-            stockVo.setVictoriatouristJson(json.toJSONString());
+            stockVo.setVictoriatouristJson(json.toJSONString(JSONWriter.Feature.WriteLongAsString));
         }
 
         //赋值产品名称
@@ -238,7 +239,7 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
             BigDecimal defectiveQuantity = json.getBigDecimal("defectiveQuantity");
             defectiveQuantity = ObjectUtil.isEmpty(defectiveQuantity) ? BigDecimal.ZERO : defectiveQuantity;
             json.put("defectiveQuantity", defectiveQuantity);
-            item.setVictoriatouristJson(json.toJSONString());
+            item.setVictoriatouristJson(json.toJSONString(JSONWriter.Feature.WriteLongAsString));
         });
 
         //赋值产品分类
@@ -425,7 +426,7 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
                 frozenQuantity = frozenQuantity == null ? BigDecimal.ZERO : frozenQuantity;
                 frozenQuantity = frozenQuantity.add(stock.getQuantity());
                 json.put("frozenQuantity", frozenQuantity);
-                oldStocks.setVictoriatouristJson(json.toJSONString());
+                oldStocks.setVictoriatouristJson(json.toJSONString(JSONWriter.Feature.WriteLongAsString));
             } else if (type == 4) {
                 //维多利亚待出库操作次品库存
                 String victoriatouristJson = oldStocks.getVictoriatouristJson();
@@ -441,7 +442,7 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
                     throw new ServiceException("以下商品次品库存不足,无法出库:" + productInfo.getName());
                 }
                 json.put("defectiveQuantity", defectiveQuantity);
-                oldStocks.setVictoriatouristJson(json.toJSONString());
+                oldStocks.setVictoriatouristJson(json.toJSONString(JSONWriter.Feature.WriteLongAsString));
             } else {
                 throw new ServiceException("未知库存操作类型");
             }
@@ -481,7 +482,7 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
         }
         stock1.setQuantity(quantity.add(stock.getQuantity()));
         json.put("defectiveQuantity", defectiveQuantity.subtract(stock.getQuantity()));
-        stock1.setVictoriatouristJson(json.toJSONString());
+        stock1.setVictoriatouristJson(json.toJSONString(JSONWriter.Feature.WriteLongAsString));
         updateById(stock1);
     }
 
@@ -520,7 +521,7 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
         }
         stock1.setQuantity(quantity.subtract(stock.getQuantity()));
         json.put("defectiveQuantity", defectiveQuantity.add(stock.getQuantity()));
-        stock1.setVictoriatouristJson(json.toJSONString());
+        stock1.setVictoriatouristJson(json.toJSONString(JSONWriter.Feature.WriteLongAsString));
         updateById(stock1);
     }
 

+ 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);
     }
 
+
     /**
      * 更新待出入库状态
      */

+ 86 - 35
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockWaitServiceImpl.java

@@ -2,7 +2,8 @@ package com.fjhx.wms.service.stock.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
-import com.alibaba.fastjson.JSONObject;
+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.mybatisplus.extension.plugins.pagination.Page;
@@ -15,12 +16,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,29 +55,34 @@ 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) {
         IWrapper<StockWait> wrapper = getWrapper();
-        wrapper.orderByDesc("sw", StockWait::getId);
         //过滤入库/出库
         wrapper.eq(StockWait::getType, dto.getType());
+        wrapper.eq("sw", StockWait::getBusinessType, dto.getBusinessType());
         wrapper.eq(StockWait::getBusinessCode, dto.getKeyword());
+        wrapper.orderByDesc("sw", StockWait::getId);
         Page<StockWaitVo> page = this.baseMapper.getPage1(dto.getPage(), wrapper);
 
         List<StockWaitVo> records = page.getRecords();
@@ -128,7 +136,7 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
             }
             JSONObject json = JSONObject.parseObject(victoriatouristJson);
             json.put("receiptWarehouseName", warehousesMap.get(json.getLong("receiptWarehouseId")));
-            stockWaitVo.setVictoriatouristJson(json.toJSONString());
+            stockWaitVo.setVictoriatouristJson(json.toJSONString(JSONWriter.Feature.WriteLongAsString));
         }
 
         return page;
@@ -196,40 +204,28 @@ 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();
             stockWaitDetail.setReceiptQuantity(receiptQuantity.add(temp.getQuantity()));
-//            if (stockWaitDetail.getReceiptQuantity().compareTo(stockWaitDetail.getQuantity()) > 0) {
-//                throw new ServiceException("入库数量+已入库数量不能大于待采购数量");
-//            }
 
             //计算已经完全入库的数量
             if (stockWaitDetail.getReceiptQuantity().compareTo(stockWaitDetail.getQuantity()) >= 0) {
                 statusFlag++;
             }
         }
-
-        //操作库存
-        for (StockWaitDetails waitDetails : stockWaitDetailsList) {
-            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);//部分入库
@@ -237,13 +233,21 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
         String victoriatouristJson = stockWait.getVictoriatouristJson();
         JSONObject json = ObjectUtil.isNotEmpty(victoriatouristJson) ? JSONObject.parseObject(victoriatouristJson) : new JSONObject();
         json.put("receiptWarehouseId", stockWaitDto.getWarehouseId());
-        stockWait.setVictoriatouristJson(json.toJSONString());
+        stockWait.setVictoriatouristJson(json.toJSONString(JSONWriter.Feature.WriteLongAsString));
         updateById(stockWait);
 
+        //操作库存
+        for (StockWaitDetails waitDetails : stockWaitDetailsDtoList) {
+            Stock stock = new Stock();
+            stock.setQuantity(waitDetails.getQuantity());
+            stock.setProductId(waitDetails.getProductId());
+            stockList.add(stock);
+        }
         //创建出入库记录
+        Integer businessType = stockWait.getBusinessType();
         StockJournal stockJournal = new StockJournal();
-        stockJournal.setOpType(stockWaitDto.getType() == 1 ? 1 : 2);
-        stockJournal.setType(stockWaitDto.getType() == 1 ? 4 : 5);
+        stockJournal.setOpType(stockWaitDto.getType());
+        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());
@@ -255,7 +259,7 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
         stockJournalDetailsService.saveBatch(stockJournalDetailsList);
 
         //如果是采购到货 创建待质检记录
-        if (stockWait.getBusinessType() == StockWaitType.PURCHASE_ARRIVAL_IN.getDetailType()) {
+        if (StockWaitType.PURCHASE_ARRIVAL_IN.getDetailType().equals(businessType)) {
             //创建采购到货入库记录
             ArrivalStockRecords arrivalStockRecords = new ArrivalStockRecords();
             arrivalStockRecords.setStockWaitId(stockWait.getId());
@@ -265,7 +269,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 +279,23 @@ 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 +308,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("未知待出入库业务类型");
+        }
+    }
+
 }