diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/rest/TbConsInfoFlowController.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/rest/TbConsInfoFlowController.java index 6ddaab7f..97e62295 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/cons/rest/TbConsInfoFlowController.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/rest/TbConsInfoFlowController.java @@ -41,12 +41,6 @@ public class TbConsInfoFlowController { public ResponseEntity stockCount(@RequestBody TbProductStockCountQueryCriteria criteria) throws ParseException { return new ResponseEntity<>(tbConsInfoFlowService.stockCount(criteria),HttpStatus.OK); } -// -// @PostMapping("/list") -// @ApiOperation("耗材库存统计列表") -// public ResponseEntity stockList(@RequestBody TbProductStockCountQueryCriteria criteria) throws ParseException { -// return new ResponseEntity<>(tbConsInfoFlowService.stockList(criteria),HttpStatus.OK); -// } @PostMapping("/stock") @ApiOperation("耗材库存记录列表") diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbProductStockDetailController.java b/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbProductStockDetailController.java index 03a2fc8f..c028a052 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbProductStockDetailController.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbProductStockDetailController.java @@ -18,11 +18,6 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.text.ParseException; -/** -* @website https://eladmin.vip -* @author lyf -* @date 2024-01-19 -**/ @RestController @RequiredArgsConstructor @Api(tags = "商品库存记录管理") @@ -60,7 +55,7 @@ public class TbProductStockDetailController { @PostMapping("/stock") @ApiOperation("商品库存记录列表") - public ResponseEntity queryPage(@RequestBody TbProductStockDetailQueryCriteria criteria){ + public ResponseEntity queryPage(@RequestBody TbProductStockDetailQueryCriteria criteria) throws ParseException { return new ResponseEntity<>(tbProductStockDetailService.queryPage(criteria),HttpStatus.OK); } // @GetMapping("/sum") diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/product/TbProductStockCountQueryCriteria.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/product/TbProductStockCountQueryCriteria.java index 7f9a75cb..48729ee6 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/product/TbProductStockCountQueryCriteria.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/product/TbProductStockCountQueryCriteria.java @@ -4,11 +4,6 @@ import cn.ysk.cashier.dto.BaseQueryDto; import lombok.Data; import org.apache.commons.lang3.StringUtils; -/** -* @website https://eladmin.vip -* @author lyf -* @date 2024-01-19 -**/ @Data public class TbProductStockCountQueryCriteria extends BaseQueryDto { @@ -18,6 +13,8 @@ public class TbProductStockCountQueryCriteria extends BaseQueryDto { private String categoryId; + private String type; + private Integer page = 0; private Integer size = 10; @@ -39,4 +36,10 @@ public class TbProductStockCountQueryCriteria extends BaseQueryDto { this.categoryId = categoryId; } } + + public void setType(String type) { + if (StringUtils.isNotBlank(type)) { + this.type = type; + } + } } \ No newline at end of file diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/product/TbProductStockDetailQueryCriteria.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/product/TbProductStockDetailQueryCriteria.java index e2b56d45..7d4e7abd 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/product/TbProductStockDetailQueryCriteria.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/product/TbProductStockDetailQueryCriteria.java @@ -1,42 +1,14 @@ package cn.ysk.cashier.dto.product; import lombok.Data; + import java.util.List; -import cn.ysk.cashier.annotation.Query; -import org.apache.commons.lang3.StringUtils; -/** -* @website https://eladmin.vip -* @author lyf -* @date 2024-01-19 -**/ @Data -public class TbProductStockDetailQueryCriteria{ - - /** 精确 */ -// @Query -// private String skuId; - - /** 精确 */ - @Query - private String productId; - @Query - private String shopId; - /** 精确 */ -// @Query -// private String productName; - +public class TbProductStockDetailQueryCriteria extends TbProductStockCountQueryCriteria{ private String column; - - @Query(type = Query.Type.IN) - private List type; - /** BETWEEN */ - @Query(type = Query.Type.BETWEEN) - private List createdAt; -// @Query -// private Long createTime; -// @Query -// private Long endTime; + //操作类型 + private List types; private Integer page; diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/ProductStockCountRepository.java b/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/ProductStockCountRepository.java index 1b46140a..3a621cd2 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/ProductStockCountRepository.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/ProductStockCountRepository.java @@ -9,12 +9,6 @@ import org.springframework.data.jpa.repository.Query; import java.util.Date; - -/** - * @author lyf - * @website https://eladmin.vip - * @date 2024-03-02 - **/ public interface ProductStockCountRepository extends JpaRepository { @@ -47,7 +41,8 @@ public interface ProductStockCountRepository extends JpaRepository :startTime " + @@ -55,9 +50,8 @@ public interface ProductStockCountRepository extends JpaRepository productStock(String shopId, - String productName, - String categoryId, long startTime, long endTime, Pageable pageable); + Page productStock(String shopId, String productName, String categoryId, String type, + long startTime, long endTime, Pageable pageable); @Query("SELECT new cn.ysk.cashier.vo.TbProductStockCountVo( " + " SUM( pro.stockNumber ) , " + @@ -70,17 +64,18 @@ public interface ProductStockCountRepository extends JpaRepository :startTime " + " AND detail.createdAt < :endTime") TbProductStockCountVo productStockCount(String shopId, String productName, - String categoryId, long startTime, long endTime); + String categoryId, String type, long startTime, long endTime); @Query(value = "SELECT " + diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductStockDetailRepository.java b/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductStockDetailRepository.java index f9ef5274..524399b8 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductStockDetailRepository.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductStockDetailRepository.java @@ -16,20 +16,33 @@ package cn.ysk.cashier.repository.product; import cn.ysk.cashier.pojo.product.TbProductStockDetail; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.query.Param; -import java.math.BigDecimal; +import java.util.List; -/** -* @website https://eladmin.vip -* @author lyf -* @date 2024-01-19 -**/ public interface TbProductStockDetailRepository extends JpaRepository, JpaSpecificationExecutor { - @Query("select sum(detail.stockNumber) from TbProductStockDetail detail where detail.productId =:product") - BigDecimal sumStockNumber(@Param("product") String product); + @Query(value = + "SELECT detail.* " + + " FROM " + + "tb_product_stock_detail detail" + + " INNER JOIN TbProduct pro ON detail.product_id = pro.id " + + "AND pro.shop_id = :shopId " + + "AND ( :categoryId IS NULL OR pro.category_id = :categoryId ) " + + "AND ( :productName IS NULL OR pro.name LIKE %:productName % ) " + + "AND ( :type IS NULL OR pro.type = :type ) " + + " WHERE" + + " detail.shop_id = :shopId " + + "AND detail.created_at > :startTime " + + "AND detail.created_at < :endTime " + + "AND (:types IS NULL OR detail.type IN (:types)) " + + "ORDER BY " + + " detail.id DESC", nativeQuery = true) + Page findByProductParam(String shopId, String productName, String categoryId, String type, + List types, + long startTime, long endTime,Pageable pageable); } \ No newline at end of file diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductStockDetailServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductStockDetailServiceImpl.java index f8ebcac2..e953118e 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductStockDetailServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductStockDetailServiceImpl.java @@ -29,20 +29,12 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import java.io.IOException; -import javax.persistence.EntityManager; import javax.servlet.http.HttpServletResponse; -/** -* @website https://eladmin.vip -* @description 服务实现 -* @author lyf -* @date 2024-01-19 -**/ @Service @RequiredArgsConstructor @Slf4j @@ -55,7 +47,6 @@ public class TbProductStockDetailServiceImpl implements TbProductStockDetailServ private final TbShopUnitRepository shopUnitRepository; private final StockCountRepository stockCountRepository; private final ProductStockCountRepository stockRepository; - private final EntityManager entityManager; private final TbOrderInfoRepository tbOrderInfoRepository; private final TbProducSkutMapper skutMapper; @@ -68,29 +59,34 @@ public class TbProductStockDetailServiceImpl implements TbProductStockDetailServ @Override - public Map queryPage(TbProductStockDetailQueryCriteria criteria){ + public Map queryPage(TbProductStockDetailQueryCriteria criteria) throws ParseException { + if (criteria.getStartTime() == null || criteria.getEndTime() == null) { + criteria.setEndTime(new Date()); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + criteria.setStartTime(sdf.parse("2024-01-01"));//创建2024年1月1日的Date对象 + } if(StringUtils.isNotBlank(criteria.getColumn())){ switch (criteria.getColumn()){ case "addCountNumber": - criteria.setType(Arrays.asList("供应商入库", "盘点入库", "其他入库", "退单")); + criteria.setTypes(Arrays.asList("供应商入库", "盘点入库", "其他入库", "退单")); break; case "addNumber": - criteria.setType(Arrays.asList("供应商入库", "盘点入库", "其他入库")); + criteria.setTypes(Arrays.asList("供应商入库", "盘点入库", "其他入库")); break; case "refundNumber": - criteria.setType(Arrays.asList("退单")); + criteria.setTypes(Collections.singletonList("退单")); break; case "subCountNumber": - criteria.setType(Arrays.asList("供应商出库","其他出库","盘点出库","售出记录","报损")); + criteria.setTypes(Arrays.asList("供应商出库","其他出库","盘点出库","售出记录","报损")); break; case "subNumber": - criteria.setType(Arrays.asList("供应商出库","其他出库","盘点出库","售出记录")); + criteria.setTypes(Arrays.asList("供应商出库","其他出库","盘点出库","售出记录")); break; case "saleNumber": - criteria.setType(Arrays.asList("售出记录")); + criteria.setTypes(Collections.singletonList("售出记录")); break; case "lossNumber": - criteria.setType(Arrays.asList("报损")); + criteria.setTypes(Collections.singletonList("报损")); break; } } @@ -98,16 +94,15 @@ public class TbProductStockDetailServiceImpl implements TbProductStockDetailServ Sort sort = Sort.by(Sort.Direction.DESC, "id"); Pageable pageable = PageRequest.of(criteria.getPage(), criteria.getSize(), sort); - Page page = tbProductStockDetailRepository.findAll((root, criteriaQuery, criteriaBuilder) - -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); + Page page = tbProductStockDetailRepository.findByProductParam( + criteria.getShopId().toString(), criteria.getProductName(), + criteria.getCategoryId(),criteria.getType(),criteria.getTypes(), + criteria.getStartTime().getTime(), criteria.getEndTime().getTime(), pageable); Page map = page.map(tbProductStockDetailMapper::toDto); for (TbProductStockDetailDto tbProductStockDetailDto : map.getContent()) { if (StrUtil.isNotBlank(tbProductStockDetailDto.getOrderId())) { - TbOrderInfo tbOrderInfo = tbOrderInfoRepository.findById(Integer.valueOf(tbProductStockDetailDto.getOrderId())).orElse(null); - if (tbOrderInfo != null) { - tbProductStockDetailDto.setOrderNo(tbOrderInfo.getOrderNo()); - } + tbOrderInfoRepository.findById(Integer.valueOf(tbProductStockDetailDto.getOrderId())).ifPresent(tbOrderInfo -> tbProductStockDetailDto.setOrderNo(tbOrderInfo.getOrderNo())); } tbProductStockDetailDto.setTypes(); } @@ -125,7 +120,7 @@ public class TbProductStockDetailServiceImpl implements TbProductStockDetailServ criteria.setStartTime(sdf.parse("2024-01-01"));//创建2024年1月1日的Date对象 } return stockRepository.productStockCount(criteria.getShopId().toString(), criteria.getProductName(), - criteria.getCategoryId(), criteria.getStartTime().getTime(), criteria.getEndTime().getTime()); + criteria.getCategoryId(),criteria.getType(), criteria.getStartTime().getTime(), criteria.getEndTime().getTime()); } @Override @@ -140,12 +135,10 @@ public class TbProductStockDetailServiceImpl implements TbProductStockDetailServ Page tbProductStockCountDtos = stockRepository.productStock( criteria.getShopId().toString(), criteria.getProductName(), - criteria.getCategoryId(), + criteria.getCategoryId(),criteria.getType(), criteria.getStartTime().getTime(), criteria.getEndTime().getTime(), pageable); if (!tbProductStockCountDtos.isEmpty()) { - tbProductStockCountDtos.getContent().parallelStream().forEach(s->{ - s.setCountNumber(s.getStockNumber().add(s.getSubCountNumber())); - }); + tbProductStockCountDtos.getContent().parallelStream().forEach(s-> s.setCountNumber(s.getStockNumber().add(s.getSubCountNumber()))); } return PageUtil.toPage(tbProductStockCountDtos); } @@ -164,14 +157,6 @@ public class TbProductStockDetailServiceImpl implements TbProductStockDetailServ return tbProductStockDetailMapper.toDto(tbProductStockDetail); } - @Override - public HashMap sumStockNumber(String productId) { - BigDecimal bigDecimal = tbProductStockDetailRepository.sumStockNumber(productId); - HashMap map = new HashMap<>(); - map.put("exchange",bigDecimal); - return map; - } - @Override public void frmLoss(TbProductFrmLossDto resources) { TbProduct product = tbProductRepository.findById(Integer.valueOf(resources.getProductId())).orElse(null); diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/product/TbProductStockDetailService.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/product/TbProductStockDetailService.java index f0280af0..50a17929 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/product/TbProductStockDetailService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/product/TbProductStockDetailService.java @@ -2,27 +2,18 @@ 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; import cn.ysk.cashier.dto.product.TbProductStockDetailDto; import cn.ysk.cashier.dto.product.TbProductStockDetailQueryCriteria; +import cn.ysk.cashier.pojo.product.TbProductStockDetail; import cn.ysk.cashier.vo.TbProductStockCountVo; import org.springframework.data.domain.Pageable; -import java.math.BigDecimal; -import java.text.ParseException; -import java.util.HashMap; -import java.util.Map; -import java.util.List; -import java.io.IOException; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.text.ParseException; +import java.util.List; +import java.util.Map; -/** -* @website https://eladmin.vip -* @description 服务接口 -* @author lyf -* @date 2024-01-19 -**/ public interface TbProductStockDetailService { /** @@ -33,7 +24,7 @@ public interface TbProductStockDetailService { */ Map queryAll(TbProductStockDetailQueryCriteria criteria, Pageable pageable); - Map queryPage(TbProductStockDetailQueryCriteria criteria); + Map queryPage(TbProductStockDetailQueryCriteria criteria) throws ParseException; TbProductStockCountVo stockCount(TbProductStockCountQueryCriteria criteria) throws ParseException; Map stockList(TbProductStockCountQueryCriteria criteria) throws ParseException; @@ -51,8 +42,6 @@ public interface TbProductStockDetailService { */ TbProductStockDetailDto findById(Long id); - HashMap sumStockNumber(String productId); - void frmLoss(TbProductFrmLossDto resources); /** * 创建