耗材记录

This commit is contained in:
wangw 2024-10-12 18:15:46 +08:00
parent 2553a3605d
commit 527b5f059c
6 changed files with 84 additions and 27 deletions

View File

@ -0,0 +1,38 @@
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 String conTypeId;
private String column;
private List<String> bizCode;
private Integer page = 0;
private Integer size = 10;
public void setConTypeId(String conTypeId) {
if (StringUtils.isNotBlank(conTypeId)) {
this.conTypeId = conTypeId;
}
}
public void setConName(String conName) {
if (StringUtils.isNotBlank(conName)) {
this.conName = conName;
}
}
}

View File

@ -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<TbConsInfoFlow, Integer>, JpaSpecificationExecutor<TbConsInfoFlow> {
@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.bizName IN :types " +
"ORDER BY flow.id DESC")
Page<TbConsInfoFlow> findByConsParam(Integer shopId, Integer consId, String conName, String conTypeId, List<String> types,
Date startTime, Date endTime, Pageable pageable);
}

View File

@ -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<Object> stockCount(@RequestBody TbProductStockCountQueryCriteria criteria) throws ParseException {
public ResponseEntity<Object> stockCount(@RequestBody TbConsStockCountQueryCriteria criteria) throws ParseException {
return new ResponseEntity<>(tbConsInfoFlowService.stockCount(criteria),HttpStatus.OK);
}
@PostMapping("/stock")
@ApiOperation("耗材库存记录列表")
public ResponseEntity<Object> queryPage(@RequestBody TbConsInfoFlowQueryCriteria criteria){
public ResponseEntity<Object> queryPage(@RequestBody TbConsStockCountQueryCriteria criteria){
return new ResponseEntity<>(tbConsInfoFlowService.queryPage(criteria),HttpStatus.OK);
}

View File

@ -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<TbConsInfoFlowDto> queryAll(TbConsInfoFlowQueryCriteria criteria);
Map<String,Object> queryPage(TbConsInfoFlowQueryCriteria criteria);
TbProductStockCountVo stockCount(TbProductStockCountQueryCriteria criteria) throws ParseException;
Map<String,Object> queryPage(TbConsStockCountQueryCriteria criteria);
TbProductStockCountVo stockCount(TbConsStockCountQueryCriteria criteria) throws ParseException;
Map<String,Object> stockList(TbProductStockCountQueryCriteria criteria) throws ParseException;
void frmLoss(TbConsInfoFlowDto resources);

View File

@ -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,7 @@ public class TbConsInfoFlowServiceImpl implements TbConsInfoFlowService {
//入库stockInNumber; stockIn
//出库stockOutNumber; stockout
@Override
public Map<String,Object> queryPage(TbConsInfoFlowQueryCriteria criteria){
public Map<String,Object> queryPage(TbConsStockCountQueryCriteria criteria){
if(StringUtils.isNotBlank(criteria.getColumn())){
switch (criteria.getColumn()){
case "addCountNumber":
@ -104,25 +105,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<TbConsInfoFlow> page = tbConsInfoFlowRepository.findAll((root, criteriaQuery, criteriaBuilder)
-> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
Page<TbConsInfoFlow> 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

View File

@ -152,14 +152,14 @@ public interface ProductStockCountRepository extends JpaRepository<TbProductStoc
" 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 flow.conName LIKE %:conName%) " +
"WHERE " +
" flow.shopId = :shopId " +
" AND flow.createTime > :startTime " +
" AND flow.createTime < :endTime ")
TbProductStockCountVo consStockCount(Integer shopId,
String conName,
TbProductStockCountVo consStockCount(Integer shopId, Integer consId, String conName,
String conTypeId, Date startTime, Date endTime);
}