wms/nflg-wms-repository/src/main/resources/mapper/QmsPdiInspectionResultsMapp...

136 lines
6.7 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.QmsPdiInspectionResultsMapper">
<!-- 分页查询:以任务单为主体,关联规则表取机型、版本等 -->
<select id="search" resultType="com.nflg.wms.common.pojo.vo.QmsPdiInspectionResultsPageVO">
SELECT DISTINCT
t.id AS taskId,
r.model_no AS machineNo,
t.order_no AS orderNo,
t.device_no AS deviceNo,
t.task_no AS taskNo,
r.inspection_version AS inspectionVersion,
t.submission_time AS submissionTime,
t.required_completion_time AS requiredCompletionTime,
t.inspection_enable AS inspectionEnable,
t.assignee_id AS assigneeId,
uass.user_name AS assigneeName,
CASE
WHEN uass.user_name IS NOT NULL THEN uass.user_name
WHEN ua.user_name IS NOT NULL AND ui.user_name IS NOT NULL AND ua.user_name != ui.user_name
THEN ua.user_name || '' || ui.user_name
ELSE COALESCE(ua.user_name, ui.user_name)
END AS currentHandlerName,
t.overdue
FROM qms_pdi_task_record t
LEFT JOIN qms_pdi_detection_rules r ON r.id = t.detection_rules_id
LEFT JOIN "user" ui ON ui.id = r.inspector_id
LEFT JOIN "user" ua ON ua.id = t.assistant_id
LEFT JOIN "user" uass ON uass.id = t.assignee_id
<where>
<!-- 权限过滤:只能看自己是帮办人或质检负责人的任务单 -->
<if test="request.userId != null">
AND (t.assistant_id = #{request.userId} OR r.inspector_id = #{request.userId} OR t.assignee_id = #{request.userId})
</if>
<!-- 关键字模糊匹配:机型编号、订单编号、机台编号、任务单号 -->
<if test="request.key != null and request.key != ''">
AND (
r.model_no ILIKE CONCAT('%', #{request.key}, '%')
OR t.order_no ILIKE CONCAT('%', #{request.key}, '%')
OR t.device_no ILIKE CONCAT('%', #{request.key}, '%')
OR t.task_no ILIKE CONCAT('%', #{request.key}, '%')
)
</if>
<!-- 任务状态筛选 -->
<if test="request.inspectionEnable != null and request.inspectionEnable != 9">
AND t.inspection_enable = #{request.inspectionEnable}
</if>
<if test="request.inspectionEnable != null and request.inspectionEnable == 9">
AND t.overdue = true
</if>
</where>
ORDER BY t.id DESC
</select>
<!-- 平板:检查任务列表分页查询(仅 taskStatus 筛选) -->
<select id="searchTaskList" resultType="com.nflg.wms.common.pojo.vo.QmsPdiInspectionResultsPageVO">
SELECT DISTINCT
t.id AS taskId,
r.model_no AS machineNo,
t.order_no AS orderNo,
t.device_no AS deviceNo,
t.task_no AS taskNo,
r.inspection_version AS inspectionVersion,
t.submission_time AS submissionTime,
t.required_completion_time AS requiredCompletionTime,
t.inspection_enable AS inspectionEnable,
t.assignee_id AS assigneeId,
uass.user_name AS assigneeName,
CASE
WHEN uass.user_name IS NOT NULL THEN uass.user_name
WHEN ua.user_name IS NOT NULL AND ui.user_name IS NOT NULL AND ua.user_name != ui.user_name
THEN ua.user_name || '' || ui.user_name
ELSE COALESCE(ua.user_name, ui.user_name)
END AS currentHandlerName,
t.overdue
FROM qms_pdi_task_record t
LEFT JOIN qms_pdi_detection_rules r ON r.id = t.detection_rules_id
LEFT JOIN "user" ui ON ui.id = r.inspector_id
LEFT JOIN "user" ua ON ua.id = t.assistant_id
LEFT JOIN "user" uass ON uass.id = t.assignee_id
<where>
<if test="request.userId != null">
AND (t.assistant_id = #{request.userId} OR r.inspector_id = #{request.userId} OR t.assignee_id = #{request.userId})
</if>
<if test="request.taskStatus != null and request.taskStatus != 9">
AND t.inspection_enable = #{request.taskStatus}
</if>
<if test="request.taskStatus != null and request.taskStatus == 9">
AND t.overdue = true
</if>
</where>
ORDER BY t.id DESC
</select>
<!-- 平板:统计各状态数量(不受筛选条件影响,只受权限过滤) -->
<select id="countByStatus" resultType="map">
SELECT
COUNT(CASE WHEN t.inspection_enable = 0 THEN 1 END) AS "pendingCount",
COUNT(CASE WHEN t.inspection_enable = 1 THEN 1 END) AS "inProgressCount",
COUNT(CASE WHEN t.overdue = true THEN 1 END) AS "overdueCount",
COUNT(CASE WHEN t.inspection_enable = 2 THEN 1 END) AS "completedCount",
COUNT(CASE WHEN t.inspection_enable = 3 THEN 1 END) AS "pendingTransferCount"
FROM qms_pdi_task_record t
LEFT JOIN qms_pdi_detection_rules r ON r.id = t.detection_rules_id
<where>
<if test="userId != null">
AND (t.assistant_id = #{userId} OR r.inspector_id = #{userId} OR t.assignee_id = #{userId})
</if>
</where>
</select>
<!-- 根据任务ID查询检验结果详情联查检测项和部件信息 -->
<select id="listByTaskId" resultType="com.nflg.wms.common.pojo.vo.QmsPdiTaskInspectionResultVO">
SELECT
b.id,
c.component_name AS componentName,
a.inspection_content AS inspectionContent,
d.url AS inspectionImage,
a.status,
b.inspection_item_image AS inspectionItemImage,
b.inspection_item_results AS inspectionItemResults,
b.inspection_time AS inspectionTime,
b.inspection_by AS inspectionBy,
b.remark
FROM qms_pdi_inspection_results b
LEFT JOIN qms_pdi_detection_rules_status_item a ON a.id = b.inspection_item_id
LEFT JOIN qms_pdi_component_anagement c ON a.components_id = c.id
LEFT JOIN file_upload_record d ON a.inspection_image::bigint = d.id
WHERE b.task_id = #{request.taskId}
AND a.status = #{request.status}
AND c.component_name = #{request.componentName}
</select>
</mapper>