商品库存数据统计

商品库存查询变动记录
耗材库存数据统计
商品列表排序
耗材列表排序
商品报损
耗材报损
This commit is contained in:
2024-09-25 16:00:05 +08:00
parent 999126b034
commit f9f69f93cd
21 changed files with 583 additions and 243 deletions

View File

@@ -239,9 +239,7 @@ public class TbProductServiceImpl implements TbProductService {
}
@Override
public Map<String, Object> queryAllV2(TbProductQueryV2Criteria criteria) {
Sort sort = Sort.by(Sort.Direction.ASC, "sort");
Pageable pageable = PageRequest.of(criteria.getPage(), criteria.getSize(), sort);
public Map<String, Object> queryAllV2(TbProductQueryV2Criteria criteria,Pageable pageable) {
//查询商品数据
Page<TbProduct> page = tbProductRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder), pageable);
List<TbProductNewVo> products = new ArrayList<>();

View File

@@ -1,14 +1,19 @@
package cn.ysk.cashier.service.impl.productimpl;
import cn.hutool.core.bean.copier.CopyOptions;
import cn.hutool.core.util.StrUtil;
import cn.ysk.cashier.dto.product.*;
import cn.ysk.cashier.exception.BadRequestException;
import cn.ysk.cashier.mybatis.mapper.TbProducSkutMapper;
import cn.ysk.cashier.pojo.order.TbOrderInfo;
import cn.ysk.cashier.pojo.product.TbProduct;
import cn.ysk.cashier.pojo.product.TbProductStockDetail;
import cn.ysk.cashier.pojo.shop.TbShopUnit;
import cn.ysk.cashier.repository.order.StockCountRepository;
import cn.ysk.cashier.repository.order.TbOrderInfoRepository;
import cn.ysk.cashier.repository.product.ProductStockCountRepository;
import cn.ysk.cashier.repository.product.TbProductRepository;
import cn.ysk.cashier.repository.shop.TbShopUnitRepository;
import cn.ysk.cashier.utils.*;
import cn.ysk.cashier.vo.TbProductStockCountVo;
import lombok.RequiredArgsConstructor;
@@ -46,6 +51,8 @@ public class TbProductStockDetailServiceImpl implements TbProductStockDetailServ
private final TbProductStockDetailRepository tbProductStockDetailRepository;
private final TbProductStockDetailMapper tbProductStockDetailMapper;
private final TbProductRepository tbProductRepository;
private final TbShopUnitRepository shopUnitRepository;
private final StockCountRepository stockCountRepository;
private final ProductStockCountRepository stockRepository;
private final EntityManager entityManager;
@@ -122,7 +129,7 @@ public class TbProductStockDetailServiceImpl implements TbProductStockDetailServ
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
criteria.setStartTime(sdf.parse("2024-01-01"));//创建2024年1月1日的Date对象
}
return stockRepository.stockCount(criteria.getShopId().toString(), criteria.getProductName(),
return stockRepository.productStockCount(criteria.getShopId().toString(), criteria.getProductName(),
criteria.getCategoryId(), criteria.getStartTime().getTime(), criteria.getEndTime().getTime());
}
@@ -135,7 +142,7 @@ public class TbProductStockDetailServiceImpl implements TbProductStockDetailServ
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
criteria.setStartTime(sdf.parse("2024-01-01"));//创建2024年1月1日的Date对象
}
Page<TbProductStockListDto> tbProductStockCountDtos = stockRepository.stock2(
Page<TbProductStockListDto> tbProductStockCountDtos = stockRepository.productStock(
criteria.getShopId().toString(),
criteria.getProductName(),
criteria.getCategoryId(),
@@ -170,6 +177,25 @@ public class TbProductStockDetailServiceImpl implements TbProductStockDetailServ
return map;
}
@Override
public void frmLoss(TbProductFrmLossDto resources) {
TbProduct product = tbProductRepository.findById(Integer.valueOf(resources.getProductId())).orElse(null);
if(Objects.isNull(product)){
throw new BadRequestException("该商品不存在");
}
TbShopUnit tbShopUnit = shopUnitRepository.findById(product.getUnitId()).orElse(null);
TbProductStockDetail stockDetail = new TbProductStockDetail();
cn.hutool.core.bean.BeanUtil.copyProperties(resources,stockDetail, CopyOptions.create().setIgnoreNullValue(true));
stockDetail.setLeftNumber(product.getStockNumber());//原库存
stockDetail.setStockNumber(-stockDetail.getStockNumber());//变动数量
stockDetail.setSourcePath("CASHIER-APP");
stockDetail.setProductName(product.getName());
stockDetail.setUnitName(tbShopUnit==null?"":tbShopUnit.getName());
tbProductStockDetailRepository.save(stockDetail);
product.setStockNumber(product.getStockNumber()-stockDetail.getStockNumber().intValue());
tbProductRepository.save(product);
}
@Override
@Transactional(rollbackFor = Exception.class)
public TbProductStockDetailDto create(TbProductStockDetail resources) {

View File

@@ -6,6 +6,7 @@ import cn.ysk.cashier.pojo.product.TbProduct;
import cn.ysk.cashier.vo.TbProductVo;
import cn.ysk.cashier.dto.product.TbProductDto;
import cn.ysk.cashier.dto.product.TbProductQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.util.Map;
import java.util.List;
@@ -30,7 +31,7 @@ public interface TbProductService {
Map<String, Object> queryAll(TbProductQueryCriteria criteria, boolean isAdmin);
Map<String, Object> queryAllV2(TbProductQueryV2Criteria criteria);
Map<String, Object> queryAllV2(TbProductQueryV2Criteria criteria, Pageable pageable);
/**

View File

@@ -1,5 +1,6 @@
package cn.ysk.cashier.service.product;
import cn.ysk.cashier.dto.product.TbProductFrmLossDto;
import cn.ysk.cashier.dto.product.TbProductStockCountQueryCriteria;
import cn.ysk.cashier.dto.rabbit.StockRecordMsg;
import cn.ysk.cashier.pojo.product.TbProductStockDetail;
@@ -51,6 +52,8 @@ public interface TbProductStockDetailService {
TbProductStockDetailDto findById(Long id);
HashMap<String, BigDecimal> sumStockNumber(String productId);
void frmLoss(TbProductFrmLossDto resources);
/**
* 创建
* @param resources /