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

+ 5 - 0
hx-item/src/main/java/com/fjhx/item/entity/product/po/ProductInfo.java

@@ -87,4 +87,9 @@ public class ProductInfo extends BasePo {
      */
     private String ehsdJson;
 
+    /**
+     * 条码编号
+     */
+    private String barCode;
+
 }

+ 0 - 1
hx-item/src/main/java/com/fjhx/item/service/product/impl/ProductInfoServiceImpl.java

@@ -305,7 +305,6 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
                 result.setVictoriatouristJson(JSONObject.toJSONString(json));
             }
         }
-        result.getVictoriatouristJson();
         return result;
     }
 

+ 2 - 0
hx-item/src/main/resources/mapper/product/ProductInfoMapper.xml

@@ -19,6 +19,7 @@
             pi.update_user,
             pi.update_time,
             pi.victoriatourist_json,
+            pi.bar_code,
             IF(DATEDIFF(now(),pi.create_time)> json_unquote( victoriatourist_json -> '$.growUpDay' ),3,IF( DATEDIFF(now(),pi.create_time)> json_unquote( victoriatourist_json -> '$.newProductsDay' ), 2, 1 )) AS lifeCycle
         FROM
             product_info pi
@@ -99,6 +100,7 @@
                pi.update_user,
                pi.update_time,
                pi.ehsd_json,
+               pi.bar_code,
                c.`name` customerName
         FROM product_info pi
                  LEFT JOIN product_classify pc ON pi.product_classify_id = pc.id

+ 9 - 4
hx-purchase/src/main/java/com/fjhx/purchase/entity/arrival/po/ArrivalDetail.java

@@ -1,18 +1,18 @@
 package com.fjhx.purchase.entity.arrival.po;
 
-import com.ruoyi.common.core.domain.BasePo;
 import com.baomidou.mybatisplus.annotation.TableName;
-import java.math.BigDecimal;
-import java.util.Date;
+import com.ruoyi.common.core.domain.BasePo;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.math.BigDecimal;
+
 /**
  * <p>
  * 到货明细单
  * </p>
  *
- * @author 
+ * @author
  * @since 2023-04-07
  */
 @Getter
@@ -50,4 +50,9 @@ public class ArrivalDetail extends BasePo {
      */
     private String remark;
 
+    /**
+     * 发货明细id
+     */
+    private Long deliverGoodsDetailsId;
+
 }

+ 37 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/deliver/DeliverGoodsDetailsPo.java

@@ -0,0 +1,37 @@
+package com.fjhx.purchase.entity.deliver;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 发货明细
+ * </p>
+ *
+ * @author
+ * @since 2023-04-13
+ */
+@Getter
+@Setter
+@TableName("deliver_goods_details")
+public class DeliverGoodsDetailsPo extends BasePo {
+    /**
+     * 发货id
+     */
+    private Long deliverGoodsId;
+
+    /**
+     * 采购单明细id
+     */
+    private Long purchaseDetailId;
+
+    /**
+     * 发货数量
+     */
+    private BigDecimal deliverGoodsQuantity;
+
+}

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

@@ -1,7 +1,10 @@
 package com.fjhx.purchase.service;
 
+import com.fjhx.purchase.entity.deliver.DeliverGoodsDetailsPo;
 import com.fjhx.purchase.entity.deliver.DeliverGoodsPo;
 
+import java.util.List;
+
 public interface WdlyService {
     /**
      * 修改发货记录为到货
@@ -12,4 +15,8 @@ public interface WdlyService {
      * 获取发货信息
      */
     DeliverGoodsPo getDeliverGoodsInfo(Long id);
+
+    List<DeliverGoodsDetailsPo> getDeliverGoodsDetailsInfo(Long id);
+
+    void addAbnormalInfo(Long linkId, String linkCode);
 }

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

