<?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.chinaztt.mes.quality.mapper.ReportSampleMapper">
|
|
<resultMap id="reportSampleMap" type="com.chinaztt.mes.quality.dto.ReportSampleDTO">
|
<id property="id" column="id"/>
|
<result property="reportId" column="report_id"/>
|
<result property="sampleNo" column="sample_no"/>
|
<result property="systemNo" column="system_no"/>
|
<result property="remark" column="remark"/>
|
<result property="testStandardNo" column="test_standard_no"/>
|
<result property="outBatchNo" column="out_batch_no"/>
|
<result property="testStandardId" column="test_standard_id"/>
|
<result property="isMoTestStandard" column="is_mo_test_standard"/>
|
<result property="reportType" column="report_type"/>
|
<result property="partId" column="part_id"/>
|
<result property="partNo" column="part_no"/>
|
<result property="partName" column="part_name"/>
|
<result property="stockQuantity" column="stock_quantity"/>
|
</resultMap>
|
|
<select id="getReportSampleList" resultMap="reportSampleMap">
|
select
|
temp.*
|
from (SELECT
|
qrs.*,
|
CASE
|
WHEN ppo.out_batch_no IS NULL
|
THEN qap.lot_batch_no
|
ELSE ppo.out_batch_no END out_batch_no,
|
CASE
|
WHEN bp."id" IS NULL
|
THEN qap.part_no
|
ELSE bp.part_no END part_no,
|
bp.ID part_id,
|
bp.part_name,
|
ws.stock_quantity
|
FROM
|
quality_report_sample qrs
|
LEFT JOIN quality_apply_part qap ON qap.report_id = qrs.report_id
|
AND qap.system_no = qrs.system_no
|
LEFT JOIN production_product_output ppo ON ppo.system_no = qap.system_no
|
LEFT JOIN basic_part bp ON bp.ID = qap.part_id
|
LEFT JOIN warehouse_stock ws ON ws.part_batch_no = ppo.out_batch_no
|
ORDER BY
|
qrs.sample_no DESC
|
) temp
|
<if test="ew.emptyOfWhere == false">
|
${ew.customSqlSegment}
|
</if>
|
</select>
|
|
<select id="getReportSampleForSelf" resultMap="reportSampleMap">
|
select qrs.*
|
from quality_report_sample qrs
|
where qrs.system_no=#{sample.systemNo} and qrs.test_standard_id=#{sample.testStandardId}
|
and exists(select 1 from quality_report qr where qr.report_type='04self' and qr."id"=qrs.report_id)
|
order by qrs."id" limit 1
|
</select>
|
|
<select id="selectIsMasterRoutingOperationBySystemNo" resultType="java.lang.Boolean">
|
select COALESCE(pmoro.is_master,FALSE)
|
from production_product_output ppo
|
left join production_product_main ppm on ppm."id"=ppo.product_main_id
|
left join production_operation_task pot on pot."id"=ppm.operation_task_id
|
left join plan_manufacturing_order_routing_operation pmoro on pot.mo_routing_operation_id = pmoro."id"
|
where ppo.system_no=#{systemNo}
|
limit 1
|
</select>
|
|
<select id="selectSampleExpressionById" resultType="java.lang.String">
|
select coalesce(pmts.judge_formula,qts.judge_formula)
|
from quality_report_sample qrs
|
left join quality_test_standard qts on qts."id"=qrs.test_standard_id and qrs.is_mo_test_standard=false
|
left join plan_mo_test_standard pmts on pmts."id"=qrs.test_standard_id and qrs.is_mo_test_standard=true
|
where qrs."id"=#{id}
|
</select>
|
|
<select id="getTestResult" resultType="com.chinaztt.mes.quality.dto.MoTestStandardParamDTO">
|
SELECT DISTINCT pmtsp.parameter_item item_name, pmtsp.index
|
FROM plan_mo_test_standard pmts
|
LEFT JOIN plan_mo_test_standard_param pmtsp ON pmtsp.mo_test_standard_id = pmts."id"
|
WHERE pmts.standard_no=#{standardNo} AND pmts.mo_id =#{moId} order by pmtsp.index asc
|
</select>
|
|
<select id="getTest" resultType="java.lang.String">
|
SELECT array_to_string(array_agg(test_items),',') as item_name FROM(
|
SELECT
|
'"id" int8,"systemNo" VARCHAR,"lotBatchNo" VARCHAR,"partNo" VARCHAR,"partDesc" VARCHAR,"updateTime" TIMESTAMP,"isQualified" bool' AS test_items UNION ALL
|
SELECT DISTINCT
|
'"' || pmtsp.parameter_item || '" VARCHAR'
|
FROM plan_mo_test_standard pmts
|
LEFT JOIN plan_mo_test_standard_param pmtsp ON pmtsp.mo_test_standard_id = pmts."id"
|
WHERE pmts.standard_no=#{standardNo} AND pmts.mo_id =#{moId}
|
)E
|
</select>
|
|
<select id="getTestValue" resultType="com.alibaba.fastjson.JSONObject">
|
SELECT
|
*
|
FROM
|
crosstab ( 'SELECT
|
qap."id",
|
qap.system_no,
|
qap.lot_batch_no,
|
qap.part_no,
|
qap.part_desc,
|
qr.update_time,
|
qap.is_qualified,
|
qrsi.item_name,
|
qrsi.item_value
|
FROM
|
quality_report qr
|
LEFT JOIN quality_report_sample qrs ON qr."id" = qrs.report_id
|
LEFT JOIN quality_apply_part qap ON qap.report_id = qr."id"
|
LEFT JOIN quality_report_sample_item qrsi ON qrsi.report_sample_id = qrs."id"
|
WHERE qrs.test_standard_no =''' ||#{queryDTO.testStandardNo}||''' <if test="queryDTO.startTime!=null and queryDTO.startTime!='' "> and qr.update_time >= ''' ||#{queryDTO.startTime} </if><if test="queryDTO.endTime!=null and queryDTO.endTime!='' "> ||''' and ''' ||#{queryDTO.endTime}||''' >= qr.update_time </if> <if test="queryDTO.lotBatchNo!=null and queryDTO.lotBatchNo!='' "> and qap.lot_batch_no LIKE ''' ||#{queryDTO.lotBatchNo}||'''</if> <if test="queryDTO.isQualified!=null "> and qap.is_qualified is ${queryDTO.isQualified}</if> order by 1','
|
SELECT DISTINCT pmtsp.parameter_item item_name
|
FROM plan_mo_test_standard pmts
|
LEFT JOIN plan_mo_test_standard_param pmtsp ON pmtsp.mo_test_standard_id = pmts."id"
|
WHERE pmts.standard_no=''' ||#{queryDTO.testStandardNo}||''' AND pmts.mo_id =${queryDTO.moId}' ) AS ( ${itemName} )
|
</select>
|
|
<select id="getBySystemNoAndReportType" resultMap="reportSampleMap">
|
select qrs.* from quality_report_sample qrs
|
left join quality_report qr on qrs.report_id = qr.id
|
where
|
qrs.system_no = #{systemNo}
|
</select>
|
|
<select id="getSampleById" resultMap="reportSampleMap">
|
select qrs.*,qr.report_type from quality_report_sample qrs
|
left join quality_report qr on qrs.report_id = qr.id
|
where
|
qr.id = #{reportId} order by qrs.id desc limit 1
|
</select>
|
|
<select id="getMoTestStandardId" resultType="java.lang.Long">
|
SELECT pmts."id" FROM
|
(SELECT * FROM production_product_output WHERE system_no = #{systemNo}) ppo
|
LEFT JOIN
|
production_product_main ppm ON ppo.product_main_id = ppm."id"
|
LEFT JOIN
|
production_operation_task pot ON ppm.operation_task_id = pot."id"
|
LEFT JOIN
|
production_operation_task_supply pots ON pot."id" = pots.operation_task_id
|
LEFT JOIN
|
plan_manufacturing_order_routing_operation pmoro ON pot.mo_routing_operation_id = pmoro."id"
|
LEFT JOIN
|
plan_mo_test_standard pmts ON pots.mo_id = pmts.mo_id AND pmts.mo_routing_operation_id = pmoro."id"
|
INNER JOIN
|
(SELECT * FROM quality_report WHERE "id" = #{reportId}) qr ON qr.report_type = pmts.inspection_type --检测汇报类型与制造订单检测标准类型一致
|
LIMIT 1
|
</select>
|
|
<select id="getMoTestStandardNoById" resultType="java.lang.String">
|
SELECT standard_no FROM plan_mo_test_standard WHERE "id" = #{id}
|
</select>
|
|
<select id="getTestStandardNoBySnOrPartId" resultType="java.lang.String">
|
SELECT DISTINCT
|
qrs.test_standard_no
|
FROM
|
quality_report_sample qrs
|
LEFT JOIN quality_report qr ON qrs.report_id = qr.id
|
LEFT JOIN quality_apply_part qap ON qr."id" = qap.report_id
|
WHERE
|
qr.report_type = #{testType}
|
<if test="partBatchNo != null and partBatchNo != ''">
|
AND qap.lot_batch_no = #{partBatchNo}
|
</if>
|
<if test="partId != null">
|
AND qap.part_id = #{partId}
|
</if>
|
</select>
|
|
<select id="getItemNameList" resultType="java.lang.String">
|
SELECT DISTINCT
|
qrsi.item_name,
|
qrsi.sort
|
FROM
|
quality_report_sample qrs
|
LEFT JOIN quality_report qr ON qrs.report_id = qr."id"
|
LEFT JOIN quality_apply_part qap ON qap.report_id = qr."id"
|
LEFT JOIN quality_report_sample_item qrsi ON qrs."id" = qrsi.report_sample_id
|
WHERE
|
qrs.test_standard_no = #{testStandardNo}
|
AND qr.report_type = #{testType}
|
<if test="partId != null">
|
AND qap.part_id = #{partId}
|
</if>
|
<if test="partBatchNo != null and partBatchNo != ''">
|
AND qap.lot_batch_no = #{partBatchNo}
|
</if>
|
ORDER BY
|
qrsi.sort ASC
|
</select>
|
|
<select id="getItemNameString" resultType="java.lang.String">
|
SELECT array_to_string(array_agg(test_items),',') as item_name FROM(
|
SELECT
|
'"id" int8,"isQualified" bool,"partBatchNo" VARCHAR,"checkLength" numeric,
|
"scrapArrived" numeric,"partNo" VARCHAR,"partDesc" VARCHAR,"replacePartNo" VARCHAR,
|
"replacePartName" VARCHAR,"examiner" VARCHAR,"measuringInstrument" VARCHAR,"checkTime" TIMESTAMP,
|
"reportPerson" VARCHAR,"reportType" VARCHAR,"workstationName" VARCHAR' AS test_items UNION ALL
|
SELECT DISTINCT
|
'"' || qrsi.item_name || '" VARCHAR'
|
FROM
|
quality_report_sample qrs
|
LEFT JOIN quality_report qr ON qrs.report_id = qr."id"
|
LEFT JOIN quality_apply_part qap ON qap.report_id = qr."id"
|
LEFT JOIN quality_report_sample_item qrsi ON qrs."id" = qrsi.report_sample_id
|
WHERE
|
qrs.test_standard_no = #{testStandardNo}
|
AND qr.report_type = #{testType}
|
<if test="partId != null">
|
AND qap.part_id = #{partId}
|
</if>
|
<if test="partBatchNo != null and partBatchNo != ''">
|
AND qap.lot_batch_no = #{partBatchNo}
|
</if>
|
)E
|
</select>
|
|
<select id="getTestValueV2" resultType="com.alibaba.fastjson.JSONObject">
|
SELECT
|
*
|
FROM
|
crosstab ( 'SELECT
|
qap."id",
|
qap.is_qualified,
|
qap.lot_batch_no,
|
qap.check_length,
|
qap.scrap_arrived,
|
qap.part_no,
|
qap.part_desc,
|
qap.replace_part_no,
|
qap.replace_part_name,
|
qap.examiner,
|
qap.measuring_instrument,
|
qr.check_time,
|
qr.report_person,
|
qr.report_type,
|
bw."name" workstation_name,
|
qrsi.item_name,
|
qrsi.item_value || ''@'' || COALESCE(qrsi.is_qualified, TRUE)
|
FROM
|
quality_report qr
|
LEFT JOIN quality_report_sample qrs ON qr."id" = qrs.report_id
|
LEFT JOIN quality_apply_part qap ON qap.report_id = qr."id"
|
LEFT JOIN quality_report_sample_item qrsi ON qrsi.report_sample_id = qrs."id"
|
LEFT JOIN production_product_output ppo ON qap.system_no = ppo.system_no
|
LEFT JOIN production_product_main ppm ON ppo.product_main_id = ppm."id"
|
LEFT JOIN production_operation_task pot ON ppm.operation_task_id = pot."id"
|
LEFT JOIN basic_workstation bw ON ppm.workstation_id = bw."id"
|
WHERE qrs.test_standard_no =''' ||#{queryDTO.testStandardNo}|| ''' AND qr.report_type =''' ||#{queryDTO.testType}||'''
|
<if test="queryDTO.startTime!=null and queryDTO.startTime!='' "> and qr.check_time >= ''' ||#{queryDTO.startTime} </if>
|
<if test="queryDTO.endTime!=null and queryDTO.endTime!='' "> ||''' and ''' ||#{queryDTO.endTime}||''' >= qr.check_time </if>
|
<if test="queryDTO.partBatchNo!=null and queryDTO.partBatchNo!='' "> and qap.lot_batch_no LIKE ''' ||#{queryDTO.partBatchNo}||'''</if>
|
<if test="queryDTO.partId != null"> and qap.part_id = ${queryDTO.partId} </if>
|
<if test="queryDTO.workstationIds != null and queryDTO.workstationIds != ''">
|
and bw."id" in ( ${queryDTO.workstationIds} )
|
</if>
|
<if test="queryDTO.isQualified!=null "> and qap.is_qualified is ${queryDTO.isQualified}</if> order by 1','
|
SELECT DISTINCT
|
qrsi.item_name
|
FROM
|
quality_report_sample qrs
|
LEFT JOIN quality_report qr ON qrs.report_id = qr."id"
|
LEFT JOIN quality_apply_part qap ON qap.report_id = qr."id"
|
LEFT JOIN quality_report_sample_item qrsi ON qrs."id" = qrsi.report_sample_id
|
WHERE
|
qrs.test_standard_no = ''' ||#{queryDTO.testStandardNo}||'''
|
AND qr.report_type = ''' ||#{queryDTO.testType}||'''
|
<if test="queryDTO.partId != null">
|
AND qap.part_id = ${queryDTO.partId}
|
</if>
|
<if test="queryDTO.partBatchNo != null and queryDTO.partBatchNo != ''">
|
AND qap.lot_batch_no LIKE ''' ||#{queryDTO.partBatchNo}||'''
|
</if>
|
' ) AS ( ${itemName} )
|
</select>
|
|
<select id="getResultListV2" resultType="com.alibaba.fastjson.JSONObject">
|
SELECT
|
*
|
FROM
|
crosstab ( 'SELECT
|
qap."id",
|
qap.is_qualified,
|
qap.lot_batch_no,
|
qap.check_length,
|
qap.scrap_arrived,
|
qap.part_no,
|
qap.part_desc,
|
qap.replace_part_no,
|
qap.replace_part_name,
|
qap.examiner,
|
qap.measuring_instrument,
|
qr.check_time,
|
qr.report_person,
|
qr.report_type,
|
bw."name" workstation_name,
|
qrsi.item_name,
|
qrsi.item_value
|
FROM
|
quality_report qr
|
LEFT JOIN quality_report_sample qrs ON qr."id" = qrs.report_id
|
LEFT JOIN quality_apply_part qap ON qap.report_id = qr."id"
|
LEFT JOIN quality_report_sample_item qrsi ON qrsi.report_sample_id = qrs."id"
|
LEFT JOIN production_product_output ppo ON qap.system_no = ppo.system_no
|
LEFT JOIN production_product_main ppm ON ppo.product_main_id = ppm."id"
|
LEFT JOIN production_operation_task pot ON ppm.operation_task_id = pot."id"
|
LEFT JOIN basic_workstation bw ON ppm.workstation_id = bw."id"
|
WHERE qrs.test_standard_no =''' ||#{queryDTO.testStandardNo}|| ''' AND qr.report_type =''' ||#{queryDTO.testType}||'''
|
<if test="queryDTO.startTime!=null and queryDTO.startTime!='' "> and qr.check_time >= ''' ||#{queryDTO.startTime} </if>
|
<if test="queryDTO.endTime!=null and queryDTO.endTime!='' "> ||''' and ''' ||#{queryDTO.endTime}||''' >= qr.check_time </if>
|
<if test="queryDTO.partBatchNo!=null and queryDTO.partBatchNo!='' "> and qap.lot_batch_no LIKE ''' ||#{queryDTO.partBatchNo}||'''</if>
|
<if test="queryDTO.partId != null"> and qap.part_id = ${queryDTO.partId} </if>
|
<if test="queryDTO.workstationIds != null and queryDTO.workstationIds != ''">
|
and bw."id" in ( ${queryDTO.workstationIds} )
|
</if>
|
<if test="queryDTO.isQualified!=null "> and qap.is_qualified is ${queryDTO.isQualified}</if> order by 1','
|
SELECT DISTINCT
|
qrsi.item_name
|
FROM
|
quality_report_sample qrs
|
LEFT JOIN quality_report qr ON qrs.report_id = qr."id"
|
LEFT JOIN quality_apply_part qap ON qap.report_id = qr."id"
|
LEFT JOIN quality_report_sample_item qrsi ON qrs."id" = qrsi.report_sample_id
|
WHERE
|
qrs.test_standard_no = ''' ||#{queryDTO.testStandardNo}||'''
|
AND qr.report_type = ''' ||#{queryDTO.testType}||'''
|
<if test="queryDTO.partId != null">
|
AND qap.part_id = ${queryDTO.partId}
|
</if>
|
<if test="queryDTO.partBatchNo != null and queryDTO.partBatchNo != ''">
|
AND qap.lot_batch_no LIKE ''' ||#{queryDTO.partBatchNo}||'''
|
</if>
|
' ) AS ( ${itemName} )
|
</select>
|
</mapper>
|