耗材记录
This commit is contained in:
parent
2553a3605d
commit
527b5f059c
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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.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);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -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){
|
||||||
return new ResponseEntity<>(tbConsInfoFlowService.queryPage(criteria),HttpStatus.OK);
|
return new ResponseEntity<>(tbConsInfoFlowService.queryPage(criteria),HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
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);
|
||||||
|
|
|
||||||
|
|
@ -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,7 @@ 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){
|
||||||
if(StringUtils.isNotBlank(criteria.getColumn())){
|
if(StringUtils.isNotBlank(criteria.getColumn())){
|
||||||
switch (criteria.getColumn()){
|
switch (criteria.getColumn()){
|
||||||
case "addCountNumber":
|
case "addCountNumber":
|
||||||
|
|
@ -104,25 +105,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
|
||||||
|
|
|
||||||
|
|
@ -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,
|
|
||||||
String conTypeId, Date startTime, Date endTime);
|
String conTypeId, Date startTime, Date endTime);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue