From 9a4dde11a85af8698ee18245081c64c2fe060b73 Mon Sep 17 00:00:00 2001 From: zjf <1799650030@qq.com> Date: Fri, 17 Oct 2025 18:02:58 +0800 Subject: [PATCH 1/3] =?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 --- .../dto/report/InventoryReportExcelDTO.java | 1 + .../dto/report/InventoryReportQueryDTO.java | 1 + .../dto/report/ProfitReportExcelDTO.java | 1 + .../dto/report/ProfitReportQueryDTO.java | 1 + .../dto/report/SalesReportExcelDTO.java | 1 + .../dto/report/SalesReportQueryDTO.java | 1 + .../dto/report/StocktakeReportExcelDTO.java | 1 + .../dto/report/StocktakeReportQueryDTO.java | 1 + .../vo/report/InventoryReportVO.java | 1 + .../supermarket/vo/report/ProfitReportVO.java | 1 + .../supermarket/vo/report/SalesReportVO.java | 1 + .../vo/report/StocktakeReportVO.java | 1 + .../docs/超市报表统计逻辑详解.md | 1 + .../mapper/InventoryReportMapper.java | 1 + .../mapper/ProfitReportMapper.java | 1 + .../supermarket/mapper/SalesReportMapper.java | 1 + .../mapper/StocktakeReportMapper.java | 1 + .../service/InventoryReportService.java | 1 + .../service/ProfitReportService.java | 1 + .../service/SalesReportService.java | 1 + .../service/StocktakeReportService.java | 1 + .../impl/InventoryReportServiceImpl.java | 1 + .../service/impl/ProfitReportServiceImpl.java | 1 + .../service/impl/SalesReportServiceImpl.java | 1 + .../impl/StocktakeReportServiceImpl.java | 1 + .../mapper/InventoryReportMapper.xml | 29 +------------------ .../mapper/InventoryStocktakeReportMapper.xml | 5 ---- .../resources/mapper/ProfitReportMapper.xml | 17 +---------- .../resources/mapper/SalesReportMapper.xml | 17 +---------- .../mapper/StocktakeReportMapper.xml | 10 +------ 30 files changed, 29 insertions(+), 74 deletions(-) diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/report/InventoryReportExcelDTO.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/report/InventoryReportExcelDTO.java index 3611f032e..fe0b0ad2e 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/report/InventoryReportExcelDTO.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/report/InventoryReportExcelDTO.java @@ -126,3 +126,4 @@ public class InventoryReportExcelDTO { private LocalDate firstPurchaseDate; } + diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/report/InventoryReportQueryDTO.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/report/InventoryReportQueryDTO.java index f0873d274..0fa749eaa 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/report/InventoryReportQueryDTO.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/report/InventoryReportQueryDTO.java @@ -37,3 +37,4 @@ public class InventoryReportQueryDTO { private Boolean onlyChanged; } + diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/report/ProfitReportExcelDTO.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/report/ProfitReportExcelDTO.java index 76f0ace23..8455296b8 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/report/ProfitReportExcelDTO.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/report/ProfitReportExcelDTO.java @@ -73,3 +73,4 @@ public class ProfitReportExcelDTO { private Integer salesCount; } + diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/report/ProfitReportQueryDTO.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/report/ProfitReportQueryDTO.java index 69ab379e9..582b67267 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/report/ProfitReportQueryDTO.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/report/ProfitReportQueryDTO.java @@ -40,3 +40,4 @@ public class ProfitReportQueryDTO { private Boolean onlyWithSales; } + 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 00fe6f5e1..bf7c86071 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 @@ -73,3 +73,4 @@ public class SalesReportExcelDTO { private BigDecimal actualSalesAmount; } + diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/report/SalesReportQueryDTO.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/report/SalesReportQueryDTO.java index af77b71fb..0fdfb28ad 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/report/SalesReportQueryDTO.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/report/SalesReportQueryDTO.java @@ -34,3 +34,4 @@ public class SalesReportQueryDTO { private String sortBy; } + 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 f055f1e9d..858e8b078 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 @@ -70,3 +70,4 @@ public class StocktakeReportExcelDTO { private String remark; } + 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 4b06d5f31..e9439de24 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 @@ -37,3 +37,4 @@ public class StocktakeReportQueryDTO { private String diffType; } + diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/report/InventoryReportVO.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/report/InventoryReportVO.java index f78d66e89..352ff9155 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/report/InventoryReportVO.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/report/InventoryReportVO.java @@ -98,3 +98,4 @@ public class InventoryReportVO { private LocalDate firstPurchaseDate; } + diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/report/ProfitReportVO.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/report/ProfitReportVO.java index e08a88105..10f905dfa 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/report/ProfitReportVO.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/report/ProfitReportVO.java @@ -58,3 +58,4 @@ public class ProfitReportVO { private Integer salesCount; } + 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 478209b64..141640e24 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 @@ -58,3 +58,4 @@ public class SalesReportVO { private BigDecimal actualSalesAmount; } + 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 308a4e5ef..fc6283daa 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 @@ -56,3 +56,4 @@ public class StocktakeReportVO { private String remark; } + diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/docs/超市报表统计逻辑详解.md b/pjcloud-supermarket/pjcloud-supermarket-biz/docs/超市报表统计逻辑详解.md index cb18fe8bf..4bf7e4be2 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/docs/超市报表统计逻辑详解.md +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/docs/超市报表统计逻辑详解.md @@ -633,3 +633,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/mapper/InventoryReportMapper.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/InventoryReportMapper.java index f8acd879c..f1d20d1ea 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/InventoryReportMapper.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/InventoryReportMapper.java @@ -38,3 +38,4 @@ public interface InventoryReportMapper { List selectInventoryReportList(@Param("param") InventoryReportQueryDTO queryDTO, @Param("dataScope") DataScope dataScope); } + diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/ProfitReportMapper.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/ProfitReportMapper.java index 86f52660e..9eb6abfdd 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/ProfitReportMapper.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/ProfitReportMapper.java @@ -38,3 +38,4 @@ public interface ProfitReportMapper { List selectProfitReportList(@Param("param") ProfitReportQueryDTO queryDTO, @Param("dataScope") DataScope dataScope); } + 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 0605ed05c..b3301620a 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 @@ -38,3 +38,4 @@ public interface SalesReportMapper { List selectSalesReportList(@Param("param") SalesReportQueryDTO queryDTO, @Param("dataScope") DataScope dataScope); } + 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 13c3b9d64..17554391a 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 @@ -38,3 +38,4 @@ public interface StocktakeReportMapper { List selectStocktakeReportList(@Param("param") StocktakeReportQueryDTO queryDTO, @Param("dataScope") DataScope dataScope); } + diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/InventoryReportService.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/InventoryReportService.java index 156fc0be0..a915279f4 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/InventoryReportService.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/InventoryReportService.java @@ -41,3 +41,4 @@ public interface InventoryReportService { List exportExcel(InventoryReportQueryDTO queryDTO); } + diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/ProfitReportService.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/ProfitReportService.java index ed29e844b..626309297 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/ProfitReportService.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/ProfitReportService.java @@ -41,3 +41,4 @@ public interface ProfitReportService { List exportExcel(ProfitReportQueryDTO queryDTO); } + 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 b3f633d8f..a70014d89 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 @@ -41,3 +41,4 @@ public interface SalesReportService { List exportExcel(SalesReportQueryDTO queryDTO); } + 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 875f669d1..f2db97b32 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 @@ -41,3 +41,4 @@ public interface StocktakeReportService { List exportExcel(StocktakeReportQueryDTO queryDTO); } + diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/InventoryReportServiceImpl.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/InventoryReportServiceImpl.java index ff37b7786..382f20cff 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/InventoryReportServiceImpl.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/InventoryReportServiceImpl.java @@ -49,3 +49,4 @@ public class InventoryReportServiceImpl implements InventoryReportService { } } + diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/ProfitReportServiceImpl.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/ProfitReportServiceImpl.java index 7714278ef..6c81aa49d 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/ProfitReportServiceImpl.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/ProfitReportServiceImpl.java @@ -49,3 +49,4 @@ public class ProfitReportServiceImpl implements ProfitReportService { } } + 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 e23c7fb23..049dcbc4a 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 @@ -49,3 +49,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 1dfeeaa85..1ca51b49e 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 @@ -49,3 +49,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 cfd3968e8..05a0a8c8d 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 @@ -56,8 +56,6 @@ base.package_num AS package_num, base.purchase_price / 100.0 AS purchase_price, base.retail_price / 100.0 AS retail_price, - - -- 采购入库数量和金额 (inventory_type = 3) 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 @@ -66,8 +64,6 @@ END END), 0) AS purchase_in_qty, COALESCE(SUM(CASE WHEN r.inventory_type = '3' THEN item.total_amount END), 0) / 100.0 AS purchase_in_amount, - - -- 采购退货数量和金额 (inventory_type = 4) 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 @@ -76,8 +72,6 @@ END END), 0) AS purchase_return_qty, COALESCE(SUM(CASE WHEN r.inventory_type = '4' THEN item.total_amount END), 0) / 100.0 AS purchase_return_amount, - - -- 销售数量和金额 (inventory_type = 5) 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 @@ -86,8 +80,6 @@ END END), 0) AS sales_qty, COALESCE(SUM(CASE WHEN r.inventory_type = '5' THEN item.total_amount END), 0) / 100.0 AS sales_amount, - - -- 销售退货数量和金额 (inventory_type = 6) 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 @@ -96,8 +88,6 @@ END END), 0) AS sales_return_qty, COALESCE(SUM(CASE WHEN r.inventory_type = '6' THEN item.total_amount END), 0) / 100.0 AS sales_return_amount, - - -- 实际销售数量 = 销售数量 - 销售退货数量 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 @@ -111,12 +101,8 @@ ELSE item.quantity END END), 0) AS actual_sales_qty, - - -- 实际销售金额 = 销售金额 - 销售退货金额 COALESCE(SUM(CASE WHEN r.inventory_type = '5' THEN item.total_amount END), 0) / 100.0 - COALESCE(SUM(CASE WHEN r.inventory_type = '6' THEN item.total_amount END), 0) / 100.0 AS actual_sales_amount, - - -- 销售成本 = 实际销售数量 × 参考进价 (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 @@ -130,17 +116,9 @@ ELSE item.quantity END END), 0)) * COALESCE(base.purchase_price / 100.0, 0) AS sales_cost, - - -- 期末库存数量 = 当前库存 COALESCE(stock.current_stock, 0) AS closing_qty, - - -- 期末库存金额 = 期末数量 × 参考进价 COALESCE(stock.current_stock, 0) * COALESCE(base.purchase_price / 100.0, 0) AS closing_amount, - - -- 期末库存售额 = 期末数量 × 零售价 COALESCE(stock.current_stock, 0) * COALESCE(base.retail_price / 100.0, 0) AS closing_retail_amount, - - -- 销售毛利 = 实际销售金额 - 销售成本 (COALESCE(SUM(CASE WHEN r.inventory_type = '5' THEN item.total_amount END), 0) / 100.0 - COALESCE(SUM(CASE WHEN r.inventory_type = '6' THEN item.total_amount END), 0) / 100.0) - ((COALESCE(SUM(CASE WHEN r.inventory_type = '5' THEN @@ -156,11 +134,7 @@ ELSE item.quantity 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 @@ -190,8 +164,6 @@ 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 @@ -275,3 +247,4 @@ + diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/InventoryStocktakeReportMapper.xml b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/InventoryStocktakeReportMapper.xml index 5c6b8fad7..a6ae15767 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/InventoryStocktakeReportMapper.xml +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/InventoryStocktakeReportMapper.xml @@ -24,21 +24,18 @@ spu.category_id, cat.name AS category_name, base.unit AS unit, - -- 账面数量(折算基础单位) COALESCE(SUM( CASE WHEN item.account_number IS NOT NULL 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.account_number * u.package_num ELSE item.account_number END END ), 0) AS book_qty, - -- 实盘数量(折算基础单位) COALESCE(SUM( CASE WHEN item.real_number IS NOT NULL 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.real_number * u.package_num ELSE item.real_number END END ), 0) AS physical_qty, - -- 差异数量(实盘-账面) COALESCE(SUM( (CASE WHEN item.real_number IS NOT NULL 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 @@ -50,7 +47,6 @@ THEN item.account_number * u.package_num ELSE item.account_number END END) ), 0) AS diff_qty, - -- 差异金额(元)= 差异数量 * 实际单价(元) COALESCE(SUM( (CASE WHEN item.real_price IS NOT NULL THEN item.real_price ELSE 0 END) * ( @@ -72,7 +68,6 @@ LEFT JOIN sm_erp_unit u ON u.id = item.unit_id LEFT JOIN sm_erp_category cat ON cat.id = spu.category_id - -- 仅盘点单据 r.inventory_type = '7' AND r.create_time >= #{param.startTime} diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/ProfitReportMapper.xml b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/ProfitReportMapper.xml index 8fc2973d9..21a4609ea 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/ProfitReportMapper.xml +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/ProfitReportMapper.xml @@ -38,8 +38,6 @@ cat.name AS category_name, base.spec AS spec, base.unit AS unit, - - -- 销售数量 (inventory_type = 5 零售出库 - inventory_type = 6 零售退货) 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 @@ -53,15 +51,9 @@ ELSE item.quantity END END), 0) AS sales_qty, - - -- 销售金额 COALESCE(SUM(CASE WHEN r.inventory_type = '5' THEN item.total_amount END), 0) / 100.0 - COALESCE(SUM(CASE WHEN r.inventory_type = '6' THEN item.total_amount END), 0) / 100.0 AS sales_amount, - - -- 成本单价 = 商品参考进价 COALESCE(base.purchase_price / 100.0, 0) AS cost_price, - - -- 销售单价 = 销售金额 / 销售数量 CASE WHEN (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 @@ -92,8 +84,6 @@ END), 0)) ELSE 0 END AS sales_price, - - -- 销售成本 = 销售数量 × 成本单价 (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 @@ -107,8 +97,6 @@ ELSE item.quantity END END), 0)) * COALESCE(base.purchase_price / 100.0, 0) AS sales_cost, - - -- 销售毛利 = 销售金额 - 销售成本 (COALESCE(SUM(CASE WHEN r.inventory_type = '5' THEN item.total_amount END), 0) / 100.0 - COALESCE(SUM(CASE WHEN r.inventory_type = '6' THEN item.total_amount END), 0) / 100.0) - ((COALESCE(SUM(CASE WHEN r.inventory_type = '5' THEN @@ -124,8 +112,6 @@ ELSE item.quantity END END), 0)) * COALESCE(base.purchase_price / 100.0, 0)) AS gross_profit, - - -- 毛利率 = (销售毛利 / 销售金额) × 100% CASE WHEN (COALESCE(SUM(CASE WHEN r.inventory_type = '5' THEN item.total_amount END), 0) / 100.0 - COALESCE(SUM(CASE WHEN r.inventory_type = '6' THEN item.total_amount END), 0) / 100.0) > 0 THEN ((COALESCE(SUM(CASE WHEN r.inventory_type = '5' THEN item.total_amount END), 0) / 100.0 @@ -147,8 +133,6 @@ - COALESCE(SUM(CASE WHEN r.inventory_type = '6' THEN item.total_amount END), 0) / 100.0) * 100 ELSE 0 END AS profit_margin, - - -- 销售笔数 COUNT(DISTINCT CASE WHEN r.inventory_type IN ('5', '6') THEN r.id END) AS sales_count FROM sm_erp_spu spu @@ -223,3 +207,4 @@ + diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SalesReportMapper.xml b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SalesReportMapper.xml index 9f73abb33..f5698c744 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SalesReportMapper.xml +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/SalesReportMapper.xml @@ -35,8 +35,6 @@ cat.name AS category_name, base.spec AS spec, base.unit AS unit, - - -- 销售数量 (inventory_type = 5) 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 @@ -44,11 +42,7 @@ ELSE item.quantity END END), 0) AS sales_qty, - - -- 销售金额 COALESCE(SUM(CASE WHEN r.inventory_type = '5' THEN item.total_amount END), 0) / 100.0 AS sales_amount, - - -- 退货数量 (inventory_type = 6) 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 @@ -56,11 +50,7 @@ ELSE item.quantity END END), 0) AS return_qty, - - -- 退货金额 COALESCE(SUM(CASE WHEN r.inventory_type = '6' THEN item.total_amount END), 0) / 100.0 AS return_amount, - - -- 实际销售数量 = 销售数量 - 退货数量 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 @@ -74,12 +64,8 @@ ELSE item.quantity END END), 0) AS actual_sales_qty, - - -- 实际销售金额 = 销售金额 - 退货金额 COALESCE(SUM(CASE WHEN r.inventory_type = '5' THEN item.total_amount END), 0) / 100.0 - COALESCE(SUM(CASE WHEN r.inventory_type = '6' THEN item.total_amount END), 0) / 100.0 AS actual_sales_amount, - - -- 销售单价 = 销售金额 / 销售数量 CASE WHEN 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 @@ -97,8 +83,6 @@ END), 0) ELSE 0 END AS sales_price, - - -- 销售笔数 COUNT(DISTINCT CASE WHEN r.inventory_type IN ('5', '6') THEN r.id END) AS sales_count FROM sm_erp_spu spu @@ -159,3 +143,4 @@ + diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/StocktakeReportMapper.xml b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/StocktakeReportMapper.xml index a7d1c2d1a..f4fc9f94a 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/StocktakeReportMapper.xml +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/StocktakeReportMapper.xml @@ -37,19 +37,10 @@ cat.name AS category_name, base.spec AS spec, base.unit AS unit, - - -- 账面数量(这里假设item表中有book_qty字段,如果没有则使用quantity作为账面数量) COALESCE(item.quantity, 0) AS book_qty, - - -- 实盘数量(这里假设实盘数量保存在某个字段,需要根据实际情况调整) COALESCE(item.quantity, 0) AS physical_qty, - - -- 差异数量 = 实盘 - 账面(这里简化处理,实际需要根据业务逻辑调整) 0 AS diff_qty, - - -- 差异金额 = 差异数量 × 成本价 0 AS diff_amount, - r.remark FROM sm_erp_inventory_records r @@ -109,3 +100,4 @@ + 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 2/3] =?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} From af63ef4b7e9d8de96d684cd1e2f06a4c33aadf45 Mon Sep 17 00:00:00 2001 From: zjf <1799650030@qq.com> Date: Mon, 20 Oct 2025 17:02:47 +0800 Subject: [PATCH 3/3] =?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 --- .gitattributes | 55 +++++++++++++++++++ .../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 + .../mapper/StocktakeReportMapper.java | 1 + .../service/SalesReportService.java | 1 + .../service/StocktakeReportService.java | 1 + .../service/impl/SalesReportServiceImpl.java | 1 + .../impl/StocktakeReportServiceImpl.java | 1 + .../mapper/InventoryReportMapper.xml | 2 - 13 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..e5aa424b9 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,55 @@ +# 统一行尾符处理 +* text=auto + +# Java 源码文件使用 LF +*.java text eol=lf +*.kt text eol=lf +*.kts text eol=lf +*.groovy text eol=lf + +# XML 配置文件使用 LF +*.xml text eol=lf +*.xsd text eol=lf + +# 属性文件使用 LF +*.properties text eol=lf +*.yml text eol=lf +*.yaml text eol=lf + +# SQL 文件使用 LF +*.sql text eol=lf + +# 脚本文件使用 LF +*.sh text eol=lf +*.py text eol=lf + +# Web 文件使用 LF +*.js text eol=lf +*.html text eol=lf +*.css text eol=lf +*.json text eol=lf + +# Markdown 文件使用 LF +*.md text eol=lf + +# Windows 批处理文件使用 CRLF +*.bat text eol=crlf +*.cmd text eol=crlf + +# 二进制文件 +*.jar binary +*.war binary +*.ear binary +*.zip binary +*.tar.gz binary +*.png binary +*.jpg binary +*.jpeg binary +*.gif binary +*.ico binary +*.pdf binary +*.xls binary +*.xlsx binary +*.doc binary +*.docx binary + 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 04a42bc7a..029af2d66 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 @@ -75,3 +75,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 5095153cc..593f4189a 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 @@ -72,3 +72,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 cbdc57fb3..08f7b8082 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 @@ -39,3 +39,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 2ce383ba9..f53cd315b 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 @@ -60,3 +60,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 54a08c560..e82cec850 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 @@ -58,3 +58,4 @@ public class StocktakeReportVO { + diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/docs/超市报表统计逻辑详解.md b/pjcloud-supermarket/pjcloud-supermarket-biz/docs/超市报表统计逻辑详解.md index 483c12a4d..184356686 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/docs/超市报表统计逻辑详解.md +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/docs/超市报表统计逻辑详解.md @@ -635,3 +635,4 @@ const getProfitColor = (margin) => { + 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 fcc10ce67..2f7ff0bd1 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 @@ -40,3 +40,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 2f8ea17f1..6ea29aaa8 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 @@ -43,3 +43,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 4a2f495ca..9f2b71092 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 @@ -43,3 +43,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 c551fa86d..b4f5946b5 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 @@ -51,3 +51,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 c31d92d1e..cc1808283 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 @@ -51,3 +51,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 27ecf2c27..71de46520 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 @@ -190,5 +190,3 @@ - -