1.库存新增上下架接口
2.库存记录返回orderNo 3.增加保存库存记录mq处理
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -86,4 +86,6 @@ public interface TbProductStockDetailService {
|
||||
* @throws IOException /
|
||||
*/
|
||||
void download(List<TbProductStockDetailDto> all, HttpServletResponse response) throws IOException;
|
||||
}
|
||||
|
||||
void addSaleRecord(Integer orderId);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user