|
@@ -17,6 +17,7 @@ import com.yonge.cooleshow.admin.dto.PmsProductResult;
|
|
|
import com.yonge.cooleshow.admin.service.PmsBrandService;
|
|
|
import com.yonge.cooleshow.admin.service.PmsProductCategoryService;
|
|
|
import com.yonge.cooleshow.admin.service.PmsProductService;
|
|
|
+import com.yonge.cooleshow.mbg.dto.PmsSkuStockDto;
|
|
|
import com.yonge.cooleshow.mbg.mapper.*;
|
|
|
import com.yonge.cooleshow.mbg.model.*;
|
|
|
import org.slf4j.Logger;
|
|
@@ -141,7 +142,72 @@ public class PmsProductServiceImpl implements PmsProductService {
|
|
|
|
|
|
@Override
|
|
|
public PmsProductResult getUpdateInfo(Long id) {
|
|
|
- return productDao.getUpdateInfo(id);
|
|
|
+ PmsProductResult updateInfo = productDao.getUpdateInfo(id);
|
|
|
+ updateProductStock(Collections.singletonList(updateInfo));
|
|
|
+ updateProductSkuStock(updateInfo.getSkuStockList());
|
|
|
+
|
|
|
+ return updateInfo;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public List<PmsSkuStock> updateProductSkuStock(List<PmsSkuStock> skuStocks) {
|
|
|
+ if (CollectionUtils.isEmpty(skuStocks)) {
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+ // 从进货清单中 获取剩余库存数量
|
|
|
+ List<Long> productIds = skuStocks.stream().map(PmsSkuStock::getProductId).distinct().collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 计算库存数据
|
|
|
+ List<PmsSkuStockDto.PmsSkuStockStock> skuStockStocks = skuStockMapper.getSkuStockByProductIds(productIds);
|
|
|
+
|
|
|
+ // Convert to map
|
|
|
+ Map<Long, Map<Long, List<PmsSkuStockDto.PmsSkuStockStock>>> map = skuStockStocks.stream()
|
|
|
+ .collect(Collectors.groupingBy(PmsSkuStockDto.PmsSkuStockStock::getProductId, Collectors.groupingBy(PmsSkuStockDto.PmsSkuStockStock::getId)));
|
|
|
+
|
|
|
+ // Merge
|
|
|
+ for (PmsSkuStock skuStock : skuStocks) {
|
|
|
+ Map<Long, List<PmsSkuStockDto.PmsSkuStockStock>> skuStockStock = map.get(skuStock.getProductId());
|
|
|
+ if (!CollectionUtils.isEmpty(skuStockStock)) {
|
|
|
+ List<PmsSkuStockDto.PmsSkuStockStock> pmsSkuStockStocks = skuStockStock.get(skuStock.getId());
|
|
|
+ if (CollectionUtils.isEmpty(pmsSkuStockStocks)) {
|
|
|
+ skuStock.setLockStock(0);
|
|
|
+ skuStock.setStock(0);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ skuStock.setStock(pmsSkuStockStocks.stream().mapToInt(item -> item.getInternalStock() + item.getTaxStock()).sum());
|
|
|
+ skuStock.setLockStock(0);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ return skuStocks;
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<PmsProduct> updateProductStock(List<PmsProduct> pmsProducts) {
|
|
|
+ if (CollectionUtils.isEmpty(pmsProducts)) {
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+ // 从进货清单中 获取剩余库存数量
|
|
|
+ List<Long> productIds = pmsProducts.stream().map(PmsProduct::getId).collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 计算库存数据
|
|
|
+ List<PmsSkuStockDto.PmsSkuStockStock> skuStockStocks = skuStockMapper.getSkuStockByProductIds(productIds);
|
|
|
+
|
|
|
+ // Convert to map
|
|
|
+ Map<Long, List<PmsSkuStockDto.PmsSkuStockStock>> skuStockStockMap = skuStockStocks.stream().collect(Collectors.groupingBy(PmsSkuStockDto.PmsSkuStockStock::getProductId));
|
|
|
+
|
|
|
+ // Merge
|
|
|
+ for (PmsProduct pmsProduct : pmsProducts) {
|
|
|
+ List<PmsSkuStockDto.PmsSkuStockStock> skuStockStock = skuStockStockMap.get(pmsProduct.getId());
|
|
|
+ if (!CollectionUtils.isEmpty(skuStockStock)) {
|
|
|
+ pmsProduct.setStock(skuStockStock.stream().mapToInt(PmsSkuStockDto.PmsSkuStockStock::getInternalStock).sum() + skuStockStock.stream().mapToInt(PmsSkuStockDto.PmsSkuStockStock::getTaxStock).sum());
|
|
|
+ pmsProduct.setLockStock(0);
|
|
|
+ } else {
|
|
|
+ pmsProduct.setStock(0);
|
|
|
+ pmsProduct.setLockStock(0);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return pmsProducts;
|
|
|
}
|
|
|
|
|
|
@Override
|