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

161 lines
6.4 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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,
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}
</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,
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,
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>
</mapper>