package com.sunda.spmswms.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Component;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sunda.spmswms.dto.WhsSearchDTO;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 南沙仓报表 Mapper 接口
 * </p>
 */
@Mapper
@Component
public interface WhsReportMapper {

    @Select("<script> \n" +
            "SELECT DISTINCT \n" +
            "    SBN.PACKAGE_NOTE AS \"packageNote\",\n" +
            "    SBN.BOX_NOTE AS \"boxNote\",\n" +
            "    SBN.BOX_MATERIAL_NAME AS \"boxMaterialName\",\n" +
            "    SBN.TOTAL_QTY AS \"totalQty\",\n" +
            "    SBN.BOX_GROSS_WEIGHT AS \"boxGrossWeight\",\n" +
            "    SBN.BOX_VOLUME AS \"boxVolume\",\n" +
            "    SBN.BOX_LENGTH AS \"boxLength\",\n" +
            "    SBN.BOX_WIDTH AS \"boxWidth\",\n" +
            "    SBN.BOX_HEIGHT AS \"boxHeight\",\n" +
            "    SBN.BOX_COLOR AS \"boxColor\",\n" +
            "    SBN.BOX_QTY_RECEIVED AS \"boxQtyReceived\",\n" +
            "    SBN.ITEM_STATUS AS \"itemStatus\",\n" +
            "    SBN.REMARKS AS \"remarks\",\n" +
            "    SDND.WERKS AS \"werks\",\n" +
            "    SDND.WHS_LOCATION_CODE AS \"whsLocationCode\",\n" +
            "    SDN.DELIVERY_NOTE_SAP AS \"deliveryNoteSap\",\n" +
            "    SDN.PLANNED_ARRIVAL_DATE AS \"plannedArrivalDate\",\n" +
            "    SDN.DELIVERY_NOTE_SRM AS \"deliveryNoteSrm\",\n" +
            "    SDN.CREATE_DATE_SAP AS \"createDateSap\",\n" +
            "    SDN.SPMS_MARK AS \"spmsMark\",\n" +
            "    SDN.SUPPLIER_CODE AS \"supplierCode\",\n" +
            "    SDN.SUPPLIER_DESC AS \"supplierDesc\",\n" +
            "    SDN.SPMS_STATUS AS \"spmsStatus\",\n" +
            "    SDN.DOCUMENT_DATE AS \"documentDate\",\n" +
            "    SDN.POSTING_DATE AS \"postingDate\",\n" +
            "    SDN.MOBILE_TYPE AS \"mobileType\",\n" +
            "    SDN.USER_ID AS \"userId\",\n" +
            "    SDN.PDA_SN AS \"pdaSN\",\n" +
            "    SDN.REMARKS AS \"headerRemarks\",\n" +
            "    SDN.SAP_VOUCHER_NUMBER AS \"sapVoucherNumber\",\n" +
            "    SDN.SAP_VOUCHER_YEAR AS \"sapVoucherYear\" \n" +
            "FROM\n" +
            "    SAP_BOX_NOTE SBN\n" +
            "    LEFT JOIN SAP_DELIVERY_NOTE SDN ON SBN.PACKAGE_NOTE = SDN.PACKAGE_NOTE\n" +
            "    LEFT JOIN SAP_DELIVERY_NOTE_DTL SDND ON SDN.DELIVERY_NOTE_SAP = SDND.DELIVERY_NOTE_SAP \n" +
            "WHERE\n" +
            "    SBN.BOX_QTY_RECEIVED > 0 AND SDN.SPMS_STATUS IN ('6','7','8') \n" +
            "    <when test='startDate!=null'> AND TO_DATE( SDN.DOCUMENT_DATE, 'yyyy-mm-dd' ) BETWEEN TO_DATE( #{startDate}, 'yyyy-mm-dd' ) AND TO_DATE( #{endDate}, 'yyyy-mm-dd' ) </when>\n" +
            "    <when test='werks!=null'> AND SDND.WERKS= #{werks}</when>\n" +
            "    <when test='whsLocationCode!=null'> AND SDND.WHS_LOCATION_CODE = #{whsLocationCode}</when>\n" +
            "    <when test='deliveryNoteSap!=null'> AND SDN.DELIVERY_NOTE_SAP = #{deliveryNoteSap}</when>\n" +
            "</script>")
    List<Map<String, Object>> inHouseDtlExportX(@Param("werks") String werks,
                                                @Param("whsLocationCode") String whsLocationCode,
                                                @Param("startDate") String startDate,
                                                @Param("endDate") String endDate,
                                                @Param("deliveryNoteSap") String deliveryNoteSap
    );

    @Select("<script> \n" +
            "SELECT\n" +
            "    SDND.DELIVERY_NOTE_SAP AS \"deliveryNoteSap\",\n" +
            "    SDND.DELIVERY_NOTE_SAP_ITEM AS \"deliveryNoteSapItem\",\n" +
            "    SDND.PURCHASE_GROUP AS \"purchaseGroup\",\n" +
            "    SDND.PURCHASE_GROUP_NAME AS \"purchaseGroupName\",\n" +
            "    SDND.MATERIAL_NO AS \"materialNo\",\n" +
            "    SDND.DELIVERY_QTY AS \"deliveryQty\",\n" +
            "    SDND.DELIVERY_UNIT AS \"deliveryUnit\",\n" +
            "    SDND.WERKS AS \"werks\",\n" +
            "    SDND.WHS_LOCATION_CODE AS \"whsLocationCode\",\n" +
            "    SDND.RECEIVED_QTY AS \"receivedQty\",\n" +
            "    SDND.ITEM_STATUS AS \"itemStatus\",\n" +
            "    SDND.REMARKS AS \"remarks\",\n" +
            "    SDND.TEMP_STORAGE AS \"tempStorage\",\n" +
            "    SDND.WERKS_XQ AS \"werksXq\",\n" +
            "    SDND.QTY_SALES AS \"qtySales\",\n" +
            "    SDND.ACTUAL_QTY_SALES AS \"actualQtySales\",\n" +
            "    SDN.PLANNED_ARRIVAL_DATE AS \"plannedArrivalDate\",\n" +
            "    SDN.DELIVERY_TYPE AS \"deliveryType\",\n" +
            "    SDN.DELIVERY_NOTE_SRM AS \"deliveryNoteSrm\",\n" +
            "    SDN.CREATE_DATE_SAP AS \"createDateSap\",\n" +
            "    SDN.SPMS_MARK AS \"spmsMark\",\n" +
            "    SDN.SUPPLIER_CODE AS \"supplierCode\",\n" +
            "    SDN.SUPPLIER_DESC AS \"supplierDesc\",\n" +
            "    SDN.SPMS_STATUS AS \"spmsStatus\",\n" +
            "    SDN.PACKAGE_NOTE AS \"packageNote\",\n" +
            "    SDN.REMARKS AS \"headerRemarks\",\n" +
            "    SDN.DOCUMENT_DATE AS \"documentDate\",\n" +
            "    SDN.POSTING_DATE AS \"postingDate\",\n" +
            "    SDN.MOBILE_TYPE AS \"mobileType\",\n" +
            "    SDN.USER_ID AS \"userId\",\n" +
            "    SDN.PDA_SN AS \"pdaSN\",\n" +
            "    SDN.SAP_VOUCHER_NUMBER AS \"sapVoucherNumber\",\n" +
            "    SDN.SAP_VOUCHER_YEAR AS \"sapVoucherYear\",\n" +
            "    MA.MATERIAL_ZH_DESC AS \"materialZhDesc\",\n" +
            "    MA.MATERIAL_EN_DESC AS \"materialEnDesc\",\n" +
            "    MA.BASIC_UNIT AS \"basicUnit\",\n" +
            "    MA.UNIT_SALES AS \"unitSales\",\n" +
            "    MA.NET_WEIGHT AS \"netWeight\",\n" +
            "    MA.GROSS_WEIGHT AS \"grossWeight\",\n" +
            "    MA.WEIGHT_UNIT AS \"weightUnit\",\n" +
            "    MA.VOLUME_QTY AS \"volumeQty\",\n" +
            "    MA.VOLUME_UNIT AS \"volumeUnit\",\n" +
            "    MA.LIGHT_HEAVY_MARK AS \"lightHeavyMark\",\n" +
            "    (CASE WHEN MA.NUMERATOR IS NULL THEN 1 ELSE MA.NUMERATOR END ) AS \"numerator\",\n" +
            "    (CASE WHEN MA.DENOMINATOR IS NULL THEN 1 ELSE MA.DENOMINATOR END ) AS \"denominator\" \n" +
            "    FROM\n" +
            "        SAP_DELIVERY_NOTE_DTL SDND\n" +
            "        LEFT JOIN SAP_DELIVERY_NOTE SDN ON SDND.DELIVERY_NOTE_SAP = SDN.DELIVERY_NOTE_SAP \n" +
            "        LEFT JOIN MATERIAL_SAP MA ON SDND.MATERIAL_NO = MA.MATERIAL_NO\n" +
            "    WHERE\n" +
            "        SDND.RECEIVED_QTY > 0 AND SDN.SPMS_STATUS IN ('6','7','8') \n" +
            "    <when test='startDate!=null'> AND TO_DATE( SDN.DOCUMENT_DATE, 'yyyy-mm-dd' ) BETWEEN TO_DATE( #{startDate}, 'yyyy-mm-dd' ) AND TO_DATE( #{endDate}, 'yyyy-mm-dd' ) </when>\n" +
            "    <when test='werks!=null'> AND SDND.WERKS= #{werks}</when>\n" +
            "    <when test='whsLocationCode!=null'> AND SDND.WHS_LOCATION_CODE = #{whsLocationCode}</when>\n" +
            "    <when test='deliveryNoteSap!=null'> AND SDN.DELIVERY_NOTE_SAP = #{deliveryNoteSap}</when>\n" +
            "</script>")
    List<Map<String, Object>> inHouseDtlExportM(@Param("werks") String werks,
                                                @Param("whsLocationCode") String whsLocationCode,
                                                @Param("startDate") String startDate,
                                                @Param("endDate") String endDate,
                                                @Param("deliveryNoteSap") String deliveryNoteSap
    );

