<?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="cn.iocoder.yudao.module.mes.dal.mysql.qc.ledger.MesQcInspectionLedgerMapper">
|
|
<!--
|
检测结果台账查询(四类检验单 UNION ALL)
|
一行 = 一个检测项结果;检验单未录入检验结果时该单占一行,检测项相关列为空(LEFT JOIN 保证不丢单)。
|
说明:检验结果的关联键为 (qc_id, qc_type),qc_id 为各检验单自身的 id,需按类型过滤 qc_type,否则不同类型的 id 会串单。
|
说明:检测项名称不做逻辑删除过滤,已停用/删除的检测项仍展示历史台账名称。
|
-->
|
<select id="selectInspectionLedgerPage" resultType="cn.iocoder.yudao.module.mes.controller.admin.qc.ledger.vo.MesQcInspectionLedgerRespVO">
|
SELECT * FROM (
|
<!-- 1. 来料检验(IQC),批次取供应商批次号 -->
|
SELECT
|
${@cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum@IQC.type} AS qcType,
|
q.id AS qcId,
|
q.code AS code,
|
q.name AS name,
|
q.status AS status,
|
q.item_id AS itemId,
|
q.vendor_batch AS batchNo,
|
q.check_quantity AS checkQuantity,
|
q.qualified_quantity AS qualifiedQuantity,
|
q.unqualified_quantity AS unqualifiedQuantity,
|
q.check_result AS checkResult,
|
q.inspect_date AS inspectDate,
|
q.inspector_user_id AS inspectorUserId,
|
q.remark AS remark,
|
d.indicator_id AS indicatorId,
|
i.name AS indicatorName,
|
d.value AS indicatorValue,
|
d.remark AS indicatorRemark,
|
l.standard_value AS standardValue,
|
l.min_threshold AS minThreshold,
|
l.max_threshold AS maxThreshold
|
FROM mes_qc_iqc q
|
LEFT JOIN mes_qc_indicator_result r ON r.qc_id = q.id
|
AND r.qc_type = ${@cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum@IQC.type}
|
AND r.deleted = 0
|
LEFT JOIN mes_qc_indicator_result_detail d ON d.result_id = r.id AND d.deleted = 0
|
LEFT JOIN mes_qc_indicator i ON i.id = d.indicator_id
|
LEFT JOIN mes_qc_iqc_line l ON l.iqc_id = q.id AND l.indicator_id = d.indicator_id AND l.deleted = 0
|
WHERE q.deleted = 0
|
|
UNION ALL
|
|
<!-- 2. 过程检验(IPQC),无批次号 -->
|
SELECT
|
${@cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum@IPQC.type} AS qcType,
|
q.id AS qcId,
|
q.code AS code,
|
q.name AS name,
|
q.status AS status,
|
q.item_id AS itemId,
|
NULL AS batchNo,
|
q.check_quantity AS checkQuantity,
|
q.qualified_quantity AS qualifiedQuantity,
|
q.unqualified_quantity AS unqualifiedQuantity,
|
q.check_result AS checkResult,
|
q.inspect_date AS inspectDate,
|
q.inspector_user_id AS inspectorUserId,
|
q.remark AS remark,
|
d.indicator_id AS indicatorId,
|
i.name AS indicatorName,
|
d.value AS indicatorValue,
|
d.remark AS indicatorRemark,
|
l.standard_value AS standardValue,
|
l.min_threshold AS minThreshold,
|
l.max_threshold AS maxThreshold
|
FROM mes_qc_ipqc q
|
LEFT JOIN mes_qc_indicator_result r ON r.qc_id = q.id
|
AND r.qc_type = ${@cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum@IPQC.type}
|
AND r.deleted = 0
|
LEFT JOIN mes_qc_indicator_result_detail d ON d.result_id = r.id AND d.deleted = 0
|
LEFT JOIN mes_qc_indicator i ON i.id = d.indicator_id
|
LEFT JOIN mes_qc_ipqc_line l ON l.ipqc_id = q.id AND l.indicator_id = d.indicator_id AND l.deleted = 0
|
WHERE q.deleted = 0
|
|
UNION ALL
|
|
<!-- 3. 出货检验(OQC),批次取批次号 -->
|
SELECT
|
${@cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum@OQC.type} AS qcType,
|
q.id AS qcId,
|
q.code AS code,
|
q.name AS name,
|
q.status AS status,
|
q.item_id AS itemId,
|
q.batch_code AS batchNo,
|
q.check_quantity AS checkQuantity,
|
q.qualified_quantity AS qualifiedQuantity,
|
q.unqualified_quantity AS unqualifiedQuantity,
|
q.check_result AS checkResult,
|
q.inspect_date AS inspectDate,
|
q.inspector_user_id AS inspectorUserId,
|
q.remark AS remark,
|
d.indicator_id AS indicatorId,
|
i.name AS indicatorName,
|
d.value AS indicatorValue,
|
d.remark AS indicatorRemark,
|
l.standard_value AS standardValue,
|
l.min_threshold AS minThreshold,
|
l.max_threshold AS maxThreshold
|
FROM mes_qc_oqc q
|
LEFT JOIN mes_qc_indicator_result r ON r.qc_id = q.id
|
AND r.qc_type = ${@cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum@OQC.type}
|
AND r.deleted = 0
|
LEFT JOIN mes_qc_indicator_result_detail d ON d.result_id = r.id AND d.deleted = 0
|
LEFT JOIN mes_qc_indicator i ON i.id = d.indicator_id
|
LEFT JOIN mes_qc_oqc_line l ON l.oqc_id = q.id AND l.indicator_id = d.indicator_id AND l.deleted = 0
|
WHERE q.deleted = 0
|
|
UNION ALL
|
|
<!-- 4. 退货检验(RQC),批次取批次号 -->
|
SELECT
|
${@cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum@RQC.type} AS qcType,
|
q.id AS qcId,
|
q.code AS code,
|
q.name AS name,
|
q.status AS status,
|
q.item_id AS itemId,
|
q.batch_code AS batchNo,
|
q.check_quantity AS checkQuantity,
|
q.qualified_quantity AS qualifiedQuantity,
|
q.unqualified_quantity AS unqualifiedQuantity,
|
q.check_result AS checkResult,
|
q.inspect_date AS inspectDate,
|
q.inspector_user_id AS inspectorUserId,
|
q.remark AS remark,
|
d.indicator_id AS indicatorId,
|
i.name AS indicatorName,
|
d.value AS indicatorValue,
|
d.remark AS indicatorRemark,
|
l.standard_value AS standardValue,
|
l.min_threshold AS minThreshold,
|
l.max_threshold AS maxThreshold
|
FROM mes_qc_rqc q
|
LEFT JOIN mes_qc_indicator_result r ON r.qc_id = q.id
|
AND r.qc_type = ${@cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum@RQC.type}
|
AND r.deleted = 0
|
LEFT JOIN mes_qc_indicator_result_detail d ON d.result_id = r.id AND d.deleted = 0
|
LEFT JOIN mes_qc_indicator i ON i.id = d.indicator_id
|
LEFT JOIN mes_qc_rqc_line l ON l.rqc_id = q.id AND l.indicator_id = d.indicator_id AND l.deleted = 0
|
WHERE q.deleted = 0
|
) t
|
<where>
|
<if test="reqVO.qcType != null">
|
AND t.qcType = #{reqVO.qcType}
|
</if>
|
<if test="reqVO.inspectDate != null and reqVO.inspectDate.length > 0 and reqVO.inspectDate[0] != null">
|
AND t.inspectDate >= #{reqVO.inspectDate[0]}
|
</if>
|
<if test="reqVO.inspectDate != null and reqVO.inspectDate.length > 1 and reqVO.inspectDate[1] != null">
|
AND t.inspectDate <= #{reqVO.inspectDate[1]}
|
</if>
|
<if test="reqVO.code != null and reqVO.code != ''">
|
AND t.code LIKE CONCAT('%', #{reqVO.code}, '%')
|
</if>
|
<if test="reqVO.itemId != null">
|
AND t.itemId = #{reqVO.itemId}
|
</if>
|
<if test="reqVO.batchNo != null and reqVO.batchNo != ''">
|
AND t.batchNo LIKE CONCAT('%', #{reqVO.batchNo}, '%')
|
</if>
|
<if test="reqVO.checkResult != null">
|
AND t.checkResult = #{reqVO.checkResult}
|
</if>
|
<if test="reqVO.inspectorUserId != null">
|
AND t.inspectorUserId = #{reqVO.inspectorUserId}
|
</if>
|
</where>
|
ORDER BY t.inspectDate DESC, t.qcId DESC, t.qcType ASC
|
</select>
|
|
</mapper>
|