|
@@ -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);
|