@@ -17,6 +17,7 @@ import com.fjhx.purchase.entity.arrival.dto.ArrivalSelectDto;
 import com.fjhx.purchase.entity.arrival.po.Arrival;
 import com.fjhx.purchase.entity.arrival.po.ArrivalDetail;
 import com.fjhx.purchase.entity.arrival.vo.ArrivalVo;
+import com.fjhx.purchase.entity.deliver.DeliverGoodsDetailsPo;
 import com.fjhx.purchase.entity.deliver.DeliverGoodsPo;
 import com.fjhx.purchase.entity.purchase.po.Purchase;
 import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
@@ -206,8 +207,8 @@ public class ArrivalServiceImpl extends ServiceImpl<ArrivalMapper, Arrival> impl
         stockWait.setBusinessId(purchase.getId());
         stockWait.setBusinessCode(purchase.getCode());
 
-        json.put("arrivalId",arrival.getId());
-        json.put("arrivalCode",arrival.getCode());
+        json.put("arrivalId", arrival.getId());
+        json.put("arrivalCode", arrival.getCode());
         stockWait.setVictoriatouristJson(json.toJSONString());
         stockWaitService.save(stockWait);
 
@@ -222,10 +223,26 @@ public class ArrivalServiceImpl extends ServiceImpl<ArrivalMapper, Arrival> impl
         List<PurchaseDetail> purchaseDetailList = purchaseDetailService.listByIds(arrivalDids);
         if (ObjectUtil.isNotEmpty(purchaseDetailList)) {
             Map<Long, PurchaseDetail> purchaseDetailMap = purchaseDetailList.stream().collect(Collectors.toMap(PurchaseDetail::getId, Function.identity()));
+            //获取发货明细
+            List<DeliverGoodsDetailsPo> deliverGoodsDetailsInfo = wdlyService.getDeliverGoodsDetailsInfo(deliverGoodsId);
+            Map<Long, DeliverGoodsDetailsPo> deliverGoodsDetailsInfoMap = deliverGoodsDetailsInfo.stream().collect(Collectors.toMap(DeliverGoodsDetailsPo::getId, Function.identity()));
+            int flag = 0;//到货数量不等于发货数量计数
             for (ArrivalDetail d : arrivalDetailList) {
                 Long id = IdWorker.getId();
                 d.setId(id);
                 d.setArrivalId(arrival.getId());
+
+                Long deliverGoodsDetailsId = d.getDeliverGoodsDetailsId();
+                DeliverGoodsDetailsPo deliverGoodsDetailsPo = deliverGoodsDetailsInfoMap.get(deliverGoodsDetailsId);
+                if (ObjectUtil.isEmpty(deliverGoodsDetailsPo)) {
+                    throw new ServiceException("未找到发货明细信息");
+                }
+
+                //如果到货数量不等于发货数量 创建异常
+                if (deliverGoodsDetailsPo.getDeliverGoodsQuantity().compareTo(d.getCount()) != 0) {
+                    flag++;
+                }
+
                 StockWaitDetails stockWaitDetails = new StockWaitDetails();
                 stockWaitDetails.setStockWaitId(stockWait.getId());
                 //业务明细id设置成到货明细id
@@ -238,6 +255,11 @@ public class ArrivalServiceImpl extends ServiceImpl<ArrivalMapper, Arrival> impl
                 stockWaitDetails.setPurchaseQuantity(count);
                 stockWaitDetailsList.add(stockWaitDetails);
             }
+
+            //存在到货数量不等于发货数量 创建异常
+            if (flag != 0) {
+                wdlyService.addAbnormalInfo(arrival.getId(), arrival.getCode());
+            }
         }
         arrivalDetailService.saveBatch(arrivalDetailList);
         DynamicDataSourceContextHolder.push(SourceConstant.WMS);

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

@@ -1,21 +1,32 @@
 package com.fjhx.victoriatourist.service;
 
 import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.fjhx.purchase.entity.deliver.DeliverGoodsDetailsPo;
 import com.fjhx.purchase.entity.deliver.DeliverGoodsPo;
 import com.fjhx.purchase.service.WdlyService;
