select po.*,
sl.sales_contract_no,
sl.customer_name,
p.product_name as product_category,
pm.model as specification_model,
pm.unit,
ppr.process_route_code,
pb.bom_no,
ROUND(po.complete_quantity / po.quantity * 100, 2) AS completionStatus,
DATEDIFF(sl.delivery_date, CURDATE()) AS delivery_days_diff,
sl.delivery_date,
CASE
WHEN shipping_status_counts.total_count = 0 THEN false
WHEN shipping_status_counts.unshipped_count = 0 THEN true
ELSE false
END AS is_fh
from product_order po
left join sales_ledger sl on po.sales_ledger_id = sl.id
LEFT JOIN (
SELECT sales_ledger_id,
COUNT(*) as total_count,
SUM(CASE WHEN status != '已发货' THEN 1 ELSE 0 END) as unshipped_count
FROM shipping_info
GROUP BY sales_ledger_id
) shipping_status_counts ON sl.id = shipping_status_counts.sales_ledger_id
left join product_model pm on po.product_model_id = pm.id
left join product p on pm.product_id = p.id
left join sales_ledger_product slp on po.sale_ledger_product_id = slp.id and slp.type = 1
left join product_process_route ppr on po.id = ppr.product_order_id
left join product_bom pb on pb.id = ppr.bom_id
and po.nps_no like concat('%',#{c.npsNo},'%')
and sl.sales_contract_no like concat('%',#{c.salesContractNo},'%')
and sl.customer_name like concat('%',#{c.customerName},'%')
and slp.product_category like concat('%',#{c.productCategory},'%')
and slp.specification_model like concat('%',#{c.specificationModel},'%')
and po.create_time between #{c.startTime} and #{c.endTime}
select pr.*
from process_route pr
left join product_model pm on pr.product_model_id = pm.id
where pm.id = #{productModelId}
select ps.id,
ps.product_model_id,
ps.process_id,
ps.unit_quantity,
ps.unit_quantity * po.quantity as demandedQuantity,
ps.unit,
p.product_name,
pp.name as process_name,
pm.product_id,
pm.model
from
product_structure ps
left join product_model pm on ps.product_model_id = pm.id
left join product p on pm.product_id = p.id
left join product_process pp on ps.process_id = pp.id
left join product_process_route ppr on ps.bom_id = ppr.bom_id
left join product_order po on po.id = ppr.product_order_id
where ppr.product_order_id = #{orderId}
order by ps.id
SELECT count(1) FROM product_order
WHERE create_time >= #{startDate} AND create_time <= #{endDate}
SELECT count(1) FROM product_order
WHERE end_time >= #{startDate} AND end_time <= #{endDate}
AND complete_quantity >= quantity
SELECT count(1) FROM product_order
WHERE create_time >= #{startDate} AND create_time <= #{endDate}
AND complete_quantity < quantity
update product_order
set
complete_quantity = complete_quantity + #{delta},
start_time = ifnull(start_time, now()),
end_time = case when (complete_quantity + #{delta}) = quantity then now() else end_time end
where id = #{id}
and (complete_quantity + #{delta}) quantity