CASE WHEN ST.STATUS = '502' OR ST.STATUS = '503' OR ST.STATUS = '504' THEN ST.STATUS
WHEN ST.STATUS = '501' AND SO.QTY_RELEASED <= 0 THEN N'501'
WHEN MAX(SS.SHOP_ORDER_BO) IS NULL THEN N'505' ELSE N'506' END STATUS,
CASE WHEN IM.LOT_SIZE = 1 THEN N'是' ELSE N'否' END IS_MAJOR
FROM SHOP_ORDER SO
INNER JOIN ITEM IM ON SO.PLANNED_ITEM_BO = IM.HANDLE
INNER JOIN STATUS ST ON SO.STATUS_BO = ST.HANDLE AND ST.STATUS_GROUP = 'ORDERS'
INNER JOIN ROUTER RT ON SO.PLANNED_ROUTER_BO = RT.HANDLE OR (SO.PLANNED_ROUTER_BO = 'RouterBO:'||RT.SITE||','||RT.ROUTER||','||RT.ROUTER_TYPE||',#' AND RT.CURRENT_REVISION = 'true')
INNER JOIN BOM BOM ON SO.PLANNED_BOM_BO= BOM.HANDLE OR (SO.PLANNED_BOM_BO = 'BOMBO:'||BOM.SITE||','||BOM.BOM||','||BOM.BOM_TYPE||',#' AND BOM.CURRENT_REVISION = 'true')
INNER JOIN ROUTER_OPERATION RO ON RT.ENTRY_ROUTER_STEP_BO = RO.ROUTER_STEP_BO
INNER JOIN OPERATION OP ON RO.OPERATION_BO = 'OperationBO:'||OP.SITE||','||OP.OPERATION||',#' AND OP.CURRENT_REVISION = 'true'
LEFT JOIN (
SELECT SHOP_ORDER_BO
FROM SFC SC
INNER JOIN STATUS ST ON SC.STATUS_BO = ST.HANDLE AND ST.STATUS_GROUP = 'SFC'
WHERE ST.STATUS != '401'
GROUP BY SHOP_ORDER_BO
) SS ON SS.SHOP_ORDER_BO = SO.HANDLE
LEFT JOIN ITEM_T IMT ON IM.HANDLE = IMT.ITEM_BO AND IMT.LOCALE = 'zh'
LEFT JOIN CUSTOM_FIELDS CF1 ON CF1.HANDLE = SO.HANDLE AND CF1.ATTRIBUTE = 'WORK_ORDER'
LEFT JOIN CUSTOM_FIELDS CF2 ON CF2.HANDLE = SO.HANDLE AND CF2.ATTRIBUTE = 'SHOP_ORDER_TYPE'
LEFT JOIN CUSTOM_FIELDS CF3 ON CF3.HANDLE = SO.HANDLE AND CF3.ATTRIBUTE = 'COMMENTS'
LEFT JOIN CUSTOM_FIELDS CF4 ON CF4.HANDLE = SO.HANDLE AND CF4.ATTRIBUTE = 'ITEM_NUMBER'
LEFT JOIN Z_SFC_DISPATCH ZSD ON SO.SITE = ZSD.SITE AND SO.SHOP_ORDER = ZSD.SHOP_ORDER
WHERE SO.SITE = #{site}
<iftest="shopOrder != null and shopOrder != ''">
AND SO.SHOP_ORDER = #{shopOrder}
</if>
<iftest="workOrder != null and workOrder != ''">
AND CF1.VALUE LIKE '%'|| #{workOrder} || '%'
</if>
<iftest="shopOrderType != null and shopOrderType != ''">
AND CF2.VALUE LIKE '%'|| #{shopOrderType} || '%'
</if>
<iftest="item != null and item != ''">
AND IM.ITEM = #{item}
</if>
<iftest="startFromDate != null">
AND SO.PLANNED_START_DATE >= #{startFromDate}
</if>
<iftest="startToDate != null">
AND SO.PLANNED_START_DATE <= #{startToDate}
</if>
<iftest="completeFromDate != null">
AND SO.PLANNED_COMP_DATE >= #{completeFromDate}
</if>
<iftest="completeToDate != null">
AND SO.PLANNED_COMP_DATE <= #{completeToDate}
</if>
GROUP BY SO.HANDLE, SO.SITE, SO.SHOP_ORDER,SO.PLANNED_ROUTER_BO, SO.QTY_RELEASED, ST.STATUS, CF1.VALUE, CF2.VALUE, CF3.VALUE,CF4.VALUE,