<?xml version="1.0" encoding="UTF-8"?>
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<mapper namespace="com.ruoyi.stock.mapper.StockInventoryMapper">
|
|
<!-- 通用查询映射结果 -->
|
<resultMap id="BaseResultMap" type="com.ruoyi.stock.pojo.StockInventory">
|
<result column="id" property="id" />
|
<result column="product_model_id" property="productModelId" />
|
<result column="qualitity" property="qualitity" />
|
<result column="create_time" property="createTime" />
|
<result column="update_time" property="updateTime" />
|
<result column="version" property="version" />
|
<result column="locked_quantity" property="lockedQuantity" />
|
<result column="warn_num" property="warnNum" />
|
</resultMap>
|
<update id="updateAddStockInventory">
|
update stock_inventory
|
<set>
|
<if test="ew.qualitity != null">
|
qualitity = qualitity + #{ew.qualitity},
|
</if>
|
<if test="ew.version != null">
|
version = version + 1,
|
</if>
|
<if test="ew.remark != null and ew.remark !=''">
|
remark = #{ew.remark},
|
</if>
|
update_time = now()
|
</set>
|
where product_model_id = #{ew.productModelId}
|
</update>
|
<update id="updateSubtractStockInventory">
|
update stock_inventory
|
<set>
|
<if test="ew.qualitity != null">
|
qualitity = qualitity - #{ew.qualitity},
|
</if>
|
<if test="ew.version != null">
|
version = version + 1,
|
</if>
|
<if test="ew.remark != null and ew.remark !=''">
|
remark = #{ew.remark},
|
</if>
|
update_time = now()
|
</set>
|
where product_model_id = #{ew.productModelId} and qualitity >= #{ew.qualitity}
|
</update>
|
<select id="pagestockInventory" resultType="com.ruoyi.stock.dto.StockInventoryDto">
|
select si.*,
|
pm.model,
|
pm.unit,
|
p.product_name
|
from stock_inventory si
|
left join product_model pm on si.product_model_id = pm.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>
|
</select>
|
<select id="listStockInventoryExportData" resultType="com.ruoyi.stock.execl.StockInventoryExportData">
|
select si.qualitity,
|
pm.model,
|
pm.unit,
|
p.product_name,
|
si.remark,
|
si.update_time
|
from stock_inventory si
|
left join product_model pm on si.product_model_id = pm.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>
|
</select>
|
<select id="stockInventoryPage" resultType="com.ruoyi.stock.dto.StockInRecordDto">
|
select sir.*,si.qualitity,
|
pm.model,
|
pm.unit,
|
p.product_name
|
from
|
stock_in_record sir
|
left join stock_inventory si on sir.product_model_id = si.product_model_id
|
left join product_model pm on sir.product_model_id = pm.id
|
left join product p on pm.product_id = p.id
|
<where>
|
<if test="ew.reportDate != null">
|
and sir.create_time >= #{ew.reportDate}
|
and sir.create_time < DATE_ADD(#{ew.reportDate}, INTERVAL 1 DAY)
|
</if>
|
<if test="ew.startMonth != null">
|
and sir.create_time >= #{ew.startMonth}
|
</if>
|
<if test="ew.endMonth != null">
|
and sir.create_time <= #{ew.endMonth}
|
</if>
|
</where>
|
</select>
|
|
<select id="stockInAndOutRecord" resultType="com.ruoyi.stock.dto.StockInventoryDto">
|
SELECT
|
pm.model,
|
pm.unit,
|
p.product_name,
|
MAX(current_inventory) as current_stock,
|
SUM(CASE WHEN record_type = 'in' THEN amount ELSE 0 END) as total_stock_in,
|
SUM(CASE WHEN record_type = 'out' THEN amount ELSE 0 END) as total_stock_out
|
FROM (
|
SELECT
|
product_model_id,
|
SUM(qualitity) as current_inventory,
|
0 as amount,
|
'' as record_type
|
FROM stock_inventory
|
GROUP BY product_model_id
|
|
UNION ALL
|
|
SELECT
|
product_model_id,
|
0 as current_inventory,
|
SUM(stock_in_num) as amount,
|
'in' as record_type
|
FROM stock_in_record
|
<where>
|
type = 0
|
<if test="ew.startMonth != null">
|
and stock_in_record.create_time >= #{ew.startMonth}
|
</if>
|
<if test="ew.endMonth != null">
|
and stock_in_record.create_time <= #{ew.endMonth}
|
</if>
|
</where>
|
GROUP BY product_model_id
|
|
UNION ALL
|
|
SELECT
|
product_model_id,
|
0 as current_inventory,
|
SUM(stock_out_num) as amount,
|
'out' as record_type
|
FROM stock_out_record
|
<where>
|
type = 0
|
<if test="ew.startMonth != null">
|
and stock_out_record.create_time >= #{ew.startMonth}
|
</if>
|
<if test="ew.endMonth != null">
|
and stock_out_record.create_time <= #{ew.endMonth}
|
</if>
|
</where>
|
GROUP BY product_model_id
|
) combined_data
|
LEFT JOIN product_model pm ON pm.id = combined_data.product_model_id
|
LEFT JOIN product p ON p.id = pm.product_id
|
<where>
|
<if test="ew.productName != null and ew.productName !=''">
|
and p.product_name like concat('%',#{ew.productName},'%')
|
</if>
|
<if test="ew.model != null and ew.model !=''">
|
and pm.model like concat('%',#{ew.model},'%')
|
</if>
|
</where>
|
GROUP BY
|
pm.model,
|
pm.unit,
|
p.product_name
|
</select>
|
|
</mapper>
|