ReceiptMapper.xml 5.72 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="cn.iocoder.yudao.module.wealth.dal.mysql.receipt.ReceiptMapper">
    <update id="updateReceiptNewFieldBatch">
        UPDATE ecw_receipt
        <trim prefix="set" suffixOverrides=",">
            <trim prefix="receipt_item_status=case" suffix="end,">
                <foreach collection="list" item="i" index="index">
                        when id=#{i.id} then #{i.receiptItemStatus}
                </foreach>
            </trim>
            <trim prefix="invoicing_status=case" suffix="end,">
                <foreach collection="list" item="i" index="index">
                        when id=#{i.id} then #{i.invoicingStatus}
                </foreach>
            </trim>
            <trim prefix="invoice_data_status=case" suffix="end,">
                <foreach collection="list" item="i" index="index">
                    when id=#{i.id} then #{i.invoiceDataStatus}
                </foreach>
            </trim>
        </trim>
        where
        <foreach collection="list" separator="or" item="i" index="index">
            id = #{i.id}
        </foreach>
    </update>

    <select id="getReceiptBackPage" resultType="cn.iocoder.yudao.module.wealth.vo.receipt.ReceiptBackVO">
        <!--添加关联订单和应收款表的关联-->
        SELECT
        er.*
        FROM ecw_receipt er
        <if test="query.numberNo != null and query.numberNo != ''">
            INNER JOIN (SELECT receipt_id,order_id FROM ecw_receivable GROUP BY receipt_id, order_id ) AS rb ON rb.receipt_id = er.id
            LEFT JOIN ecw_order o ON o.order_id=rb.order_id AND o.deleted=0
        </if>
        WHERE er.deleted = 0
        <include refid="pageCondition"/>
        <if test="query.numberNo != null and query.numberNo != ''">
            GROUP BY er.receipt_no
        </if>
        LIMIT #{start}, #{size}
    </select>
    <select id="getOrderInfoByReceiptId"
            resultType="cn.iocoder.yudao.module.wealth.vo.receipt.ReceiptRelationOrderInfoVO">
        SELECT
        o.order_no AS orderNo,
        o.tidan_no AS tidanNo,
        o.order_id AS orderId,
        o.status
        FROM ecw_receivable er
        LEFT JOIN ecw_order o ON o.order_id=er.order_id
        WHERE er.deleted= 0 AND er.receipt_id = #{id}
        GROUP BY o.order_id
    </select>
    <select id="countReceiptBackPage" resultType="java.lang.Integer">
        SELECT count(1)
        FROM ecw_receipt er
        <if test="query.numberNo != null and query.numberNo != ''">
            INNER JOIN (SELECT receipt_id,order_id FROM ecw_receivable GROUP BY receipt_id, order_id ) AS rb ON rb.receipt_id = er.id
            LEFT JOIN ecw_order o ON o.order_id=rb.order_id AND o.deleted=0
        </if>
        WHERE er.deleted = 0
        <include refid="pageCondition"/>
        <if test="query.numberNo != null and query.numberNo != ''">
            GROUP BY er.receipt_no
        </if>
    </select>
    <sql id="pageCondition">
        <if test="query.receiptItemStatus != null">
            <if test="query.receiptItemStatus.size() == 1">
                AND er.`receipt_item_status` = #{query.receiptItemStatus[0]}
            </if>
            <if test="query.receiptItemStatus.size() > 1">
                AND er.`receipt_item_status` IN
                <foreach collection="query.receiptItemStatus" item="item" open="(" separator="," close=")">
                    #{item}
                </foreach>
            </if>
        </if>
        <if test="query.invoicingStatus != null">
            <if test="query.invoicingStatus.size() == 1">
                AND er.`invoicing_status` = #{query.invoicingStatus[0]}
            </if>
            <if test="query.invoicingStatus.size() > 1">
                AND er.`invoicing_status` IN
                <foreach collection="query.invoicingStatus" item="item" open="(" separator="," close=")">
                    #{item}
                </foreach>
            </if>
        </if>
        <if test="query.invoiceDataStatus != null">
            <if test="query.invoiceDataStatus.size() == 1">
                AND er.`invoice_data_status` = #{query.invoiceDataStatus[0]}
            </if>
            <if test="query.invoiceDataStatus.size() > 1">
                AND er.`invoice_data_status` IN
                <foreach collection="query.invoiceDataStatus" item="item" open="(" separator="," close=")">
                    #{item}
                </foreach>
            </if>
        </if>
        <if test="query.receiptNo != null">
            AND er.`receipt_no` = #{query.receiptNo}
        </if>
        <if test="query.customerId != null">
            AND er.`customer_id` = #{query.customerId}
        </if>
        <if test="query.customerName != null">
            AND er.`customer_name` = #{query.customerName}
        </if>
        <if test="query.state != null">
            AND er.`state` = #{query.state}
        </if>
        <if test="query.salesmanId != null">
            AND (er.`salesman_id` = #{query.salesmanId} or er.`customer_id` in(select cus.id from ecw_customer cus where
            cus.is_customer_service_confirmed = 1 and cus.customer_service = #{query.salesmanId} ))
        </if>
        <if test="query.salesmanName != null">
            AND er.`salesman_name` = #{query.salesmanName}
        </if>
        <if test="query.beginCreateTime != null and query.endCreateTime != null ">
            AND er.`create_time` between #{query.beginCreateTime} and #{query.endCreateTime}
        </if>
        <if test="query.numberNo != null and query.numberNo != '' ">
            AND (o.order_no = #{query.numberNo} OR o.tidan_no = #{query.numberNo} OR o.container_number = #{query.numberNo})
        </if>
    </sql>
</mapper>