超市报表
This commit is contained in:
1 parent
9a4dde11a8
commit
82ba2baeb7
16 files changed
+33
-65
No files matched your search
+7
-1
@@ -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;
|
||||
}
|
||||
+1
@@ -74,3 +74,4 @@ public class SalesReportExcelDTO {
|
||||
}
|
||||
|
||||
|
||||
|
||||
+1
@@ -71,3 +71,4 @@ public class StocktakeReportExcelDTO {
|
||||
}
|
||||
|
||||
|
||||
|
||||
+1
@@ -38,3 +38,4 @@ public class StocktakeReportQueryDTO {
|
||||
}
|
||||
|
||||
|
||||
|
||||
+1
@@ -59,3 +59,4 @@ public class SalesReportVO {
|
||||
}
|
||||
|
||||
|
||||
|
||||
+1
@@ -57,3 +57,4 @@ public class StocktakeReportVO {
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -634,3 +634,4 @@ const getProfitColor = (margin) => {
|
||||
| 1.0 | 2025-10-16 | 初始版本,实现所有核心报表功能 | pjcloud |
|
||||
|
||||
|
||||
|
||||
+5
-5
@@ -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<Object> 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<InventoryDetailExcelDTO> exportReturnDetail(@ParameterObject InventoryDetailQueryDTO inventoryDetailQueryDTO) {
|
||||
// 固定查询退货单类型:inventory_type=6(零售退货)
|
||||
inventoryDetailQueryDTO.setInventoryType("6");
|
||||
// 查询退货单类型:inventory_type=4(采购退货)或 6(零售退货)
|
||||
inventoryDetailQueryDTO.setInventoryTypes("4,6");
|
||||
return smErpInventoryRecordsService.exportInventoryDetail(inventoryDetailQueryDTO);
|
||||
}
|
||||
|
||||
|
||||
+1
@@ -39,3 +39,4 @@ public interface SalesReportMapper {
|
||||
}
|
||||
|
||||
|
||||
|
||||
+1
@@ -39,3 +39,4 @@ public interface StocktakeReportMapper {
|
||||
}
|
||||
|
||||
|
||||
|
||||
+1
@@ -42,3 +42,4 @@ public interface SalesReportService {
|
||||
}
|
||||
|
||||
|
||||
|
||||
+1
@@ -42,3 +42,4 @@ public interface StocktakeReportService {
|
||||
}
|
||||
|
||||
|
||||
|
||||
+1
@@ -50,3 +50,4 @@ public class SalesReportServiceImpl implements SalesReportService {
|
||||
}
|
||||
|
||||
|
||||
|
||||
+1
@@ -50,3 +50,4 @@ public class StocktakeReportServiceImpl implements StocktakeReportService {
|
||||
}
|
||||
|
||||
|
||||
|
||||
+2
-58
@@ -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
|
||||
|
||||
+7
-1
@@ -63,7 +63,13 @@
|
||||
<if test="inventoryDetailQueryDTO.orderType != null and inventoryDetailQueryDTO.orderType != ''">
|
||||
and r.order_type = #{inventoryDetailQueryDTO.orderType}
|
||||
</if>
|
||||
<if test="inventoryDetailQueryDTO.inventoryType != null and inventoryDetailQueryDTO.inventoryType != ''">
|
||||
<if test="inventoryDetailQueryDTO.inventoryTypes != null and inventoryDetailQueryDTO.inventoryTypes != ''">
|
||||
and r.inventory_type IN
|
||||
<foreach collection="inventoryDetailQueryDTO.inventoryTypes.split(',')" item="type" open="(" separator="," close=")">
|
||||
#{type}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="inventoryDetailQueryDTO.inventoryType != null and inventoryDetailQueryDTO.inventoryType != '' and (inventoryDetailQueryDTO.inventoryTypes == null or inventoryDetailQueryDTO.inventoryTypes == '')">
|
||||
and r.inventory_type = #{inventoryDetailQueryDTO.inventoryType}
|
||||
</if>
|
||||
<if test="inventoryDetailQueryDTO.startDate != null">
|
||||
|
||||
Reference in new issue
Block a user