i.id,
isa.sample_code,
isa.sample,
isa.model,
isa.ins_state,
ip.id insProductId,
ip.state,
ip.unit,
ip.inspection_item_class,
ip.inspection_item_class_en,
ip.inspection_item,
ip.inspection_item_en,
ip.inspection_item_subclass,
ip.inspection_item_subclass_en,
ip.son_laboratory,
ip.inspection_item_type,
ip.inspection_value_type,
ip.ask,
ip.tell,
ip.`last_value`,
ip.ins_result,
ip.radius,
isa.quantity,
ip.sort,
ip.cable_tag
SELECT
io.*,
isau.user_id assign,
ir.id report_id,
ir.url,
ir.url_s,
sample_counts.sample_num,
CONCAT(ROUND(approved_product_counts.approved_count / total_product_counts.total_count * 100, 2), '%') AS insProgress,
io.sample_view AS sample_name,
GROUP_CONCAT(DISTINCT isa.model SEPARATOR ' ') AS sample_model,
u.name,
testing_name,
case when io.type = 0 then '普通'
when io.type = 1 then '优先'
when io.type = 2 then '紧急'
end typeString,
case when io.ins_result = 1 then '合格'
when io.ins_result = 0 then '不合格'
else '待检验' end insResultString
FROM
ins_order io
LEFT JOIN
ins_sample isa ON io.id = isa.ins_order_id
LEFT JOIN
ins_sample_user isau ON isau.ins_sample_id = io.id
LEFT JOIN
(SELECT id, ins_order_id, is_ratify, url, url_s FROM ins_report WHERE is_ratify = 1) ir ON io.id = ir.ins_order_id
LEFT JOIN
user u ON io.create_user = u.id
LEFT JOIN
(SELECT ins_order_id, COUNT(*) AS sample_num
FROM ins_sample
WHERE id in(select id1 from (select is2.id id1 ,ip.id from ins_sample is2 left join ins_product ip on is2.id = ip.ins_sample_id where ip.id is not null)s )
GROUP BY ins_order_id) sample_counts ON io.id = sample_counts.ins_order_id
LEFT JOIN
(SELECT ins_sample.ins_order_id, COUNT(*) AS total_count
FROM ins_product
JOIN ins_sample ON ins_product.ins_sample_id = ins_sample.id
WHERE ins_product.state = 1
GROUP BY ins_sample.ins_order_id) total_product_counts ON io.id = total_product_counts.ins_order_id
LEFT JOIN
(SELECT ins_sample.ins_order_id, COUNT(*) AS approved_count
FROM ins_product
JOIN ins_sample ON ins_product.ins_sample_id = ins_sample.id
WHERE ins_product.state = 1 AND ins_product.ins_result IS NOT NULL
GROUP BY ins_sample.ins_order_id) approved_product_counts ON io.id = approved_product_counts.ins_order_id
LEFT JOIN (SELECT ins_sample_id, GROUP_CONCAT(DISTINCT uu.name SEPARATOR ',') AS testing_name
FROM ins_sample_user u
LEFT JOIN user uu ON u.user_id = uu.id
WHERE u.state = 0
GROUP BY ins_sample_id
ORDER BY ins_sample_id) isu ON isu.ins_sample_id = io.id
update ins_order
set state=3
where id = #{id}