2026-05-18 16:32
可以试下sql 增强:

完整:
-- 仓库空位管理-仓库列表查询SQL -- 功能:查询所有未删除的仓库基础信息,并计算每个仓库的已使用空间和剩余可用空间 -- 支持通过only_vacant参数筛选:Y=仅显示有空余空间的仓库,N/空=显示所有仓库 SELECT tbl.id AS id, -- 仓库主键ID tbl.tenant_id AS tenant_id, -- 租户ID(多租户隔离字段) tbl.create_user AS create_user, -- 创建人ID tbl.create_time AS create_time, -- 创建时间 tbl.update_user AS update_user, -- 更新人ID tbl.update_time AS update_time, -- 更新时间 tbl.is_deleted AS is_deleted, -- 逻辑删除标记(0=未删除,1=已删除) tbl.create_dept AS create_dept, -- 创建部门ID tbl.warehouse_name AS warehouse_name, -- 仓库名称 tbl.warehouse_size AS warehouse_size, -- 仓库总容量(单位:根据业务定义,如立方米/平方等) -- 计算仓库已使用空间:关联子查询汇总该仓库下所有未删除的占用项占用空间之和 -- COALESCE函数处理空值:当没有占用项时返回0而不是NULL COALESCE(( SELECT SUM(i.occupy_space) FROM tbl_wh_vacancy_item i WHERE i.warehouse_id = tbl.id AND i.is_deleted = 0 ), 0) AS used_space, -- 计算仓库剩余可用空间:总容量 - 已使用空间 ( tbl.warehouse_size - COALESCE(( SELECT SUM(i.occupy_space) FROM tbl_wh_vacancy_item i WHERE i.warehouse_id = tbl.id AND i.is_deleted = 0 ), 0) ) AS free_space FROM tbl_wh_vacancy_warehouse tbl -- 仓库主表 WHERE tbl.is_deleted = 0 -- 只查询未被逻辑删除的仓库 -- 仓库空余状态筛选条件 AND ( -- 情况1:参数为空,不进行空余状态筛选 IFNULL(#{only_vacant}, '') = '' -- 情况2:参数为N,不进行空余状态筛选 OR #{only_vacant} = 'N' -- 情况3:参数为Y,仅筛选总容量大于已使用空间(即有剩余空间)的仓库 OR ( #{only_vacant} = 'Y' AND tbl.warehouse_size > COALESCE(( SELECT SUM(i.occupy_space) FROM tbl_wh_vacancy_item i WHERE i.warehouse_id = tbl.id AND i.is_deleted = 0 ), 0) ) ) -- JeecgBoot/Jeelowcode框架自动拼接的查询条件(由前端查询参数动态生成) AND #{jeelowcode_auto_where}