    @Select("<script> \n" +
            "SELECT\n" +
            "    '海运出库' AS \"Source\",\n" +
            "    SPLD.PACKAGE_LIST AS \"packageList\",\n" +
            "    SPLD.DATE_OF_LOADING AS \"dateOfLoading\",\n" +
            "    SPLD.LOADING_WERKS AS \"loadingWerks\",\n" +
            "    SPLD.LOADING_WHS_LOCATION_CODE AS \"loadingWhsLocationCode\",\n" +
            "    SPLD.CABINET_SERIAL_NUMBER AS \"cabinetSerialNumber\",\n" +
            "    SPLD.GOODS_TYPE AS \"goodsType\",\n" +
            "    SPLD.RECEIVING_WERKS AS \"receivingWerks\",\n" +
            "    SPLD.ACTUAL_RECEIVING_WERKS AS \"actualReceivingWerks\",\n" +
            "    SPLD.MATERIAL_NO AS \"materialNo\",\n" +
            "    SPLD.SHIPMENT_CATEGORY AS \"shipmentCategory\",\n" +
            "    SPLD.PLANNED_PACKING_QTY AS \"plannedPackingQty\",\n" +
            "    SPLD.BASIC_UNIT AS \"basicUnit\",\n" +
            "    SPLD.PLANNED_PACKING_NUMBER AS \"plannedPackingNumber\",\n" +
            "    SPLD.PACKING_UNIT AS \"packingUnit\",\n" +
            "    SPLD.CABINET_WEIGHT AS \"cabinetWeight\",\n" +
            "    SPLD.WEIGHT_UNIT AS \"weightUnit\",\n" +
            "    SPLD.CABINET_VOLUME AS \"cabinetVolume\",\n" +
            "    SPLD.VOLUME_UNIT AS \"volumeUnit\",\n" +
            "    SPLD.TRAILER_LINE AS \"trailerLine\",\n" +
            "    SPLD.TRAILER_LINE_DESC AS \"trailerLineDesc\",\n" +
            "    SPLD.SPMS_STATUS AS \"spmsStatus\",\n" +
            "    SPLD.WHS_OUT_UUID AS \"outUuid\",\n" +
            "    SPLD.TEMP_STORAGE AS \"tempStorage\",\n" +
            "    SPLD.UNPLANNED AS \"unplanned\",\n" +
            "    SPLD.ACTUAL_OPERATE_QTY AS \"actualOperateQty\",\n" +
            "    SPLD.CONTAINER_BRAND AS \"containerBrand\",\n" +
            "    SPLD.COLOR_NUMBER AS \"colorNumber\",\n" +
            "    SPLD.THICKNESS AS \"thickness\",\n" +
            "    SPLD.ACTUAL_AVG_GROSS_WEIGHT AS \"actualAvgGrossWeight\",\n" +
            "    SPLD.ACTUAL_PACKING_NUMBER AS \"actualPackingNumber\",\n" +
            "    SPLD.CUSTOMS_DECLARATION_NUMBER AS \"customsDeclarationNumber\",\n" +
            "    SPLD.PACKING_SPEC AS \"packingSpec\",\n" +
            "    SPLD.LOADING_TYPE AS \"loadingType\",\n" +
            "    WHSOUT.CABINET_NUMBER AS \"cabinetNumber\",\n" +
            "    WHSOUT.WHS_OUT_NO AS \"spmsId\",\n" +
            "    WHSOUT.LEAD_SEAL AS \"leadSeal\",\n" +
            "    WHSOUT.SAP_VOUCHER_NUMBER AS \"sapVoucherNumber\",\n" +
            "    WHSOUT.SAP_VOUCHER_YEAR AS \"sapVoucherYear\",\n" +
            "    WHSOUT.ACTUAL_LOADING_DATE AS \"actualLoadingDate\",\n" +
            "    WHSOUT.MONITOR_LOADING AS \"monitorLoading\",\n" +
            "    WHSOUT.CABINET_CHECK_RESULT AS \"cabinetCheckResult\",\n" +
            "    WHSOUT.REMARKS AS \"remarks\",\n" +
            "    MA.MATERIAL_ZH_DESC AS \"materialZhDesc\",\n" +
            "    MA.MATERIAL_EN_DESC AS \"materialEnDesc\",\n" +
            "    MA.UNIT_SALES AS \"unitSales\",\n" +
            "    MA.NET_WEIGHT AS \"netWeight\",\n" +
            "    MA.GROSS_WEIGHT AS \"grossWeight\",\n" +
            "    MA.WEIGHT_UNIT AS \"weightUnit\",\n" +
            "    MA.VOLUME_QTY AS \"volumeQty\",\n" +
            "    MA.VOLUME_UNIT AS \"volumeUnit\",\n" +
            "    MA.LIGHT_HEAVY_MARK AS \"lightHeavyMark\" \n" +
            "FROM\n" +
            "    SAP_PACKAGE_LIST_DTL SPLD\n" +
            "    LEFT JOIN WHS_OUT WHSOUT ON SPLD.WHS_OUT_UUID = WHSOUT.UUID\n" +
            "    LEFT JOIN MATERIAL_SAP MA ON SPLD.MATERIAL_NO = MA.MATERIAL_NO \n" +
            "WHERE\n" +
            "    SPLD.ACTUAL_OPERATE_QTY > 0 \n" +
            "    AND WHSOUT.TASK_STATUS IN ( '2', '4', '5' )\n" +
            "    <when test='startDate!=null'> AND TO_DATE( WHSOUT.ACTUAL_LOADING_DATE, 'yyyy-mm-dd' ) BETWEEN TO_DATE( #{startDate}, 'yyyy-mm-dd' ) AND TO_DATE( #{endDate}, 'yyyy-mm-dd' ) </when>\n" +
            "    <when test='werks!=null'> AND SPLD.LOADING_WERKS= #{werks}</when>\n" +
            "    <when test='whsLocationCode!=null'> AND SPLD.LOADING_WHS_LOCATION_CODE = #{whsLocationCode}</when>\n" +
            "    <when test='packageList!=null'> AND SPLD.PACKAGE_LIST = #{packageList}</when>\n" +
            "UNION \n" +
            "SELECT\n" +
            "    '其它出入库' AS \"Source\",\n" +
            "    WHSO.PACKAGE_LIST AS \"packageList\",\n" +
            "    WHSODTL.DATE_OF_LOADING AS \"dateOfLoading\",\n" +
            "    WHSODTL.WERKS AS \"loadingWerks\",\n" +
            "    WHSODTL.WHS_LOCATION_CODE AS \"loadingWhsLocationCode\",\n" +
            "    WHSODTL.CABINET_SERIAL_NUMBER AS \"cabinetSerialNumber\",\n" +
            "    WHSO.GOODS_TYPE AS \"goodsType\",\n" +
            "    WHSODTL.RECEIVING_WERKS AS \"receivingWerks\",\n" +
            "    WHSODTL.ACTUAL_RECEIVING_WERKS AS \"actualReceivingWerks\",\n" +
            "    WHSODTL.MATERIAL_NO AS \"materialNo\",\n" +
            "    WHSODTL.SHIPMENT_CATEGORY AS \"shipmentCategory\",\n" +
            "    WHSODTL.PLANNED_PACKING_QTY AS \"plannedPackingQty\",\n" +
            "    MA.BASIC_UNIT AS \"basicUnit\",\n" +
            "    WHSODTL.PLANNED_PACKING_NUMBER AS \"plannedPackingNumber\",\n" +
            "    WHSODTL.PACKAGE_UNIT AS \"packingUnit\",\n" +
            "    WHSODTL.CABINET_WEIGHT AS \"cabinetWeight\",\n" +
            "    WHSODTL.WEIGHT_UNIT AS \"weightUnit\",\n" +
            "    WHSODTL.CABINET_VOLUME AS \"cabinetVolume\",\n" +
            "    WHSODTL.VOLUME_UNIT AS \"volumeUnit\",\n" +
            "    WHSODTL.TRAILER_LINE AS \"trailerLine\",\n" +
            "    WHSODTL.TRAILER_LINE_DESC AS \"trailerLineDesc\",\n" +
            "    WHSODTL.SPMS_STATUS AS \"spmsStatus\",\n" +
            "    WHSODTL.WHS_OTHER_UUID AS \"outUuid\",\n" +
            "    WHSODTL.TEMP_STORAGE AS \"tempStorage\",\n" +
            "    WHSODTL.UNPLANNED AS \"unplanned\",\n" +
            "    WHSODTL.OPERATE_QTY AS \"actualOperateQty\",\n" +
            "    WHSODTL.CONTAINER_BRAND AS \"containerBrand\",\n" +
            "    WHSODTL.COLOR_NUMBER AS \"colorNumber\",\n" +
            "    WHSODTL.THICKNESS AS \"thickness\",\n" +
            "    WHSODTL.ACTUAL_AVG_GROSS_WEIGHT AS \"actualAvgGrossWeight\",\n" +
            "    WHSODTL.PACKAGE_QTY AS \"actualPackingNumber\",\n" +
            "    WHSODTL.CUSTOMS_DECLARATION_NUMBER AS \"customsDeclarationNumber\",\n" +
            "    WHSODTL.PACKING_SPEC AS \"packingSpec\",\n" +
            "    WHSODTL.LOADING_TYPE AS \"loadingType\",\n" +
            "    WHSODTL.CABINET_NUMBER AS \"cabinetNumber\",\n" +
            "    WHSO.SPMS_ID AS \"spmsId\",\n" +
            "    WHSODTL.LEAD_SEAL AS \"leadSeal\",\n" +
            "    WHSO.SAP_VOUCHER_NUMBER AS \"sapVoucherNumber\",\n" +
            "    WHSO.SAP_VOUCHER_YEAR AS \"sapVoucherYear\",\n" +
            "    WHSO.ACTUAL_LOADING_DATE AS \"actualLoadingDate\",\n" +
            "    WHSO.MONITOR_LOADING AS \"monitorLoading\",\n" +
            "    WHSO.CABINET_CHECK_RESULT AS \"cabinetCheckResult\",\n" +
            "    WHSODTL.ROW_REMARKS AS \"remarks\",\n" +
            "    MA.MATERIAL_ZH_DESC AS \"materialZhDesc\",\n" +
            "    MA.MATERIAL_EN_DESC AS \"materialEnDesc\",\n" +
            "    MA.UNIT_SALES AS \"unitSales\",\n" +
            "    MA.NET_WEIGHT AS \"netWeight\",\n" +
            "    MA.GROSS_WEIGHT AS \"grossWeight\",\n" +
            "    MA.WEIGHT_UNIT AS \"weightUnit\",\n" +
            "    MA.VOLUME_QTY AS \"volumeQty\",\n" +
            "    MA.VOLUME_UNIT AS \"volumeUnit\",\n" +
            "    MA.LIGHT_HEAVY_MARK AS \"lightHeavyMark\" \n" +
            "FROM\n" +
            "    WHS_OTHER_DTL WHSODTL\n" +
            "    LEFT JOIN WHS_OTHER_TASK WHSO ON WHSODTL.WHS_OTHER_UUID = WHSO.UUID\n" +
            "    LEFT JOIN MATERIAL_SAP MA ON WHSODTL.MATERIAL_NO = MA.MATERIAL_NO \n" +
            "WHERE\n" +
            "    WHSO.MOVEMENT_TYPE = 'Z641' \n" +
            "    AND WHSO.TASK_STATUS IN ( '3', '4', '5', '6' ) \n" +
            "    AND WHSO.GOODS_TYPE = 'M' \n" +
            "    <when test='startDate!=null'> AND TO_DATE( WHSO.ACTUAL_LOADING_DATE, 'yyyy-mm-dd' ) BETWEEN TO_DATE( #{startDate}, 'yyyy-mm-dd' ) AND TO_DATE( #{endDate}, 'yyyy-mm-dd' ) </when>\n" +
            "    <when test='werks!=null'> AND WHSODTL.WERKS= #{werks}</when>\n" +
            "    <when test='whsLocationCode!=null'> AND WHSODTL.WHS_LOCATION_CODE = #{whsLocationCode}</when>\n" +
            "    <when test='packageList!=null'> AND WHSO.PACKAGE_LIST = #{packageList}</when>\n" +
            "</script>")
    List<Map<String, Object>> outHouseDtlExportM(@Param("werks") String werks,
                                                 @Param("whsLocationCode") String whsLocationCode,
                                                 @Param("startDate") String startDate,
                                                 @Param("endDate") String endDate,
                                                 @Param("packageList") String packageList
    );

    @Select("<script> \n" +
            "SELECT DISTINCT\n" +
            "    '海运出库' AS \"Source\",\n" +
            "    SPB.PACKAGE_LIST AS \"packageList\" ,\n" +
            "    SPB.PACKAGE_CODE AS \"boxNote\",\n" +
            "    SPB.ACTUAL_OPERATE_QTY AS \"actualOperateQty\",\n" +
            "    SPB.WHS_OUT_UUID AS \"outUuid\",\n" +
            "    SPB.CONTAINER_BRAND AS \"containerBrand\",\n" +
            "    SPB.PACKING_SPEC AS \"packingSpec\",\n" +
            "    SPB.LOADING_TYPE AS \"loadingType\",\n" +
            "    WHSOUT.WHS_OUT_NO AS \"spmsId\",\n" +
            "    WHSOUT.WERKS AS \"werks\",\n" +
            "    WHSOUT.WHS_LOCATION_CODE AS \"whsLocationCode\",\n" +
            "    WHSOUT.GOODS_TYPE AS \"goodsType\",\n" +
            "    WHSOUT.CABINET_NUMBER AS \"cabinetNumber\",\n" +
            "    WHSOUT.CABINET_SERIAL_NUMBER AS \"cabinetSerialNumber\",\n" +
            "    WHSOUT.SAP_VOUCHER_NUMBER AS \"sapVoucherNumber\",\n" +
            "    WHSOUT.SAP_VOUCHER_YEAR AS \"sapVoucherYear\",\n" +
            "    WHSOUT.ACTUAL_LOADING_DATE AS \"actualLoadingDate\",\n" +
            "    WHSOUT.MONITOR_LOADING AS \"monitorLoading\",\n" +
            "    WHSOUT.CABINET_CHECK_RESULT AS \"cabinetCheckResult\",\n" +
            "    WHSOUT.LEAD_SEAL AS \"leadSeal\"\n" +
            "FROM\n" +
            "    SAP_PACKAGE_LIST_DTL SPB\n" +
            "    LEFT JOIN WHS_OUT WHSOUT ON SPB.WHS_OUT_UUID = WHSOUT.UUID \n" +
            "WHERE\n" +
            "    SPB.ACTUAL_OPERATE_QTY > 0 AND WHSOUT.TASK_STATUS IN ('2','4','5') \n" +
            "    <when test='startDate!=null'> AND TO_DATE( WHSOUT.ACTUAL_LOADING_DATE, 'yyyy-mm-dd' ) BETWEEN TO_DATE( #{startDate}, 'yyyy-mm-dd' ) AND TO_DATE( #{endDate}, 'yyyy-mm-dd' ) </when>\n" +
            "    <when test='werks!=null'> AND WHSOUT.WERKS= #{werks}</when>\n" +
            "    <when test='whsLocationCode!=null'> AND WHSOUT.WHS_LOCATION_CODE = #{whsLocationCode}</when>\n" +
            "    <when test='packageList!=null'> AND SPB.PACKAGE_LIST = #{packageList}</when>\n" +
            "UNION \n" +
            "SELECT DISTINCT\n" +
            "    '其它出入库' AS \"Source\",\n" +
            "    WHSO.PACKAGE_LIST AS \"packageList\",\n" +
            "    WHSODTL.BOX_NOTE AS \"boxNote\",\n" +
            "    WHSODTL.OPERATE_QTY AS \"actualOperateQty\",\n" +
            "    WHSODTL.WHS_OTHER_UUID AS \"outUuid\",\n" +
            "    WHSODTL.CONTAINER_BRAND AS \"containerBrand\",\n" +
            "    WHSODTL.PACKING_SPEC AS \"packingSpec\",\n" +
            "    WHSODTL.LOADING_TYPE AS \"loadingType\",\n" +
            "    WHSO.SPMS_ID AS \"spmsId\",\n" +
            "    WHSODTL.WERKS AS \"werks\",\n" +
            "    WHSODTL.WHS_LOCATION_CODE AS \"whsLocationCode\",\n" +
            "    WHSO.GOODS_TYPE AS \"goodsType\",\n" +
            "    WHSODTL.CABINET_NUMBER AS \"cabinetNumber\",\n" +
            "    WHSODTL.CABINET_SERIAL_NUMBER AS \"cabinetSerialNumber\",\n" +
            "    WHSO.SAP_VOUCHER_NUMBER AS \"sapVoucherNumber\",\n" +
            "    WHSO.SAP_VOUCHER_YEAR AS \"sapVoucherYear\",\n" +
            "    WHSO.ACTUAL_LOADING_DATE AS \"actualLoadingDate\",\n" +
            "    WHSO.MONITOR_LOADING AS \"monitorLoading\",\n" +
            "    WHSO.CABINET_CHECK_RESULT AS \"cabinetCheckResult\",\n" +
            "    WHSO.LEAD_SEAL AS \"leadSeal\" \n" +
            "FROM\n" +
            "    WHS_OTHER_DTL WHSODTL\n" +
            "    LEFT JOIN WHS_OTHER_TASK WHSO ON WHSODTL.WHS_OTHER_UUID = WHSO.UUID\n" +
            "WHERE\n" +
            "    WHSO.MOVEMENT_TYPE = 'Z641' \n" +
            "    AND WHSO.TASK_STATUS IN ( '3', '4', '5', '6' ) \n" +
            "    AND WHSO.GOODS_TYPE = 'X' \n" +
            "    <when test='startDate!=null'> AND TO_DATE( WHSO.ACTUAL_LOADING_DATE, 'yyyy-mm-dd' ) BETWEEN TO_DATE( #{startDate}, 'yyyy-mm-dd' ) AND TO_DATE( #{endDate}, 'yyyy-mm-dd' ) </when>\n" +
            "    <when test='werks!=null'> AND WHSODTL.WERKS= #{werks}</when>\n" +
            "    <when test='whsLocationCode!=null'> AND WHSODTL.WHS_LOCATION_CODE = #{whsLocationCode}</when>\n" +
            "    <when test='packageList!=null'> AND WHSO.PACKAGE_LIST = #{packageList}</when>\n" +
            "</script>")
    List<Map<String, Object>> outHouseDtlExportX(@Param("werks") String werks,
                                                 @Param("whsLocationCode") String whsLocationCode,
                                                 @Param("startDate") String startDate,
                                                 @Param("endDate") String endDate,
                                                 @Param("packageList") String packageList
    );


