From 82ba2baeb7b6a2eb8a5c600aa6abe479ab09de0d Mon Sep 17 00:00:00 2001 From: zjf <1799650030@qq.com> Date: Mon, 20 Oct 2025 01:50:26 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B6=85=E5=B8=82=E6=8A=A5=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../InventoryDetailQueryDTO.java | 8 ++- .../dto/report/SalesReportExcelDTO.java | 1 + .../dto/report/StocktakeReportExcelDTO.java | 1 + .../dto/report/StocktakeReportQueryDTO.java | 1 + .../supermarket/vo/report/SalesReportVO.java | 1 + .../vo/report/StocktakeReportVO.java | 1 + .../docs/超市报表统计逻辑详解.md | 1 + .../controller/ReportController.java | 10 ++-- .../supermarket/mapper/SalesReportMapper.java | 1 + .../mapper/StocktakeReportMapper.java | 1 + .../service/SalesReportService.java | 1 + .../service/StocktakeReportService.java | 1 + .../service/impl/SalesReportServiceImpl.java | 1 + .../impl/StocktakeReportServiceImpl.java | 1 + .../mapper/InventoryReportMapper.xml | 60 +------------------ .../mapper/SmErpInventoryRecordsMapper.xml | 8 ++- 16 files changed, 33 insertions(+), 65 deletions(-) diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/inventoryrecords/InventoryDetailQueryDTO.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/inventoryrecords/InventoryDetailQueryDTO.java index a83e2d516..119ed2cbe 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/inventoryrecords/InventoryDetailQueryDTO.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/inventoryrecords/InventoryDetailQueryDTO.java @@ -38,6 +38,12 @@ public class InventoryDetailQueryDTO { /** * 单据类型:1=采购申请,2=采购订单,3=采购入库,4=采购退货,5=零售出库,6=零售退货,7=库存盘点 */ - @Schema(description="单据类型:3=采购入库,6=零售退货") + @Schema(description="单据类型:3=采购入库,4=采购退货,6=零售退货") private String inventoryType; + + /** + * 单据类型(多个):支持逗号分隔,如 "4,6" + */ + @Schema(description="单据类型(多个),逗号分隔,如:4,6") + private String inventoryTypes; } diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/report/SalesReportExcelDTO.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/report/SalesReportExcelDTO.java index bf7c86071..04a42bc7a 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/report/SalesReportExcelDTO.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/report/SalesReportExcelDTO.java @@ -74,3 +74,4 @@ public class SalesReportExcelDTO { } + diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/report/StocktakeReportExcelDTO.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/report/StocktakeReportExcelDTO.java index 858e8b078..5095153cc 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/report/StocktakeReportExcelDTO.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/report/StocktakeReportExcelDTO.java @@ -71,3 +71,4 @@ public class StocktakeReportExcelDTO { } + diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/report/StocktakeReportQueryDTO.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/report/StocktakeReportQueryDTO.java index e9439de24..cbdc57fb3 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/report/StocktakeReportQueryDTO.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/report/StocktakeReportQueryDTO.java @@ -38,3 +38,4 @@ public class StocktakeReportQueryDTO { } + diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/report/SalesReportVO.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/report/SalesReportVO.java index 141640e24..2ce383ba9 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/report/SalesReportVO.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/report/SalesReportVO.java @@ -59,3 +59,4 @@ public class SalesReportVO { } + diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/report/StocktakeReportVO.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/report/StocktakeReportVO.java index fc6283daa..54a08c560 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/report/StocktakeReportVO.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/report/StocktakeReportVO.java @@ -57,3 +57,4 @@ public class StocktakeReportVO { } + diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/docs/超市报表统计逻辑详解.md b/pjcloud-supermarket/pjcloud-supermarket-biz/docs/超市报表统计逻辑详解.md index 4bf7e4be2..483c12a4d 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/docs/超市报表统计逻辑详解.md +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/docs/超市报表统计逻辑详解.md @@ -634,3 +634,4 @@ const getProfitColor = (margin) => { | 1.0 | 2025-10-16 | 初始版本,实现所有核心报表功能 | pjcloud | + diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/ReportController.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/ReportController.java index 5ec25a3ee..00f6cc9c0 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/ReportController.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/ReportController.java @@ -90,12 +90,12 @@ public class ReportController { * @param inventoryDetailQueryDTO 查询条件 * @return 分页结果 */ - @Operation(summary = "分页获取退货单明细", description = "退货单明细(inventory_type=6),支持日期区间查询") + @Operation(summary = "分页获取退货单明细", description = "退货单明细(inventory_type=4采购退货,6零售退货),支持日期区间查询") @GetMapping("/returnDetail/page") @PreAuthorize("@pms.hasPermission('supermarket_report_view')") public R getReturnDetailPage(@ParameterObject Page page, @ParameterObject InventoryDetailQueryDTO inventoryDetailQueryDTO) { - // 固定查询退货单类型:inventory_type=6(零售退货) - inventoryDetailQueryDTO.setInventoryType("6"); + // 查询退货单类型:inventory_type=4(采购退货)或 6(零售退货) + inventoryDetailQueryDTO.setInventoryTypes("4,6"); return R.ok(smErpInventoryRecordsService.getInventoryDetailPage(page, inventoryDetailQueryDTO)); } @@ -110,8 +110,8 @@ public class ReportController { @SysLog("导出退货单明细") @PreAuthorize("@pms.hasPermission('supermarket_report_export')") public List exportReturnDetail(@ParameterObject InventoryDetailQueryDTO inventoryDetailQueryDTO) { - // 固定查询退货单类型:inventory_type=6(零售退货) - inventoryDetailQueryDTO.setInventoryType("6"); + // 查询退货单类型:inventory_type=4(采购退货)或 6(零售退货) + inventoryDetailQueryDTO.setInventoryTypes("4,6"); return smErpInventoryRecordsService.exportInventoryDetail(inventoryDetailQueryDTO); } diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/SalesReportMapper.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/SalesReportMapper.java index b3301620a..33a1dd0db 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/SalesReportMapper.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/SalesReportMapper.java @@ -39,3 +39,4 @@ public interface SalesReportMapper { } + diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/StocktakeReportMapper.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/StocktakeReportMapper.java index 17554391a..fcc10ce67 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/StocktakeReportMapper.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/StocktakeReportMapper.java @@ -39,3 +39,4 @@ public interface StocktakeReportMapper { } + diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SalesReportService.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SalesReportService.java index a70014d89..2f8ea17f1 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SalesReportService.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/SalesReportService.java @@ -42,3 +42,4 @@ public interface SalesReportService { } + diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/StocktakeReportService.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/StocktakeReportService.java index f2db97b32..4a2f495ca 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/StocktakeReportService.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/StocktakeReportService.java @@ -42,3 +42,4 @@ public interface StocktakeReportService { } + diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SalesReportServiceImpl.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SalesReportServiceImpl.java index 049dcbc4a..c551fa86d 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SalesReportServiceImpl.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SalesReportServiceImpl.java @@ -50,3 +50,4 @@ public class SalesReportServiceImpl implements SalesReportService { } + diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/StocktakeReportServiceImpl.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/StocktakeReportServiceImpl.java index 1ca51b49e..c31d92d1e 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/StocktakeReportServiceImpl.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/StocktakeReportServiceImpl.java @@ -50,3 +50,4 @@ public class StocktakeReportServiceImpl implements StocktakeReportService { } + diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/InventoryReportMapper.xml b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/InventoryReportMapper.xml index 05a0a8c8d..27ecf2c27 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/InventoryReportMapper.xml +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/InventoryReportMapper.xml @@ -135,64 +135,8 @@ END END), 0)) * COALESCE(base.purchase_price / 100.0, 0)) AS gross_profit, MIN(CASE WHEN r.inventory_type = '3' THEN r.inventory_date END) AS first_purchase_date, - COALESCE(stock.current_stock, 0) - - COALESCE(SUM(CASE WHEN r.inventory_type = '3' THEN - CASE WHEN u.id IS NOT NULL AND base.id IS NOT NULL AND u.id != base.id - AND u.package_num IS NOT NULL AND u.package_num > 0 - THEN item.quantity * u.package_num - ELSE item.quantity - END - END), 0) - + COALESCE(SUM(CASE WHEN r.inventory_type = '4' THEN - CASE WHEN u.id IS NOT NULL AND base.id IS NOT NULL AND u.id != base.id - AND u.package_num IS NOT NULL AND u.package_num > 0 - THEN item.quantity * u.package_num - ELSE item.quantity - END - END), 0) - + COALESCE(SUM(CASE WHEN r.inventory_type = '5' THEN - CASE WHEN u.id IS NOT NULL AND base.id IS NOT NULL AND u.id != base.id - AND u.package_num IS NOT NULL AND u.package_num > 0 - THEN item.quantity * u.package_num - ELSE item.quantity - END - END), 0) - - COALESCE(SUM(CASE WHEN r.inventory_type = '6' THEN - CASE WHEN u.id IS NOT NULL AND base.id IS NOT NULL AND u.id != base.id - AND u.package_num IS NOT NULL AND u.package_num > 0 - THEN item.quantity * u.package_num - ELSE item.quantity - END - END), 0) AS opening_qty, - (COALESCE(stock.current_stock, 0) - - COALESCE(SUM(CASE WHEN r.inventory_type = '3' THEN - CASE WHEN u.id IS NOT NULL AND base.id IS NOT NULL AND u.id != base.id - AND u.package_num IS NOT NULL AND u.package_num > 0 - THEN item.quantity * u.package_num - ELSE item.quantity - END - END), 0) - + COALESCE(SUM(CASE WHEN r.inventory_type = '4' THEN - CASE WHEN u.id IS NOT NULL AND base.id IS NOT NULL AND u.id != base.id - AND u.package_num IS NOT NULL AND u.package_num > 0 - THEN item.quantity * u.package_num - ELSE item.quantity - END - END), 0) - + COALESCE(SUM(CASE WHEN r.inventory_type = '5' THEN - CASE WHEN u.id IS NOT NULL AND base.id IS NOT NULL AND u.id != base.id - AND u.package_num IS NOT NULL AND u.package_num > 0 - THEN item.quantity * u.package_num - ELSE item.quantity - END - END), 0) - - COALESCE(SUM(CASE WHEN r.inventory_type = '6' THEN - CASE WHEN u.id IS NOT NULL AND base.id IS NOT NULL AND u.id != base.id - AND u.package_num IS NOT NULL AND u.package_num > 0 - THEN item.quantity * u.package_num - ELSE item.quantity - END - END), 0)) * COALESCE(base.purchase_price / 100.0, 0) AS opening_amount + COALESCE(stock.base_stock, 0) AS opening_qty, + COALESCE(stock.base_stock, 0) * COALESCE(base.purchase_price / 100.0, 0) AS opening_amount FROM sm_erp_spu spu LEFT JOIN sm_erp_stock stock ON stock.erp_spu_id = spu.id diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SmErpInventoryRecordsMapper.xml b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SmErpInventoryRecordsMapper.xml index 3dbb29c6b..060d9dc91 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SmErpInventoryRecordsMapper.xml +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SmErpInventoryRecordsMapper.xml @@ -63,7 +63,13 @@ and r.order_type = #{inventoryDetailQueryDTO.orderType} - + + and r.inventory_type IN + + #{type} + + + and r.inventory_type = #{inventoryDetailQueryDTO.inventoryType}