Merge remote-tracking branch 'origin/test' into test

This commit is contained in:
SongZhang 2024-10-14 10:03:24 +08:00
commit 72dca1d7c4
6 changed files with 84 additions and 28 deletions

View File

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

View File

@ -1,25 +1,40 @@
package cn.ysk.cashier.cons.repository; package cn.ysk.cashier.cons.repository;
import cn.ysk.cashier.cons.domain.TbConsInfoFlow; 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.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
/** import java.util.Date;
* @website https://eladmin.vip import java.util.List;
* @author admin
* @date 2024-06-22
**/
public interface TbConsInfoFlowRepository extends JpaRepository<TbConsInfoFlow, Integer>, JpaSpecificationExecutor<TbConsInfoFlow> { public interface TbConsInfoFlowRepository extends JpaRepository<TbConsInfoFlow, Integer>, JpaSpecificationExecutor<TbConsInfoFlow> {
@Query(value = "SELECT\n" + @Query(value = "SELECT " +
"\tp.`name` \n" + "p.`name` " +
"FROM\n" + " FROM " +
"\ttb_product_sku s\n" + "tb_product_sku s" +
"\tLEFT JOIN tb_product p ON s.product_id = p.id \n" + " LEFT JOIN tb_product p ON s.product_id = p.id " +
"WHERE\n" + " WHERE " +
"\ts.id = ?1",nativeQuery = true) "s.id = ?1",nativeQuery = true)
String selectByPskId(Integer skuId); 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<TbConsInfoFlow> findByConsParam(Integer shopId, Integer consId, String conName, Integer conTypeId, List<String> types,
Date startTime, Date endTime, Pageable pageable);
} }

View File

@ -1,10 +1,9 @@
package cn.ysk.cashier.cons.rest; package cn.ysk.cashier.cons.rest;
import cn.ysk.cashier.annotation.Log; 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.TbConsInfoFlowService;
import cn.ysk.cashier.cons.service.dto.TbConsInfoFlowDto; 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.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -38,13 +37,13 @@ public class TbConsInfoFlowController {
@PostMapping("/count") @PostMapping("/count")
@ApiOperation("耗材库存统计") @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); return new ResponseEntity<>(tbConsInfoFlowService.stockCount(criteria),HttpStatus.OK);
} }
@PostMapping("/stock") @PostMapping("/stock")
@ApiOperation("耗材库存记录列表") @ApiOperation("耗材库存记录列表")
public ResponseEntity<Object> queryPage(@RequestBody TbConsInfoFlowQueryCriteria criteria){ public ResponseEntity<Object> queryPage(@RequestBody TbConsStockCountQueryCriteria criteria) throws ParseException {
return new ResponseEntity<>(tbConsInfoFlowService.queryPage(criteria),HttpStatus.OK); return new ResponseEntity<>(tbConsInfoFlowService.queryPage(criteria),HttpStatus.OK);
} }

View File

