InvoiceBillOrderMapper.xml 16 KB
<?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.order.erp.mapper.order.InvoiceBillOrderMapper">
    <!--    <resultMap id="financeOrderResultMap" type="com.order.erp.domain.vo.order.FinanceOrderResultVO">
            &lt;!&ndash; 映射 OrderBaseInfoVO 的属性 &ndash;&gt;
            <result property="id" column="id"/>
           &lt;!&ndash; <result property="invoiceNo" column="invoice_no"/>
            <result property="checkNo" column="check_no"/>&ndash;&gt;
            <result property="customerCode" column="customer_code"/>
            <result property="projectNo" column="project_no"/>
            <result property="productionDepartment" column="production_department"/>
            <result property="innerNo" column="inner_no"/>
            <result property="smallPicUrl" column="small_pic_url"/>
            <result property="orderCount" column="order_count"/>
            <result property="productionDepartmentConsignTime" column="production_department_consign_time"/>
            <result property="orderHodTime" column="order_hod_time"/>

           &lt;!&ndash;发票invoice&ndash;&gt;
    &lt;!&ndash;        <association property="invoiceBillOrderDO" javaType="com.order.erp.domain.dto.order.InvoiceBillOrderDO">&ndash;&gt;
            <result property="id" column="id"/>
            <result property="invoiceNo" column="invoice_no"/>
            <result property="bgUrl" column="bg_url"/>
            <result property="backRefundDate" column="back_refund_date"/>
            <result property="deductAmount" column="deduct_amount"/>
            <result property="deductUrl" column="deduct_url"/>
            <result property="actualReceivableAmount" column="actual_receivable_amount"/>
            <result property="actualPayedAmount1" column="actual_payed_amount_1"/>
            <result property="actualPayedAmount2" column="actual_payed_amount_2"/>
            <result property="actualPayedAmount3" column="actual_payed_amount_3"/>
            <result property="otherAmount" column="other_amount"/>
            &lt;!&ndash;缺少备注字段&ndash;&gt;
            <result property="status" column="status"/>
    &lt;!&ndash;        </association>&ndash;&gt;


            &lt;!&ndash;生产科对账单&ndash;&gt;
    &lt;!&ndash;    <association property="producePaymentCheckBillOrderDO" javaType="com.order.erp.domain.dto.order.ProducePaymentCheckBillOrderDO">&ndash;&gt;
            <result property="id" column="checkId"/>
            <result property="checkNo" column="check_no"/>
            <result property="status" column="status"/>
            <result property="deductAmount" column="deduct_amount"/>
            <result property="deductDept" column="deduct_dept"/>
            <result property="departmentInvoiceStatus" column="department_invoice_status"/>
            <result property="actualPayedAmount3" column="actual_payed_amount3"/>
            <result property="actualPayedAmount2" column="actual_payed_amount2"/>
            <result property="actualPayedAmount1" column="actual_payed_amount1"/>
            <result property="actualPayedAmount" column="actual_payed_amount"/>
            <result property="payedDate" column="payed_date"/>
            &lt;!&ndash;缺少备注字段&ndash;&gt;
            <result property="deductUrl" column="deduct_url"/>
    &lt;!&ndash;    </association>&ndash;&gt;

            &lt;!&ndash;利润&ndash;&gt;
    &lt;!&ndash;        <association property="profitAnalysisInfo" javaType="com.order.erp.domain.vo.order.OrderProfitAnalysisVO">  &ndash;&gt;
            <result property="id" column="profitAnalysisId"/>
            <result property="customerPrice" column="customer_price"/>
            <result property="customerTotalPrice" column="customer_total_price"/>
            <result property="productionDepartmentPrice" column="production_department_price"/>
            <result property="productionDepartmentTotalPrice" column="production_department_total_price"/>
    &lt;!&ndash;        </association>&ndash;&gt;
        </resultMap>-->




    <select id="byConditionGetOrder"  parameterType="com.order.erp.domain.vo.order.InvoiceBillOrderQueryVO" resultType="com.order.erp.domain.vo.order.FinanceOrderResultVO">
        SELECT
        o.id AS id,
        --             o.invoice_no AS invoiceNo,  -- 注释字段没有问题
        --             o.check_no AS checkNo,  -- 注释字段没有问题
        o.customer_code AS customerCode,   -- 客户编码
        o.project_no AS projectNo,     -- 项目号
        o.production_department AS productionDepartment, -- 生产科
        o.inner_no AS innerNo,   -- 内部编号
        o.small_pic_url AS smallPicUrl,  -- 订单图片
        o.order_count AS orderCount,  -- 数量
        o.modele_lo AS modeleLo,
        o.production_department_consign_time AS productionDepartmentConsignTime,  -- 生产科拖货时间
        o.order_hod_time AS orderHodTime,  -- hod时间
        -- 利润信息
        a.id AS profitId,  -- 确保表别名 a 是正确的
        a.customer_price AS customerPrice,  -- 客户单价
        a.customer_total_price AS customerTotalPrice, -- 客户总价
        a.production_department_price AS productionDepartmentPrice,  -- 生产科单价
        a.production_department_total_price AS productionDepartmentTotalPrice,  -- 生产科总价
        -- 发票信息
        i.id AS invoiceId,
        i.invoice_no AS invoiceNo,  -- invoice编号
        i.bg_url AS invoiceBgUrl,  -- 报关单
        i.back_refund_date AS invoiceBackRefundDate,  -- 必须回款日期
        i.actual_refund_date AS invoiceActualRefundDate, -- 实际回款日期,前端不用获取
        i.deduct_url AS invoiceDeductUrl,  -- 扣款单
        i.actual_receivable_amount AS invoiceActualReceivableAmount, -- 实际应收金额
        i.actual_payed_amount1 AS invoiceActualPayedAmount1, -- 实际收款金额1
        i.actual_payed_amount2 AS invoiceActualPayedAmount2, -- 实际收款金额2
        i.actual_payed_amount3 AS invoiceActualPayedAmount3, -- 实际收款金额3
        i.other_amount AS invoiceOtherAmount,  -- 其他费用
        i.status AS invoiceStatus,  -- invoice状态
        i.deduct_amount AS invoiceDeductAmount, -- 扣款金额
        i.notes AS invoiceNotes,   -- invoice备注
        i.finish_status AS invoiceFinishStatus,
        -- 生产科付款信息
        p.id AS checkId,
        p.check_no AS checkNo,  -- checkNo编号
        p.status AS checkPaystatus,  -- checkNo状态
        p.deduct_amount AS checkDeductAmount, -- 扣款金额
        p.actual_payed_date AS checkActualPayedDate, -- 实际收款时间,前段不用获取
        p.deduct_dept AS checkDeductDept, -- 扣款部门
        p.department_invoice_status AS checkDepartmentInvoiceStatus, -- 发票状态
        p.actual_payed_amount3 AS checkActualPayedAmount3, -- 实际付款金额3
        p.actual_payed_amount2 AS checkActualPayedAmount2, -- 实际付款金额2
        p.actual_payed_amount1 AS checkActualPayedAmount1, -- 实际付款金额1
        p.actual_payed_amount AS checkActualPayedAmount,   -- 实际应付金额
        p.payed_date AS checkPayedDate,    -- 必须付款日期
        p.deduct_url AS checkDeductUrl,    -- 扣款单
        p.notes AS checkNotes,             -- checkNo备注
        p.invoice_url AS checkInvoiceUrl,   -- 发票
        p.finish_status AS checkFinishStatus
        FROM order_base_info o
        LEFT JOIN invoice_bill_order AS i
        ON o.id = i.order_id AND i.enable_flag = 10
        LEFT JOIN produce_payment_check_bill_order AS p
        ON o.id = p.order_id AND p.enable_flag = 10
        LEFT JOIN order_profit_analysis AS a
        ON o.id = a.order_id AND a.enable_flag = 10
        WHERE o.enable_flag = 10
        <if test="queryVO.invoiceNo != null and queryVO.invoiceNo != ''">
            AND i.invoice_no LIKE CONCAT('%', #{queryVO.invoiceNo}, '%')
        </if>
        <if test="queryVO.checkNo != null and queryVO.checkNo != ''">
            AND p.check_no LIKE CONCAT('%', #{queryVO.checkNo}, '%')
        </if>
        <if test="queryVO.invoiceStatus != null">
            AND o.invoice_status = #{queryVO.invoiceStatus}
        </if>
        <if test="queryVO.checkNoStatus != null">
            AND o.check_status = #{queryVO.checkNoStatus}
        </if>
        <if test="queryVO.invoiceFinishStatus != null">
            AND i.finish_status = #{queryVO.invoiceFinishStatus}
        </if>
        <if test="queryVO.checkFinishStatus != null">
            AND p.finish_status = #{queryVO.checkFinishStatus}
        </if>
        <if test="queryVO.customerCode != null and queryVO.customerCode.size > 0 ">
            AND o.customer_code IN
            <foreach collection="queryVO.customerCode" item="customerCode" open="(" separator="," close=")">
                #{customerCode}
            </foreach>
        </if>
        <if test="queryVO.projectNo != null and queryVO.projectNo.size > 0 ">
            AND o.project_no IN
            <foreach collection="queryVO.projectNo" item="projectNo" open="(" separator="," close=")">
                #{projectNo}
            </foreach>
        </if>
        <if test="queryVO.productionDepartment != null and queryVO.productionDepartment.size > 0 ">
            AND o.production_department IN
            <foreach collection="queryVO.productionDepartment" item="productionDepartment" open="(" separator="," close=")">
                #{productionDepartment}
            </foreach>
        </if>
        <if test="queryVO.innerNo != null and queryVO.innerNo.size > 0 ">
            AND o.inner_no IN
            <foreach collection="queryVO.innerNo" item="innerNo" open="(" separator="," close=")">
                #{innerNo}
            </foreach>
        </if>
        <if test="queryVO.customerPo != null and queryVO.customerPo != ''">
            AND o.customer_po = #{queryVO.customerPo}
        </if>
        <if test="queryVO.invoiceStartTime != null">
            AND i.create_time &gt;= #{queryVO.invoiceStartTime}
        </if>
        <if test="queryVO.invoiceEndTime != null">
            AND i.create_time &lt;= #{queryVO.invoiceEndTime}
        </if>
        <if test="queryVO.checkStartTime != null ">
            AND p.create_time &gt;= #{queryVO.checkStartTime}
        </if>
        <if test="queryVO.checkEndTime != null">
            AND p.create_time &lt;= #{queryVO.checkEndTime}
        </if>
        <if test="queryVO.createStartTime !=null">
            AND o.create_time &gt;= #{queryVO.createStartTime}
        </if>
        <if test="queryVO.createEndTime != null">
            AND o.create_time &lt;= #{queryVO.createEndTime}
        </if>
        <if test="queryVO.productionDepartmentConsignStartTime != null ">
            AND o.production_department_consign_time  &gt;= #{queryVO.productionDepartmentConsignStartTime}
        </if>
        <if test="queryVO.productionDepartmentConsignEndTime != null">
            AND o.production_department_consign_time &lt;= #{queryVO.productionDepartmentConsignEndTime}
        </if>
        <if test="queryVO.orderHodStartTime != null ">
            AND o.order_hod_time &gt;= #{queryVO.orderHodStartTime}
        </if>
        <if test="queryVO.orderHodEndTime != null">
            AND o.order_hod_time &lt;= #{queryVO.orderHodEndTime}
        </if>
        <if test="queryVO.trackerUserName != null and queryVO.trackerUserName != ''">
            AND o.create_by = #{queryVO.trackerUserName}
        </if>
        <if test="queryVO.businessUserName != null and queryVO.businessUserName != ''">
            AND o.business_person = #{queryVO.businessUserName}
        </if>
        ORDER BY o.id DESC

    </select>


    <select id="byQuerygetInvoiceIdAndCheckId"  parameterType="com.order.erp.domain.vo.order.InvoiceBillOrderQueryVO" resultType="com.order.erp.domain.vo.order.InvoiceIdAndCheckIdResultVO">
       SELECT
       o.id AS orderId,
       p.id AS checkId,
       i.id AS invoiceId
       FROM order_base_info o
       LEFT JOIN invoice_bill_order AS i
       ON o.id = i.order_id AND i.enable_flag = 10
       LEFT JOIN produce_payment_check_bill_order AS p
       ON o.id = p.order_id AND p.enable_flag = 10
       LEFT JOIN order_profit_analysis AS a
       ON o.id = a.order_id AND a.enable_flag = 10
       WHERE o.enable_flag = 10
        <if test="queryVO.invoiceNo != null and queryVO.invoiceNo != ''">
            AND i.invoice_no = #{queryVO.invoiceNo}
        </if>
        <if test="queryVO.checkNo != null and queryVO.checkNo != ''">
            AND p.check_no = #{queryVO.checkNo}
        </if>
        <if test="queryVO.invoiceStatus != null">
            AND o.invoice_status = #{queryVO.invoiceStatus}
        </if>
        <if test="queryVO.checkNoStatus != null">
            AND o.check_status = #{queryVO.checkNoStatus}
        </if>
        <if test="queryVO.invoiceFinishStatus != null">
            AND i.finish_status = #{queryVO.invoiceFinishStatus}
        </if>
        <if test="queryVO.checkFinishStatus != null">
            AND p.finish_status = #{queryVO.checkFinishStatus}
        </if>
        <if test="queryVO.customerCode != null and queryVO.customerCode.size > 0 ">
            AND o.customer_code IN
            <foreach collection="queryVO.customerCode" item="customerCode" open="(" separator="," close=")">
                #{customerCode}
            </foreach>
        </if>
        <if test="queryVO.projectNo != null and queryVO.projectNo.size > 0 ">
            AND o.project_no IN
            <foreach collection="queryVO.projectNo" item="projectNo" open="(" separator="," close=")">
                #{projectNo}
            </foreach>
        </if>
        <if test="queryVO.productionDepartment != null and queryVO.productionDepartment.size > 0 ">
            AND o.production_department IN
            <foreach collection="queryVO.productionDepartment" item="productionDepartment" open="(" separator="," close=")">
                #{productionDepartment}
            </foreach>
        </if>
        <if test="queryVO.innerNo != null and queryVO.innerNo.size > 0 ">
            AND o.inner_no IN
            <foreach collection="queryVO.innerNo" item="innerNo" open="(" separator="," close=")">
                #{innerNo}
            </foreach>
        </if>
        <if test="queryVO.customerPo != null and queryVO.customerPo != ''">
            AND o.customer_po = #{queryVO.customerPo}
        </if>
        <if test="queryVO.invoiceStartTime != null">
            AND i.create_time &gt;= #{queryVO.invoiceStartTime}
        </if>
        <if test="queryVO.invoiceEndTime != null">
            AND i.create_time &lt;= #{queryVO.invoiceEndTime}
        </if>
        <if test="queryVO.checkStartTime != null ">
            AND p.create_time &gt;= #{queryVO.checkStartTime}
        </if>
        <if test="queryVO.checkEndTime != null">
            AND p.create_time &lt;= #{queryVO.checkEndTime}
        </if>
        <if test="queryVO.createStartTime !=null">
            AND o.create_time &gt;= #{queryVO.createStartTime}
        </if>
        <if test="queryVO.createEndTime != null">
            AND o.create_time &lt;= #{queryVO.createEndTime}
        </if>
        <if test="queryVO.productionDepartmentConsignStartTime != null ">
            AND o.production_department_consign_time  &gt;= #{queryVO.productionDepartmentConsignStartTime}
        </if>
        <if test="queryVO.productionDepartmentConsignEndTime != null">
            AND o.production_department_consign_time &lt;= #{queryVO.productionDepartmentConsignEndTime}
        </if>
        <if test="queryVO.orderHodStartTime != null ">
            AND o.order_hod_time &gt;= #{queryVO.orderHodStartTime}
        </if>
        <if test="queryVO.orderHodEndTime != null">
            AND o.order_hod_time &lt;= #{queryVO.orderHodEndTime}
        </if>
        <if test="queryVO.trackerUserName != null and queryVO.trackerUserName != ''">
            AND o.create_by = #{queryVO.trackerUserName}
        </if>
        <if test="queryVO.businessUserName != null and queryVO.businessUserName != ''">
            AND o.business_person = #{queryVO.businessUserName}
        </if>

    </select>

</mapper>