SELECT pod.id,
pod.code,
pod.produce_order_id,
pod.contract_id,
pod.contract_detail_id,
pod.product_id,
pod.quantity,
pod.finish_quantity,
pod.produce_status,
pod.finish_time,
pod.tenant_id,
pod.create_user,
pod.create_time,
pod.update_user,
pod.update_time,
pod.del_flag,
pod.report_lock,
pod.other_prod_remark,
po.code AS orderCode,
po.create_time AS orderCreateTime,
po.produce_time,
po.delivery_period,
po.company_id,
po.begin_work_status,
pbc.`status` AS prod_confirm_status,
(if(IFNULL(po.finish_time, NOW()) > po.delivery_period, 1, 0)) AS isOverdue,
pod.remark,
c.prod_tag,
c.prod_remark,
c.create_user as saleUserId,
c.contract_type,
c.of_company_id as contractCompanyId,
c.dept_id as contractDeptId,
c.buy_corporation_id as customerId,
c.belong_type as contract_belong_type,
IFNULL(t2.lackStatus, 0) as lackStatus
FROM production_order_detail pod
LEFT JOIN production_order po ON pod.produce_order_id = po.id
LEFT JOIN contract c ON pod.contract_id = c.id
LEFT JOIN (SELECT sd.contract_id,
CASE
WHEN SUM(CASE WHEN sd.`status` IN (15, 30) OR ep.arrival_status != 20 OR sw.`status` != 2 THEN 1 ELSE 0 END) >
0 THEN 1
ELSE 0 END AS lackStatus
FROM subscribe_detail sd
LEFT JOIN ehsd_purchase_product epp ON epp.subscribe_detail_id = sd.id
LEFT JOIN ehsd_purchase ep ON epp.purchase_id = ep.id
AND ep.`status` IN (10, 30, 60)
LEFT JOIN stock_wait sw ON sw.purchase_id = ep.id
GROUP BY sd.contract_id) t2 ON t2.contract_id = pod.contract_id
LEFT JOIN production_begin_confirm pbc ON pbc.id = po.prod_begin_confirm_id