feat(stock): 添加rootName字段支持产品树根名称查询
- 在多个DTO中新增rootName字段用于存储根产品名称
- 修改StockInRecordMapper、StockInventoryMapper、StockOutRecordMapper和StockUninventoryMapper
- 使用递归CTE查询构建产品树,获取根产品信息
- 在相关SQL查询中关联root_map实现rootName字段的数据填充
- 支持通过rootName参数进行根产品名称过滤查询
| | |
| | | //现存量 |
| | | private String currentStock; |
| | | |
| | | private String rootName; |
| | | |
| | | } |
| | |
| | | private BigDecimal currentStock; |
| | | |
| | | private BigDecimal unLockedQuantity; |
| | | |
| | | private String rootName; |
| | | } |
| | |
| | | private String timeStr; |
| | | |
| | | private String createBy; |
| | | |
| | | private String rootName; |
| | | } |
| | |
| | | private Long recordId; |
| | | |
| | | private BigDecimal unLockedQuantity; |
| | | |
| | | private String rootName; |
| | | } |
| | |
| | | <mapper namespace="com.ruoyi.stock.mapper.StockInRecordMapper"> |
| | | |
| | | <select id="listPage" resultType="com.ruoyi.stock.dto.StockInRecordDto"> |
| | | WITH RECURSIVE cte AS ( |
| | | SELECT id, product_name, parent_id, id AS current_id |
| | | FROM product |
| | | |
| | | UNION ALL |
| | | |
| | | SELECT c.id, c.product_name, p.parent_id, p.id |
| | | FROM cte c |
| | | JOIN product p ON c.parent_id = p.id |
| | | ), |
| | | root_map AS ( |
| | | SELECT |
| | | c.id, |
| | | p.id AS root_id, |
| | | p.product_name AS root_name |
| | | FROM cte c |
| | | JOIN product p ON c.current_id = p.id |
| | | WHERE p.parent_id IS NULL |
| | | ) |
| | | SELECT |
| | | sir.*, |
| | | p.product_name as product_name, |
| | | pm.model, |
| | | pm.unit, |
| | | rm.root_name as root_name, |
| | | u.nick_name as createBy |
| | | FROM stock_in_record as sir |
| | | LEFT JOIN product_model as pm on sir.product_model_id = pm.id |
| | | LEFT JOIN product as p on pm.product_id = p.id |
| | | LEFT JOIN root_map rm ON pm.product_id = rm.id |
| | | LEFT JOIN sys_user as u on sir.create_user = u.user_id |
| | | <where> |
| | | <if test="params.timeStr != null and params.timeStr != ''"> |
| | |
| | | <if test="params.recordType != null and params.recordType != ''"> |
| | | and sir.record_type = #{params.recordType} |
| | | </if> |
| | | <if test="params.rootName != null and params.rootName != ''"> |
| | | and rm.root_name = #{params.rootName} |
| | | </if> |
| | | </where> |
| | | order by sir.id desc |
| | | </select> |
| | |
| | | where product_model_id = #{ew.productModelId} and qualitity >= #{ew.qualitity} |
| | | </update> |
| | | <select id="pagestockInventory" resultType="com.ruoyi.stock.dto.StockInventoryDto"> |
| | | WITH RECURSIVE cte AS ( |
| | | SELECT id, product_name, parent_id, id AS current_id |
| | | FROM product |
| | | |
| | | UNION ALL |
| | | |
| | | SELECT c.id, c.product_name, p.parent_id, p.id |
| | | FROM cte c |
| | | JOIN product p ON c.parent_id = p.id |
| | | ), |
| | | root_map AS ( |
| | | SELECT |
| | | c.id, |
| | | p.id AS root_id, |
| | | p.product_name AS root_name |
| | | FROM cte c |
| | | JOIN product p ON c.current_id = p.id |
| | | WHERE p.parent_id IS NULL |
| | | ) |
| | | select si.id, |
| | | si.qualitity, |
| | | COALESCE(si.locked_quantity, 0) as locked_quantity, |
| | |
| | | p.product_name |
| | | from stock_inventory si |
| | | left join product_model pm on si.product_model_id = pm.id |
| | | LEFT JOIN root_map rm ON pm.product_id = rm.id |
| | | left join product p on pm.product_id = p.id |
| | | where 1 = 1 |
| | | <if test="ew.productName != null and ew.productName !=''"> |
| | | and p.product_name like concat('%',#{ew.productName},'%') |
| | | </if> |
| | | <if test="ew.rootName != null and ew.rootName != ''"> |
| | | and rm.root_name = #{ew.rootName} |
| | | </if> |
| | | </select> |
| | | <select id="listStockInventoryExportData" resultType="com.ruoyi.stock.execl.StockInventoryExportData"> |
| | | select si.qualitity, |
| | |
| | | </resultMap> |
| | | |
| | | <select id="listPage" resultType="com.ruoyi.stock.dto.StockOutRecordDto"> |
| | | WITH RECURSIVE cte AS ( |
| | | SELECT id, product_name, parent_id, id AS current_id |
| | | FROM product |
| | | |
| | | UNION ALL |
| | | |
| | | SELECT c.id, c.product_name, p.parent_id, p.id |
| | | FROM cte c |
| | | JOIN product p ON c.parent_id = p.id |
| | | ), |
| | | root_map AS ( |
| | | SELECT |
| | | c.id, |
| | | p.id AS root_id, |
| | | p.product_name AS root_name |
| | | FROM cte c |
| | | JOIN product p ON c.current_id = p.id |
| | | WHERE p.parent_id IS NULL |
| | | ) |
| | | SELECT |
| | | sor.*, |
| | | p.product_name as productName, |
| | | pm.model, |
| | | pm.unit, |
| | | rm.root_name as rootName, |
| | | u.nick_name as createBy |
| | | FROM stock_out_record as sor |
| | | LEFT JOIN product_model as pm on sor.product_model_id = pm.id |
| | | LEFT JOIN product as p on pm.product_id = p.id |
| | | LEFT JOIN root_map rm ON pm.product_id = rm.id |
| | | LEFT JOIN sys_user as u on sor.create_user = u.user_id |
| | | <where> |
| | | <if test="params.timeStr != null and params.timeStr != ''"> |
| | |
| | | <if test="params.recordType != null and params.recordType != ''"> |
| | | and sor.record_type = #{params.recordType} |
| | | </if> |
| | | <if test="params.rootName != null and params.rootName != ''"> |
| | | and rm.root_name = #{params.rootName} |
| | | </if> |
| | | </where> |
| | | order by sor.id desc |
| | | </select> |
| | |
| | | where product_model_id = #{ew.productModelId} |
| | | </update> |
| | | <select id="pageStockUninventory" resultType="com.ruoyi.stock.dto.StockUninventoryDto"> |
| | | WITH RECURSIVE cte AS ( |
| | | SELECT id, product_name, parent_id, id AS current_id |
| | | FROM product |
| | | |
| | | UNION ALL |
| | | |
| | | SELECT c.id, c.product_name, p.parent_id, p.id |
| | | FROM cte c |
| | | JOIN product p ON c.parent_id = p.id |
| | | ), |
| | | root_map AS ( |
| | | SELECT |
| | | c.id, |
| | | p.id AS root_id, |
| | | p.product_name AS root_name |
| | | FROM cte c |
| | | JOIN product p ON c.current_id = p.id |
| | | WHERE p.parent_id IS NULL |
| | | ) |
| | | select su.id, |
| | | su.qualitity, |
| | | COALESCE(su.locked_quantity, 0) as locked_quantity, |
| | |
| | | p.product_name |
| | | from stock_uninventory su |
| | | left join product_model pm on su.product_model_id = pm.id |
| | | LEFT JOIN root_map rm ON pm.product_id = rm.id |
| | | left join product p on pm.product_id = p.id |
| | | where 1 = 1 |
| | | <if test="ew.productName != null and ew.productName !=''"> |
| | | and p.product_name like concat('%',#{ew.productName},'%') |
| | | </if> |
| | | <if test="ew.rootName != null and ew.rootName != ''"> |
| | | and rm.root_name = #{ew.rootName} |
| | | </if> |
| | | </select> |
| | | <select id="listStockInventoryExportData" resultType="com.ruoyi.stock.execl.StockUnInventoryExportData"> |
| | | select su.*, |