|
@@ -4,9 +4,15 @@ 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.utils.Assert;
|
|
|
+import com.fjhx.item.entity.product.IssueImportExcelBo;
|
|
|
+import com.fjhx.item.entity.product.dto.ProductInfoSelectDto;
|
|
|
+import com.fjhx.item.entity.product.po.ProductInfo;
|
|
|
+import com.fjhx.item.entity.product.vo.ProductInfoVo;
|
|
|
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.po.Stock;
|
|
|
import com.fjhx.wms.entity.stock.po.StockCheck;
|
|
|
import com.fjhx.wms.entity.stock.po.StockCheckDetails;
|
|
|
import com.fjhx.wms.entity.stock.vo.StockCheckDetailsVo;
|
|
@@ -14,6 +20,7 @@ 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.StockService;
|
|
|
import com.fjhx.wms.service.warehouse.WarehouseService;
|
|
|
import com.fjhx.wms.utils.CodeEnum;
|
|
|
import com.ruoyi.common.constant.StatusConstant;
|
|
@@ -22,9 +29,13 @@ import com.ruoyi.system.utils.UserUtil;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
import java.util.Objects;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
/**
|
|
@@ -38,14 +49,18 @@ import java.util.Objects;
|
|
|
@Service
|
|
|
public class StockCheckServiceImpl extends ServiceImpl<StockCheckMapper, StockCheck> implements StockCheckService {
|
|
|
|
|
|
- @Autowired
|
|
|
- private StockCheckDetailsService stockCheckDetailsService;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private ProductInfoService productInfoService;
|
|
|
+ private final StockCheckDetailsService stockCheckDetailsService;
|
|
|
+ private final ProductInfoService productInfoService;
|
|
|
+ private final WarehouseService warehouseService;
|
|
|
+ private final StockService stockService;
|
|
|
|
|
|
@Autowired
|
|
|
- private WarehouseService warehouseService;
|
|
|
+ public StockCheckServiceImpl(StockCheckDetailsService stockCheckDetailsService, ProductInfoService productInfoService, WarehouseService warehouseService, StockService stockService) {
|
|
|
+ this.stockCheckDetailsService = stockCheckDetailsService;
|
|
|
+ this.productInfoService = productInfoService;
|
|
|
+ this.warehouseService = warehouseService;
|
|
|
+ this.stockService = stockService;
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
|
public Page<StockCheckVo> getPage(StockCheckSelectDto dto) {
|
|
@@ -75,7 +90,7 @@ public class StockCheckServiceImpl extends ServiceImpl<StockCheckMapper, StockCh
|
|
|
StockCheckVo stockCheckVo = baseMapper.detail(id);
|
|
|
|
|
|
List<StockCheckDetailsVo> list = stockCheckVo.getList();
|
|
|
- if(ObjectUtil.isEmpty(list)){
|
|
|
+ if (ObjectUtil.isEmpty(list)) {
|
|
|
return stockCheckVo;
|
|
|
}
|
|
|
productInfoService.attributeAssign(list, StockCheckDetails::getProductId, (item, product) -> {
|
|
@@ -119,4 +134,46 @@ public class StockCheckServiceImpl extends ServiceImpl<StockCheckMapper, StockCh
|
|
|
stockCheckDetailsService.saveBatch(list);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public Page<ProductInfoVo> productPage(ProductInfoSelectDto dto) {
|
|
|
+ Assert.notEmpty(dto.getWarehouseId(), "仓库id不能为空!");
|
|
|
+
|
|
|
+ Page<ProductInfoVo> page = productInfoService.getPage(dto);
|
|
|
+ List<ProductInfoVo> records = page.getRecords();
|
|
|
+ if (ObjectUtil.isEmpty(records)) {
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+ //赋值库存信息
|
|
|
+ List<Long> pIds = records.stream().map(ProductInfo::getId).collect(Collectors.toList());
|
|
|
+ Map<Long, Stock> stockMap = stockService.mapKEntity(Stock::getProductId, q -> q
|
|
|
+ .in(Stock::getProductId, pIds)
|
|
|
+ .eq(Stock::getWarehouseId, dto.getWarehouseId())
|
|
|
+ );
|
|
|
+ for (ProductInfoVo record : records) {
|
|
|
+ //赋值库存
|
|
|
+ record.setStockQuantity(BigDecimal.ZERO);
|
|
|
+
|
|
|
+ Stock stock = stockMap.get(record.getId());
|
|
|
+ if (ObjectUtil.isNotEmpty(stock)) {
|
|
|
+ record.setStockQuantity(stock.getQuantity());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<IssueImportExcelBo> excelImport(MultipartFile file, Long warehouseId) {
|
|
|
+ List<IssueImportExcelBo> issueImportExcelBos = productInfoService.issueImportExcel(file);
|
|
|
+
|
|
|
+ List<Long> pIds = issueImportExcelBos.stream().map(IssueImportExcelBo::getProductId).collect(Collectors.toList());
|
|
|
+ Map<Long, BigDecimal> stockMap = stockService.mapKV(Stock::getProductId, Stock::getQuantity, q -> q.in(Stock::getProductId, pIds).eq(Stock::getWarehouseId, warehouseId));
|
|
|
+ //赋值库存信息
|
|
|
+ for (IssueImportExcelBo issueImportExcelBo : issueImportExcelBos) {
|
|
|
+ BigDecimal bigDecimal = stockMap.getOrDefault(issueImportExcelBo.getProductId(), BigDecimal.ZERO);
|
|
|
+ issueImportExcelBo.setStockCount(bigDecimal);
|
|
|
+ }
|
|
|
+
|
|
|
+ return issueImportExcelBos;
|
|
|
+ }
|
|
|
+
|
|
|
}
|