diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/domain/TbConsStockCountQueryCriteria.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/domain/TbConsStockCountQueryCriteria.java new file mode 100644 index 00000000..7c2e24f5 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/domain/TbConsStockCountQueryCriteria.java @@ -0,0 +1,32 @@ +package cn.ysk.cashier.cons.domain; + +import cn.ysk.cashier.dto.BaseQueryDto; +import lombok.Data; +import org.apache.commons.lang3.StringUtils; + +import java.util.List; + +@Data +public class TbConsStockCountQueryCriteria extends BaseQueryDto { + + private Integer consId; + + private String conName; + + private Integer conTypeId; + + private String column; + + private List bizCode; + + private Integer page = 0; + + private Integer size = 10; + + + public void setConName(String conName) { + if (StringUtils.isNotBlank(conName)) { + this.conName = conName; + } + } +} \ No newline at end of file diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/repository/TbConsInfoFlowRepository.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/repository/TbConsInfoFlowRepository.java index 90c0a8d6..ad3991f2 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/cons/repository/TbConsInfoFlowRepository.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/repository/TbConsInfoFlowRepository.java @@ -1,25 +1,40 @@ package cn.ysk.cashier.cons.repository; import cn.ysk.cashier.cons.domain.TbConsInfoFlow; +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; -/** -* @website https://eladmin.vip -* @author admin -* @date 2024-06-22 -**/ +import java.util.Date; +import java.util.List; + public interface TbConsInfoFlowRepository extends JpaRepository, JpaSpecificationExecutor { - @Query(value = "SELECT\n" + - "\tp.`name` \n" + - "FROM\n" + - "\ttb_product_sku s\n" + - "\tLEFT JOIN tb_product p ON s.product_id = p.id \n" + - "WHERE\n" + - "\ts.id = ?1",nativeQuery = true) + @Query(value = "SELECT " + + "p.`name` " + + " FROM " + + "tb_product_sku s" + + " LEFT JOIN tb_product p ON s.product_id = p.id " + + " WHERE " + + "s.id = ?1",nativeQuery = true) String selectByPskId(Integer skuId); + @Query("SELECT flow FROM TbConsInfoFlow flow " + + "INNER JOIN TbConsInfo cons ON flow.consId = cons.id " + + "AND cons.shopId = :shopId " + + "AND (:consId IS NULL OR cons.id = :consId) " + + "AND (:conTypeId IS NULL OR cons.conTypeId = :conTypeId) " + + "AND (:conName IS NULL OR cons.conName LIKE %:conName%) " + + "where flow.shopId = :shopId " + + "AND flow.createTime > :startTime " + + "AND flow.createTime < :endTime " + + "AND flow.bizCode IN :types " + + "ORDER BY flow.id DESC") + Page findByConsParam(Integer shopId, Integer consId, String conName, Integer conTypeId, List types, + Date startTime, Date endTime, Pageable pageable); + + } \ No newline at end of file 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 97e62295..b555391f 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 @@ -1,10 +1,9 @@ package cn.ysk.cashier.cons.rest; import cn.ysk.cashier.annotation.Log; +import cn.ysk.cashier.cons.domain.TbConsStockCountQueryCriteria; import cn.ysk.cashier.cons.service.TbConsInfoFlowService; import cn.ysk.cashier.cons.service.dto.TbConsInfoFlowDto; -import cn.ysk.cashier.cons.service.dto.TbConsInfoFlowQueryCriteria; -import cn.ysk.cashier.dto.product.TbProductStockCountQueryCriteria; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -38,13 +37,13 @@ public class TbConsInfoFlowController { @PostMapping("/count") @ApiOperation("耗材库存统计") - public ResponseEntity stockCount(@RequestBody TbProductStockCountQueryCriteria criteria) throws ParseException { + public ResponseEntity stockCount(@RequestBody TbConsStockCountQueryCriteria criteria) throws ParseException { return new ResponseEntity<>(tbConsInfoFlowService.stockCount(criteria),HttpStatus.OK); } @PostMapping("/stock") @ApiOperation("耗材库存记录列表") - public ResponseEntity queryPage(@RequestBody TbConsInfoFlowQueryCriteria criteria){ + public ResponseEntity queryPage(@RequestBody TbConsStockCountQueryCriteria criteria) throws ParseException { return new ResponseEntity<>(tbConsInfoFlowService.queryPage(criteria),HttpStatus.OK); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/TbConsInfoFlowService.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/TbConsInfoFlowService.java index 2c4d7b9b..a9e62631 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/TbConsInfoFlowService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/TbConsInfoFlowService.java @@ -1,6 +1,7 @@ package cn.ysk.cashier.cons.service; import cn.ysk.cashier.cons.domain.TbConsInfoFlow; +import cn.ysk.cashier.cons.domain.TbConsStockCountQueryCriteria; import cn.ysk.cashier.cons.service.dto.TbConsInfoFlowDto; import cn.ysk.cashier.cons.service.dto.TbConsInfoFlowQueryCriteria; import cn.ysk.cashier.dto.product.TbProductStockCountQueryCriteria; @@ -34,8 +35,8 @@ public interface TbConsInfoFlowService { */ List queryAll(TbConsInfoFlowQueryCriteria criteria); - Map queryPage(TbConsInfoFlowQueryCriteria criteria); - TbProductStockCountVo stockCount(TbProductStockCountQueryCriteria criteria) throws ParseException; + Map queryPage(TbConsStockCountQueryCriteria criteria) throws ParseException; + TbProductStockCountVo stockCount(TbConsStockCountQueryCriteria criteria) throws ParseException; Map stockList(TbProductStockCountQueryCriteria criteria) throws ParseException; void frmLoss(TbConsInfoFlowDto resources); diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/impl/TbConsInfoFlowServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/impl/TbConsInfoFlowServiceImpl.java index 4c30d2a4..56c45ecf 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/impl/TbConsInfoFlowServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/impl/TbConsInfoFlowServiceImpl.java @@ -3,6 +3,7 @@ package cn.ysk.cashier.cons.service.impl; import cn.hutool.core.bean.copier.CopyOptions; import cn.ysk.cashier.cons.domain.TbConsInfo; import cn.ysk.cashier.cons.domain.TbConsInfoFlow; +import cn.ysk.cashier.cons.domain.TbConsStockCountQueryCriteria; import cn.ysk.cashier.cons.repository.TbConsInfoFlowRepository; import cn.ysk.cashier.cons.repository.TbConsInfoRepository; import cn.ysk.cashier.cons.service.TbConsInfoFlowService; @@ -74,7 +75,12 @@ public class TbConsInfoFlowServiceImpl implements TbConsInfoFlowService { //入库stockInNumber; stockIn //出库stockOutNumber; stockout @Override - public Map queryPage(TbConsInfoFlowQueryCriteria criteria){ + public Map queryPage(TbConsStockCountQueryCriteria 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": @@ -104,25 +110,28 @@ public class TbConsInfoFlowServiceImpl implements TbConsInfoFlowService { case "stockOutNumber": criteria.setBizCode(Collections.singletonList("stockout")); break; + default: + criteria.setBizCode(Arrays.asList("stockIn","cancelCart","init","stockIn","checkStockIn","stockOtherIn","cancelCart","createCart","stockout","checkStockOut","frmLoss")); + break; } } Sort sort = Sort.by(Sort.Direction.DESC, "id"); Pageable pageable = PageRequest.of(criteria.getPage(), criteria.getSize(), sort); - - Page page = tbConsInfoFlowRepository.findAll((root, criteriaQuery, criteriaBuilder) - -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); + Page page = tbConsInfoFlowRepository.findByConsParam( + criteria.getShopId(), criteria.getConsId(), criteria.getConName(),criteria.getConTypeId(), + criteria.getBizCode(),criteria.getStartTime(),criteria.getEndTime(),pageable); return PageUtil.toPage(page); } @Override - public TbProductStockCountVo stockCount(TbProductStockCountQueryCriteria criteria) throws ParseException { + public TbProductStockCountVo stockCount(TbConsStockCountQueryCriteria 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对象 } - return stockRepository.consStockCount(criteria.getShopId(), criteria.getProductName(), - criteria.getCategoryId(), criteria.getStartTime(), criteria.getEndTime()); + return stockRepository.consStockCount(criteria.getShopId(), criteria.getConsId(), criteria.getConName(), + criteria.getConTypeId(), criteria.getStartTime(), criteria.getEndTime()); } @Override 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 39c4e010..883f3c72 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 @@ -152,14 +152,14 @@ public interface ProductStockCountRepository extends JpaRepository :startTime " + " AND flow.createTime < :endTime ") - TbProductStockCountVo consStockCount(Integer shopId, - String conName, - String conTypeId, Date startTime, Date endTime); + TbProductStockCountVo consStockCount(Integer shopId, Integer consId, String conName, + Integer conTypeId, Date startTime, Date endTime); }