    @Select("<script> \n" +
            "SELECT\n" +
            "    '海运出库' AS \"Source\",\n" +
            "    SPB.PACKAGE_LIST AS \"packageList\",\n" +
            "    SPB.PACKAGE_CODE AS \"boxNote\",\n" +
            "    SPB.ACTUAL_OPERATE_QTY AS \"actualOperateQty\",\n" +
            "    SPB.WHS_OUT_UUID AS \"outUuid\",\n" +
            "    SPB.CONTAINER_BRAND AS \"containerBrand\",\n" +
            "    SPB.PACKING_SPEC AS \"packingSpec\",\n" +
            "    SPB.LOADING_TYPE AS \"loadingType\",\n" +
            "    WHSOUT.WHS_OUT_NO AS \"spmsId\",\n" +
            "    WHSOUT.WERKS AS \"werks\",\n" +
            "    WHSOUT.WHS_LOCATION_CODE AS \"whsLocationCode\",\n" +
            "    WHSOUT.GOODS_TYPE AS \"goodsType\",\n" +
            "    WHSOUT.CABINET_NUMBER AS \"cabinetNumber\",\n" +
            "    WHSOUT.CABINET_SERIAL_NUMBER AS \"cabinetSerialNumber\",\n" +
            "    WHSOUT.SAP_VOUCHER_NUMBER AS \"sapVoucherNumber\",\n" +
            "    WHSOUT.SAP_VOUCHER_YEAR AS \"sapVoucherYear\",\n" +
            "    WHSOUT.ACTUAL_LOADING_DATE AS \"actualLoadingDate\",\n" +
            "    WHSOUT.MONITOR_LOADING AS \"monitorLoading\",\n" +
            "    WHSOUT.CABINET_CHECK_RESULT AS \"cabinetCheckResult\",\n" +
            "    WHSOUT.LEAD_SEAL AS \"leadSeal\",\n" +
            "    SBN.BOX_MATERIAL_NAME AS \"boxMaterialName\",\n" +
            "    SBN.BOX_GROSS_WEIGHT AS \"boxGrossWeight\",\n" +
            "    SBN.BOX_VOLUME AS \"boxVolume\",\n" +
            "    BND.DELIVERY_NOTE_SAP AS \"deliveryNoteSap\",\n" +
            "    BND.MATERIAL_NO AS \"materialNo\",\n" +
            "    BND.BASIC_UNIT AS \"basicUnit\",\n" +
            "    BND.SPECS AS \"specs\",\n" +
            "    BND.QUANTITY AS \"qty\",\n" +
            "    BND.SRM_CONTRACT_NO AS \"srmContractNo\",\n" +
            "    BND.PURCHASE_NO AS \"purchaseNo\",\n" +
            "    BND.DEMAND_NO AS \"demandNo\",\n" +
            "    BND.DEMAND_NO_ITEM AS \"demandNoItem\",\n" +
            "    BND.DEMANDER AS \"demander\",\n" +
            "    BND.DOMESTIC_QTY_RECEIVABLE AS \"domesticQtyReceivable\",\n" +
            "    BND.DOMESTIC_QTY_RECEIVED AS \"domesticQtyReceived\",\n" +
            "    BND.OVERSEA_QTY_RECEIVED AS \"overseaQtyReceived\",\n" +
            "    MA.MATERIAL_ZH_DESC AS \"materialZhDesc\",\n" +
            "    MA.MATERIAL_EN_DESC AS \"materialEnDesc\",\n" +
            "    MA.UNIT_SALES AS \"unitSales\",\n" +
            "    MA.NET_WEIGHT AS \"netWeight\",\n" +
            "    MA.GROSS_WEIGHT AS \"grossWeight\",\n" +
            "    MA.WEIGHT_UNIT AS \"weightUnit\",\n" +
            "    MA.VOLUME_QTY AS \"volumeQty\",\n" +
            "    MA.VOLUME_UNIT AS \"volumeUnit\",\n" +
            "    (CASE WHEN MA.NUMERATOR IS NULL THEN 1 ELSE MA.NUMERATOR END ) AS \"numerator\",\n" +
            "    (CASE WHEN MA.DENOMINATOR IS NULL THEN 1 ELSE MA.DENOMINATOR END ) AS \"denominator\" ,\n" +
            "    MA.LIGHT_HEAVY_MARK AS \"lightHeavyMark\" \n" +
            "FROM\n" +
            "    SAP_PACKAGE_LIST_DTL SPB\n" +
            "    LEFT JOIN WHS_OUT WHSOUT ON SPB.WHS_OUT_UUID = WHSOUT.UUID\n" +
            "    LEFT JOIN SAP_BOX_NOTE SBN ON SPB.PACKAGE_CODE = SBN.BOX_NOTE\n" +
            "    JOIN SAP_BOX_NOTE_DTL BND ON SPB.PACKAGE_CODE = BND.BOX_NOTE\n" +
            "    JOIN MATERIAL_SAP MA ON BND.MATERIAL_NO = MA.MATERIAL_NO \n" +
            "WHERE\n" +
            "    SPB.ACTUAL_OPERATE_QTY > 0 AND WHSOUT.TASK_STATUS IN ('2','4','5') \n" +
            "    <when test='cabinetNumber!=null'> AND WHSOUT.CABINET_NUMBER = #{cabinetNumber}</when>\n" +
            "    <when test='packageList!=null'> AND SPB.PACKAGE_LIST = #{packageList}</when>\n" +
            "UNION \n" +
            "SELECT\n" +
            "    '其它出入库' AS \"Source\",\n" +
            "    WHSO.PACKAGE_LIST AS \"packageList\",\n" +
            "    WHSODTL.BOX_NOTE AS \"boxNote\",\n" +
            "    WHSODTL.OPERATE_QTY AS \"actualOperateQty\",\n" +
            "    WHSODTL.WHS_OTHER_UUID AS \"outUuid\",\n" +
            "    WHSODTL.CONTAINER_BRAND AS \"containerBrand\",\n" +
            "    WHSODTL.PACKING_SPEC AS \"packingSpec\",\n" +
            "    WHSODTL.LOADING_TYPE AS \"loadingType\",\n" +
            "    WHSO.SPMS_ID AS \"spmsId\",\n" +
            "    WHSODTL.WERKS AS \"werks\",\n" +
            "    WHSODTL.WHS_LOCATION_CODE AS \"whsLocationCode\",\n" +
            "    WHSO.GOODS_TYPE AS \"goodsType\",\n" +
            "    WHSODTL.CABINET_NUMBER AS \"cabinetNumber\",\n" +
            "    WHSODTL.CABINET_SERIAL_NUMBER AS \"cabinetSerialNumber\",\n" +
            "    WHSO.SAP_VOUCHER_NUMBER AS \"sapVoucherNumber\",\n" +
            "    WHSO.SAP_VOUCHER_YEAR AS \"sapVoucherYear\",\n" +
            "    WHSO.ACTUAL_LOADING_DATE AS \"actualLoadingDate\",\n" +
            "    WHSO.MONITOR_LOADING AS \"monitorLoading\",\n" +
            "    WHSO.CABINET_CHECK_RESULT AS \"cabinetCheckResult\",\n" +
            "    WHSO.LEAD_SEAL AS \"leadSeal\",\n" +
            "    SBN.BOX_MATERIAL_NAME AS \"boxMaterialName\",\n" +
            "    SBN.BOX_GROSS_WEIGHT AS \"grossWeight\",\n" +
            "    SBN.BOX_VOLUME AS \"boxVolume\",\n" +
            "    BND.DELIVERY_NOTE_SAP AS \"deliveryNoteSap\",\n" +
            "    BND.MATERIAL_NO AS \"materialNo\",\n" +
            "    BND.BASIC_UNIT AS \"basicUnit\",\n" +
            "    BND.SPECS AS \"specs\",\n" +
            "    BND.QUANTITY AS \"qty\",\n" +
            "    BND.SRM_CONTRACT_NO AS \"srmContractNo\",\n" +
            "    BND.PURCHASE_NO AS \"purchaseNo\",\n" +
            "    BND.DEMAND_NO AS \"demandNo\",\n" +
            "    BND.DEMAND_NO_ITEM AS \"demandNoItem\",\n" +
            "    BND.DEMANDER AS \"demander\",\n" +
            "    BND.DOMESTIC_QTY_RECEIVABLE AS \"domesticQtyReceivable\",\n" +
            "    BND.DOMESTIC_QTY_RECEIVED AS \"domesticQtyReceived\",\n" +
            "    BND.OVERSEA_QTY_RECEIVED AS \"overseaQtyReceived\",\n" +
            "    MA.MATERIAL_ZH_DESC AS \"materialZhDesc\",\n" +
            "    MA.MATERIAL_EN_DESC AS \"materialEnDesc\",\n" +
            "    MA.UNIT_SALES AS \"unitSales\",\n" +
            "    MA.NET_WEIGHT AS \"netWeight\",\n" +
            "    MA.GROSS_WEIGHT AS \"grossWeight\",\n" +
            "    MA.WEIGHT_UNIT AS \"weightUnit\",\n" +
            "    MA.VOLUME_QTY AS \"volumeQty\",\n" +
            "    MA.VOLUME_UNIT AS \"volumeUnit\",\n" +
            "    (CASE WHEN MA.NUMERATOR IS NULL THEN 1 ELSE MA.NUMERATOR END ) AS \"numerator\",\n" +
            "    (CASE WHEN MA.DENOMINATOR IS NULL THEN 1 ELSE MA.DENOMINATOR END ) AS \"denominator\" ,\n" +
            "    MA.LIGHT_HEAVY_MARK AS \"lightHeavyMark\" \n" +
            "FROM\n" +
            "    WHS_OTHER_DTL WHSODTL\n" +
            "    LEFT JOIN WHS_OTHER_TASK WHSO ON WHSODTL.WHS_OTHER_UUID = WHSO.UUID\n" +
            "    LEFT JOIN SAP_BOX_NOTE SBN ON WHSODTL.BOX_NOTE = SBN.BOX_NOTE\n" +
            "    JOIN SAP_BOX_NOTE_DTL BND ON WHSODTL.BOX_NOTE = BND.BOX_NOTE\n" +
            "    JOIN MATERIAL_SAP MA ON BND.MATERIAL_NO = MA.MATERIAL_NO \n" +
            "WHERE\n" +
            "    WHSO.MOVEMENT_TYPE = 'Z641' \n" +
            "    AND WHSO.TASK_STATUS IN ( '3', '4', '5', '6' ) \n" +
            "    AND WHSO.GOODS_TYPE = 'X' \n" +
            "    <when test='cabinetNumber!=null'> AND WHSODTL.CABINET_NUMBER = #{cabinetNumber}</when>\n" +
            "    <when test='packageList!=null'> AND WHSO.PACKAGE_LIST = #{packageList}</when>\n" +
            "</script>")
    List<Map<String, Object>> outWHExportX(
            @Param("cabinetNumber") String cabinetNumber,
            @Param("packageList") String packageList
    );


