1.库存新增上下架接口

2.库存记录返回orderNo
3.增加保存库存记录mq处理
This commit is contained in:
2024-07-17 09:55:23 +08:00
parent 279057d54f
commit a16b2925b2
13 changed files with 223 additions and 11 deletions

View File

@@ -4,10 +4,12 @@ import cn.ysk.cashier.dto.product.OutAndOnDto;
import cn.ysk.cashier.dto.product.StockQueryDto;
import cn.ysk.cashier.dto.product.TbProductDto;
import cn.ysk.cashier.exception.BadRequestException;
import cn.ysk.cashier.pojo.product.TbProduct;
import cn.ysk.cashier.pojo.product.TbProductSku;
import cn.ysk.cashier.pojo.product.TbProductStockDetail;
import cn.ysk.cashier.pojo.shop.TbShopInfo;
import cn.ysk.cashier.pojo.shop.TbShopUnit;
import cn.ysk.cashier.repository.product.TbProductRepository;
import cn.ysk.cashier.repository.product.TbProductSkuRepository;
import cn.ysk.cashier.repository.product.TbProductStockDetailRepository;
import cn.ysk.cashier.repository.shop.TbShopInfoRepository;
@@ -15,7 +17,6 @@ import cn.ysk.cashier.repository.shop.TbShopUnitRepository;
import cn.ysk.cashier.service.TbProductStockOperateService;
import cn.ysk.cashier.service.product.StockService;
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.FileUtil;
import cn.ysk.cashier.utils.RedisUtils;
@@ -60,6 +61,7 @@ public class StockServiceImpl implements StockService {
private final TbShopInfoRepository tbShopInfoRepository;
private final TbShopUnitRepository shopUnitRepository;
private final TbProductStockDetailRepository tbProductStockDetailRepository;
private final TbProductRepository tbProductRepository;
@PersistenceContext
private EntityManager em;
@@ -384,4 +386,19 @@ public class StockServiceImpl implements StockService {
}
tbProductSkuRepository.updateWarnLineByShopId(stockUpdateWarnLineVO.getWarnLine(), stockUpdateWarnLineVO.getShopId());
}
@Override
public void grounding(Integer shopId, Integer skuId, Boolean isGrounding) {
TbProductSku tbProductSku = skuRepository.findById(skuId).orElse(null);
if (tbProductSku == null) {
throw new BadRequestException("商品不存在skuId: " + skuId);
}
TbProduct product = tbProductRepository.selectByShopIdAndId(Integer.parseInt(tbProductSku.getProductId()), String.valueOf(shopId));
// 共享库存下架所有sku
if (product.getIsDistribute().equals(1)) {
tbProductSkuRepository.updateGroundingByProId(product.getId().toString(), isGrounding ? 1 : 0);
}else {
tbProductSkuRepository.updateGrounding(skuId, isGrounding ? 1 : 0);
}
}
}

View File