@ -1,6 +1,7 @@
package cn.ysk.cashier.cons.service; package cn.ysk.cashier.cons.service;
import cn.ysk.cashier.cons.domain.TbConsInfoFlow; 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.TbConsInfoFlowDto;
import cn.ysk.cashier.cons.service.dto.TbConsInfoFlowQueryCriteria; import cn.ysk.cashier.cons.service.dto.TbConsInfoFlowQueryCriteria;
import cn.ysk.cashier.dto.product.TbProductStockCountQueryCriteria; import cn.ysk.cashier.dto.product.TbProductStockCountQueryCriteria;
@ -34,8 +35,8 @@ public interface TbConsInfoFlowService {
*/ */
List<TbConsInfoFlowDto> queryAll(TbConsInfoFlowQueryCriteria criteria); List<TbConsInfoFlowDto> queryAll(TbConsInfoFlowQueryCriteria criteria);
Map<String,Object> queryPage(TbConsInfoFlowQueryCriteria criteria); Map<String,Object> queryPage(TbConsStockCountQueryCriteria criteria) throws ParseException;
TbProductStockCountVo stockCount(TbProductStockCountQueryCriteria criteria) throws ParseException; TbProductStockCountVo stockCount(TbConsStockCountQueryCriteria criteria) throws ParseException;
Map<String,Object> stockList(TbProductStockCountQueryCriteria criteria) throws ParseException; Map<String,Object> stockList(TbProductStockCountQueryCriteria criteria) throws ParseException;
void frmLoss(TbConsInfoFlowDto resources); 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.hutool.core.bean.copier.CopyOptions;
import cn.ysk.cashier.cons.domain.TbConsInfo; import cn.ysk.cashier.cons.domain.TbConsInfo;
import cn.ysk.cashier.cons.domain.TbConsInfoFlow; 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.TbConsInfoFlowRepository;
import cn.ysk.cashier.cons.repository.TbConsInfoRepository; import cn.ysk.cashier.cons.repository.TbConsInfoRepository;
import cn.ysk.cashier.cons.service.TbConsInfoFlowService; import cn.ysk.cashier.cons.service.TbConsInfoFlowService;
@ -74,7 +75,12 @@ public class TbConsInfoFlowServiceImpl implements TbConsInfoFlowService {
//入库stockInNumber; stockIn //入库stockInNumber; stockIn
//出库stockOutNumber; stockout //出库stockOutNumber; stockout
@Override @Override
public Map<String,Object> queryPage(TbConsInfoFlowQueryCriteria criteria){ public Map<String,Object> 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())){ if(StringUtils.isNotBlank(criteria.getColumn())){
switch (criteria.getColumn()){ switch (criteria.getColumn()){
case "addCountNumber": case "addCountNumber":
@ -104,25 +110,28 @@ public class TbConsInfoFlowServiceImpl implements TbConsInfoFlowService {
case "stockOutNumber": case "stockOutNumber":
criteria.setBizCode(Collections.singletonList("stockout")); criteria.setBizCode(Collections.singletonList("stockout"));
break; 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"); Sort sort = Sort.by(Sort.Direction.DESC, "id");
Pageable pageable = PageRequest.of(criteria.getPage(), criteria.getSize(), sort); Pageable pageable = PageRequest.of(criteria.getPage(), criteria.getSize(), sort);
Page<TbConsInfoFlow> page = tbConsInfoFlowRepository.findByConsParam(
Page<TbConsInfoFlow> page = tbConsInfoFlowRepository.findAll((root, criteriaQuery, criteriaBuilder) criteria.getShopId(), criteria.getConsId(), criteria.getConName(),criteria.getConTypeId(),
-> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); criteria.getBizCode(),criteria.getStartTime(),criteria.getEndTime(),pageable);
return PageUtil.toPage(page); return PageUtil.toPage(page);
} }
@Override @Override
public TbProductStockCountVo stockCount(TbProductStockCountQueryCriteria criteria) throws ParseException { public TbProductStockCountVo stockCount(TbConsStockCountQueryCriteria criteria) throws ParseException {
if (criteria.getStartTime() == null || criteria.getEndTime() == null) { if (criteria.getStartTime() == null || criteria.getEndTime() == null) {
criteria.setEndTime(new Date());// criteria.setEndTime(new Date());//
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
criteria.setStartTime(sdf.parse("2024-01-01"));//创建2024年1月1日的Date对象 criteria.setStartTime(sdf.parse("2024-01-01"));//创建2024年1月1日的Date对象
} }
return stockRepository.consStockCount(criteria.getShopId(), criteria.getProductName(), return stockRepository.consStockCount(criteria.getShopId(), criteria.getConsId(), criteria.getConName(),
criteria.getCategoryId(), criteria.getStartTime(), criteria.getEndTime()); criteria.getConTypeId(), criteria.getStartTime(), criteria.getEndTime());
} }
@Override @Override

View File

@ -152,14 +152,14 @@ public interface ProductStockCountRepository extends JpaRepository<TbProductStoc
" TbConsInfoFlow flow " + " TbConsInfoFlow flow " +
" INNER JOIN TbConsInfo cons ON flow.consId = cons.id " + " INNER JOIN TbConsInfo cons ON flow.consId = cons.id " +
" AND cons.shopId = :shopId " + " AND cons.shopId = :shopId " +
" AND (:consId IS NULL OR cons.id = :consId ) " +
" AND (:conTypeId IS NULL OR cons.conTypeId = :conTypeId ) " + " AND (:conTypeId IS NULL OR cons.conTypeId = :conTypeId ) " +
" AND (:conName IS NULL OR flow.conName LIKE %:conName%) " + " AND (:conName IS NULL OR flow.conName LIKE %:conName%) " +
"WHERE " + "WHERE " +
" flow.shopId = :shopId " + " flow.shopId = :shopId " +
" AND flow.createTime > :startTime " + " AND flow.createTime > :startTime " +
" AND flow.createTime < :endTime ") " AND flow.createTime < :endTime ")
TbProductStockCountVo consStockCount(Integer shopId, TbProductStockCountVo consStockCount(Integer shopId, Integer consId, String conName,
String conName, Integer conTypeId, Date startTime, Date endTime);
String conTypeId, Date startTime, Date endTime);
} }