<?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.basic.mapper.ProductModelMapper">
|
|
<!-- 通用查询映射结果 -->
|
<!-- 通用查询映射结果 -->
|
<resultMap id="BaseResultMap" type="com.ruoyi.basic.pojo.ProductModel">
|
<id column="id" property="id" />
|
<result column="product_id" property="productId" />
|
<result column="model" property="model" />
|
<result column="unit" property="unit" />
|
<result column="speculative_trading_name" property="speculativeTradingName" />
|
<result column="tenant_id" property="tenantId" />
|
<result column="product_name" property="productName" />
|
<result column="product_id" property="productId" />
|
</resultMap>
|
<select id="listPageProductModel" resultType="com.ruoyi.basic.pojo.ProductModel">
|
select pm.*,p.product_name
|
from product_model pm
|
left join product p on pm.product_id = p.id
|
<where>
|
<if test="c.model != null and c.model != ''">
|
and pm.model like concat('%',#{c.model},'%')
|
</if>
|
<if test="c.productName != null and c.productName != ''">
|
and p.product_name like concat('%',#{c.productName},'%')
|
</if>
|
</where>
|
order by pm.id
|
</select>
|
<select id="selectLatestRecord" resultType="com.ruoyi.basic.pojo.ProductModel">
|
SELECT * FROM product_model
|
ORDER BY create_time DESC, id DESC
|
LIMIT 1
|
</select>
|
|
<select id="listPageProductionStock" resultType="com.ruoyi.basic.pojo.ProductModel">
|
SELECT
|
pm.id,
|
pm.product_id,
|
pm.model,
|
pm.unit,
|
p.product_name,
|
GREATEST(s.last_in_time, o.last_out_time) AS create_time,
|
COALESCE(s.inboundNum, 0) AS inboundNum,
|
COALESCE(o.outboundNum, 0) AS outboundNum,
|
COALESCE(s.inboundNum, 0) - COALESCE(o.outboundNum, 0) AS stockQuantity
|
FROM product_model pm
|
LEFT JOIN product p ON pm.product_id = p.id
|
|
-- 入库汇总
|
LEFT JOIN (
|
SELECT
|
product_model_id,
|
SUM(inbound_num) AS inboundNum,
|
MAX(create_time) AS last_in_time
|
FROM procurement_record_storage
|
<where>
|
<if test="req.timeStr != null and req.timeStr != ''">
|
AND create_time >= #{req.timeStr}
|
AND create_time < DATE_ADD(#{req.timeStr}, INTERVAL 1 DAY)
|
</if>
|
</where>
|
GROUP BY product_model_id
|
) s ON s.product_model_id = pm.id
|
|
-- 出库汇总
|
LEFT JOIN (
|
SELECT
|
product_model_id,
|
SUM(inbound_num) AS outboundNum,
|
MAX(create_time) AS last_out_time
|
FROM procurement_record_out
|
<where>
|
<if test="req.timeStr != null and req.timeStr != ''">
|
AND create_time >= #{req.timeStr}
|
AND create_time < DATE_ADD(#{req.timeStr}, INTERVAL 1 DAY)
|
</if>
|
</where>
|
GROUP BY product_model_id
|
) o ON o.product_model_id = pm.id
|
|
<where>
|
<if test="req.timeStr != null and req.timeStr != ''">
|
AND (s.product_model_id IS NOT NULL OR o.product_model_id IS NOT NULL)
|
</if>
|
|
<if test="req.productCategory != null and req.productCategory != ''">
|
AND EXISTS (
|
SELECT 1
|
FROM sales_ledger_product slp
|
WHERE slp.product_id = p.id
|
AND slp.product_category LIKE CONCAT('%', #{req.productCategory}, '%')
|
)
|
</if>
|
</where>
|
|
ORDER BY pm.id DESC
|
</select>
|
<select id="getProductAndModelList" resultType="java.util.Map">
|
select p.id as id,
|
pm.id as modelId,
|
p.product_name as productName ,
|
pm.model as model
|
from product_model pm
|
left join product p on p.id = pm.product_id
|
order by p.id,pm.id desc
|
</select>
|
|
</mapper>
|