+import com.fjhx.victoriatourist.entity.abnormal.po.AbnormalInfo;
 import com.fjhx.victoriatourist.entity.deliver.po.DeliverGoods;
+import com.fjhx.victoriatourist.entity.deliver.po.DeliverGoodsDetails;
+import com.fjhx.victoriatourist.service.abnormal.AbnormalInfoService;
+import com.fjhx.victoriatourist.service.deliver.DeliverGoodsDetailsService;
 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;
 
+import java.util.List;
+
 @Service
 public class WdlyServiceImpl implements WdlyService {
     @Autowired
     DeliverGoodsService deliverGoodsService;
     @Autowired
     OrderInfoService orderInfoService;
+    @Autowired
+    DeliverGoodsDetailsService deliverGoodsDetailsService;
+    @Autowired
+    AbnormalInfoService abnormalInfoService;
 
     /**
      * 更新发货记录的状态为到货
@@ -36,4 +47,23 @@ public class WdlyServiceImpl implements WdlyService {
         DeliverGoodsPo deliverGoodsPo = BeanUtil.copyProperties(byId, DeliverGoodsPo.class);
         return deliverGoodsPo;
     }
+
+    @Override
+    public List<DeliverGoodsDetailsPo> getDeliverGoodsDetailsInfo(Long id) {
+        List<DeliverGoodsDetails> list = deliverGoodsDetailsService.list(q -> q.eq(DeliverGoodsDetails::getDeliverGoodsId, id));
+        List<DeliverGoodsDetailsPo> deliverGoodsDetailsPos = BeanUtil.copyToList(list, DeliverGoodsDetailsPo.class);
+        return deliverGoodsDetailsPos;
+    }
+
+    @Override
+    public void addAbnormalInfo(Long linkId,String linkCode){
+        AbnormalInfo abnormalInfo = new AbnormalInfo();
+        abnormalInfo.setStatus(0);
+        abnormalInfo.setId(IdWorker.getId());
+        abnormalInfo.setType(40);
+        abnormalInfo.setLinkId(linkId);
+        abnormalInfo.setLinkCode(linkCode);
+        abnormalInfo.setTitle("到货数量与发货数量不一致");
+        abnormalInfoService.save(abnormalInfo);
+    }
 }

+ 41 - 22
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdOrderServiceImpl.java

@@ -91,6 +91,10 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
         wrapper.eq("jo", JdOrder::getStatus, dto.getStatus());
         wrapper.orderByDesc("jo", JdOrder::getId);
 
+        if (ObjectUtil.isNotEmpty(dto.getKeyword())) {
+            wrapper.and(q -> q.like(JdOrderVo::getCode, dto.getKeyword()));
+        }
+
         Page<JdOrderVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<JdOrderVo> records = page.getRecords();
         if (records.size() == 0) {
@@ -286,6 +290,7 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
         //创建明细
         List<StockTransferDetails> stockTransferDetailsList = new ArrayList<>();
         List<JdOrderDetails> jdOrderDetailsList = jdOrderDto.getJdOrderDetailsList();
+        List<Stock> stockList = new ArrayList<>();
         for (JdOrderDetails jdOrderDetails : jdOrderDetailsList) {
             StockTransferDetails stockTransferDetails = new StockTransferDetails();
             stockTransferDetails.setBusinessDetailsId(jdOrderDetails.getId());
@@ -293,8 +298,30 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
             stockTransferDetails.setOutQuantity(jdOrderDetails.getQuantity());
             stockTransferDetails.setProductId(jdOrderDetails.getProductId());
             stockTransferDetailsList.add(stockTransferDetails);
+
+            //创建出库数据
+            Stock stock = new Stock();
+            stock.setProductId(stockTransferDetails.getProductId());
+            stock.setQuantity(stockTransferDetails.getInQuantity());
+            stockList.add(stock);
         }
         stockTransferDetailsService.saveBatch(stockTransferDetailsList);
+
+        //创建出库记录
+        StockJournal stockJournal1 = new StockJournal();
+        stockJournal1.setOpType(2);
+        stockJournal1.setType(JournalType.ADJUSTING_OUT.getDetailType());
+        stockJournal1.setCode(stockTransfer.getCode());
+        stockJournal1.setWarehouseId(stockTransfer.getOutWarehouseId());
+        stockJournal1.setBusinessId(stockTransfer.getId());
+        //保存出库记录
+        stockJournalService.save(stockJournal1);
+        if (ObjectUtil.isNotEmpty(stockList)) {
+            //出库
+            List<StockJournalDetails> stockJournalDetailsList1 = stockService.ModifyInventory(stockJournal1.getId(), 2, stockList, stockTransfer.getOutWarehouseId());
+            //保存出库记录明细
+            stockJournalDetailsService.saveBatch(stockJournalDetailsList1);
+        }
     }
 
     @Override
@@ -302,6 +329,11 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
         IWrapper<JdOrder> wrapper = getWrapper();
         wrapper.eq("st.in_status", dto.getInStatus());
         wrapper.orderByDesc("jdo.create_time");
+
+        if (ObjectUtil.isNotEmpty(dto.getKeyword())) {
+            wrapper.and(q -> q.like(JdOrderVo::getCode, dto.getKeyword()));
+        }
+
         Page<JdOrderVo> page = this.baseMapper.getReceivePage(dto.getPage(), wrapper);
         List<JdOrderVo> records = page.getRecords();
         // 赋值国省市
@@ -327,7 +359,7 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
         //明细
         List<Stock> stockList = new ArrayList<>();
         List<StockTransferDetails> stockTransferDetailsList = stockTransferDto.getStockTransferDetailsList();
-        if(ObjectUtil.isNotEmpty(stockTransferDetailsList)) {
+        if (ObjectUtil.isNotEmpty(stockTransferDetailsList)) {
             //获取数据库中的数据
             List<Long> ids = stockTransferDetailsList.stream().map(StockTransferDetails::getId).collect(Collectors.toList());
             List<StockTransferDetails> oldstockTransferDetailsList = stockTransferDetailsService.listByIds(ids);
@@ -342,20 +374,22 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
 
                 //调仓接收数量与发出数量不一致
                 StockTransferDetails oldstockTransferDetails = oldstockTransferDetailsMap.get(stockTransferDetails.getId());
-                if (stockTransferDetails.getInQuantity().compareTo(oldstockTransferDetails.getOutQuantity())!=0) {
-                    abnormalFlag =1;
+                //计算接收总数 接收数+已经接收数
+                BigDecimal inQuantitySum = oldstockTransferDetails.getInQuantity().add(stockTransferDetails.getInQuantity());
+                if (inQuantitySum.compareTo(oldstockTransferDetails.getOutQuantity()) != 0) {
+                    abnormalFlag = 1;
                 }
 
                 //计算已入库数量
                 BigDecimal inCount = oldstockTransferDetails.getInQuantity().add(stockTransferDetails.getInQuantity());
-                if (inCount.compareTo(oldstockTransferDetails.getOutQuantity())!=0 ) {
+                if (inCount.compareTo(oldstockTransferDetails.getOutQuantity()) != 0) {
                     stockTransfer.setInStatus(1);//设置为部分接收
                 }
                 stockTransferDetails.setInQuantity(inCount);
 
 
             }
-            if(abnormalFlag ==1){
+            if (abnormalFlag == 1) {
                 AbnormalInfo abnormalInfo = new AbnormalInfo();
                 abnormalInfo.setStatus(0);
                 abnormalInfo.setId(IdWorker.getId());
@@ -375,29 +409,14 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
         stockJournal.setType(JournalType.ADJUSTING_IN.getDetailType());
         stockJournal.setCode(stockTransfer.getCode());
         stockJournal.setWarehouseId(stockTransfer.getInWarehouseId());
-//        stockJournal.setToWarehouseId(stockTransfer.getInWarehouseId());
         stockJournal.setBusinessId(stockTransfer.getId());
         //保存人库记录
         stockJournalService.save(stockJournal);
-
-        //创建出库记录
-        StockJournal stockJournal1 = new StockJournal();
-        stockJournal1.setOpType(2);
-        stockJournal1.setType(JournalType.ADJUSTING_OUT.getDetailType());
-        stockJournal1.setCode(stockTransfer.getCode());
-        stockJournal1.setWarehouseId(stockTransfer.getOutWarehouseId());
-//        stockJournal1.setToWarehouseId(stockTransfer.getInWarehouseId());
-        stockJournal1.setBusinessId(stockTransfer.getId());
-        //保存出库记录
-        stockJournalService.save(stockJournal1);
-        if(ObjectUtil.isNotEmpty(stockList)) {
-            //出库
-            List<StockJournalDetails> stockJournalDetailsList1 = stockService.ModifyInventory(stockJournal1.getId(), 2, stockList, stockTransfer.getOutWarehouseId());
+        if (ObjectUtil.isNotEmpty(stockList)) {
             //入库
             List<StockJournalDetails> stockJournalDetailsList = stockService.ModifyInventory(stockJournal.getId(), 1, stockList, stockTransfer.getInWarehouseId());
-            //保存入库记录明细
+            //保存入库记录明细
             stockJournalDetailsService.saveBatch(stockJournalDetailsList);
-            stockJournalDetailsService.saveBatch(stockJournalDetailsList1);
         }
     }
 

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

@@ -5,17 +5,20 @@ import cn.hutool.core.convert.Convert;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.kd100.entity.company.po.CompanyInfo;
 import com.fjhx.kd100.service.company.CompanyInfoService;
 import com.fjhx.supply.service.supplier.SupplierInfoService;
+import com.fjhx.victoriatourist.entity.abnormal.po.AbnormalInfo;
 import com.fjhx.victoriatourist.entity.quality.dto.QualityInfoDto;
 import com.fjhx.victoriatourist.entity.quality.dto.QualityInfoSelectDto;
 import com.fjhx.victoriatourist.entity.quality.po.QualityDetails;
 import com.fjhx.victoriatourist.entity.quality.po.QualityInfo;
 import com.fjhx.victoriatourist.entity.quality.vo.QualityInfoVo;
 import com.fjhx.victoriatourist.mapper.quality.QualityInfoMapper;
+import com.fjhx.victoriatourist.service.abnormal.AbnormalInfoService;
 import com.fjhx.victoriatourist.service.quality.QualityDetailsService;
 import com.fjhx.victoriatourist.service.quality.QualityInfoService;
 import com.fjhx.wms.entity.arrival.po.ArrivalStockRecords;
@@ -69,6 +72,8 @@ public class QualityInfoServiceImpl extends ServiceImpl<QualityInfoMapper, Quali
     private ArrivalStockRecordsDetailsService arrivalStockRecordsDetailsService;
     @Autowired
     private ArrivalStockRecordsService arrivalStockRecordsService;
+    @Autowired
+    AbnormalInfoService abnormalInfoService;
 
     @Override
     public Page<QualityInfoVo> getPage(QualityInfoSelectDto dto) {
@@ -120,7 +125,7 @@ public class QualityInfoServiceImpl extends ServiceImpl<QualityInfoMapper, Quali
     @Override
     public void add(QualityInfoDto qualityInfoDto) {
         qualityInfoDto.setType(1);//设置为到货质检
-        qualityInfoDto.setStatus(2);//质检完成
+        qualityInfoDto.setStatus(2);//部分质检
         ArrivalStockRecords arrivalStockRecords = arrivalStockRecordsService.getById(qualityInfoDto.getArrivalStockRecordsId());
         arrivalStockRecords.setQualityStatus(2);//质检完成
 
@@ -145,6 +150,7 @@ public class QualityInfoServiceImpl extends ServiceImpl<QualityInfoMapper, Quali
         qualityInfoDto.setBussinessId(qualityInfoDto.getArrivalStockRecordsId());
         //创建质检明细
         List<QualityDetails> qualityDetailsList = qualityInfoDto.getQualityDetailsList();
+        int qFlag = 0;//质检存在不合格标志
         for (QualityDetails qualityDetails : qualityDetailsList) {
             qualityDetails.setId(null);//将明细id置空解决前端误传
             qualityDetails.setQualityInfoId(qualityInfoDto.getId());
@@ -164,7 +170,24 @@ public class QualityInfoServiceImpl extends ServiceImpl<QualityInfoMapper, Quali
                 qualityInfoDto.setStatus(1);//修改为部分质检
                 arrivalStockRecords.setQualityStatus(1);//修改为部分质检
             }
+
+            //存在质检不合格创建异常
+            if (qualityDetails.getDisqualificationQuantity().compareTo(BigDecimal.ZERO) != 0) {
+                qFlag++;
+            }
         }
+
+        if (qFlag != 0) {
+            AbnormalInfo abnormalInfo = new AbnormalInfo();
+            abnormalInfo.setStatus(0);
+            abnormalInfo.setId(IdWorker.getId());
+            abnormalInfo.setType(10);
+            abnormalInfo.setLinkId(qualityInfoDto.getId());
+            abnormalInfo.setLinkCode(qualityInfoDto.getCode());
+            abnormalInfo.setTitle("质检存在不合格");
+            abnormalInfoService.save(abnormalInfo);
+        }
+
         this.save(qualityInfoDto);
         arrivalStockRecordsService.updateById(arrivalStockRecords);
         arrivalStockRecordsDetailsService.updateBatchById(arrivalStockRecordsDetailsList);

+ 39 - 35
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/stock/impl/StockTransferServiceImpl.java

@@ -8,7 +8,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.victoriatourist.entity.abnormal.po.AbnormalInfo;
-import com.fjhx.victoriatourist.entity.jd.vo.JdBackVo;
 import com.fjhx.victoriatourist.entity.stock.dto.StockTransferDto;
 import com.fjhx.victoriatourist.entity.stock.dto.StockTransferSelectDto;
 import com.fjhx.victoriatourist.entity.stock.po.StockTransfer;
@@ -21,7 +20,6 @@ import com.fjhx.victoriatourist.service.stock.StockTransferDetailsService;
 import com.fjhx.victoriatourist.service.stock.StockTransferService;
 import com.fjhx.victoriatourist.utils.Assert;
 import com.fjhx.victoriatourist.utils.CodeEnum;
-import com.fjhx.wms.entity.stock.dto.StockDto;
 import com.fjhx.wms.entity.stock.emums.JournalType;
 import com.fjhx.wms.entity.stock.po.Stock;
 import com.fjhx.wms.entity.stock.po.StockJournal;
@@ -41,7 +39,6 @@ import java.math.BigDecimal;
 import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 
 /**
@@ -73,10 +70,10 @@ public class StockTransferServiceImpl extends ServiceImpl<StockTransferMapper, S
     @Override
     public Page<StockTransferVo> getPage(StockTransferSelectDto dto) {
         IWrapper<StockTransfer> wrapper = getWrapper();
-        wrapper.eq(StockTransfer::getInWarehouseId,dto.getInWarehouseId());
-        wrapper.eq(StockTransfer::getOutWarehouseId,dto.getOutWarehouseId());
-        wrapper.eq(StockTransfer::getInStatus,dto.getInStatus());
-        wrapper.like(StockTransfer::getCode,dto.getKeyword());
+        wrapper.eq(StockTransfer::getInWarehouseId, dto.getInWarehouseId());
+        wrapper.eq(StockTransfer::getOutWarehouseId, dto.getOutWarehouseId());
+        wrapper.eq(StockTransfer::getInStatus, dto.getInStatus());
+        wrapper.like(StockTransfer::getCode, dto.getKeyword());
         wrapper.orderByDesc("st", StockTransfer::getId);
         Page<StockTransferVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<StockTransferVo> records = page.getRecords();
@@ -119,19 +116,41 @@ public class StockTransferServiceImpl extends ServiceImpl<StockTransferMapper, S
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void add(StockTransferDto stockTransferDto) {
-        Assert.notEmpty(stockTransferDto.getOutWarehouseId(),"出库仓库不能为空");
-        Assert.notEmpty(stockTransferDto.getInWarehouseId(),"入库仓库不能为空");
-        Assert.notEmpty(stockTransferDto.getStockTransferDetailsList(),"调仓明细不能为空");
+        Assert.notEmpty(stockTransferDto.getOutWarehouseId(), "出库仓库不能为空");
+        Assert.notEmpty(stockTransferDto.getInWarehouseId(), "入库仓库不能为空");
+        Assert.notEmpty(stockTransferDto.getStockTransferDetailsList(), "调仓明细不能为空");
 
         stockTransferDto.setCode(CodeEnum.STOCK_TRANSFER.getCode());
         stockTransferDto.setType(1);
         stockTransferDto.setInStatus(0);
         this.save(stockTransferDto);
         List<StockTransferDetails> stockTransferDetailsList = stockTransferDto.getStockTransferDetailsList();
+        List<Stock> stockList = new ArrayList<>();
         for (StockTransferDetails stockTransferDetails : stockTransferDetailsList) {
+            Stock stock = new Stock();
+            stock.setProductId(stockTransferDetails.getProductId());
+            stock.setQuantity(stockTransferDetails.getInQuantity());
+            stockList.add(stock);
+
             stockTransferDetails.setStockTransferId(stockTransferDto.getId());
         }
         stockTransferDetailsService.saveBatch(stockTransferDetailsList);
+
+        //创建出库记录
+        StockJournal stockJournal1 = new StockJournal();
+        stockJournal1.setOpType(2);
+        stockJournal1.setType(JournalType.ADJUSTING_OUT.getDetailType());
+        stockJournal1.setCode(stockTransferDto.getCode());
+        stockJournal1.setWarehouseId(stockTransferDto.getOutWarehouseId());
+        stockJournal1.setBusinessId(stockTransferDto.getId());
+        //保存出库记录
+        stockJournalService.save(stockJournal1);
+        if (ObjectUtil.isNotEmpty(stockList)) {
+            //出库
+            List<StockJournalDetails> stockJournalDetailsList1 = stockService.ModifyInventory(stockJournal1.getId(), 2, stockList, stockTransferDto.getOutWarehouseId());
+            //保存出库记录明细
+            stockJournalDetailsService.saveBatch(stockJournalDetailsList1);
+        }
     }
 
     @Override
@@ -155,7 +174,7 @@ public class StockTransferServiceImpl extends ServiceImpl<StockTransferMapper, S
         //明细
         List<Stock> stockList = new ArrayList<>();
         List<StockTransferDetails> stockTransferDetailsList = stockTransferDto.getStockTransferDetailsList();
-        if(ObjectUtil.isNotEmpty(stockTransferDetailsList)) {
+        if (ObjectUtil.isNotEmpty(stockTransferDetailsList)) {
             //获取数据库中的数据
             List<Long> ids = stockTransferDetailsList.stream().map(StockTransferDetails::getId).collect(Collectors.toList());
             List<StockTransferDetails> oldstockTransferDetailsList = stockTransferDetailsService.listByIds(ids);
@@ -170,18 +189,18 @@ public class StockTransferServiceImpl extends ServiceImpl<StockTransferMapper, S
 
                 //调仓接收数量与发出数量不一致
                 StockTransferDetails oldstockTransferDetails = oldstockTransferDetailsMap.get(stockTransferDetails.getId());
-                if (stockTransferDetails.getInQuantity().compareTo(oldstockTransferDetails.getOutQuantity())!=0) {
-                    abnormalFlag =1;
+                if (stockTransferDetails.getInQuantity().compareTo(oldstockTransferDetails.getOutQuantity()) != 0) {
+                    abnormalFlag = 1;
                 }
 
                 //计算已入库数量
                 BigDecimal inCount = oldstockTransferDetails.getInQuantity().add(stockTransferDetails.getInQuantity());
-                if (inCount.compareTo(oldstockTransferDetails.getOutQuantity())!=0 ) {
+                if (inCount.compareTo(oldstockTransferDetails.getOutQuantity()) != 0) {
                     stockTransfer.setInStatus(1);//设置为部分接收
                 }
                 stockTransferDetails.setInQuantity(inCount);
             }
-            if(abnormalFlag ==1){
+            if (abnormalFlag == 1) {
                 AbnormalInfo abnormalInfo = new AbnormalInfo();
                 abnormalInfo.setId(IdWorker.getId());
                 abnormalInfo.setStatus(0);
@@ -202,39 +221,24 @@ public class StockTransferServiceImpl extends ServiceImpl<StockTransferMapper, S
         stockJournal.setType(JournalType.ADJUSTING_IN.getDetailType());
         stockJournal.setCode(stockTransfer.getCode());
         stockJournal.setWarehouseId(stockTransfer.getInWarehouseId());
-//        stockJournal.setToWarehouseId(stockTransfer.getInWarehouseId());
         stockJournal.setBusinessId(stockTransfer.getId());
         //保存人库记录
         stockJournalService.save(stockJournal);
 
-        //创建出库记录
-        StockJournal stockJournal1 = new StockJournal();
-        stockJournal1.setOpType(2);
-        stockJournal1.setType(JournalType.ADJUSTING_OUT.getDetailType());
-        stockJournal1.setCode(stockTransfer.getCode());
-        stockJournal1.setWarehouseId(stockTransfer.getOutWarehouseId());
-//        stockJournal1.setToWarehouseId(stockTransfer.getInWarehouseId());
-        stockJournal1.setBusinessId(stockTransfer.getId());
-        //保存出库记录
-        stockJournalService.save(stockJournal1);
-        if(ObjectUtil.isNotEmpty(stockList)) {
-            //出库
-            List<StockJournalDetails> stockJournalDetailsList1 = stockService.ModifyInventory(stockJournal1.getId(), 2, stockList, stockTransfer.getOutWarehouseId());
+        if (ObjectUtil.isNotEmpty(stockList)) {
             //入库
             List<StockJournalDetails> stockJournalDetailsList = stockService.ModifyInventory(stockJournal.getId(), 1, stockList, stockTransfer.getInWarehouseId());
-            //保存入库记录明细
+            //保存入库记录明细
             stockJournalDetailsService.saveBatch(stockJournalDetailsList);
-            stockJournalDetailsService.saveBatch(stockJournalDetailsList1);
-
         }
     }
 
     @Override
     @DSTransactional
     public void stockTransfer(StockTransferDto stockTransferDto) {
-        Assert.notEmpty(stockTransferDto.getOutWarehouseId(),"出库仓库不能为空");
-        Assert.notEmpty(stockTransferDto.getInWarehouseId(),"入库仓库不能为空");
-        Assert.notEmpty(stockTransferDto.getStockTransferDetailsList(),"调仓明细不能为空");
+        Assert.notEmpty(stockTransferDto.getOutWarehouseId(), "出库仓库不能为空");
+        Assert.notEmpty(stockTransferDto.getInWarehouseId(), "入库仓库不能为空");
+        Assert.notEmpty(stockTransferDto.getStockTransferDetailsList(), "调仓明细不能为空");
 
         stockTransferDto.setCode(CodeEnum.STOCK_TRANSFER.getCode());
         stockTransferDto.setType(1);