yzc 1 жил өмнө
parent
commit
c656e6f668

+ 7 - 1
hx-wms/src/main/java/com/fjhx/wms/entity/stock/emums/JournalType.java

@@ -27,7 +27,13 @@ public enum JournalType {
     COMPLETION_IN(InOutType.IN, 17, "待入库 完工入库", ""),
     PURCHASE_ARRIVAL_IN(InOutType.IN, 18, "待入库 采购到货", ""),
     ARRIVAL_QUALITY(InOutType.IN, 19, "到货质检", "quality_info"),
-    PRODUCTION_TASK_OUT(InOutType.OUT, 20, "生产任务待出库出库", "production_task")
+    PRODUCTION_TASK_OUT(InOutType.OUT, 20, "生产任务待出库出库", "production_task"),
+
+    WORD_ORDER_OUT(InOutType.OUT, 21, "工单出库待出库出库", "work_order"),
+    STOCK_CHECK_IN(InOutType.IN, 22, "库存盘点修正入库", "stock_check"),
+    STOCK_CHECK_OUT(InOutType.OUT, 23, "库存盘点修正出库", "stock_check"),
+    CONTRACT_SALE_OUT(InOutType.OUT, 24, "合同销售出库", ""),
+    AFTER_SALES_MATERIAL_OUT(InOutType.OUT, 25, "售后物料出库", "after_sales_record"),
     ;
 
 

+ 3 - 2
hx-wms/src/main/java/com/fjhx/wms/entity/stock/po/StockCheckDetails.java

@@ -6,6 +6,7 @@ import lombok.Getter;
 import lombok.Setter;
 
 import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
 
 /**
  * <p>
@@ -35,12 +36,12 @@ public class StockCheckDetails extends BasePo {
      * 库存数量
      */
     @NotNull(message = "库存数量不能为空")
-    private Long quantity;
+    private BigDecimal quantity;
 
     /**
      * 盘点数量
      */
     @NotNull(message = "盘点数量不能为空")
-    private Long checkQuantity;
+    private BigDecimal checkQuantity;
 
 }

+ 73 - 2
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockCheckServiceImpl.java

@@ -4,16 +4,20 @@ import cn.hutool.core.util.ObjectUtil;
 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.common.entity.InOutBo;
+import com.fjhx.common.enums.InOutType;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.wms.entity.stock.dto.StockCheckDto;
 import com.fjhx.wms.entity.stock.dto.StockCheckSelectDto;
+import com.fjhx.wms.entity.stock.emums.JournalType;
 import com.fjhx.wms.entity.stock.po.StockCheck;
 import com.fjhx.wms.entity.stock.po.StockCheckDetails;
+import com.fjhx.wms.entity.stock.po.StockJournal;
+import com.fjhx.wms.entity.stock.po.StockJournalDetails;
 import com.fjhx.wms.entity.stock.vo.StockCheckDetailsVo;
 import com.fjhx.wms.entity.stock.vo.StockCheckVo;
 import com.fjhx.wms.mapper.stock.StockCheckMapper;
-import com.fjhx.wms.service.stock.StockCheckDetailsService;
-import com.fjhx.wms.service.stock.StockCheckService;
+import com.fjhx.wms.service.stock.*;
 import com.fjhx.wms.service.warehouse.WarehouseService;
 import com.fjhx.wms.utils.CodeEnum;
 import com.ruoyi.common.constant.StatusConstant;
@@ -23,6 +27,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
+import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
 
@@ -47,6 +53,15 @@ public class StockCheckServiceImpl extends ServiceImpl<StockCheckMapper, StockCh
     @Autowired
     private WarehouseService warehouseService;
 