    @Select("<script> \n" +
            "SELECT\n" +
            "    '海运出库' AS \"Source\",\n" +
            "    SPLD.PACKAGE_LIST AS \"packageList\",\n" +
            "    SPLD.DATE_OF_LOADING AS \"dateOfLoading\",\n" +
            "    SPLD.LOADING_WERKS AS \"loadingWerks\",\n" +
            "    SPLD.LOADING_WHS_LOCATION_CODE AS \"loadingWhsLocationCode\",\n" +
            "    SPLD.CABINET_SERIAL_NUMBER AS \"cabinetSerialNumber\",\n" +
            "    SPLD.GOODS_TYPE AS \"goodsType\",\n" +
            "    SPLD.RECEIVING_WERKS AS \"receivingWerks\",\n" +
            "    SPLD.ACTUAL_RECEIVING_WERKS AS \"actualReceivingWerks\",\n" +
            "    SPLD.MATERIAL_NO AS \"materialNo\",\n" +
            "    SPLD.SHIPMENT_CATEGORY AS \"shipmentCategory\",\n" +
            "    SPLD.PLANNED_PACKING_QTY AS \"plannedPackingQty\",\n" +
            "    SPLD.BASIC_UNIT AS \"basicUnit\",\n" +
            "    SPLD.PLANNED_PACKING_NUMBER AS \"plannedPackingNumber\",\n" +
            "    SPLD.PACKING_UNIT AS \"packingUnit\",\n" +
            "    SPLD.CABINET_WEIGHT AS \"cabinetWeight\",\n" +
            "    SPLD.WEIGHT_UNIT AS \"weightUnit\",\n" +
            "    SPLD.CABINET_VOLUME AS \"cabinetVolume\",\n" +
            "    SPLD.VOLUME_UNIT AS \"volumeUnit\",\n" +
            "    SPLD.TRAILER_LINE AS \"trailerLine\",\n" +
            "    SPLD.TRAILER_LINE_DESC AS \"trailerLineDesc\",\n" +
            "    SPLD.SPMS_STATUS AS \"spmsStatus\",\n" +
            "    SPLD.WHS_OUT_UUID AS \"outUuid\",\n" +
            "    SPLD.TEMP_STORAGE AS \"tempStorage\",\n" +
            "    SPLD.UNPLANNED AS \"unplanned\",\n" +
            "    SPLD.ACTUAL_OPERATE_QTY AS \"actualOperateQty\",\n" +
            "    SPLD.CONTAINER_BRAND AS \"containerBrand\",\n" +
            "    SPLD.COLOR_NUMBER AS \"colorNumber\",\n" +
            "    SPLD.THICKNESS AS \"thickness\",\n" +
            "    SPLD.ACTUAL_AVG_GROSS_WEIGHT AS \"actualAvgGrossWeight\",\n" +
            "    SPLD.ACTUAL_PACKING_NUMBER AS \"actualPackingNumber\",\n" +
            "    SPLD.CUSTOMS_DECLARATION_NUMBER AS \"customsDeclarationNumber\",\n" +
            "    SPLD.PACKING_SPEC AS \"packingSpec\",\n" +
            "    SPLD.LOADING_TYPE AS \"loadingType\",\n" +
            "    WHSOUT.CABINET_NUMBER AS \"cabinetNumber\",\n" +
            "    WHSOUT.WHS_OUT_NO AS \"spmsId\",\n" +
            "    WHSOUT.LEAD_SEAL AS \"leadSeal\",\n" +
            "    WHSOUT.SAP_VOUCHER_NUMBER AS \"sapVoucherNumber\",\n" +
            "    WHSOUT.SAP_VOUCHER_YEAR AS \"sapVoucherYear\",\n" +
            "    WHSOUT.ACTUAL_LOADING_DATE AS \"actualLoadingDate\",\n" +
            "    WHSOUT.MONITOR_LOADING AS \"monitorLoading\",\n" +
            "    WHSOUT.CABINET_CHECK_RESULT AS \"cabinetCheckResult\",\n" +
            "    WHSOUT.REMARKS AS \"remarks\",\n" +
            "    MA.MATERIAL_ZH_DESC AS \"materialZhDesc\",\n" +
            "    MA.MATERIAL_EN_DESC AS \"materialEnDesc\",\n" +
            "    MA.UNIT_SALES AS \"unitSales\",\n" +
            "    MA.NET_WEIGHT AS \"netWeight\",\n" +
            "    MA.GROSS_WEIGHT AS \"grossWeight\",\n" +
            "    MA.WEIGHT_UNIT AS \"weightUnit\",\n" +
            "    MA.VOLUME_QTY AS \"volumeQty\",\n" +
            "    MA.VOLUME_UNIT AS \"volumeUnit\",\n" +
            "    (CASE WHEN MA.NUMERATOR IS NULL THEN 1 ELSE MA.NUMERATOR END ) AS \"numerator\",\n" +
            "    (CASE WHEN MA.DENOMINATOR IS NULL THEN 1 ELSE MA.DENOMINATOR END ) AS \"denominator\" ,\n" +
            "    MA.LIGHT_HEAVY_MARK AS \"lightHeavyMark\" \n" +
            "FROM\n" +
            "    SAP_PACKAGE_LIST_DTL SPLD\n" +
            "    LEFT JOIN WHS_OUT WHSOUT ON SPLD.WHS_OUT_UUID = WHSOUT.UUID\n" +
            "    LEFT JOIN MATERIAL_SAP MA ON SPLD.MATERIAL_NO = MA.MATERIAL_NO \n" +
            "WHERE\n" +
            "    SPLD.ACTUAL_OPERATE_QTY > 0 \n" +
            "    AND WHSOUT.TASK_STATUS IN ( '2', '4', '5' )\n" +
            "    <when test='cabinetNumber!=null'> AND WHSOUT.CABINET_NUMBER = #{cabinetNumber}</when>\n" +
            "    <when test='packageList!=null'> AND SPLD.PACKAGE_LIST = #{packageList}</when>\n" +
            "UNION \n" +
            "SELECT\n" +
            "    '其它出入库' AS \"Source\",\n" +
            "    WHSO.PACKAGE_LIST AS \"packageList\",\n" +
            "    WHSODTL.DATE_OF_LOADING AS \"dateOfLoading\",\n" +
            "    WHSODTL.WERKS AS \"loadingWerks\",\n" +
            "    WHSODTL.WHS_LOCATION_CODE AS \"loadingWhsLocationCode\",\n" +
            "    WHSODTL.CABINET_SERIAL_NUMBER AS \"cabinetSerialNumber\",\n" +
            "    WHSO.GOODS_TYPE AS \"goodsType\",\n" +
            "    WHSODTL.RECEIVING_WERKS AS \"receivingWerks\",\n" +
            "    WHSODTL.ACTUAL_RECEIVING_WERKS AS \"actualReceivingWerks\",\n" +
            "    WHSODTL.MATERIAL_NO AS \"materialNo\",\n" +
            "    WHSODTL.SHIPMENT_CATEGORY AS \"shipmentCategory\",\n" +
            "    WHSODTL.PLANNED_PACKING_QTY AS \"plannedPackingQty\",\n" +
            "    MA.BASIC_UNIT AS \"basicUnit\",\n" +
            "    WHSODTL.PLANNED_PACKING_NUMBER AS \"plannedPackingNumber\",\n" +
            "    WHSODTL.PACKAGE_UNIT AS \"packingUnit\",\n" +
            "    WHSODTL.CABINET_WEIGHT AS \"cabinetWeight\",\n" +
            "    WHSODTL.WEIGHT_UNIT AS \"weightUnit\",\n" +
            "    WHSODTL.CABINET_VOLUME AS \"cabinetVolume\",\n" +
            "    WHSODTL.VOLUME_UNIT AS \"volumeUnit\",\n" +
            "    WHSODTL.TRAILER_LINE AS \"trailerLine\",\n" +
            "    WHSODTL.TRAILER_LINE_DESC AS \"trailerLineDesc\",\n" +
            "    WHSODTL.SPMS_STATUS AS \"spmsStatus\",\n" +
            "    WHSODTL.WHS_OTHER_UUID AS \"outUuid\",\n" +
            "    WHSODTL.TEMP_STORAGE AS \"tempStorage\",\n" +
            "    WHSODTL.UNPLANNED AS \"unplanned\",\n" +
            "    WHSODTL.OPERATE_QTY AS \"actualOperateQty\",\n" +
            "    WHSODTL.CONTAINER_BRAND AS \"containerBrand\",\n" +
            "    WHSODTL.COLOR_NUMBER AS \"colorNumber\",\n" +
            "    WHSODTL.THICKNESS AS \"thickness\",\n" +
            "    WHSODTL.ACTUAL_AVG_GROSS_WEIGHT AS \"actualAvgGrossWeight\",\n" +
            "    WHSODTL.PACKAGE_QTY AS \"actualPackingNumber\",\n" +
            "    WHSODTL.CUSTOMS_DECLARATION_NUMBER AS \"customsDeclarationNumber\",\n" +
            "    WHSODTL.PACKING_SPEC AS \"packingSpec\",\n" +
            "    WHSODTL.LOADING_TYPE AS \"loadingType\",\n" +
            "    WHSODTL.CABINET_NUMBER AS \"cabinetNumber\",\n" +
            "    WHSO.SPMS_ID AS \"spmsId\",\n" +
            "    WHSODTL.LEAD_SEAL AS \"leadSeal\",\n" +
            "    WHSO.SAP_VOUCHER_NUMBER AS \"sapVoucherNumber\",\n" +
            "    WHSO.SAP_VOUCHER_YEAR AS \"sapVoucherYear\",\n" +
            "    WHSO.ACTUAL_LOADING_DATE AS \"actualLoadingDate\",\n" +
            "    WHSO.MONITOR_LOADING AS \"monitorLoading\",\n" +
            "    WHSO.CABINET_CHECK_RESULT AS \"cabinetCheckResult\",\n" +
            "    WHSODTL.ROW_REMARKS AS \"remarks\",\n" +
            "    MA.MATERIAL_ZH_DESC AS \"materialZhDesc\",\n" +
            "    MA.MATERIAL_EN_DESC AS \"materialEnDesc\",\n" +
            "    MA.UNIT_SALES AS \"unitSales\",\n" +
            "    MA.NET_WEIGHT AS \"netWeight\",\n" +
            "    MA.GROSS_WEIGHT AS \"grossWeight\",\n" +
            "    MA.WEIGHT_UNIT AS \"weightUnit\",\n" +
            "    MA.VOLUME_QTY AS \"volumeQty\",\n" +
            "    MA.VOLUME_UNIT AS \"volumeUnit\",\n" +
            "    (CASE WHEN MA.NUMERATOR IS NULL THEN 1 ELSE MA.NUMERATOR END ) AS \"numerator\",\n" +
            "    (CASE WHEN MA.DENOMINATOR IS NULL THEN 1 ELSE MA.DENOMINATOR END ) AS \"denominator\" ,\n" +
            "    MA.LIGHT_HEAVY_MARK AS \"lightHeavyMark\" \n" +
            "FROM\n" +
            "    WHS_OTHER_DTL WHSODTL\n" +
            "    LEFT JOIN WHS_OTHER_TASK WHSO ON WHSODTL.WHS_OTHER_UUID = WHSO.UUID\n" +
            "    LEFT JOIN MATERIAL_SAP MA ON WHSODTL.MATERIAL_NO = MA.MATERIAL_NO \n" +
            "WHERE\n" +
            "    WHSO.MOVEMENT_TYPE = 'Z641' \n" +
            "    AND WHSO.TASK_STATUS IN ( '3', '4', '5', '6' ) \n" +
            "    AND WHSO.GOODS_TYPE = 'M' \n" +
            "    <when test='cabinetNumber!=null'> AND WHSODTL.CABINET_NUMBER = #{cabinetNumber}</when>\n" +
            "    <when test='packageList!=null'> AND WHSO.PACKAGE_LIST = #{packageList}</when>\n" +
            "</script>")
    List<Map<String, Object>> outWHExportM(
            @Param("cabinetNumber") String cabinetNumber,
            @Param("packageList") String packageList
    );


