wms/nflg-wms-repository/src/main/resources/mapper/QmsExemptMaterialMapper.xml

161 lines
6.4 KiB
XML
Raw Normal View History

2026-04-11 15:58:31 +08:00
<?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.nflg.wms.repository.mapper.QmsExemptMaterialMapper">
<!-- 分页查询免检物料列表JOIN 供应商表和质检物料表 -->
<select id="search" resultType="com.nflg.wms.common.pojo.vo.QmsExemptMaterialVO">
SELECT
em.id,
em.supplier_id,
us.supplier_code,
us.supplier_name,
em.material_no,
qm.material_desc,
em.audit_status,
em.enable,
2026-04-11 15:58:31 +08:00
em.exempt_mode,
em.valid_start_date,
em.valid_end_date,
em.reject_reason,
CASE
WHEN em.exempt_mode = 0 THEN 1
WHEN em.exempt_mode = 1 AND em.valid_end_date IS NOT NULL AND em.valid_end_date &gt;= NOW() THEN 1
ELSE 0
END AS valid_status,
em.auditor_name,
em.audit_time,
em.create_by_name,
em.create_time,
em.update_by_name,
em.update_time
FROM qms_exempt_material em
LEFT JOIN user_supplier us ON us.id = em.supplier_id
LEFT JOIN qms_qc_material qm ON qm.material_no = em.material_no
<where>
<if test="request.supplier != null and request.supplier != ''">
AND (us.supplier_code ILIKE CONCAT('%', #{request.supplier}, '%')
OR us.supplier_name ILIKE CONCAT('%', #{request.supplier}, '%'))
</if>
<if test="request.materialNo != null and request.materialNo != ''">
AND em.material_no ILIKE CONCAT('%', #{request.materialNo}, '%')
</if>
<if test="request.exemptMode != null">
AND em.exempt_mode = #{request.exemptMode}
</if>
<if test="request.auditStatus != null">
AND em.audit_status = #{request.auditStatus}
</if>
<if test="request.enable != null">
AND em.enable = #{request.enable}
2026-04-11 15:58:31 +08:00
</if>
<if test="request.validStartDateBegin != null">
AND em.valid_start_date &gt;= #{request.validStartDateBegin}
</if>
<if test="request.validStartDateEnd != null">
AND em.valid_start_date &lt;= #{request.validStartDateEnd}
</if>
<if test="request.validEndDateBegin != null">
AND em.valid_end_date &gt;= #{request.validEndDateBegin}
</if>
<if test="request.validEndDateEnd != null">
AND em.valid_end_date &lt;= #{request.validEndDateEnd}
</if>
<if test="request.validStatus != null and request.validStatus == 1">
AND (em.exempt_mode = 0 OR (em.exempt_mode = 1 AND em.valid_end_date IS NOT NULL AND em.valid_end_date &gt;= NOW()))
</if>
<if test="request.validStatus != null and request.validStatus == 0">
AND em.exempt_mode = 1 AND (em.valid_end_date IS NULL OR em.valid_end_date &lt; NOW())
</if>
</where>
ORDER BY em.create_time DESC
</select>
<!-- 按供应商查询关联的免检物料明细 -->
<select id="detailBySupplier" resultType="com.nflg.wms.common.pojo.vo.QmsExemptMaterialVO">
SELECT
em.id,
em.supplier_id,
us.supplier_code,
us.supplier_name,
em.material_no,
qm.material_desc,
em.audit_status,
em.enable,
2026-04-11 15:58:31 +08:00
em.exempt_mode,
em.valid_start_date,
em.valid_end_date,
CASE
WHEN em.exempt_mode = 0 THEN 1
WHEN em.exempt_mode = 1 AND em.valid_end_date IS NOT NULL AND em.valid_end_date &gt;= NOW() THEN 1
ELSE 0
END AS valid_status,
em.auditor_name,
em.audit_time,
em.create_by_name,
em.create_time,
em.update_by_name,
em.update_time
FROM qms_exempt_material em
LEFT JOIN user_supplier us ON us.id = em.supplier_id
LEFT JOIN qms_qc_material qm ON qm.material_no = em.material_no
WHERE em.supplier_id = #{supplierId}
ORDER BY em.create_time DESC
</select>
<!-- 按物料查询关联的供应商免检明细 -->
<select id="detailByMaterial" resultType="com.nflg.wms.common.pojo.vo.QmsExemptMaterialVO">
SELECT
em.id,
em.supplier_id,
us.supplier_code,
us.supplier_name,
em.material_no,
qm.material_desc,
em.audit_status,
em.enable,
2026-04-11 15:58:31 +08:00
em.exempt_mode,
em.valid_start_date,
em.valid_end_date,
CASE
WHEN em.exempt_mode = 0 THEN 1
WHEN em.exempt_mode = 1 AND em.valid_end_date IS NOT NULL AND em.valid_end_date &gt;= NOW() THEN 1
ELSE 0
END AS valid_status,
em.auditor_name,
em.audit_time,
em.create_by_name,
em.create_time,
em.update_by_name,
em.update_time
FROM qms_exempt_material em
LEFT JOIN user_supplier us ON us.id = em.supplier_id
LEFT JOIN qms_qc_material qm ON qm.material_no = em.material_no
WHERE em.material_no = #{materialNo}
ORDER BY em.create_time DESC
</select>
<!-- 批量查询有效免检物料(供应商编号+物料编号组合),仅返回审核通过、启用且在有效期内的记录 -->
<select id="batchCheckExempt" resultType="com.nflg.wms.common.pojo.vo.ExemptMaterialCheckVO">
SELECT
us.supplier_code AS supplierCode,
em.material_no AS materialNo
FROM qms_exempt_material em
INNER JOIN user_supplier us ON us.id = em.supplier_id
WHERE em.audit_status = 1
AND em.enable = true
AND (
em.exempt_mode = 0
OR (em.exempt_mode = 1 AND em.valid_end_date IS NOT NULL AND em.valid_end_date &gt;= NOW())
)
AND us.supplier_code IN
<foreach collection="supplierCodes" item="code" open="(" separator="," close=")">
#{code}
</foreach>
AND em.material_no IN
<foreach collection="materialNos" item="no" open="(" separator="," close=")">
#{no}
</foreach>
</select>
2026-04-11 15:58:31 +08:00
</mapper>