+    @Autowired
+    private StockJournalService stockJournalService;
+    @Autowired
+    private StockJournalDetailsService stockJournalDetailsService;
+    @Autowired
+    private StockWaitService stockWaitService;
+    @Autowired
+    private StockService stockService;
+
     @Override
     public Page<StockCheckVo> getPage(StockCheckSelectDto dto) {
         IWrapper<StockCheck> wrapper = getWrapper();
@@ -94,6 +109,8 @@ public class StockCheckServiceImpl extends ServiceImpl<StockCheckMapper, StockCh
         List<StockCheckDetails> list = stockCheckDto.getList();
         int totalNum = 0, normalNum = 0, anomalyNum = 0;
 
+        Long warehouseId = stockCheckDto.getWarehouseId();
+
         for (StockCheckDetails stockCheckDetails : list) {
 
             totalNum++;
@@ -102,6 +119,60 @@ public class StockCheckServiceImpl extends ServiceImpl<StockCheckMapper, StockCh
                 normalNum++;
             } else {
                 anomalyNum++;
+
+                //盘点数和库存不一样 需要创建流水修正
+                if (stockCheckDetails.getQuantity().compareTo(stockCheckDetails.getCheckQuantity()) > 0) {
+                    //盘亏 出库
+                    BigDecimal subtract = stockCheckDetails.getQuantity().subtract(stockCheckDetails.getCheckQuantity());
+
+                    //创建出库记录
+                    StockJournal stockJournal = new StockJournal();
+                    stockJournal.setOpType(2);
+                    stockJournal.setType(JournalType.STOCK_CHECK_OUT.getDetailType());
+                    stockJournal.setCode(CodeEnum.SOUT_CODE.getCode());
+                    stockJournal.setWarehouseId(warehouseId);
+                    stockJournal.setBusinessId(stockCheckId);
+                    ;
+                    stockJournalService.save(stockJournal);
+                    //创建出库明细(并计算结存单价)
+                    StockJournalDetails stockJournalDetails = stockService.calculateUnitPrice(InOutType.OUT, stockCheckDetails.getProductId(), warehouseId, subtract, 0, null);
+                    stockJournalDetails.setStockJournalId(stockJournal.getId());
+                    stockJournalDetails.setProductId(stockCheckDetails.getProductId());
+                    stockJournalDetails.setQuantity(subtract);
+                    stockJournalDetails.setBusinessDetailsId(stockCheckDetails.getId());
+                    stockJournalDetailsService.save(stockJournalDetails);
+                    //出库操作
+                    InOutBo inOutBo = new InOutBo();
+                    inOutBo.setProductId(stockCheckDetails.getProductId());
+                    inOutBo.setQuantity(subtract);
+                    stockService.changeStock(Collections.singletonList(inOutBo), warehouseId, JournalType.STOCK_CHECK_OUT);
+                } else {
+                    //盘盈 入库
+                    BigDecimal subtract = stockCheckDetails.getCheckQuantity().subtract(stockCheckDetails.getQuantity());
+
+                    //创建入库记录
+                    StockJournal stockJournal = new StockJournal();
+                    stockJournal.setOpType(1);
+                    stockJournal.setType(JournalType.STOCK_CHECK_IN.getDetailType());
+                    stockJournal.setCode(CodeEnum.SIN_CODE.getCode());
+                    stockJournal.setWarehouseId(warehouseId);
+                    stockJournal.setBusinessId(stockCheckId);
+                    ;
+                    stockJournalService.save(stockJournal);
+                    //创建入库明细(并计算结存单价)
+                    StockJournalDetails stockJournalDetails = stockService.calculateUnitPrice(InOutType.IN, stockCheckDetails.getProductId(), warehouseId, subtract, 0, null);
+                    stockJournalDetails.setStockJournalId(stockJournal.getId());
+                    stockJournalDetails.setProductId(stockCheckDetails.getProductId());
+                    stockJournalDetails.setQuantity(subtract);
+                    stockJournalDetails.setBusinessDetailsId(stockCheckDetails.getId());
+                    stockJournalDetailsService.save(stockJournalDetails);
+                    //入库操作
+                    InOutBo inOutBo = new InOutBo();
+                    inOutBo.setProductId(stockCheckDetails.getProductId());
+                    inOutBo.setQuantity(subtract);
+                    stockService.changeStock(Collections.singletonList(inOutBo), warehouseId, JournalType.STOCK_CHECK_IN);
+                }
+
             }
 
             stockCheckDetails.setStockCheckId(stockCheckId);