@@ -15,27 +15,31 @@
*/
package cn.ysk.cashier.service.impl.productimpl;
import cn.hutool.core.util.StrUtil;
import cn.ysk.cashier.dto.product.StockCountDTO;
import cn.ysk.cashier.pojo.order.TbOrderInfo;
import cn.ysk.cashier.pojo.product.TbProductStockDetail;
import cn.ysk.cashier.utils.ValidationUtil;
import cn.ysk.cashier.utils.FileUtil;
import cn.ysk.cashier.repository.order.StockCountRepository;
import cn.ysk.cashier.repository.order.TbOrderInfoRepository;
import cn.ysk.cashier.utils.*;
import lombok.RequiredArgsConstructor;
import cn.ysk.cashier.repository.product.TbProductStockDetailRepository;
import cn.ysk.cashier.service.product.TbProductStockDetailService;
import cn.ysk.cashier.dto.product.TbProductStockDetailDto;
import cn.ysk.cashier.dto.product.TbProductStockDetailQueryCriteria;
import cn.ysk.cashier.mapper.product.TbProductStockDetailMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import cn.ysk.cashier.utils.PageUtil;
import cn.ysk.cashier.utils.QueryHelp;
import java.math.BigDecimal;
import java.util.*;
import java.io.IOException;
import javax.persistence.EntityManager;
import javax.servlet.http.HttpServletResponse;
/**
@@ -46,11 +50,17 @@ import javax.servlet.http.HttpServletResponse;
**/
@Service
@RequiredArgsConstructor
@Slf4j
public class TbProductStockDetailServiceImpl implements TbProductStockDetailService {
private final TbProductStockDetailRepository tbProductStockDetailRepository;
private final TbProductStockDetailMapper tbProductStockDetailMapper;
private final StockCountRepository stockCountRepository;
private final EntityManager entityManager;
private final TbOrderInfoRepository tbOrderInfoRepository;
@Override
public Map<String,Object> queryAll(TbProductStockDetailQueryCriteria criteria, Pageable pageable){
Page<TbProductStockDetail> page = tbProductStockDetailRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
@@ -66,10 +76,23 @@ public class TbProductStockDetailServiceImpl implements TbProductStockDetailServ
Page<TbProductStockDetail> page = tbProductStockDetailRepository.findAll((root, criteriaQuery, criteriaBuilder)
-> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
Page<TbProductStockDetailDto> map = page.map(tbProductStockDetailMapper::toDto);
ArrayList<Map<String, Object>> contents = new ArrayList<>();
for (TbProductStockDetailDto tbProductStockDetailDto : map.getContent()) {
if (StrUtil.isNotBlank(tbProductStockDetailDto.getOrderId())) {
TbOrderInfo tbOrderInfo = tbOrderInfoRepository.findById(Integer.valueOf(tbProductStockDetailDto.getOrderId())).orElse(null);
Map<String, Object> map1 = BeanUtil.transBean2Map(tbProductStockDetailDto);
if (tbOrderInfo != null) {
map1.put("orderNo", tbOrderInfo.getOrderNo());
}
contents.add(map1);
}
tbProductStockDetailDto.setTypes();
}
return PageUtil.toPage(map);
Map<String,Object> info = new LinkedHashMap<>(2);
info.put("content",contents);
info.put("totalElements",page.getTotalElements());
return info;
}
@@ -152,4 +175,33 @@ public class TbProductStockDetailServiceImpl implements TbProductStockDetailServ
}
FileUtil.downloadExcel(list, response);
}
}
@Override
public void addSaleRecord(Integer orderId) {
List<StockCountDTO> stockCountDTOS = stockCountRepository.countStockById(orderId);
log.info("查询到订单id: {}的所有库存数据: {}", orderId, stockCountDTOS);
stockCountDTOS.forEach(s->{
if (s.getStockCount() > 0) {
TbProductStockDetail productStockDetail = new TbProductStockDetail();
productStockDetail.setCreatedAt(System.currentTimeMillis());
productStockDetail.setUpdatedAt(System.currentTimeMillis());
productStockDetail.setShopId(s.getShopId());
productStockDetail.setProductId(s.getProId().toString());
productStockDetail.setProductName(s.getProName());
productStockDetail.setOrderId(orderId.toString());
// productStockDetail.setSkuId(s.getSkuId().toString());
productStockDetail.setIsStock(s.getIsStock());//是否开启库存
productStockDetail.setLeftNumber(s.getStockNumber()+s.getStockCount());//原库存
// productStockDetail.setSpecSnap(s.getSkuName());
productStockDetail.setUnitName(s.getUnitName());
productStockDetail.setStockNumber(-Double.valueOf(s.getStockCount()));
productStockDetail.setSourcePath("NORMAL");
productStockDetail.setType("售出记录");
productStockDetail.setRemark("售出记录:" + orderId);
productStockDetail.setSubType(-1);
tbProductStockDetailRepository.save(productStockDetail);
}
});
}
}

View File

@@ -44,4 +44,13 @@ public interface StockService {
* @param stockUpdateWarnLineVO 警戒线
*/
void updateProductWarnLine(StockUpdateWarnLineVO stockUpdateWarnLineVO);
/**
* 上下架商品
*
* @param shopId 店铺id
* @param skuId ski
* @param isGrounding
*/
void grounding(Integer shopId, Integer skuId, Boolean isGrounding);
}

View File

@@ -86,4 +86,6 @@ public interface TbProductStockDetailService {
* @throws IOException /
*/
void download(List<TbProductStockDetailDto> all, HttpServletResponse response) throws IOException;
}
void addSaleRecord(Integer orderId);
}