    @Select("<script>\n" +
            "SELECT\n" +
            "    SBND.PACKAGE_NOTE AS \"packageNote\",\n" +
            "    SBND.BOX_NOTE AS \"boxNote\",\n" +
            "    SBND.MATERIAL_NO AS \"materialNo\",\n" +
            "    SBND.QUANTITY AS \"qty\",\n" +
            "    SBND.BASIC_UNIT AS \"basicUnit\",\n" +
            "    SBND.SRM_CONTRACT_NO AS \"srmContractNo\",\n" +
            "    SBND.PURCHASE_NO AS \"purchaseNo\",\n" +
            "    SBND.DELIVERY_NOTE_SAP AS \"deliveryNoteSap\",\n" +
            "    SBND.DEMAND_NO AS \"demandNo\",\n" +
            "    SBND.DEMAND_NO_ITEM AS \"demandNoItem\",\n" +
            "    MA.MATERIAL_ZH_DESC AS \"materialZhDesc\",\n" +
            "    MA.MATERIAL_EN_DESC AS \"materialEnDesc\",\n" +
            "    MA.PRODUCT_LEVEL_SMALL_DESC AS \"productLevelSmallDesc\",\n" +
            "    WHS.WERKS AS \"werks\",\n" +
            "    WHS.WHS_LOCATION_CODE AS \"whsLocationCode\",\n" +
            "    WHS.STORAGE_NO AS \"storageNo\" \n" +
            "FROM\n" +
            "    SAP_BOX_NOTE_DTL SBND\n" +
            "    LEFT JOIN MATERIAL_SAP MA ON SBND.MATERIAL_NO = MA.MATERIAL_NO\n" +
            "    LEFT JOIN WHS_STORAGE_INVENTORY WHSI ON WHSI.BOX_NOTE = SBND.BOX_NOTE\n" +
            "    LEFT JOIN WHS_STORAGE WHS ON WHSI.UUID = WHS.UUID \n" +
            "WHERE 1 = 1 \n" +
            "    <when test='boxNote!=null'> AND SBND.BOX_NOTE = #{boxNote}</when>\n" +
            "    <when test='materialNo!=null'> AND SBND.MATERIAL_NO = #{materialNo}</when>\n" +
            "    <when test='demandNo!=null'> AND SBND.DEMAND_NO = #{demandNo}</when>\n" +
            "    <when test='packageNote!=null'> AND SBND.PACKAGE_NOTE = #{packageNote}</when>\n" +
            "    <when test='purchaseNo!=null'> AND SBND.PURCHASE_NO = #{purchaseNo}</when>\n" +
            "    <when test='deliveryNoteSap!=null'> AND SBND.DELIVERY_NOTE_SAP = #{deliveryNoteSap}</when>\n" +
            "    <when test='srmContractNo!=null'> AND SBND.SRM_CONTRACT_NO = #{srmContractNo}</when>\n" +
            "</script>")
    List<Map<String, Object>> queryBoxInfo(
            @Param("boxNote") String boxNote,
            @Param("materialNo") String materialNo,
            @Param("demandNo") String demandNo,
            @Param("packageNote") String packageNote,
            @Param("purchaseNo") String purchaseNo,
            @Param("deliveryNoteSap") String deliveryNoteSap,
            @Param("srmContractNo") String srmContractNo
    );
    
    @Select("<script>" +
            "SELECT ROWNUM AS \"rowId\", DD.* FROM (\n" +
    		"       SELECT \n" +
            "			WSI.MATERIAL_NO AS \"materialNo\",\n" +
            "       	WS.WERKS AS \"werks\",\n" +
            "       	'贸易货' AS \"goodsType\",\n" +
            "       	WS.WHS_LOCATION_CODE AS \"whsLocationCode\",\n" +
            "       	MS.MATERIAL_ZH_DESC AS \"materialZhDesc\",\n" +
            "       	MS.BASIC_UNIT AS \"basicUnit\",\n" +
            "       	SUM( NVL(WSI.QUANTITY, 0) ) AS \"quantity\",\n" +
            "       	SUM( NVL(WSI.AVAILABLE_QTY, 0) ) AS \"availableQty\"\n" +
            "		FROM WHS_STORAGE_INVENTORY WSI\n" +
            " 			LEFT JOIN WHS_STORAGE WS ON WSI.UUID = WS.UUID\n" +
            " 			LEFT JOIN MATERIAL_SAP MS ON MS.MATERIAL_NO = WSI.MATERIAL_NO\n" +
            "		WHERE 1=1 \n" +
            "		AND WSI.MATERIAL_NO IS NOT NULL \n" +
            "		AND WSI.BOX_NOTE IS NULL \n" +
            " 		<when test='dto.searchInfo!=null and dto.searchInfo != \"\"'> AND (WSI.MATERIAL_NO LIKE concat(concat('%',#{dto.searchInfo}),'%') OR MS.MATERIAL_ZH_DESC LIKE concat(concat('%',#{dto.searchInfo}),'%'))</when>" +
            " 		<when test='dto.werks!=null and dto.werks != \"\"'> AND WS.WERKS = #{dto.werks}</when>" +
            " 		<when test='dto.whsLocationCode!=null and dto.whsLocationCode != \"\"'> AND WS.WHS_LOCATION_CODE = #{dto.whsLocationCode}</when>" +
            " 		GROUP BY\n" +
            " 		WSI.MATERIAL_NO,WS.WERKS,WS.WHS_LOCATION_CODE,MS.MATERIAL_ZH_DESC,MS.BASIC_UNIT \n" +
            "		HAVING SUM( NVL( WSI.AVAILABLE_QTY, 0 ) ) > 0 \n" +
            ") DD \n" +
            "</script>")
	List<Map<String, Object>> selectTradeStockQty(@Param("dto")WhsSearchDTO dto);
    
    @Select("<script>" +
            "SELECT ROWNUM AS \"rowId\", DD.* FROM (\n" +
    		"       SELECT \n" +
            "			SBN.MATERIAL_NO AS \"materialNo\",\n" +
            "       	WS.WERKS AS \"werks\",\n" +
            "       	'备件货' AS \"goodsType\",\n" +
            "       	WS.WHS_LOCATION_CODE AS \"whsLocationCode\",\n" +
            "       	MS.MATERIAL_ZH_DESC AS \"materialZhDesc\",\n" +
            "       	SBN.BASIC_UNIT AS \"basicUnit\",\n" +
            "       	SUM( NVL(SBN.QUANTITY, 0) ) AS \"quantity\",\n" +
            "       	SUM( NVL(SBN.DOMESTIC_QTY_RECEIVED, 0) ) AS \"availableQty\"\n" +
            "		FROM WHS_STORAGE_INVENTORY WSI\n" +
            " 			LEFT JOIN WHS_STORAGE WS ON WSI.UUID = WS.UUID\n" +
            " 			LEFT JOIN SAP_BOX_NOTE_DTL SBN ON WSI.BOX_NOTE = SBN.BOX_NOTE\n" +
            " 			LEFT JOIN MATERIAL_SAP MS ON SBN.MATERIAL_NO = MS.MATERIAL_NO\n" +
            "		WHERE 1=1 \n" +
            "		AND WSI.MATERIAL_NO IS NULL \n" +
            "		AND WSI.BOX_NOTE IS NOT NULL \n" +
            " 		<when test='dto.searchInfo!=null and dto.searchInfo != \"\"'> AND (SBN.MATERIAL_NO LIKE concat(concat('%',#{dto.searchInfo}),'%') OR MS.MATERIAL_ZH_DESC LIKE concat(concat('%',#{dto.searchInfo}),'%'))</when>" +
            " 		<when test='dto.werks!=null and dto.werks != \"\"'> AND WS.WERKS = #{dto.werks}</when>" +
            " 		<when test='dto.whsLocationCode!=null and dto.whsLocationCode != \"\"'> AND WS.WHS_LOCATION_CODE = #{dto.whsLocationCode}</when>" +
            " 		GROUP BY\n" +
            " 		SBN.MATERIAL_NO,WS.WERKS,WS.WHS_LOCATION_CODE,MS.MATERIAL_ZH_DESC,SBN.BASIC_UNIT \n" +
            "		HAVING SUM( NVL( SBN.DOMESTIC_QTY_RECEIVED, 0 ) ) > 0 \n" +
            ") DD \n" +
            "</script>")
	List<Map<String, Object>> selectSparePartStockQty(@Param("dto")WhsSearchDTO dto);
    
    @Select("<script>\n" +
            "SELECT\n" +
            "    SBND.PACKAGE_NOTE AS \"packageNote\",\n" +
            "    SBND.ITEM AS \"item\",\n" +
            "    SBND.BOX_NOTE AS \"boxNote\",\n" +
            "    SBND.PURCHASE_NO AS \"purchaseNo\",\n" +
            "    SBND.DELIVERY_NOTE_SAP AS \"deliveryNoteSap\",\n" +
            "    SBND.SRM_CONTRACT_NO AS \"srmContractNo\",\n" +
            "    WHS.WERKS AS \"werks\",\n" +
            "    WHS.WHS_LOCATION_CODE AS \"whsLocationCode\",\n" +
            "    WHSI.CREATE_TIME AS \"createTime\",\n" +
            "    WHSI.UPDATE_TIME AS \"updateTime\",\n" +
            "    WHS.STORAGE_NO AS \"storageNo\" \n" +
            "FROM \n" +
            "    SAP_BOX_NOTE_DTL SBND\n" +
            "    LEFT JOIN WHS_STORAGE_INVENTORY WHSI ON WHSI.BOX_NOTE = SBND.BOX_NOTE\n" +
            "    LEFT JOIN WHS_STORAGE WHS ON WHSI.UUID = WHS.UUID \n" +
            "WHERE 1 = 1 \n" +
            "    <when test='dto.werks!=null and dto.werks != \"\"'> AND WHS.WERKS = #{dto.werks}</when>\n" +
            "    <when test='dto.whsLocationCode!=null and dto.whsLocationCode != \"\"'> AND WHS.WHS_LOCATION_CODE = #{dto.whsLocationCode}</when>\n" +
            "    <when test='dto.storageNo!=null and dto.storageNo != \"\"'> AND WHS.STORAGE_NO = #{dto.storageNo}</when>\n" +
            "    <when test='dto.packageNote!=null and dto.packageNote != \"\"'> AND SBND.PACKAGE_NOTE = #{dto.packageNote}</when>\n" +
            "    <when test='dto.boxNote!=null and dto.boxNote != \"\"'> AND SBND.BOX_NOTE = #{dto.boxNote}</when>\n" +
            "    <when test='dto.purchaseNo!=null and dto.purchaseNo != \"\"'> AND SBND.PURCHASE_NO = #{dto.purchaseNo}</when>\n" +
            "    <when test='dto.deliveryNoteSap!=null and dto.deliveryNoteSap != \"\"'> AND SBND.DELIVERY_NOTE_SAP = #{dto.deliveryNoteSap}</when>\n" +
            "    <when test='dto.werksList != null'> AND WHS.WERKS in \n" +
            "       <foreach item='item' index='index' collection='dto.werksList' open='(' separator=',' close=')'>\n" +
            "           #{item} \n" +
            "       </foreach>" +
            "    </when>\n" +
    		"</script>")
	List<Map<String, Object>> findBoxInfo(Page<Map<String, Object>> pages, @Param("dto")WhsSearchDTO dto);
    
