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

151 lines
6.5 KiB
XML
Raw Normal View History

<?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.QmsQualityInspectorMapper">
<!--
分页查询:以质检人为主体,每个 user_id 只返回一条记录
使用 DISTINCT ON (qi.user_id) 保证每人唯一
JOIN user_interior/department 获取部门信息
JOIN user AS cu 获取转办人姓名
支持动态过滤:员工工号(userCode)、人员名称模糊(userName)、物料编号(materialNo)
-->
<select id="searchPage" resultType="com.nflg.wms.common.pojo.vo.QmsQualityInspectorVO">
SELECT
qi.id,
qi.user_id,
u.user_code,
u.user_name,
d.id AS dept_id,
d.name AS dept_name,
NULL::bigint AS dept_leader_id,
NULL::varchar AS dept_leader_name,
qi.enable,
qi.inspection_type,
qi.change_user_id,
cu.user_name AS change_user_name,
qi.create_by,
qi.create_time,
qi.update_by,
qi.update_time
FROM (
SELECT DISTINCT ON (user_id) *
FROM qms_quality_inspector
ORDER BY user_id, id DESC
) qi
LEFT JOIN "user" u ON u.id = qi.user_id
LEFT JOIN user_interior ui ON ui.user_id = qi.user_id
LEFT JOIN department d ON d.id = ui.dept_id
LEFT JOIN "user" cu ON cu.id = qi.change_user_id
<where>
<if test="request.userCode != null and request.userCode != ''">
AND u.user_code = #{request.userCode}
</if>
<if test="request.userName != null and request.userName != ''">
AND u.user_name ilike concat('%', #{request.userName}, '%')
</if>
<if test="request.materialNo != null and request.materialNo != ''">
AND EXISTS (
SELECT 1 FROM qms_quality_inspector qi2
LEFT JOIN qms_qc_material m ON m.id = qi2.material_id
WHERE qi2.user_id = qi.user_id
AND m.material_no ilike concat('%', #{request.materialNo}, '%')
)
</if>
</where>
ORDER BY qi.id DESC
</select>
<!-- 按 userId 查询关联物料列表JOIN qms_qc_material 获取物料详情) -->
<select id="getMaterialsByUserId" resultType="com.nflg.wms.common.pojo.vo.QmsQualityInspectorMaterialVO">
SELECT
qi.id,
qi.material_id,
m.material_no,
m.material_category_code,
m.material_category_code_path_name AS material_category_name,
m.material_desc AS material_name,
m.material_specifications,
m.material_texture,
m.is_standard_maintained AS material_status
FROM qms_quality_inspector qi
LEFT JOIN qms_qc_material m ON m.id = qi.material_id
WHERE qi.user_id = #{userId}
AND qi.material_id IS NOT NULL
ORDER BY qi.id ASC
</select>
<!-- 按 userId 查询关联物料列表(支持供应商过滤) -->
<select id="getMaterialsByUserIdWithSupplier" resultType="com.nflg.wms.common.pojo.vo.QmsQualityInspectorMaterialVO">
SELECT
qi.id,
qi.material_id,
m.material_no,
m.material_category_code,
m.material_category_code_path_name AS material_category_name,
m.material_desc AS material_name,
m.material_specifications,
m.material_texture,
m.is_standard_maintained AS material_status
FROM qms_quality_inspector qi
LEFT JOIN qms_qc_material m ON m.id = qi.material_id
LEFT JOIN qms_coa_review cr ON cr.material_id = m.id
LEFT JOIN user_supplier us ON us.id = cr.supplier_id
WHERE qi.user_id = #{userId}
AND qi.material_id IS NOT NULL
<if test="supplierCode != null and supplierCode != ''">
AND us.supplier_code = #{supplierCode}
</if>
<if test="supplierName != null and supplierName != ''">
AND us.supplier_name LIKE CONCAT('%', #{supplierName}, '%')
</if>
GROUP BY qi.id, qi.material_id, m.material_no, m.material_category_code,
m.material_category_code_path_name, m.material_desc,
m.material_specifications, m.material_texture, m.is_standard_maintained
ORDER BY qi.id ASC
</select>
<!-- 按 userId 查询绑定物料列表(支持物料编号/类别/描述过滤) -->
<select id="getMaterialsByUserIdWithFilter" resultType="com.nflg.wms.common.pojo.vo.QmsQualityInspectorMaterialVO">
SELECT
qi.id,
qi.material_id,
m.material_no,
m.drawing_no,
m.material_category_code,
m.material_category_code_path_name AS material_category_name,
m.material_desc AS material_name,
m.material_specifications,
m.material_texture,
m.is_standard_maintained AS material_status
FROM qms_quality_inspector qi
LEFT JOIN qms_qc_material m ON m.id = qi.material_id
WHERE qi.user_id = #{userId}
AND qi.material_id IS NOT NULL
<if test="materialNo != null and materialNo != ''">
AND m.material_no = #{materialNo}
</if>
<if test="materialCategoryCode != null and materialCategoryCode != ''">
AND m.material_category_code = #{materialCategoryCode}
</if>
<if test="materialDesc != null and materialDesc != ''">
AND m.material_desc LIKE CONCAT('%', #{materialDesc}, '%')
</if>
ORDER BY qi.id ASC
</select>
<!-- 按 userId 查询关联物料类别列表JOIN qms_qc_material 取类别名称) -->
<select id="getCategoriesByUserId" resultType="com.nflg.wms.common.pojo.vo.QmsQualityInspectorCategoryVO">
SELECT DISTINCT ON (qi.material_category_code)
qi.id,
qi.material_category_code,
m.material_category_code_path_name AS material_category_name
FROM qms_quality_inspector qi
LEFT JOIN qms_qc_material m ON m.material_category_code = qi.material_category_code
WHERE qi.user_id = #{userId}
AND qi.material_category_code IS NOT NULL
AND qi.material_id IS NULL
ORDER BY qi.material_category_code, qi.id ASC
</select>
</mapper>