-- SELECT zsd.SFC,min(zsd.STEP_ID) STEP_ID,SITE FROM Z_SFC_DISPATCH zsd GROUP BY zsd.sfc,SITE
-- ) zsd2 ON zsd2.SFC = zsd.sfc AND zsd2.STEP_ID = zsd.STEP_ID AND zsd2.SITE = zsd.SITE /*因为不根据stepID选,所以选最小的一个stepID*/
INNER JOIN SHOP_ORDER so ON so.SHOP_ORDER = zsd.SHOP_ORDER AND so.SITE = zsd.SITE
INNER JOIN ITEM i ON i.HANDLE = so.ITEM_BO
LEFT JOIN ITEM_T it ON it.ITEM_BO = i.HANDLE AND it.LOCALE = 'zh'
INNER JOIN OPERATION o ON o.OPERATION = zsd.OPERATION AND o.SITE = zsd.SITE AND o.CURRENT_REVISION = 'true' AND o.OPERATION IN ('HJ_6106HJH1','HJ_6106HJH2','HJ_6106HJH3')
LEFT JOIN OPERATION_T ot ON ot.OPERATION_BO = o.HANDLE
LEFT JOIN CUSTOM_FIELDS cf ON cf.HANDLE = so.HANDLE AND cf."ATTRIBUTE" = 'WORK_ORDER'
/*从上面往下边开始查找子件*/
LEFT JOIN Z_SFC_DISPATCH zsd3 ON zsd3.HANDLE IN (
SELECT zsd2.HANDLE FROM
BOM_COMPONENT bc
INNER JOIN ITEM i ON i.HANDLE = bc.COMPONENT_GBO
INNER JOIN SHOP_ORDER so2 ON so2.ITEM_BO = i.HANDLE
INNER JOIN CUSTOM_FIELDS cf2 ON cf2.HANDLE = so2.HANDLE AND cf2."ATTRIBUTE" = 'WORK_ORDER' AND cf2.VALUE = cf.VALUE
INNER JOIN Z_SFC_DISPATCH zsd2 ON zsd2.SHOP_ORDER = so2.SHOP_ORDER AND zsd2.SITE = zsd.SITE
WHERE cf2.VALUE IS NOT NULL AND bc.BOM_BO = so.BOM_BO
)
LEFT JOIN CUSTOM_FIELDS CF ON CF.HANDLE = S.SHOP_ORDER_BO AND CF."ATTRIBUTE" = 'ITEM_NUMBER'
LEFT JOIN CUSTOM_FIELDS CF2 ON CF2.HANDLE = S.SHOP_ORDER_BO AND CF2."ATTRIBUTE" = 'WORK_ORDER'
INNER JOIN STATUS S2 ON S2.HANDLE = S.STATUS_BO
INNER JOIN SHOP_ORDER so2 ON so2.SHOP_ORDER = zsd3.SHOP_ORDER AND so2.SITE = zsd.SITE
INNER JOIN ITEM i2 ON i2.HANDLE = so2.ITEM_BO
LEFT JOIN ITEM_T it2 ON it2.ITEM_BO = i2.HANDLE AND it2.LOCALE = 'zh'
INNER JOIN SFC s2 ON s2.SFC = zsd3.SFC AND s2.SITE = zsd.SITE
LEFT JOIN SFC_ROUTING sr ON sr.SFC_BO = s2.HANDLE
LEFT JOIN SFC_ROUTER st ON st.SFC_ROUTING_BO = sr.HANDLE AND st.IN_USE = 'true'
LEFT JOIN SFC_STEP ss ON ss.SFC_ROUTER_BO = st.HANDLE AND (ss.QTY_IN_QUEUE > 0 OR ss.QTY_IN_WORK > 0)
INNER JOIN OPERATION o2 ON o2.OPERATION = zsd3.OPERATION AND o2.SITE = zsd.SITE AND o2.CURRENT_REVISION = 'true'
LEFT JOIN OPERATION_T ot2 ON ot2.OPERATION_BO = o2.HANDLE AND ot2.LOCALE = 'zh'
LEFT JOIN OPERATION o3 ON o3.OPERATION = SUBSTR(SS.OPERATION_BO,INSTR(SS.OPERATION_BO,',',1,1)+1,INSTR(SS.OPERATION_BO,',',1,2) - INSTR(SS.OPERATION_BO,',') -1) AND o3.SITE = zsd.SITE AND o3.CURRENT_REVISION = 'true'
LEFT JOIN OPERATION_T ot3 ON ot3.OPERATION_BO = o3.HANDLE AND ot3.LOCALE = 'zh'
LEFT JOIN Z_NWA_USER znu2 ON znu2.USER_NAME = zsd3.EMPLOYEE AND zsd3.DISPATCH_SEQ = (
SELECT MAX(zsd4.DISPATCH_SEQ)
FROM Z_SFC_DISPATCH zsd4
WHERE zsd4.SFC = zsd3.SFC AND zsd.SITE = zsd4.SITE )
LEFT JOIN CUSTOM_FIELDS cf3
ON so2.HANDLE = cf3.HANDLE AND cf3."ATTRIBUTE" = 'ITEM_NUMBER'
LEFT JOIN CUSTOM_FIELDS cf4
ON so2.HANDLE = cf4.HANDLE AND cf4."ATTRIBUTE" = 'WORK_ORDER'
INNER JOIN STATUS st2
ON st2.HANDLE = s2.STATUS_BO
LEFT JOIN Z_SFC_DISPATCH zsd4 ON zsd4.HANDLE = zsd3.HANDLE AND zsd4.DISPATCH_STATUS != 'COMPLETE' AND zsd4.DISPATCH_STATUS != 'CANCEL'
<!-- LEFT JOIN Z_SFC_DISPATCH zsd4 ON zsd4.HANDLE-->
<!-- = (-->
<!-- SELECT zsd2.HANDLE FROM Z_SFC_DISPATCH zsd2-->
<!-- WHERE zsd2.DISPATCH_STATUS != 'COMPLETE' AND zsd4.DISPATCH_STATUS != 'CANCEL' AND zsd2.HANDLE = zsd3.HANDLE AND ROWNUM < 2-->
<!-- )-->
<where>
S.SITE = #{site}
<iftest="param != null">
<iftest="param.itemNumber != null and param.itemNumber != ''">
AND CF.VALUE LIKE '%${param.itemNumber}%'
</if>
<iftest="param.shopOrder != null and param.shopOrder != ''">