    @Select("<script>\n" +
    		"SELECT DD.* FROM (\n" +
    		"	SELECT \n" +
    		"		SDN.WAREHOUS_DATE AS \"warehousDate\",\n"  +
    		"		'交货单入库' AS \"warehousType\",\n"  +
    		"		CONCAT(CONCAT(SDN.DELIVERY_NOTE_SAP, '_'), SDN.DELIVERY_NOTE_SRM) AS \"warehousNo\",\n"  +
    		"		CONCAT(CONCAT(SBDLW.WERKS_NAME_ZH, '_'), SDN.DELIVERY_NOTE_SRM) AS \"materialNumber\",\n"  +
    		"		WS.STORAGE_NO AS \"storageCode\",\n"  +
    		"		SOTD.quantity AS \"quantity\",\n"  +
    		"		'件' AS \"unit\",\n"  +
    		"		CONCAT(CONCAT(CONCAT(CONCAT(SPN.TOTAL_VOLUME, '_'), SPN.TOTAL_WEIGHT), '_'), MS.MATERIAL_ZH_DESC) AS \"materialName\",\n"  +
    		"		TO_CHAR(SOTD.BOX_VOLUME) AS \"volume\",\n"  +
    		"		SDN.BATCH_NO AS \"batchNo\",\n"  +
    		"		SDN.WAREHOUSE_KEEPER AS \"warehouseKeeper\",\n"  +
    		"		SDN.TO_WAREHOUSE_TIME AS \"toWarehouseTime\",\n"  +
    		"		SDN.START_OPERATION_TIME AS \"startOperationTime\",\n"  +
    		"		SDN.END_OPERATION_TIME AS \"endOperationTime\",\n"  +
    		"		SDN.HANDLING_GROUP AS \"handlingGroup\",\n"  +
    		"		'杂货' AS \"materialType\",\n"  +
    		"		'X' AS \"goodsType\",\n"  +
    		"		NULL AS \"numerator\",\n"  +
    		"		NULL AS \"denominator\", \n"  +
    		"		'' AS \"oneRemark\", \n"  +
    		"		'' AS \"twoRemark\" \n"  +
    		"	FROM \n" +
    		"		SAP_DELIVERY_NOTE SDN \n" +
    		"	LEFT JOIN ( \n" +
    		"		SELECT SBDL.PACKAGE_NOTE, W.WERKS_NAME_ZH FROM ( \n" +
    		"			SELECT PACKAGE_NOTE,DEMAND_NO FROM SAP_BOX_NOTE_DTL WHERE DEMAND_NO IS NOT NULL GROUP BY PACKAGE_NOTE,DEMAND_NO \n" +
    		"		) SBDL LEFT JOIN WERKS W ON SUBSTR(SBDL.DEMAND_NO, 1, INSTR(SBDL.DEMAND_NO, '-', 1, 1) -1) = W.WERKS" +
    		"	) SBDLW ON SDN.PACKAGE_NOTE = SBDLW.PACKAGE_NOTE \n" +
    		"	LEFT JOIN ( \n" +
    		"		SELECT \n" +
    		"			SDL.DELIVERY_NOTE_SAP AS deliveryNoteSap, " +
    		"			SDL.TARGET_STORAGE AS targetStorage, \n" +
    		"			SUM(SB.BOX_VOLUME) AS BOX_VOLUME, \n" +
    		"			SUM(SDL.QUANTITY) AS quantity \n" +
    		"		FROM SHELF_ON_TASK_DTL SDL \n" +
    		"		LEFT JOIN SHELF_ON_TASK ST ON SDL.UUID = ST.UUID \n" +
    		"		LEFT JOIN SAP_BOX_NOTE SB ON SB.BOX_NOTE = SDL.BOX_NOTE \n" +
    		"		WHERE ST.TASK_STATUS = '3' \n" +
    		"		GROUP BY SDL.DELIVERY_NOTE_SAP,SDL.TARGET_STORAGE \n" +
    		"	) SOTD ON SOTD.deliveryNoteSap = SDN.DELIVERY_NOTE_SAP \n" +
    		"	LEFT JOIN (" +
    		"		SELECT PACKAGE_NOTE,MATERIAL_NO FROM (" +
    		"			SELECT PACKAGE_NOTE,MATERIAL_NO, row_number () over ( partition BY PACKAGE_NOTE ORDER BY ITEM DESC ) rn  FROM SAP_BOX_NOTE_DTL " +			
    		"		) PVB WHERE PVB.rn = 1" +
    		"	) PPVB ON SDN.PACKAGE_NOTE = PPVB.PACKAGE_NOTE" +
    		"	LEFT JOIN MATERIAL_SAP MS ON MS.MATERIAL_NO = PPVB.MATERIAL_NO \n" +
    		"	LEFT JOIN WHS_STORAGE WS ON SOTD.targetStorage = WS.UUID \n" +
    		"	LEFT JOIN SAP_PACKAGE_NOTE SPN ON SDN.PACKAGE_NOTE = SPN.PACKAGE_NOTE \n" +
    		"	WHERE SDN.PACKAGE_NOTE IS NOT NULL \n" +
    		"	AND (SDN.SPMS_STATUS = '6' OR SDN.SPMS_STATUS = '7' OR SDN.SPMS_STATUS = '8') \n" +
    		"   <when test='dto.werks != null and dto.werks != \"\"'> AND WS.WERKS = #{dto.werks}</when>\n" +
            "   <when test='dto.whsLocationCode != null and dto.whsLocationCode != \"\"'> AND WS.WHS_LOCATION_CODE = #{dto.whsLocationCode}</when>\n" +
            "   <when test='dto.searchInfo != null and dto.searchInfo != \"\"'> AND (SBDLW.WERKS_NAME_ZH like concat(concat('%',#{dto.searchInfo}),'%') OR SDN.DELIVERY_NOTE_SRM like concat(concat('%',#{dto.searchInfo}),'%') OR MS.MATERIAL_ZH_DESC like concat(concat('%',#{dto.searchInfo}),'%'))</when>\n" +
            "   <when test='dto.deliveryNoteSap != null and dto.deliveryNoteSap != \"\"'> AND (SDN.DELIVERY_NOTE_SAP like concat(concat('%',#{dto.deliveryNoteSap}),'%') OR SDN.DELIVERY_NOTE_SRM like concat(concat('%',#{dto.deliveryNoteSap}),'%'))</when>\n" +
            "   <when test='dto.beginDate != null and dto.beginDate != \"\"'> <![CDATA[ AND SDN.WAREHOUS_DATE >= #{dto.beginDate} ]]></when>\n" +
            "   <when test='dto.endDate != null and dto.endDate != \"\"'> <![CDATA[ AND SDN.WAREHOUS_DATE <= #{dto.endDate} ]]></when>\n" +
            "	UNION ALL \n" +
            "	SELECT \n" +
            "		SDN.WAREHOUS_DATE AS \"warehousDate\",\n"  +
    		"		'交货单入库' AS \"warehousType\",\n"  +
    		"		CONCAT(CONCAT(SDN.DELIVERY_NOTE_SAP, '_'), SDN.DELIVERY_NOTE_SRM) AS \"warehousNo\",\n"  +
    		"		SDND.MATERIAL_NO AS \"materialNumber\",\n"  +
    		"		SDND.TEMP_STORAGE AS \"storageCode\",\n"  +
    		"		SDND.ACTUAL_QTY_SALES AS \"quantity\",\n"  +
    		"		SDND.UNIT_SALES AS \"unit\",\n"  +
    		"		MS.MATERIAL_ZH_DESC AS \"materialName\",\n"  +
    		"		MS.VOLUME_QTY AS \"volume\",\n"  +
    		"		SDN.BATCH_NO AS \"batchNo\",\n"  +
    		"		SDN.WAREHOUSE_KEEPER AS \"warehouseKeeper\",\n"  +
    		"		SDN.TO_WAREHOUSE_TIME AS \"toWarehouseTime\",\n"  +
    		"		SDN.START_OPERATION_TIME AS \"startOperationTime\",\n"  +
    		"		SDN.END_OPERATION_TIME AS \"endOperationTime\",\n"  +
    		"		SDN.HANDLING_GROUP AS \"handlingGroup\",\n"  +
    		"		MDB.MATERIAL_TYPE AS \"materialType\",\n"  +
    		"		'M' AS \"goodsType\",\n"  +
    		"		MS.NUMERATOR AS \"numerator\",\n"  +
    		"		MS.DENOMINATOR AS \"denominator\", \n"  +
    		"		'' AS \"oneRemark\", \n"  +
    		"		'' AS \"twoRemark\" \n"  +
    		"	FROM \n" +
    		"		SAP_DELIVERY_NOTE_DTL SDND \n" +
    		"	LEFT JOIN SAP_DELIVERY_NOTE SDN \n" +
    		"		ON SDND.DELIVERY_NOTE_SAP = SDN.DELIVERY_NOTE_SAP \n" +
    		"	LEFT JOIN MATERIAL_SAP MS ON SDND.MATERIAL_NO = MS.MATERIAL_NO \n" +
    		"	LEFT JOIN MATERIAL_DELIVERY_BOARDS MDB ON SDND.MATERIAL_NO = MDB.MATERIAL_NO \n" +
    		"	WHERE SDN.PACKAGE_NOTE IS NULL \n" +
    		"	AND (SDN.SPMS_STATUS = '6' OR SDN.SPMS_STATUS = '7' OR SDN.SPMS_STATUS = '8') \n" +
    		"   <when test='dto.werks != null and dto.werks != \"\"'> AND SDND.WERKS = #{dto.werks}</when>\n" +
            "   <when test='dto.whsLocationCode != null and dto.whsLocationCode != \"\"'> AND SDND.WHS_LOCATION_CODE = #{dto.whsLocationCode}</when>\n" +
            "   <when test='dto.searchInfo != null and dto.searchInfo != \"\"'> AND (SDND.MATERIAL_NO like concat(concat('%',#{dto.searchInfo}),'%') OR MS.MATERIAL_ZH_DESC like concat(concat('%',#{dto.searchInfo}),'%'))</when>\n" +
            "   <when test='dto.deliveryNoteSap != null and dto.deliveryNoteSap != \"\"'> AND (SDN.DELIVERY_NOTE_SAP like concat(concat('%',#{dto.deliveryNoteSap}),'%') OR SDN.DELIVERY_NOTE_SRM like concat(concat('%',#{dto.deliveryNoteSap}),'%'))</when>\n" +
            "   <when test='dto.beginDate != null and dto.beginDate != \"\"'> <![CDATA[ AND SDN.WAREHOUS_DATE >= #{dto.beginDate} ]]></when>\n" +
            "   <when test='dto.endDate != null and dto.endDate != \"\"'> <![CDATA[ AND SDN.WAREHOUS_DATE <= #{dto.endDate} ]]></when>\n" +
            "	UNION ALL \n" +
            "	SELECT \n" +
            "		SDN.WAREHOUS_DATE AS \"warehousDate\",\n"  +
    		"		(CASE WHEN SDN.MOVEMENT_TYPE = '311' THEN '卸货入库' ELSE '赠品入库' END) AS \"warehousType\",\n"  +
    		"		(CASE WHEN SDN.MOVEMENT_TYPE = '311' THEN SDN.PACKAGE_LIST ELSE SDN.SPMS_ID END) AS \"warehousNo\",\n"  +
    		"		SDND.MATERIAL_NO AS \"materialNumber\",\n"  +
    		"		SDND.TEMP_STORAGE AS \"storageCode\",\n"  +
    		"		SDND.PACKAGE_QTY AS \"quantity\",\n"  +
    		"		SDND.PACKAGE_UNIT AS \"unit\",\n"  +
    		"		MS.MATERIAL_ZH_DESC AS \"materialName\",\n"  +
    		"		MS.VOLUME_QTY AS \"volume\",\n"  +
    		"		SDN.BATCH_NO AS \"batchNo\",\n"  +
    		"		SDN.WAREHOUSE_KEEPER AS \"warehouseKeeper\",\n"  +
    		"		SDN.TO_WAREHOUSE_TIME AS \"toWarehouseTime\",\n"  +
    		"		SDN.START_OPERATION_TIME AS \"startOperationTime\",\n"  +
    		"		SDN.END_OPERATION_TIME AS \"endOperationTime\",\n"  +
    		"		SDN.HANDLING_GROUP AS \"handlingGroup\",\n"  +
    		"		MDB.MATERIAL_TYPE AS \"materialType\",\n"  +
    		"		'' AS \"goodsType\",\n"  +
    		"		MS.NUMERATOR AS \"numerator\",\n"  +
    		"		MS.DENOMINATOR AS \"denominator\", \n"  +
    		"		'' AS \"oneRemark\", \n"  +
    		"		'' AS \"twoRemark\" \n"  +
    		"	FROM \n" +
    		"		WHS_OTHER_DTL SDND \n" +
    		"	LEFT JOIN WHS_OTHER_TASK SDN \n" +
    		"		ON SDND.WHS_OTHER_UUID = SDN.UUID \n" +
    		"	LEFT JOIN MATERIAL_SAP MS ON SDND.MATERIAL_NO = MS.MATERIAL_NO \n" +
    		"	LEFT JOIN MATERIAL_DELIVERY_BOARDS MDB ON SDND.MATERIAL_NO = MDB.MATERIAL_NO \n" +
    		"	WHERE (SDN.MOVEMENT_TYPE = '311' OR SDN.MOVEMENT_TYPE = '511') \n" +
    		"	AND (SDN.TASK_STATUS = '3' OR SDN.TASK_STATUS = '4' OR SDN.TASK_STATUS = '5' OR SDN.TASK_STATUS = '6') \n" +
    		"   <when test='dto.werks != null and dto.werks != \"\"'> AND SDN.WERKS = #{dto.werks}</when>\n" +
            "   <when test='dto.whsLocationCode != null and dto.whsLocationCode != \"\"'> AND SDN.WHS_LOCATION_CODE = #{dto.whsLocationCode}</when>\n" +
            "   <when test='dto.searchInfo != null and dto.searchInfo != \"\"'> AND (SDND.MATERIAL_NO like concat(concat('%',#{dto.searchInfo}),'%') OR MS.MATERIAL_ZH_DESC like concat(concat('%',#{dto.searchInfo}),'%'))</when>\n" +
            "   <when test='dto.deliveryNoteSap != null and dto.deliveryNoteSap != \"\"'> AND (SDN.PACKAGE_LIST like concat(concat('%',#{dto.deliveryNoteSap}),'%') OR SDN.SPMS_ID like concat(concat('%',#{dto.deliveryNoteSap}),'%'))</when>\n" +
            "   <when test='dto.beginDate != null and dto.beginDate != \"\"'> <![CDATA[ AND SDN.WAREHOUS_DATE >= #{dto.beginDate} ]]></when>\n" +
            "   <when test='dto.endDate != null and dto.endDate != \"\"'> <![CDATA[ AND SDN.WAREHOUS_DATE <= #{dto.endDate} ]]></when>\n" +
            ") DD \n" +
    		"</script>")
	List<Map<String, Object>> findSapDeliveryNoteAndOtherTaskData(Page<Map<String, Object>> pages, @Param("dto") WhsSearchDTO dto);
    
