<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.tydic.pfscext.dao.CheckBillInfoMapper">
    <resultMap id="BaseResultMap" type="com.tydic.pfscext.dao.po.ReconcilitionZmPO">
        <id column="RECONCILIATION_ID" property="reconcilitionId" jdbcType="BIGINT" />
        <result column="RECONCILIATION_CODE" property="reconcilitionCode" jdbcType="VARCHAR" />
        <result column="USER_ID" property="userId" jdbcType="VARCHAR" />
        <result column="USER_NAME" property="userName" jdbcType="VARCHAR" />
        <result column="RECONCILIATION_DATE" property="reconcilitionDate" jdbcType="TIMESTAMP" />
        <result column="SUP_ID " property="supId" jdbcType="BIGINT" />
        <result column="SUP_NAME" property="supName" jdbcType="VARCHAR" />
        <result column="NOTIFICATION_STATE" property="notificationState" jdbcType="INTEGER" />
    </resultMap>



    <insert id="insert" parameterType="com.tydic.pfscext.dao.po.ReconcilitionZmPO">

        insert into
        d_check_bill_info
        (RECONCILIATION_CODE,
        <if test="userId != null and userId != ''">
            USER_ID,
        </if>
        USER_NAME,
        RECONCILIATION_DATE,
        SUP_ID,
        SUP_NAME,
        NOTIFICATION_STATE
        )
        values
        (
        #{reconcilitionCode,jdbcType=VARCHAR},
        <if test="userId != null and userId != ''">
            #{userId,jdbcType=VARCHAR},
        </if>
        #{userName,jdbcType=VARCHAR},
        #{reconcilitionDate},
        #{supId,jdbcType=BIGINT},
        #{supName,jdbcType=VARCHAR},
        #{notificationState,jdbcType=INTEGER}
        )
    </insert>

    <!--根据Code查数据-->
    <select id="selectByCode" resultType="com.tydic.pfscext.dao.po.ReconcilitionZmPO">
        select
        RECONCILIATION_ID as reconcilitionId,
        RECONCILIATION_CODE as reconcilitionCode,
        USER_ID as userId,
        USER_NAME as userName,
        RECONCILIATION_DATE as reconcilitionDate,
        SUP_ID as supId,
        SUP_NAME as supName,
        NOTIFICATION_STATE as notificationState
        from
        d_check_bill_info
        where
        RECONCILIATION_CODE= #{reconcilitionCode,jdbcType=VARCHAR}
    </select>

    <select id="queryReconcilitionDetails" resultType="com.tydic.pfscext.dao.po.ReconcilitionDetailsRspPO"
            parameterType="com.tydic.pfscext.dao.po.ReconcilitionDetailsReqPO">
        select
        dcbi.RECONCILIATION_CODE as reconciliationCode,
        dcbi.SUP_NAME as supName,
        dcbi.RECONCILIATION_DATE as reconcilitionDate,
        dcbi.USER_NAME as userName,

        dsoi.bill_confirm as billConfirm,
        dsoi.ORDER_STATUS as  orderStatus,

        dppoi.PURCHASE_ORDER_CODE as purchaseOrderCode,
        dppoi.ORDER_DATE as  orderDate,
        dppoi.RECV_DATE as  recvDate,
        dppoi.EXT_ORDER_ID as extOrderId,
        dppoi.PURCHASE_PROJECT_ID as purchaseProjectId,
        dppoi.ORDER_AMT as orderAmt,
        dppoi.RECONCILIATION_STATUS as  reconciliationStatus,
        dppoi.ERP_ORDER as erpOrder,
        dppoi.ERP_ORDER_NO as erpOrderNo,
        dppoi.STOCK_ORG_ID as stockOrgId,
        dppoi.STOCK_ORG_NAME as stockOrgName,
        dppoi.USE_DEPARTMENT_ID as useDepartmentId,
        dppoi.USE_DEPARTMENT_Name as  useDepartmentName
        from
        d_pay_purchase_order_info dppoi,
        d_check_bill_info dcbi,
        d_sale_order_info dsoi
        where dppoi.RECONCILIATION_CODE=dcbi.RECONCILIATION_CODE
        and dppoi.INSPECTION_ID = dsoi.INSPECTION_ID
        <if test="reconciliationCode != null and reconciliationCode != ''">
            AND  dcbi.RECONCILIATION_CODE = #{reconciliationCode} /* 对账单号 */
        </if>
        <if test="reconciliationStatus != null and reconciliationStatus != ''">
            AND  dppoi.RECONCILIATION_STATUS = #{reconciliationStatus} /* 上游对账 */
        </if>
        <if test="orderStatus2 != null and orderStatus2 != ''">
            AND  dppoi.ORDER_STATUS_2 NOT IN (#{orderStatus2}) /* 上游订单状态，是否验收 */
        </if>

    </select>

    <!--对账结果列表查询-->
    <select id="queryReconcilitionList" resultType="com.tydic.pfscext.api.zm.bo.RqeconciliationListRspBO"
            parameterType="com.tydic.pfscext.api.zm.bo.QueryRqeconciliationListReqBO">
        select
        DISTINCT
        b.RECONCILIATION_CODE as reconcilitionCode,
        b.USER_NAME as userName,
        b.RECONCILIATION_DATE as reconcilitionDate,
        b.SUP_NAME as supName
        from
        d_pay_purchase_order_info a,
        d_check_bill_info b,
        d_sale_order_info c
        where
        a.RECONCILIATION_CODE=b.RECONCILIATION_CODE
        and a.ORDER_ID=c.ORDER_ID
        <if test="condition.reconciliationCode != null and condition.reconciliationCode != ''">
            and b.RECONCILIATION_CODE =
            #{condition.reconciliationCode,jdbcType=VARCHAR}
        </if>
        <if test="condition.supplierNo != null and condition.supplierNo != ''">
            and a.SUPPLIER_NO =
            #{condition.supplierNo,jdbcType=BIGINT}
        </if>

        <if test="condition.purchaseOrderCode != null and condition.purchaseOrderCode != ''">
            and a.PURCHASE_ORDER_CODE =
            #{condition.purchaseOrderCode,jdbcType=VARCHAR}
        </if>

        <if test="condition.orderDateStart != null">
            <![CDATA[ and a.ORDER_DATE >= #{condition.orderDateStart,jdbcType=TIMESTAMP}]]>
        </if>
        <if test="condition.orderDateEnd != null">
            <![CDATA[ and a.ORDER_DATE <= #{condition.orderDateEnd,jdbcType=TIMESTAMP}]]>
        </if>

        <if test="condition.ReconcilitionDateStart != null">
            <![CDATA[ and b.RECONCILIATION_DATE >= #{condition.ReconcilitionDateStart,jdbcType=TIMESTAMP}]]>
        </if>
        <if test="condition.ReconcilitionDateEnd != null">
            <![CDATA[ and b.RECONCILIATION_DATE <= #{condition.ReconcilitionDateEnd,jdbcType=TIMESTAMP}]]>
        </if>

        <if test="condition.extOrderId != null and condition.extOrderId != ''">
            and a.EXT_ORDER_ID =
            #{condition.extOrderId,jdbcType=VARCHAR}
        </if>
        <if test="condition.erpOrder != null and condition.erpOrder != ''">
            and a.ERP_ORDER =
            #{condition.erpOrder,jdbcType=VARCHAR}
        </if>
        <if test="condition.erpOrderNo != null and condition.erpOrderNo != ''">
            and a.ERP_ORDER_NO =
            #{condition.erpOrderNo,jdbcType=VARCHAR}
        </if>
        <if test="condition.stockOrgId != null and condition.stockOrgId != ''">
            and a.STOCK_ORG_ID =
            #{condition.stockOrgId,jdbcType=VARCHAR}
        </if>
        <if test="condition.stockOrgName != null and condition.stockOrgName != ''">
            and a.STOCK_ORG_NAME =
            #{condition.stockOrgName,jdbcType=VARCHAR}
        </if>
        <if test="condition.useDepartmentId != null and condition.useDepartmentId != ''">
            and a.USE_DEPARTMENT_ID =
            #{condition.useDepartmentId,jdbcType=VARCHAR}
        </if>
        <if test="condition.useDepartmentName != null and condition.useDepartmentName != ''">
            and a.USE_DEPARTMENT_Name =
            #{condition.useDepartmentName,jdbcType=VARCHAR}
        </if>
        <if test="condition.purchaseProjectId != null and condition.purchaseProjectId != ''">
            and a.PURCHASE_PROJECT_ID =
            #{condition.purchaseProjectId,jdbcType=VARCHAR}
        </if>

        <if test="condition.billConfirm != null and condition.billConfirm != ''">
            and c.BILL_CONFIRM =<!-- 下游对账状态-->
            #{condition.billConfirm,jdbcType=VARCHAR}
        </if>
        <if test="condition.orderStatus != null and condition.orderStatus != ''">
            and c.ORDER_STATUS =<!-- 下游开票状态-->
            #{condition.orderStatus,jdbcType=CHAR}
        </if>
        order by RECONCILIATION_DATE desc
    </select>


    <select id="queryNotiReconcilitionList" resultType="com.tydic.pfscext.api.zm.bo.QueryNotiRqeconciliationListRspBO"
            parameterType="com.tydic.pfscext.api.zm.bo.QueryNotiRqeconciliationListReqBO">
        select
        DISTINCT
        b.RECONCILIATION_CODE as reconcilitionCode,
        b.USER_NAME as userName,
        b.RECONCILIATION_DATE as reconcilitionDate,
        b.SUP_NAME as supName,
        b.SUP_ID as supplierNo
        from
        d_pay_purchase_order_info a,
        d_check_bill_info b,
        d_sale_order_info c
        where
        a.RECONCILIATION_CODE=b.RECONCILIATION_CODE
        and a.ORDER_ID=c.ORDER_ID
        and b.NOTIFICATION_STATE in ('02','03')
        <!--        <if test="condition.reconciliationCode != null and condition.reconciliationCode != ''">-->
        <!--            and b.RECONCILIATION_CODE =-->
        <!--            #{condition.reconciliationCode,jdbcType=VARCHAR}-->
        <!--        </if>-->
        <!--        <if test="condition.purchaseOrderCode != null and condition.purchaseOrderCode != ''">-->
        <!--            and a.PURCHASE_ORDER_CODE =-->
        <!--            #{condition.purchaseOrderCode,jdbcType=VARCHAR}-->
        <!--        </if>-->

        <!--        <if test="condition.orderDateStart != null">-->
        <!--            <![CDATA[ and a.ORDER_DATE >= #{condition.orderDateStart,jdbcType=TIMESTAMP}]]>-->
        <!--        </if>-->
        <!--        <if test="condition.orderDateEnd != null">-->
        <!--            <![CDATA[ and a.ORDER_DATE <= #{condition.orderDateEnd,jdbcType=TIMESTAMP}]]>-->
        <!--        </if>-->

        <!--        <if test="condition.ReconcilitionDateStart != null">-->
        <!--            <![CDATA[ and b.RECONCILIATION_DATE >= #{condition.ReconcilitionDateStart,jdbcType=TIMESTAMP}]]>-->
        <!--        </if>-->
        <!--        <if test="condition.ReconcilitionDateEnd != null">-->
        <!--            <![CDATA[ and b.RECONCILIATION_DATE <= #{condition.ReconcilitionDateEnd,jdbcType=TIMESTAMP}]]>-->
        <!--        </if>-->

        <!--        <if test="condition.extOrderId != null and condition.extOrderId != ''">-->
        <!--            and a.EXT_ORDER_ID =-->
        <!--            #{condition.extOrderId,jdbcType=VARCHAR}-->
        <!--        </if>-->
        <!--        <if test="condition.erpOrder != null and condition.erpOrder != ''">-->
        <!--            and a.ERP_ORDER =-->
        <!--            #{condition.erpOrder,jdbcType=VARCHAR}-->
        <!--        </if>-->
        <!--        <if test="condition.erpOrderNo != null and condition.erpOrderNo != ''">-->
        <!--            and a.ERP_ORDER_NO =-->
        <!--            #{condition.erpOrderNo,jdbcType=VARCHAR}-->
        <!--        </if>-->
        <!--        <if test="condition.stockOrgId != null and condition.stockOrgId != ''">-->
        <!--            and a.STOCK_ORG_ID =-->
        <!--            #{condition.stockOrgId,jdbcType=VARCHAR}-->
        <!--        </if>-->
        <!--        <if test="condition.stockOrgName != null and condition.stockOrgName != ''">-->
        <!--            and a.STOCK_ORG_NAME =-->
        <!--            #{condition.stockOrgName,jdbcType=VARCHAR}-->
        <!--        </if>-->
        <!--        <if test="condition.useDepartmentId != null and condition.useDepartmentId != ''">-->
        <!--            and a.USE_DEPARTMENT_ID =-->
        <!--            #{condition.useDepartmentId,jdbcType=VARCHAR}-->
        <!--        </if>-->
        <!--        <if test="condition.useDepartmentName != null and condition.useDepartmentName != ''">-->
        <!--            and a.USE_DEPARTMENT_Name =-->
        <!--            #{condition.useDepartmentName,jdbcType=VARCHAR}-->
        <!--        </if>-->
        <!--        <if test="condition.purchaseProjectId != null and condition.purchaseProjectId != ''">-->
        <!--            and a.PURCHASE_PROJECT_ID =-->
        <!--            #{condition.purchaseProjectId,jdbcType=VARCHAR}-->
        <!--        </if>-->

        <!--        <if test="condition.billConfirm != null and condition.billConfirm != ''">-->
        <!--            and c.BILL_CONFIRM =&lt;!&ndash; 下游对账状态&ndash;&gt;-->
        <!--            #{condition.billConfirm,jdbcType=VARCHAR}-->
        <!--        </if>-->
        <!--        <if test="condition.orderStatus != null and condition.orderStatus != ''">-->
        <!--            and c.ORDER_STATUS =&lt;!&ndash; 下游开票状态&ndash;&gt;-->
        <!--            #{condition.orderStatus,jdbcType=CHAR}-->
        <!--        </if>-->
        order BY b.RECONCILIATION_DATE desc
    </select>

    <update id="updateByPrimaryKey" parameterType="com.tydic.pfscext.dao.po.ReconcilitionZmPO">
        update d_check_bill_info
        set NOTIFICATION_STATE = #{notificationState,jdbcType=VARCHAR}
        where
        RECONCILIATION_CODE =
        #{reconcilitionCode,jdbcType=VARCHAR}
    </update>

    <select id="selectCount" resultType="java.lang.Integer">
        select
        count(*)
        from
        d_check_bill_info
        where
        SUP_NAME = #{supName,jdbcType=VARCHAR}

        <if test="date1 != null">
            <![CDATA[ and RECONCILIATION_DATE >= #{date1,jdbcType=TIMESTAMP}]]>
        </if>
        <if test="date2 != null">
            <![CDATA[ and RECONCILIATION_DATE <= #{date2,jdbcType=TIMESTAMP}]]>
        </if>

    </select>
</mapper>