批量导入增加详细库存记录
This commit is contained in:
@@ -4,18 +4,18 @@ import cn.ysk.cashier.dto.product.OutAndOnDto;
|
|||||||
import cn.ysk.cashier.dto.product.StockQueryDto;
|
import cn.ysk.cashier.dto.product.StockQueryDto;
|
||||||
import cn.ysk.cashier.dto.product.TbProductDto;
|
import cn.ysk.cashier.dto.product.TbProductDto;
|
||||||
import cn.ysk.cashier.exception.BadRequestException;
|
import cn.ysk.cashier.exception.BadRequestException;
|
||||||
import cn.ysk.cashier.mapper.shop.TbShopInfoMapper;
|
|
||||||
import cn.ysk.cashier.mapper.shop.TbShopUnitMapper;
|
|
||||||
import cn.ysk.cashier.pojo.product.TbProductSku;
|
import cn.ysk.cashier.pojo.product.TbProductSku;
|
||||||
import cn.ysk.cashier.pojo.product.TbProductStockDetail;
|
import cn.ysk.cashier.pojo.product.TbProductStockDetail;
|
||||||
import cn.ysk.cashier.pojo.shop.TbShopInfo;
|
import cn.ysk.cashier.pojo.shop.TbShopInfo;
|
||||||
import cn.ysk.cashier.pojo.shop.TbShopUnit;
|
import cn.ysk.cashier.pojo.shop.TbShopUnit;
|
||||||
import cn.ysk.cashier.repository.product.TbProductSkuRepository;
|
import cn.ysk.cashier.repository.product.TbProductSkuRepository;
|
||||||
|
import cn.ysk.cashier.repository.product.TbProductStockDetailRepository;
|
||||||
import cn.ysk.cashier.repository.shop.TbShopInfoRepository;
|
import cn.ysk.cashier.repository.shop.TbShopInfoRepository;
|
||||||
import cn.ysk.cashier.repository.shop.TbShopUnitRepository;
|
import cn.ysk.cashier.repository.shop.TbShopUnitRepository;
|
||||||
import cn.ysk.cashier.service.TbProductStockOperateService;
|
import cn.ysk.cashier.service.TbProductStockOperateService;
|
||||||
import cn.ysk.cashier.service.product.StockService;
|
import cn.ysk.cashier.service.product.StockService;
|
||||||
import cn.ysk.cashier.service.product.TbProductService;
|
import cn.ysk.cashier.service.product.TbProductService;
|
||||||
|
import cn.ysk.cashier.service.product.TbProductStockDetailService;
|
||||||
import cn.ysk.cashier.utils.CacheKey;
|
import cn.ysk.cashier.utils.CacheKey;
|
||||||
import cn.ysk.cashier.utils.FileUtil;
|
import cn.ysk.cashier.utils.FileUtil;
|
||||||
import cn.ysk.cashier.utils.RedisUtils;
|
import cn.ysk.cashier.utils.RedisUtils;
|
||||||
@@ -33,18 +33,12 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
|||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.data.domain.PageRequest;
|
import org.springframework.data.domain.PageRequest;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.data.jpa.domain.Specification;
|
|
||||||
import org.springframework.scheduling.annotation.Async;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.persistence.EntityManager;
|
import javax.persistence.EntityManager;
|
||||||
import javax.persistence.PersistenceContext;
|
import javax.persistence.PersistenceContext;
|
||||||
import javax.persistence.Query;
|
import javax.persistence.Query;
|
||||||
import javax.persistence.criteria.CriteriaBuilder;
|
|
||||||
import javax.persistence.criteria.CriteriaQuery;
|
|
||||||
import javax.persistence.criteria.Predicate;
|
|
||||||
import javax.persistence.criteria.Root;
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import javax.transaction.Transactional;
|
import javax.transaction.Transactional;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@@ -65,6 +59,7 @@ public class StockServiceImpl implements StockService {
|
|||||||
private final TbProductSkuRepository skuRepository;
|
private final TbProductSkuRepository skuRepository;
|
||||||
private final TbShopInfoRepository tbShopInfoRepository;
|
private final TbShopInfoRepository tbShopInfoRepository;
|
||||||
private final TbShopUnitRepository shopUnitRepository;
|
private final TbShopUnitRepository shopUnitRepository;
|
||||||
|
private final TbProductStockDetailRepository tbProductStockDetailRepository;
|
||||||
|
|
||||||
@PersistenceContext
|
@PersistenceContext
|
||||||
private EntityManager em;
|
private EntityManager em;
|
||||||
@@ -193,6 +188,8 @@ public class StockServiceImpl implements StockService {
|
|||||||
XSSFRow row = null;
|
XSSFRow row = null;
|
||||||
List<StockV2Vo> list = new ArrayList<>();
|
List<StockV2Vo> list = new ArrayList<>();
|
||||||
|
|
||||||
|
List<TbProductStockDetail> stockDetails = new ArrayList<>();
|
||||||
|
|
||||||
for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++) {
|
for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++) {
|
||||||
row = sheet.getRow(i);
|
row = sheet.getRow(i);
|
||||||
if (row != null) {
|
if (row != null) {
|
||||||
@@ -203,9 +200,9 @@ public class StockServiceImpl implements StockService {
|
|||||||
stockDetail.setCreatedAt(System.currentTimeMillis());
|
stockDetail.setCreatedAt(System.currentTimeMillis());
|
||||||
stockDetail.setUpdatedAt(System.currentTimeMillis());
|
stockDetail.setUpdatedAt(System.currentTimeMillis());
|
||||||
stockDetail.setSourcePath("NORMAL");
|
stockDetail.setSourcePath("NORMAL");
|
||||||
stockDetail.setType("一次性入库");
|
stockDetail.setType("一次性入库覆盖库存");
|
||||||
stockDetail.setSubType(1);
|
stockDetail.setSubType(1);
|
||||||
stockDetail.setRemark("一次性入库");
|
stockDetail.setRemark("一次性入库覆盖库存");
|
||||||
|
|
||||||
if ("sku".equals(productIdStr)) {
|
if ("sku".equals(productIdStr)) {
|
||||||
Optional<TbProductSku> byId = skuRepository.findById(Double.valueOf(row.getCell(2).toString()).intValue());
|
Optional<TbProductSku> byId = skuRepository.findById(Double.valueOf(row.getCell(2).toString()).intValue());
|
||||||
@@ -227,7 +224,7 @@ public class StockServiceImpl implements StockService {
|
|||||||
stockDetail.setUnitName(shopUnit.getName());
|
stockDetail.setUnitName(shopUnit.getName());
|
||||||
stockDetail.setLeftNumber(sku.getStockNumber().intValue());
|
stockDetail.setLeftNumber(sku.getStockNumber().intValue());
|
||||||
stockDetail.setStockNumber(aDouble);
|
stockDetail.setStockNumber(aDouble);
|
||||||
em.persist(stockDetail);
|
stockDetails.add(stockDetail);
|
||||||
|
|
||||||
list.add(new StockV2Vo(
|
list.add(new StockV2Vo(
|
||||||
0,
|
0,
|
||||||
@@ -253,12 +250,12 @@ public class StockServiceImpl implements StockService {
|
|||||||
TbShopUnit shopUnit = shopUnitRepository.searchUnit(product.getUnitId());
|
TbShopUnit shopUnit = shopUnitRepository.searchUnit(product.getUnitId());
|
||||||
|
|
||||||
stockDetail.setShopId(product.getShopId());
|
stockDetail.setShopId(product.getShopId());
|
||||||
stockDetail.setSkuId(product.getId().toString());
|
stockDetail.setProductId(product.getId().toString());
|
||||||
stockDetail.setProductName(product.getName());
|
stockDetail.setProductName(product.getName());
|
||||||
stockDetail.setUnitName(shopUnit.getName());
|
stockDetail.setUnitName(shopUnit.getName());
|
||||||
stockDetail.setLeftNumber(product.getStockNumber());
|
stockDetail.setLeftNumber(product.getStockNumber());
|
||||||
stockDetail.setStockNumber(aDouble);
|
stockDetail.setStockNumber(aDouble);
|
||||||
em.persist(stockDetail);
|
stockDetails.add(stockDetail);
|
||||||
|
|
||||||
list.add(new StockV2Vo(
|
list.add(new StockV2Vo(
|
||||||
product.getId(),
|
product.getId(),
|
||||||
@@ -275,6 +272,10 @@ public class StockServiceImpl implements StockService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!stockDetails.isEmpty()) {
|
||||||
|
tbProductStockDetailRepository.saveAll(stockDetails);
|
||||||
|
}
|
||||||
|
|
||||||
log.info("库存导入.importExcel.data:" + list);
|
log.info("库存导入.importExcel.data:" + list);
|
||||||
OutAndOnDto outAndOnDto = new OutAndOnDto();
|
OutAndOnDto outAndOnDto = new OutAndOnDto();
|
||||||
outAndOnDto.setShopId(shopId);
|
outAndOnDto.setShopId(shopId);
|
||||||
|
|||||||
Reference in New Issue
Block a user