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