    @Select("<script>\n" +
    		"SELECT DD.* FROM (\n" +
    		"	SELECT \n" +
    		"		T3.WAREHOUSDATE AS \"warehousDate\",\n"  +
    		"		T3.INHOUSEDAY AS \"inhouseDay\",\n"  +
    		"		'' AS \"isTax\",\n"  +
    		"		T1.MATERIAL_NO AS \"materialNo\",\n"  +
    		"		MS.MATERIAL_ZH_DESC AS \"materialDesc\",\n"  +
    		"		MS.UNIT_SALES AS \"salesUnit\",\n"  +
    		"		NVL(WSILM.QUANTITY, 0) AS \"beforMouthNum\",\n"  +
    		"		NVL(T2.allReceivedQty, 0) AS \"receivedQty\",\n"  +
    		"		NVL(T5.ACTUALPACKINGNUMBER, 0) AS \"thisMouthOutHouseNum\",\n"  +
    		"		NVL(T4.AVAILABLEQTY, 0) AS \"thisMouthInNum\",\n"  +
    		"		MDB.BOARDS AS \"boards\",\n"  +
    		"		'' AS \"nowBorads\",\n"  +
    		"		'' AS \"voucherNumber\",\n"  +
    		"		'' AS \"remark\",\n"  +
    		"		MS.NUMERATOR AS \"numerator\",\n"  +
    		"		MS.DENOMINATOR AS \"denominator\",\n"  +
    		"		0 AS \"countNum\",\n"  +
    		"		'M' AS \"goodsType\" \n"  +
    		"	FROM (\n" +
    		"		SELECT TT.MATERIAL_NO FROM ( \n" +
    		"			SELECT \n" +
    		"				SDND.MATERIAL_NO \n" +
    		"			FROM \n" +
    		"				SAP_DELIVERY_NOTE_DTL SDND \n" +
    		"				LEFT JOIN SAP_DELIVERY_NOTE SDN ON SDND.DELIVERY_NOTE_SAP = SDN.DELIVERY_NOTE_SAP \n" +
    		"			WHERE \n" +
    		"				SDN.PACKAGE_NOTE IS NULL \n" +
    		"				AND SDN.SPMS_STATUS IN ( '6', '7', '8' ) \n" +
    		"				AND SDND.WERKS = #{dto.werks} \n" +
    		"				AND SDND.WHS_LOCATION_CODE = #{dto.whsLocationCode} \n" +
    		"				<![CDATA[ AND SDN.WAREHOUS_DATE >= TO_CHAR( TRUNC( ADD_MONTHS( LAST_DAY( SYSDATE ), - 1 ) + 1 ), 'yyyy-MM-dd' ) ]]> \n" +
    		"				<![CDATA[ AND SDN.WAREHOUS_DATE <= TO_CHAR( SYSDATE, 'yyyy-MM-dd' ) ]]> \n" +
    		"   			<when test='dto.searchInfo != null and dto.searchInfo != \"\"'> AND SDND.MATERIAL_NO = #{dto.searchInfo}</when>\n" +
    		"			GROUP BY SDND.MATERIAL_NO \n" +
    		"			UNION ALL \n" +
    		"			SELECT \n" +
    		"				WSI.MATERIAL_NO \n" +
    		"			FROM \n" +
    		"				WHS_STORAGE_INVENTORY WSI \n" +
    		"				LEFT JOIN WHS_STORAGE WS ON WSI.UUID = WS.UUID \n" +
    		"			WHERE \n" +
    		"				WS.WERKS = #{dto.werks} \n" +
    		"				AND WS.WHS_LOCATION_CODE = #{dto.whsLocationCode} \n" +
    		"				AND WSI.MATERIAL_NO IS NOT NULL \n" +
    		"				AND WSI.AVAILABLE_QTY > 0 \n" +
    		"   			<when test='dto.searchInfo != null and dto.searchInfo != \"\"'> AND WSI.MATERIAL_NO = #{dto.searchInfo}</when>\n" +
    		"			GROUP BY WSI.MATERIAL_NO \n" +
    		"			UNION ALL \n" +
    		"			SELECT \n" +
    		"				SPLD.MATERIAL_NO \n" +
    		"			FROM \n" +
    		"				SAP_PACKAGE_LIST_DTL SPLD \n" +
    		"				LEFT JOIN WHS_OUT WO ON WO.UUID = SPLD.WHS_OUT_UUID \n" +
    		"			WHERE \n" +
    		"				WO.GOODS_TYPE = 'M' \n" +
    		"				AND WO.TASK_STATUS IN ( '2', '4', '5' ) \n" +
    		"				AND WO.WERKS = #{dto.werks} \n" +
    		"				AND WO.WHS_LOCATION_CODE = #{dto.whsLocationCode} \n" +
    		"				<![CDATA[ AND WO.ACTUAL_LOADING_DATE >= TO_CHAR( TRUNC( ADD_MONTHS( LAST_DAY( SYSDATE ), - 1 ) + 1 ), 'yyyy-MM-dd' ) ]]> \n" +
    		"				<![CDATA[ AND WO.ACTUAL_LOADING_DATE <= TO_CHAR( SYSDATE, 'yyyy-MM-dd' ) ]]> \n" +
    		"   			<when test='dto.searchInfo != null and dto.searchInfo != \"\"'> AND SPLD.MATERIAL_NO = #{dto.searchInfo}</when>\n" +
    		"			GROUP BY SPLD.MATERIAL_NO \n" +
    		"		) TT GROUP BY TT.MATERIAL_NO \n" +
    		"	) T1 \n" +
    		"	LEFT JOIN ( \n" +
    		"		SELECT \n" +
    		"			SDND.MATERIAL_NO, \n" +
    		"			SUM( SDND.ACTUAL_QTY_SALES ) AS allReceivedQty \n" +
    		"		FROM \n" +
    		"			SAP_DELIVERY_NOTE_DTL SDND \n" +
    		"			LEFT JOIN SAP_DELIVERY_NOTE SDN ON SDND.DELIVERY_NOTE_SAP = SDN.DELIVERY_NOTE_SAP \n" +
    		"		WHERE \n" +
    		"			SDN.PACKAGE_NOTE IS NULL \n" +
    		"			AND SDN.SPMS_STATUS IN ( '6', '7', '8' ) \n" +
    		"			AND SDND.WERKS = #{dto.werks} \n" +
    		"			AND SDND.WHS_LOCATION_CODE = #{dto.whsLocationCode} \n" +
    		"			<![CDATA[ AND SDN.WAREHOUS_DATE >= TO_CHAR( TRUNC( ADD_MONTHS( LAST_DAY( SYSDATE ), - 1 ) + 1 ), 'yyyy-MM-dd' ) ]]> \n" +
    		"			<![CDATA[ AND SDN.WAREHOUS_DATE <= TO_CHAR( SYSDATE, 'yyyy-MM-dd' ) ]]> \n" +
    		"		GROUP BY SDND.MATERIAL_NO \n" +
    		"	) T2 ON T1.MATERIAL_NO = T2.MATERIAL_NO \n" +
    		"	LEFT JOIN ( \n" +
    		"		SELECT \n" +
    		"			pl.materialNo, pl.warehousDate, pl.inhouseDay \n" +
    		"		FROM ( \n" +
    		"			SELECT \n" +
    		"				SDND.MATERIAL_NO AS materialNo, \n" +
    		"				SDN.WAREHOUS_DATE AS warehousDate, \n" +
    		"				(CASE WHEN SDN.WAREHOUS_DATE IS NOT NULL THEN TO_DATE(TO_CHAR(SYSDATE, 'yyyy-MM-dd'), 'yyyy-MM-dd') - TO_DATE(SDN.WAREHOUS_DATE, 'yyyy-MM-dd') ELSE 0 END) AS inhouseDay, \n" +
    		"				row_number () over ( partition BY SDND.MATERIAL_NO ORDER BY SDND.DELIVERY_NOTE_SAP DESC ) rn \n" +
    		"			FROM \n" +
    		"				SAP_DELIVERY_NOTE_DTL SDND \n" +
    		"				LEFT JOIN SAP_DELIVERY_NOTE SDN ON SDND.DELIVERY_NOTE_SAP = SDN.DELIVERY_NOTE_SAP \n" +
    		"			WHERE SDN.PACKAGE_NOTE IS NULL \n" +
    		"			AND SDN.SPMS_STATUS IN ( '6', '7', '8' ) \n" +
    		"			AND SDND.WERKS = #{dto.werks} \n" +
    		"			AND SDND.WHS_LOCATION_CODE = #{dto.whsLocationCode} \n" +
    		"			<![CDATA[ AND SDN.WAREHOUS_DATE >= TO_CHAR( TRUNC( ADD_MONTHS( LAST_DAY( SYSDATE ), - 1 ) + 1 ), 'yyyy-MM-dd' ) ]]> \n" +
    		"			<![CDATA[ AND SDN.WAREHOUS_DATE <= TO_CHAR( SYSDATE, 'yyyy-MM-dd' ) ]]> \n" +
    		"		) pl \n" +
    		"		WHERE pl.rn = 1 \n" +
    		"	) T3 ON T1.MATERIAL_NO = T3.materialNo \n" +
    		"	LEFT JOIN ( \n" +
    		"		SELECT \n" +
    		"			WSI.MATERIAL_NO, \n" +
    		"			SUM(WSI.AVAILABLE_QTY) AS AVAILABLEQTY \n" +
    		"		FROM WHS_STORAGE_INVENTORY WSI \n" +
    		"			LEFT JOIN WHS_STORAGE WS ON WSI.UUID = WS.UUID \n" +
    		"		WHERE WS.WERKS = #{dto.werks} \n" +
    		"			AND WS.WHS_LOCATION_CODE = #{dto.whsLocationCode} \n" +
    		"			AND WSI.MATERIAL_NO IS NOT NULL \n" +
    		"			AND WSI.AVAILABLE_QTY > 0 \n" +
    		"			AND WS.WERKS = #{dto.werks} \n" +
    		"			AND WS.WHS_LOCATION_CODE = #{dto.whsLocationCode} \n" +
    		"		GROUP BY WSI.MATERIAL_NO \n" +
    		"	) T4 ON T1.MATERIAL_NO = T4.MATERIAL_NO \n" +
    		"	LEFT JOIN ( \n" +
    		"		SELECT \n" +
    		"			SPLD.MATERIAL_NO, \n" +
    		"			SUM(SPLD.ACTUAL_PACKING_NUMBER) AS ACTUALPACKINGNUMBER \n" +
    		"		FROM SAP_PACKAGE_LIST_DTL SPLD \n" +
    		"			LEFT JOIN WHS_OUT WO ON WO.UUID = SPLD.WHS_OUT_UUID \n" +
    		"		WHERE WO.GOODS_TYPE = 'M' \n" +
    		"			AND WO.TASK_STATUS IN ('2','4','5') \n" +
    		"			AND WO.WERKS = #{dto.werks} \n" +
    		"			AND WO.WHS_LOCATION_CODE = #{dto.whsLocationCode} \n" +
    		"			<![CDATA[ AND WO.ACTUAL_LOADING_DATE >= TO_CHAR( TRUNC( ADD_MONTHS( LAST_DAY( SYSDATE ), - 1 ) + 1 ), 'yyyy-MM-dd' ) ]]> \n" +
    		"			<![CDATA[ AND WO.ACTUAL_LOADING_DATE <= TO_CHAR( SYSDATE, 'yyyy-MM-dd' ) ]]> \n" +
    		"		GROUP BY SPLD.MATERIAL_NO \n" +
    		"	) T5 ON T1.MATERIAL_NO = T5.MATERIAL_NO \n" +
    		"	LEFT JOIN MATERIAL_SAP MS ON MS.MATERIAL_NO = T1.MATERIAL_NO \n" +
    		"	LEFT JOIN MATERIAL_DELIVERY_BOARDS MDB ON T1.MATERIAL_NO = MDB.MATERIAL_NO \n" +
    		"	LEFT JOIN WHS_STORAGE_INVENTORY_LAST_MONTH WSILM ON T1.MATERIAL_NO = WSILM.MATERIAL_NO \n" +
    		"   <when test='dto.searchInfo != null and dto.searchInfo != \"\"'> AND T1.MATERIAL_NO = #{dto.searchInfo}</when>\n" +
    		"	UNION ALL \n" +
            "	SELECT \n" +
            "		T3.WAREHOUSDATE AS \"warehousDate\",\n"  +
    		"		T3.INHOUSEDAY AS \"inhouseDay\",\n"  +
    		"		'' AS \"isTax\",\n"  +
    		"		T4.werksNmae AS \"materialNo\",\n"  +
    		"		CONCAT(CONCAT(CONCAT(CONCAT(T4.TOTAL_VOLUME, '_'), T4.TOTAL_WEIGHT), '_'), T4.MATERIAL_ZH_DESC) AS \"materialDesc\",\n"  +
    		"		'件' AS \"salesUnit\",\n"  +
    		"		NVL(WSILM.QUANTITY, 0) AS \"beforMouthNum\",\n"  +
    		"		NVL(T1.allReceivedQty, 0) AS \"receivedQty\",\n"  +
    		"		NVL(T1.thisMouthOutHouseNum, 0) AS \"thisMouthOutHouseNum\",\n"  +
    		"		NVL(T1.THISMOUTHINNUM, 0) AS \"thisMouthInNum\",\n"  +
    		"		MDB.BOARDS AS \"boards\",\n"  +
    		"		'' AS \"nowBorads\",\n"  +
    		"		T1.DELIVERY_NOTE_SAP AS \"voucherNumber\",\n"  +
    		"		'' AS \"remark\",\n"  +
    		"		NULL AS \"numerator\",\n"  +
    		"		NULL AS \"denominator\",\n"  +
    		"		NVL(T4.COUNTNUM, 0) AS \"countNum\",\n"  +
    		"		'X' AS \"goodsType\" \n"  +
    		"	FROM ( \n" +
    		"		SELECT \n" +
    		"			TT.DELIVERY_NOTE_SAP, \n" +
    		"			SUM(TT.ALLRECEIVEDQTY) AS allReceivedQty, \n" +
    		"			SUM(TT.thisMouthInNum) AS thisMouthInNum, \n" +
    		"			SUM(TT.THISMOUTHOUTHOUSENUM) AS thisMouthOutHouseNum \n" +
    		"		FROM ( \n" +
    		"			SELECT \n" +
    		"				SDN.DELIVERY_NOTE_SAP, \n" +
    		"				SUM(SBN.BOX_QTY_RECEIVED) AS allReceivedQty, \n" +
    		"				0 AS thisMouthOutHouseNum, \n" +
    		"				0 AS thisMouthInNum \n" +
    		"			FROM SAP_BOX_NOTE SBN \n" +
    		"				LEFT JOIN SAP_DELIVERY_NOTE SDN ON SBN.PACKAGE_NOTE = SDN.PACKAGE_NOTE \n" +
    		"			WHERE \n" +
    		"				SDN.PACKAGE_NOTE IS NOT NULL \n" +
    		"				AND SDN.SPMS_STATUS IN ( '6', '7', '8' ) \n" +
    		"				<![CDATA[ AND SDN.WAREHOUS_DATE >= TO_CHAR( TRUNC( ADD_MONTHS( LAST_DAY( SYSDATE ), - 1 ) + 1 ), 'yyyy-MM-dd' ) ]]> \n" +
    		"				<![CDATA[ AND SDN.WAREHOUS_DATE <= TO_CHAR( SYSDATE, 'yyyy-MM-dd' ) ]]> \n" +
    		"   			<when test='dto.deliveryNoteSap != null and dto.deliveryNoteSap != \"\"'> AND SDN.DELIVERY_NOTE_SAP = #{dto.deliveryNoteSap}</when>\n" +
    		"			GROUP BY SDN.DELIVERY_NOTE_SAP \n" +
    		"			UNION ALL \n" +
    		"			SELECT \n" +
    		"				SDN.DELIVERY_NOTE_SAP, \n" +
    		"				0 AS allReceivedQty, \n" +
    		"				SUM(WDD.ACTUAL_OUT_QTY) AS thisMouthOutHouseNum, \n" +
    		"				0 AS thisMouthInNum \n" +
    		"			FROM WHS_DUMP_DTL WDD \n" +
    		"				LEFT JOIN WHS_DUMP WD ON WDD.WHS_DUMP_UUID = WD.WHS_DUMP_UUID \n" +
    		"				LEFT JOIN SAP_BOX_NOTE SBND ON WDD.BOX_NOTE = SBND.BOX_NOTE \n" +
    		"				LEFT JOIN SAP_DELIVERY_NOTE SDN ON SBND.PACKAGE_NOTE = SDN.PACKAGE_NOTE \n" +
    		"			WHERE WD.GOODS_TYPE = 'X' \n" +
    		"				AND WD.SPMS_STATUS = '6' \n" +
    		"				AND WD.WERKS_DUMP_OUT = #{dto.werks} \n" +
    		"				AND WD.WHS_LOCATION_CODE_DUMP_OUT = #{dto.whsLocationCode} \n" +
    		"				<![CDATA[ AND WD.DUMP_OUT_SAP_DATE >= TO_CHAR( TRUNC( ADD_MONTHS( LAST_DAY( SYSDATE ), - 1 ) + 1 ), 'yyyy-MM-dd' ) ]]> \n" +
    		"				<![CDATA[ AND WD.DUMP_OUT_SAP_DATE <= TO_CHAR( SYSDATE, 'yyyy-MM-dd' ) ]]> \n" +
    		"   			<when test='dto.deliveryNoteSap != null and dto.deliveryNoteSap != \"\"'> AND SDN.DELIVERY_NOTE_SAP = #{dto.deliveryNoteSap}</when>\n" +
    		"			GROUP BY SDN.DELIVERY_NOTE_SAP \n" +
    		"			UNION ALL \n" +
    		"			SELECT \n" +
    		"				SDN.DELIVERY_NOTE_SAP, \n" +
    		"				0 AS allReceivedQty, \n" +
    		"				SUM(SPB.ACTUAL_OPERATE_QTY) AS thisMouthOutHouseNum, \n" +
    		"				0 AS thisMouthInNum \n" +
    		"			FROM SAP_PACKAGE_LIST_DTL SPLD \n" +
    		"				LEFT JOIN WHS_OUT WO ON WO.UUID = SPLD.WHS_OUT_UUID \n" +
    		"				LEFT JOIN SAP_PACKAGE_BOX SPB ON ((SPLD.PACKAGE_LIST = SPB.PACKAGE_LIST AND SPLD.ITEM = SPB.ITEM) OR (SPLD.WHS_OUT_UUID = SPB.WHS_OUT_UUID)) \n" +
    		"				LEFT JOIN SAP_BOX_NOTE SBND ON SPB.BOX_NOTE = SBND.BOX_NOTE \n" +
    		"				LEFT JOIN SAP_PACKAGE_NOTE SDN ON SBND.PACKAGE_NOTE = SDN.PACKAGE_NOTE \n" +
    		"			WHERE WO.GOODS_TYPE = 'X' \n" +
    		"				AND WO.TASK_STATUS = '4' \n" +
    		"				AND WO.WERKS = #{dto.werks} \n" +
    		"				AND WO.WHS_LOCATION_CODE = #{dto.whsLocationCode} \n" +
    		"				<![CDATA[ AND WO.ACTUAL_LOADING_DATE >= TO_CHAR( TRUNC( ADD_MONTHS( LAST_DAY( SYSDATE ), - 1 ) + 1 ), 'yyyy-MM-dd' ) ]]> \n" +
    		"				<![CDATA[ AND WO.ACTUAL_LOADING_DATE <= TO_CHAR( SYSDATE, 'yyyy-MM-dd' ) ]]> \n" +
    		"				AND SPB.ACTUAL_OPERATE_QTY > 0 \n" +
    		"   			<when test='dto.deliveryNoteSap != null and dto.deliveryNoteSap != \"\"'> AND SDN.DELIVERY_NOTE_SAP = #{dto.deliveryNoteSap}</when>\n" +
    		"			GROUP BY SDN.DELIVERY_NOTE_SAP \n" +
    		"			UNION ALL \n" +
    		"			SELECT \n" +
    		"				SDN.DELIVERY_NOTE_SAP, \n" +
    		"				0 AS allReceivedQty, \n" +
    		"				0 AS thisMouthOutHouseNum, \n" +
    		"				SUM(WII.QUANTITY) AS thisMouthInNum \n" +
    		"			FROM WHS_INVENTORY_INFO WII \n" +
    		"				LEFT JOIN SAP_BOX_NOTE SBND ON WII.BOX_NOTE = SBND.BOX_NOTE \n" +
    		"				LEFT JOIN SAP_PACKAGE_NOTE SDN ON SBND.PACKAGE_NOTE = SDN.PACKAGE_NOTE \n" +
    		"			WHERE WII.BOX_NOTE IS NOT NULL \n" +
    		"				AND WII.QUANTITY > 0 \n" +
    		"				AND WII.WERKS = #{dto.werks} \n" +
    		"				AND WII.WHS_LOCATION_CODE = #{dto.whsLocationCode} \n" +
    		"				AND SDN.DELIVERY_NOTE_SAP IS NOT NULL \n" +
    		"   			<when test='dto.deliveryNoteSap != null and dto.deliveryNoteSap != \"\"'> AND SDN.DELIVERY_NOTE_SAP = #{dto.deliveryNoteSap}</when>\n" +
    		"			GROUP BY SDN.DELIVERY_NOTE_SAP \n" +
    		"		) TT GROUP BY TT.DELIVERY_NOTE_SAP \n" +
    		"	) T1 \n" +
    		"	LEFT JOIN ( \n" +
    		"		SELECT \n" +
    		"			SDN.DELIVERY_NOTE_SAP, \n" +
    		"			SDN.WAREHOUS_DATE AS warehousDate, \n" +
    		"			(CASE WHEN SDN.WAREHOUS_DATE IS NOT NULL THEN TO_DATE(TO_CHAR(SYSDATE, 'yyyy-MM-dd'), 'yyyy-MM-dd') - TO_DATE(SDN.WAREHOUS_DATE, 'yyyy-MM-dd') ELSE 0 END) AS inhouseDay \n" +
    		"		FROM SAP_DELIVERY_NOTE SDN \n" +
    		"		WHERE SDN.PACKAGE_NOTE IS NOT NULL \n" +
    		"			AND SDN.SPMS_STATUS IN ( '6', '7', '8' ) \n" +
    		"			<![CDATA[ AND SDN.WAREHOUS_DATE >= TO_CHAR( TRUNC( ADD_MONTHS( LAST_DAY( SYSDATE ), - 1 ) + 1 ), 'yyyy-MM-dd' ) ]]> \n" +
    		"			<![CDATA[ AND SDN.WAREHOUS_DATE <= TO_CHAR( SYSDATE, 'yyyy-MM-dd' ) ]]> \n" +
    		"   		<when test='dto.deliveryNoteSap != null and dto.deliveryNoteSap != \"\"'> AND SDN.DELIVERY_NOTE_SAP = #{dto.deliveryNoteSap}</when>\n" +
    		"	) T3 ON T3.DELIVERY_NOTE_SAP = T1.DELIVERY_NOTE_SAP \n" +
    		"	LEFT JOIN ( \n" +
    		"		SELECT \n" +
    		"			pl.deliveryNoteSap, \n" +
    		"			pl.werksNmae, \n" +
    		"			pl.TOTAL_VOLUME, \n" +
    		"			pl.TOTAL_WEIGHT, \n" +
    		"			pl.MATERIAL_ZH_DESC, \n" +
    		"			pl.COUNTNUM \n" +
    		"		FROM ( \n" +
    		"			SELECT \n" +
    		"				SDND.DELIVERY_NOTE_SAP AS deliveryNoteSap, \n" +
    		"				CONCAT(CONCAT(W.WERKS_NAME_ZH, '_'), SDN.DELIVERY_NOTE_SRM) AS werksNmae, \n" +
    		"				SPN.TOTAL_VOLUME, \n" +
    		"				SPN.TOTAL_WEIGHT, \n" +
    		"				SBBN.MATERIAL_ZH_DESC, \n" +
    		"				SBNN.COUNTNUM, \n" +
    		"				row_number () over ( partition BY SDND.DELIVERY_NOTE_SAP ORDER BY SDND.DELIVERY_NOTE_SAP_ITEM DESC ) rn \n" +
    		"			FROM SAP_DELIVERY_NOTE_DTL SDND \n" +
    		"				LEFT JOIN WERKS W ON SDND.WERKS_XQ = W.WERKS \n" +
    		"				LEFT JOIN SAP_DELIVERY_NOTE SDN ON SDND.DELIVERY_NOTE_SAP = SDN.DELIVERY_NOTE_SAP \n" +
    		"				LEFT JOIN SAP_PACKAGE_NOTE SPN ON SPN.PACKAGE_NOTE = SDN.PACKAGE_NOTE \n" +
    		"				LEFT JOIN ( \n" +
    		"					SELECT PPL.PACKAGE_NOTE, PPL.MATERIAL_ZH_DESC FROM ( \n" +
    		"						SELECT \n" +
    		"							SBB.PACKAGE_NOTE, \n" +
    		"							MS.MATERIAL_ZH_DESC, \n" +
    		"							row_number () over ( partition BY SBB.PACKAGE_NOTE ORDER BY SBB.ITEM DESC ) rn \n" +
    		"						FROM SAP_BOX_NOTE_DTL SBB \n" +
    		"							LEFT JOIN MATERIAL_SAP MS ON MS.MATERIAL_NO = SBB.MATERIAL_NO \n" +
    		"					) PPL \n" +
    		"					WHERE PPL.rn = 1 \n" +
    		"				) SBBN ON SBBN.PACKAGE_NOTE = SPN.PACKAGE_NOTE \n" +
    		"				LEFT JOIN ( \n" +
    		"					SELECT COUNT(1) AS COUNTNUM, PACKAGE_NOTE FROM SAP_BOX_NOTE GROUP BY PACKAGE_NOTE \n" +
    		"				) SBNN ON SBNN.PACKAGE_NOTE = SPN.PACKAGE_NOTE \n" +
    		"			WHERE 1=1 \n" +
    		"				AND SDND.WERKS = #{dto.werks} \n" +
    		"				AND SDND.WHS_LOCATION_CODE = #{dto.whsLocationCode} \n" +
    		"   			<when test='dto.deliveryNoteSap != null and dto.deliveryNoteSap != \"\"'> AND SDND.DELIVERY_NOTE_SAP = #{dto.deliveryNoteSap}</when>\n" +
    		"		) pl \n" +
    		"		WHERE pl.rn = 1 \n" +
    		"	) T4 ON T1.DELIVERY_NOTE_SAP = T4.deliveryNoteSap \n" +
    		"	LEFT JOIN MATERIAL_DELIVERY_BOARDS MDB ON T1.DELIVERY_NOTE_SAP = MDB.DELIVERY_NOTE_SAP \n" +
    		"	LEFT JOIN WHS_STORAGE_INVENTORY_LAST_MONTH WSILM ON T1.DELIVERY_NOTE_SAP = WSILM.DELIVERY_NOTE_SAP \n" +
            "   <when test='dto.deliveryNoteSap != null and dto.deliveryNoteSap != \"\"'> AND T1.DELIVERY_NOTE_SAP = #{dto.deliveryNoteSap}</when>\n" +
    		") DD WHERE 1=1 \n" +
    		"   <when test='dto.searchInfo != null and dto.searchInfo != \"\"'> AND DD.materialNo = #{dto.searchInfo}</when>\n" +
            "   <when test='dto.deliveryNoteSap != null and dto.deliveryNoteSap != \"\"'> AND DD.voucherNumber = #{dto.deliveryNoteSap}</when>\n" +
    		"</script>")
	List<Map<String, Object>> findReconcilitionList(Page<Map<String, Object>> pages, @Param("dto") WhsSearchDTO dto);

}
