fix GaoProductStockRecordPageResult
This commit is contained in:
@@ -12,9 +12,9 @@ import com.imyeyu.api.modules.gao.vo.GaoProductStockChangeRequest;
|
||||
import com.imyeyu.api.modules.gao.vo.GaoProductStockManualInBatchRequest;
|
||||
import com.imyeyu.api.modules.gao.vo.GaoProductStockManualRevokeRequest;
|
||||
import com.imyeyu.api.modules.gao.vo.GaoProductStockPage;
|
||||
import com.imyeyu.api.modules.gao.vo.GaoProductStockPageResult;
|
||||
import com.imyeyu.api.modules.gao.vo.GaoProductStockProductView;
|
||||
import com.imyeyu.api.modules.gao.vo.GaoProductStockRecordPage;
|
||||
import com.imyeyu.api.modules.gao.vo.GaoProductStockRecordPageResult;
|
||||
import com.imyeyu.java.bean.timi.TimiException;
|
||||
import com.imyeyu.spring.annotation.AOPLog;
|
||||
import com.imyeyu.spring.annotation.RequestRateLimit;
|
||||
@@ -41,14 +41,11 @@ public class GaoProductStockController {
|
||||
private final GaoProductStockRecordService recordService;
|
||||
private final GaoStoreScopeService storeScopeService;
|
||||
|
||||
/// 分页查询产品库存;指定 SKU 时附带基础单位库存统计
|
||||
/// @param page 分页与筛选条件
|
||||
/// @return 库存分页结果,指定 SKU 时包含基础单位库存统计
|
||||
@AOPLog
|
||||
@RequestRateLimit
|
||||
@RequireGaoPermission(GaoPermissionCode.PRODUCT_STOCK_READ)
|
||||
@PostMapping("/list")
|
||||
public GaoProductStockPageResult list(@RequestBody GaoProductStockPage page) {
|
||||
public PageResult<GaoProductStock> list(@RequestBody GaoProductStockPage page) {
|
||||
TimiException.required(page, "not found stock page");
|
||||
page.setStoreId(storeScopeService.resolveStoreId(page.getStoreId()));
|
||||
return stockService.pageByQuery(page);
|
||||
@@ -145,11 +142,15 @@ public class GaoProductStockController {
|
||||
return stockService.stocktakeLoss(normalize(request));
|
||||
}
|
||||
|
||||
/// 按条件分页查询库存流水并汇总 SKU 基础单位变动
|
||||
/// @param page 流水分页与筛选条件
|
||||
/// @return 流水分页及匹配条件下的 SKU 基础单位汇总
|
||||
/// @throws TimiException 分页请求为空或门店范围校验失败
|
||||
@AOPLog
|
||||
@RequestRateLimit
|
||||
@RequireGaoPermission(GaoPermissionCode.PRODUCT_STOCK_READ)
|
||||
@PostMapping("/record/list")
|
||||
public PageResult<GaoProductStockRecord> recordList(@RequestBody GaoProductStockRecordPage page) {
|
||||
public GaoProductStockRecordPageResult recordList(@RequestBody GaoProductStockRecordPage page) {
|
||||
TimiException.required(page, "not found stock record page");
|
||||
page.setStoreId(storeScopeService.resolveStoreId(page.getStoreId()));
|
||||
return recordService.pageByQuery(page);
|
||||
|
||||
@@ -2,7 +2,6 @@ package com.imyeyu.api.modules.gao.mapper;
|
||||
|
||||
import com.imyeyu.api.modules.gao.entity.GaoProductStock;
|
||||
import com.imyeyu.api.modules.gao.vo.GaoProductStockPage;
|
||||
import com.imyeyu.api.modules.gao.vo.GaoProductStockPageResult;
|
||||
import com.imyeyu.api.modules.gao.vo.GaoProductStockProductView;
|
||||
import com.imyeyu.spring.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
@@ -24,11 +23,6 @@ public interface GaoProductStockMapper extends BaseMapper<GaoProductStock, Strin
|
||||
/// 按条件查询库存余额
|
||||
List<GaoProductStock> selectByQuery(GaoProductStockPage page);
|
||||
|
||||
/// 按条件统计基础单位库存数量
|
||||
/// @param page 库存分页查询条件
|
||||
/// @return 匹配 SKU 的库存数量汇总,数量均为基础单位
|
||||
GaoProductStockPageResult selectQuantitySummaryByQuery(GaoProductStockPage page);
|
||||
|
||||
/// 按产品汇总库存数量
|
||||
long countProductByQuery(GaoProductStockPage page);
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.imyeyu.api.modules.gao.mapper;
|
||||
|
||||
import com.imyeyu.api.modules.gao.entity.GaoProductStockRecord;
|
||||
import com.imyeyu.api.modules.gao.vo.GaoProductStockRecordPage;
|
||||
import com.imyeyu.api.modules.gao.vo.GaoProductStockRecordSkuSummaryView;
|
||||
import com.imyeyu.spring.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
@@ -33,4 +34,9 @@ public interface GaoProductStockRecordMapper extends BaseMapper<GaoProductStockR
|
||||
|
||||
/// 按条件查询库存流水
|
||||
List<GaoProductStockRecord> selectByQuery(GaoProductStockRecordPage page);
|
||||
|
||||
/// 按条件统计指定 SKU 的出入库基础单位数量,不受分页字段限制
|
||||
/// @param page 包含 SKU 和库存流水筛选条件的请求
|
||||
/// @return 指定 SKU 的出入库基础单位数量
|
||||
GaoProductStockRecordSkuSummaryView selectSkuBaseUnitSummaryByQuery(GaoProductStockRecordPage page);
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ package com.imyeyu.api.modules.gao.service;
|
||||
import com.imyeyu.api.modules.common.entity.Attachment;
|
||||
import com.imyeyu.api.modules.gao.entity.GaoProductStockRecord;
|
||||
import com.imyeyu.api.modules.gao.vo.GaoProductStockRecordPage;
|
||||
import com.imyeyu.spring.bean.PageResult;
|
||||
import com.imyeyu.api.modules.gao.vo.GaoProductStockRecordPageResult;
|
||||
import com.imyeyu.spring.service.BaseService;
|
||||
|
||||
import java.util.List;
|
||||
@@ -14,8 +14,10 @@ import java.util.List;
|
||||
/// @since 2026-09-02
|
||||
public interface GaoProductStockRecordService extends BaseService<GaoProductStockRecord, String> {
|
||||
|
||||
/// 按条件查询库存流水
|
||||
PageResult<GaoProductStockRecord> pageByQuery(GaoProductStockRecordPage page);
|
||||
/// 按条件查询库存流水;指定 SKU 时统计其出入库基础单位数量
|
||||
/// @param page 流水分页和统计筛选条件
|
||||
/// @return 流水分页及匹配条件下的 SKU 基础单位汇总
|
||||
GaoProductStockRecordPageResult pageByQuery(GaoProductStockRecordPage page);
|
||||
|
||||
/// 查询库存流水详情
|
||||
GaoProductStockRecord detail(String id);
|
||||
|
||||
@@ -7,7 +7,6 @@ import com.imyeyu.api.modules.gao.vo.GaoProductStockChangeRequest;
|
||||
import com.imyeyu.api.modules.gao.vo.GaoProductStockManualInBatchRequest;
|
||||
import com.imyeyu.api.modules.gao.vo.GaoProductStockManualRevokeRequest;
|
||||
import com.imyeyu.api.modules.gao.vo.GaoProductStockPage;
|
||||
import com.imyeyu.api.modules.gao.vo.GaoProductStockPageResult;
|
||||
import com.imyeyu.api.modules.gao.vo.GaoProductStockProductView;
|
||||
import com.imyeyu.api.modules.gao.vo.GaoStockChangeItem;
|
||||
import com.imyeyu.java.bean.timi.TimiException;
|
||||
@@ -21,10 +20,8 @@ import java.util.List;
|
||||
/// @since 2026-09-02
|
||||
public interface GaoProductStockService {
|
||||
|
||||
/// 分页查询库存余额;指定 SKU 时附带基础单位库存统计
|
||||
/// @param page 分页与筛选条件
|
||||
/// @return 库存分页结果,指定 SKU 时包含基础单位库存统计
|
||||
GaoProductStockPageResult pageByQuery(GaoProductStockPage page);
|
||||
/// 查询库存余额
|
||||
PageResult<GaoProductStock> pageByQuery(GaoProductStockPage page);
|
||||
|
||||
/// 按产品汇总查询库存
|
||||
PageResult<GaoProductStockProductView> pageProductByQuery(GaoProductStockPage page);
|
||||
|
||||
+9
-3
@@ -10,12 +10,13 @@ import com.imyeyu.api.modules.gao.mapper.GaoProductStockRecordMapper;
|
||||
import com.imyeyu.api.modules.gao.service.GaoCustomerService;
|
||||
import com.imyeyu.api.modules.gao.service.GaoProductStockRecordService;
|
||||
import com.imyeyu.api.modules.gao.vo.GaoProductStockRecordPage;
|
||||
import com.imyeyu.api.modules.gao.vo.GaoProductStockRecordPageResult;
|
||||
import com.imyeyu.api.modules.gao.vo.GaoProductStockRecordSkuSummaryView;
|
||||
import com.imyeyu.api.modules.user.entity.User;
|
||||
import com.imyeyu.api.modules.user.service.UserService;
|
||||
import com.imyeyu.java.TimiJava;
|
||||
import com.imyeyu.java.bean.timi.TimiCode;
|
||||
import com.imyeyu.java.bean.timi.TimiException;
|
||||
import com.imyeyu.spring.bean.PageResult;
|
||||
import com.imyeyu.spring.mapper.BaseMapper;
|
||||
import com.imyeyu.spring.service.AbstractEntityService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -45,12 +46,17 @@ public class GaoProductStockRecordServiceImplement extends AbstractEntityService
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<GaoProductStockRecord> pageByQuery(GaoProductStockRecordPage page) {
|
||||
public GaoProductStockRecordPageResult pageByQuery(GaoProductStockRecordPage page) {
|
||||
TimiException.required(page, "not found stock record page");
|
||||
PageResult<GaoProductStockRecord> result = new PageResult<>();
|
||||
GaoProductStockRecordPageResult result = new GaoProductStockRecordPageResult();
|
||||
result.setTotal(mapper.countByQuery(page));
|
||||
result.setList(mapper.selectByQuery(page));
|
||||
fillTransient(result.getList());
|
||||
if (page.getSkuId() != null && !page.getSkuId().isBlank()) {
|
||||
GaoProductStockRecordSkuSummaryView summary = mapper.selectSkuBaseUnitSummaryByQuery(page);
|
||||
result.setInBaseQuantityTotal(summary.getInBaseQuantityTotal());
|
||||
result.setOutBaseQuantityTotal(summary.getOutBaseQuantityTotal());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
+2
-9
@@ -19,7 +19,6 @@ import com.imyeyu.api.modules.gao.vo.GaoProductStockChangeRequest;
|
||||
import com.imyeyu.api.modules.gao.vo.GaoProductStockManualInBatchRequest;
|
||||
import com.imyeyu.api.modules.gao.vo.GaoProductStockManualRevokeRequest;
|
||||
import com.imyeyu.api.modules.gao.vo.GaoProductStockPage;
|
||||
import com.imyeyu.api.modules.gao.vo.GaoProductStockPageResult;
|
||||
import com.imyeyu.api.modules.gao.vo.GaoProductStockProductView;
|
||||
import com.imyeyu.api.modules.gao.vo.GaoStockChangeItem;
|
||||
import com.imyeyu.api.modules.system.audit.AuditOperation;
|
||||
@@ -63,16 +62,10 @@ public class GaoProductStockServiceImplement implements GaoProductStockService {
|
||||
private final UserLoginService userLoginService;
|
||||
|
||||
@Override
|
||||
public GaoProductStockPageResult pageByQuery(GaoProductStockPage page) {
|
||||
public PageResult<GaoProductStock> pageByQuery(GaoProductStockPage page) {
|
||||
TimiException.required(page, "not found stock page");
|
||||
GaoProductStockPageResult result = new GaoProductStockPageResult();
|
||||
PageResult<GaoProductStock> result = new PageResult<>();
|
||||
result.setTotal(stockMapper.countByQuery(page));
|
||||
if (page.getSkuId() != null && !page.getSkuId().isBlank()) {
|
||||
GaoProductStockPageResult summary = stockMapper.selectQuantitySummaryByQuery(page);
|
||||
result.setOnHandQuantityTotal(summary.getOnHandQuantityTotal());
|
||||
result.setReservedQuantityTotal(summary.getReservedQuantityTotal());
|
||||
result.setAvailableQuantityTotal(summary.getAvailableQuantityTotal());
|
||||
}
|
||||
List<GaoProductStock> list = stockMapper.selectByQuery(page);
|
||||
Map<String, Attachment> photoMap = attachmentService.mapFirstImageByIdList(
|
||||
Attachment.BizType.GAO_PRODUCT_SKU,
|
||||
|
||||
@@ -18,9 +18,6 @@ public class GaoProductStockPage extends BasePage {
|
||||
/// 产品 ID
|
||||
private String productId;
|
||||
|
||||
/// SKU ID
|
||||
private String skuId;
|
||||
|
||||
/// 产品或 SKU 名称、拼音、编码、规格摘要关键词
|
||||
private String keyword;
|
||||
}
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
package com.imyeyu.api.modules.gao.vo;
|
||||
|
||||
import com.imyeyu.api.modules.gao.entity.GaoProductStock;
|
||||
import com.imyeyu.spring.bean.PageResult;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/// GAO 产品库存分页查询结果
|
||||
///
|
||||
/// @author Codex
|
||||
/// @since 2026-10-14
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class GaoProductStockPageResult extends PageResult<GaoProductStock> {
|
||||
|
||||
/// SKU 筛选条件下的实际库存合计,基础单位
|
||||
private BigDecimal onHandQuantityTotal;
|
||||
|
||||
/// SKU 筛选条件下的已预占库存合计,基础单位
|
||||
private BigDecimal reservedQuantityTotal;
|
||||
|
||||
/// SKU 筛选条件下的可用库存合计,基础单位
|
||||
private BigDecimal availableQuantityTotal;
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.imyeyu.api.modules.gao.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.imyeyu.api.modules.gao.entity.GaoProductStockRecord;
|
||||
import com.imyeyu.spring.bean.PageResult;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/// GAO 库存流水分页查询结果
|
||||
///
|
||||
/// @author Codex
|
||||
/// @since 2026-10-16
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class GaoProductStockRecordPageResult extends PageResult<GaoProductStockRecord> {
|
||||
|
||||
/// 指定 SKU 在查询条件下的入库基础单位数量合计
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
private BigDecimal inBaseQuantityTotal;
|
||||
|
||||
/// 指定 SKU 在查询条件下的出库基础单位数量合计
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
private BigDecimal outBaseQuantityTotal;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.imyeyu.api.modules.gao.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/// 库存流水 SKU 基础单位统计
|
||||
///
|
||||
/// @author Codex
|
||||
/// @since 2026-10-16
|
||||
@Data
|
||||
public class GaoProductStockRecordSkuSummaryView {
|
||||
|
||||
/// 入库基础单位数量合计
|
||||
private BigDecimal inBaseQuantityTotal;
|
||||
|
||||
/// 出库基础单位数量合计
|
||||
private BigDecimal outBaseQuantityTotal;
|
||||
}
|
||||
Reference in New Issue
Block a user