cloudroam
2025-01-09 9628b3362c1624dd373c1ab1d7a55e72104b972e
src/main/resources/mapper/payment/OrderMapper.xml
@@ -7,6 +7,7 @@
        where status_backend = 'SEND' and partner_id is not null
    </update>
    <select id="getPartnerOrderReceive" resultType="com.mzl.flower.entity.payment.Order">
        select * from t_order t where status_backend = 'SEND' and partner_id is not null
    </select>
@@ -14,6 +15,7 @@
    <select id="getOrderStatusCount" resultType="com.mzl.flower.dto.response.payment.OrderStatusCountDTO">
        SELECT q.status_backend value, count(1) orderCount
        FROM t_order q
        left join t_user u on q.create_by = u.id
        WHERE q.deleted = 0
        <if test="condition.orderNo != null and condition.orderNo != ''">
            AND q.order_no LIKE concat('%', #{condition.orderNo},'%')
@@ -35,17 +37,23 @@
        <if test="condition.statusBackend != null and condition.statusBackend != ''">
            AND q.status_backend = #{condition.statusBackend}
        </if>
        <if test="condition.startDate != null">
            AND q.payment_time &gt;= #{condition.startDate}
        </if>
        <if test="condition.endDate != null">
            AND q.payment_time &lt;= #{condition.endDate}
        </if>
<!--        <if test="condition.startDate != null">-->
<!--            AND q.payment_time &gt;= #{condition.startDate}-->
<!--        </if>-->
<!--        <if test="condition.endDate != null">-->
<!--            AND q.payment_time &lt;= #{condition.endDate}-->
<!--        </if>-->
<!--        <if test="condition.createStartDate != null">-->
<!--            AND q.create_time &gt;= #{condition.createStartDate}-->
<!--        </if>-->
<!--        <if test="condition.createEndDate != null">-->
<!--            AND q.create_time &lt;= #{condition.createEndDate}-->
<!--        </if>-->
        <if test="condition.createStartDate != null">
            AND q.create_time &gt;= #{condition.createStartDate}
            AND q.payment_time &gt;= #{condition.createStartDate}
        </if>
        <if test="condition.createEndDate != null">
            AND q.create_time &lt;= #{condition.createEndDate}
            AND q.payment_time &lt; #{condition.createEndDate}
        </if>
        <if test="condition.partnerId != null">
            AND q.partner_id = #{condition.partnerId}
@@ -57,9 +65,10 @@
            AND exists(
                select 1 from t_order_item oi
                where oi.order_id = q.id
                and oi.status = 'reduce'
                and (oi.status = 'reduce' or oi.status = 'abnormal')
            )
            and q.transfer_id is null
            and q.status in ('COLLECTION', 'SEND','RECEIVE')
        </if>
        <if test="condition.billId != null and condition.billId != ''">
            AND q.bill_id = #{condition.billId}
@@ -70,6 +79,22 @@
                where oi.order_id = q.id
                and oi.flower_name LIKE concat('%', #{condition.flowerName},'%')
            )
        </if>
        <if test="condition.warehouseLocationCode != null and condition.warehouseLocationCode != ''">
            AND q.warehouse_location_code LIKE concat('%', #{condition.warehouseLocationCode},'%')
        </if>
        <if test="condition.createName != null and condition.createName != ''">
            AND u.nick_name LIKE concat('%', #{condition.createName},'%')
        </if>
        <if test="condition.province != null and condition.province != ''">
            AND q.customer_province LIKE concat('%', #{condition.province},'%')
        </if>
        <if test="condition.city != null and condition.city != ''">
            AND q.customer_city LIKE concat('%', #{condition.city},'%')
        </if>
        <if test="condition.region != null and condition.region != ''">
            AND q.customer_region LIKE concat('%', #{condition.region},'%')
        </if>
        GROUP BY q.status_backend
    </select>
@@ -86,6 +111,15 @@
        WHERE q.deleted = 0
        <if test="condition.orderNo != null and condition.orderNo != ''">
            AND q.order_no LIKE concat('%', #{condition.orderNo},'%')
        </if>
        <if test="condition.province != null and condition.province != ''">
            AND q.customer_province LIKE concat('%', #{condition.province},'%')
        </if>
        <if test="condition.city != null and condition.city != ''">
            AND q.customer_city LIKE concat('%', #{condition.city},'%')
        </if>
        <if test="condition.region != null and condition.region != ''">
            AND q.customer_region LIKE concat('%', #{condition.region},'%')
        </if>
        <if test="condition.customerAddress != null and condition.customerAddress != ''">
            AND q.customer_address LIKE concat('%', #{condition.customerAddress},'%')
@@ -108,17 +142,24 @@
        <if test="condition.statusBackend != null and condition.statusBackend != ''">
            AND q.status_backend = #{condition.statusBackend}
        </if>
        <if test="condition.startDate != null">
            AND q.payment_time &gt;= #{condition.startDate}
        </if>
        <if test="condition.endDate != null">
            AND q.payment_time &lt;= #{condition.endDate}
        </if>
<!--        <if test="condition.startDate != null">-->
<!--            AND q.payment_time &gt;= #{condition.startDate}-->
<!--        </if>-->
<!--        <if test="condition.endDate != null">-->
<!--            AND q.payment_time &lt;= #{condition.endDate}-->
<!--        </if>-->
<!--        <if test="condition.createStartDate != null">-->
<!--            AND q.create_time &gt;= #{condition.createStartDate}-->
<!--        </if>-->
<!--        <if test="condition.createEndDate != null">-->
<!--            AND q.create_time &lt;= #{condition.createEndDate}-->
<!--        </if>-->
        <!-- 修改查询日期对应的的创建时间为支付时间 2024-10-12-->
        <if test="condition.createStartDate != null">
            AND q.create_time &gt;= #{condition.createStartDate}
            AND q.payment_time  &gt;= #{condition.createStartDate}
        </if>
        <if test="condition.createEndDate != null">
            AND q.create_time &lt;= #{condition.createEndDate}
            AND q.payment_time &lt; #{condition.createEndDate}
        </if>
        <if test="condition.partnerId != null">
            AND q.partner_id = #{condition.partnerId}
@@ -133,7 +174,7 @@
                and (oi.status = 'reduce' or oi.status = 'abnormal')
            )
            and q.transfer_id is null
            and q.status in ('COLLECTION', 'SEND')
            and q.status in ('COLLECTION', 'SEND','RECEIVE')
        </if>
        <if test="condition.billId != null and condition.billId != ''">
            AND q.bill_id = #{condition.billId}
@@ -147,6 +188,36 @@
        </if>
        <if test="condition.warehouseLocationCode != null and condition.warehouseLocationCode != ''">
            AND q.warehouse_location_code LIKE concat('%', #{condition.warehouseLocationCode},'%')
        </if>
        <if test="condition.createName != null and condition.createName != ''">
            AND u.nick_name LIKE concat('%', #{condition.createName},'%')
        </if>
        <if test="condition.abnormalOrderStatus != null and condition.abnormalOrderStatus != '' and condition.abnormalOrderStatus == 'UN_PROCESSED'">
            AND q.id in (
                select oi.order_id
                from t_order_item oi
                left join t_order o
                on oi.order_id=o.id
                where oi.status in ('abnormal','reduce','lack','back')
                and  o.transfer_id is null
                and o.status in ('COLLECTION','SEND','RECEIVE')
            )
        </if>
        <if test="condition.abnormalOrderStatus != null and condition.abnormalOrderStatus != '' and condition.abnormalOrderStatus == 'PROCESSED'">
            AND q.id in (
                select order_id from t_order_item oi where oi.status in ('abnormal','reduce','lack','back')
            )
            and q.id not in(
                select oi.order_id
                from t_order_item oi
                left join t_order o
                on oi.order_id=o.id
                where oi.status in ('abnormal','reduce','lack','back')
                and  o.transfer_id is null
                and o.status in ('COLLECTION','SEND','RECEIVE')
            )
        </if>
        ORDER BY q.create_time desc, q.payment_time desc
@@ -176,18 +247,18 @@
        <if test="condition.statusBackend != null and condition.statusBackend != ''">
            AND q.status_backend = #{condition.statusBackend}
        </if>
        <if test="condition.startDate != null">
            AND q.payment_time &gt;= #{condition.startDate}
        </if>
        <if test="condition.endDate != null">
            AND q.payment_time &lt;= #{condition.endDate}
        </if>
        <if test="condition.createStartDate != null">
            AND q.create_time &gt;= #{condition.createStartDate}
            AND q.payment_time &gt;= #{condition.createStartDate}
        </if>
        <if test="condition.createEndDate != null">
            AND q.create_time &lt;= #{condition.createEndDate}
            AND q.payment_time &lt; #{condition.createEndDate}
        </if>
<!--        <if test="condition.createStartDate != null">-->
<!--            AND q.create_time &gt;= #{condition.createStartDate}-->
<!--        </if>-->
<!--        <if test="condition.createEndDate != null">-->
<!--            AND q.create_time &lt;= #{condition.createEndDate}-->
<!--        </if>-->
        <if test="condition.partnerId != null">
            AND q.partner_id = #{condition.partnerId}
        </if>
@@ -277,13 +348,14 @@
    </select>
    <select id="selectOrderExportList" resultType="com.mzl.flower.dto.response.payment.OrderListExportDTO">
        SELECT q.order_no,q.create_time,q.customer,q.customer_tel,q.total_amount,q.status_backend,q.partner_name,q.warehouse_location_code,q.remarks,
        SELECT q.order_no,q.create_time,q.customer,q.customer_tel,q.total_amount,q.status_backend,q.partner_name,q.warehouse_location_code,q.remarks,q.logistics_company_code,
               u.nick_name createName ,
               code.label as statusBackendStr,
               code2.label as specialNeedsStr,
               CONCAT(q.customer_province, q.customer_city,q.customer_region,q.customer_address) AS customerAddress,
               (select Sum(COALESCE(oi.num, 0) * COALESCE(oi.supplier_price, 0))
        from t_order_item oi where order_id = q.id) supplierAmount
        from t_order_item oi where order_id = q.id) supplierAmount,
        (select Sum(oi.num) from t_order_item oi where order_id = q.id) saleNum
        FROM t_order q
        left join t_user u on q.create_by = u.id
        LEFT JOIN (SELECT ct.label, ct.value from t_code_value ct where type_code = 'ORDER_STATUS_BACKEND') code ON q.status_backend = code.value
@@ -317,7 +389,7 @@
            AND q.payment_time &gt;= #{condition.startDate}
        </if>
        <if test="condition.endDate != null">
            AND q.payment_time &lt;= #{condition.endDate}
            AND q.payment_time &lt; #{condition.endDate}
        </if>
        <if test="condition.createStartDate != null">
            AND q.create_time &gt;= #{condition.createStartDate}
@@ -338,7 +410,7 @@
            and (oi.status = 'reduce' or oi.status = 'abnormal')
            )
            and q.transfer_id is null
            and q.status in ('COLLECTION', 'SEND')
            and q.status in ('COLLECTION', 'SEND','RECEIVE')
        </if>
        <if test="condition.billId != null and condition.billId != ''">
            AND q.bill_id = #{condition.billId}
@@ -355,4 +427,197 @@
        </if>
        ORDER BY q.create_time desc, q.payment_time desc
    </select>
    <select id="getOrderSaleAmount" resultType="java.math.BigDecimal">
        SELECT sum(o.payment_amount)
        FROM t_order o
        WHERE o.deleted=0
        and o.status_backend not in ('PENDING','CANCEL','REFUND')
        <if test="startTime != null">
            and o.create_time &gt; #{startTime}
        </if>
        <if test="endTime != null">
            and o.create_time &lt;= #{endTime}
        </if>
    </select>
<!--    获取所有的订单数据,以及时间数据-->
    <select id="selectAllDateList" resultType="com.mzl.flower.entity.payment.Order">
        SELECT t.id,t.payment_time,
               CASE
                   WHEN t.payment_time > DATE(t.payment_time) + INTERVAL 17 HOUR THEN DATE(t.payment_time) + INTERVAL 1 DAY
                   ELSE DATE(t.payment_time)
                   END AS payment_date,
               t.create_time,
               CASE
                   WHEN t.create_time > DATE(t.create_time) + INTERVAL 17 HOUR THEN DATE(t.create_time) + INTERVAL 1 DAY
                   ELSE DATE(t.create_time)
                   END AS create_date
        FROM t_order t
        order by t.create_time desc
    </select>
    <select id="getAbnormalOrderStatusCount"
            resultType="com.mzl.flower.dto.response.payment.OrderStatusCountDTO">
        SELECT 'UN_PROCESSED' as value, count(1) orderCount
        FROM t_order q
        left join t_user u on q.create_by = u.id
        WHERE q.deleted = 0
        <include refid="getAbnormalOrderStatusCount_condition"></include>
        AND q.id in (
            select oi.order_id
            from t_order_item oi
            left join t_order o
            on oi.order_id=o.id
            where oi.status in ('abnormal','reduce','lack','back')
            and  o.transfer_id is null
            and o.status in ('COLLECTION','SEND','RECEIVE')
        )
        union
        SELECT 'PROCESSED' as value, count(1) orderCount
        FROM t_order q
        left join t_user u on q.create_by = u.id
        WHERE q.deleted = 0
        <include refid="getAbnormalOrderStatusCount_condition"></include>
        AND q.id in (
            select order_id from t_order_item oi where oi.status in ('abnormal','reduce','lack','back')
        )
        and q.id not in(
            select oi.order_id
            from t_order_item oi
            left join t_order o
            on oi.order_id=o.id
            where oi.status in ('abnormal','reduce','lack','back')
            and  o.transfer_id is null
            and o.status in ('COLLECTION','SEND','RECEIVE')
        )
    </select>
    <select id="getAbnormalOrderStatusCount2"
            resultType="com.mzl.flower.dto.response.payment.OrderStatusCountDTO">
        SELECT 'UN_PROCESSED' as value, count(1) orderCount
        FROM t_order q
        left join t_user u on q.create_by = u.id
        WHERE q.deleted = 0
        <include refid="getAbnormalOrderStatusCount_condition"></include>
        AND exists(
        select 1 from t_order_item oi
        where oi.order_id = q.id
        and oi.status in ('abnormal','reduce','lack','back')
        )
        and q.transfer_id is null
        and q.status in ('COLLECTION', 'SEND','RECEIVE')
        union
        SELECT 'PROCESSED' as value, count(1) orderCount
        FROM t_order q
        left join t_user u on q.create_by = u.id
        WHERE q.deleted = 0
        <include refid="getAbnormalOrderStatusCount_condition"></include>
        AND  exists(
        select 1 from t_order_item oi
        where oi.order_id = q.id
        and oi.status in ('abnormal','reduce','lack','back')
        )
        AND not exists(
        select 1 from t_order_item oi
        where oi.order_id = q.id
        and oi.status in ('abnormal','reduce','lack','back')
        and q.transfer_id is null
        and q.status in ('COLLECTION', 'SEND','RECEIVE')
        )
    </select>
    <sql id="getAbnormalOrderStatusCount_condition">
        <if test="condition.orderNo != null and condition.orderNo != ''">
            AND q.order_no LIKE concat('%', #{condition.orderNo},'%')
        </if>
        <if test="condition.customerAddress != null and condition.customerAddress != ''">
            AND q.customer_address LIKE concat('%', #{condition.customerAddress},'%')
        </if>
        <if test="condition.customer != null and condition.customer != ''">
            AND (q.customer LIKE concat('%', #{condition.customer},'%')
            or q.customer_tel LIKE concat('%', #{condition.customer},'%')
            )
        </if>
        <if test="condition.createBy != null and condition.createBy != ''">
            AND q.create_by = #{condition.createBy}
        </if>
        <if test="condition.status != null and condition.status != ''">
            AND q.status = #{condition.status}
        </if>
        <if test="condition.statusBackend != null and condition.statusBackend != ''">
            AND q.status_backend = #{condition.statusBackend}
        </if>
        <!--        <if test="condition.startDate != null">-->
        <!--            AND q.payment_time &gt;= #{condition.startDate}-->
        <!--        </if>-->
        <!--        <if test="condition.endDate != null">-->
        <!--            AND q.payment_time &lt;= #{condition.endDate}-->
        <!--        </if>-->
        <!--        <if test="condition.createStartDate != null">-->
        <!--            AND q.create_time &gt;= #{condition.createStartDate}-->
        <!--        </if>-->
        <!--        <if test="condition.createEndDate != null">-->
        <!--            AND q.create_time &lt;= #{condition.createEndDate}-->
        <!--        </if>-->
        <if test="condition.createStartDate != null">
            AND q.payment_time &gt;= #{condition.createStartDate}
        </if>
        <if test="condition.createEndDate != null">
            AND q.payment_time &lt; #{condition.createEndDate}
        </if>
        <if test="condition.partnerId != null">
            AND q.partner_id = #{condition.partnerId}
        </if>
        <if test="condition.partnerName != null and condition.partnerName != ''">
            AND q.partner_name LIKE concat('%', #{condition.partnerName},'%')
        </if>
<!--        <if test="condition.levelDown != null and condition.levelDown != ''">-->
<!--            AND exists(-->
<!--            select 1 from t_order_item oi-->
<!--            where oi.order_id = q.id-->
<!--            and (oi.status = 'reduce' or oi.status = 'abnormal')-->
<!--            )-->
<!--            and q.transfer_id is null-->
<!--            and q.status in ('COLLECTION', 'SEND','RECEIVE')-->
<!--        </if>-->
        <if test="condition.billId != null and condition.billId != ''">
            AND q.bill_id = #{condition.billId}
        </if>
        <if test="condition.flowerName != null and condition.flowerName != ''">
            AND exists(
            select 1 from t_order_item oi
            where oi.order_id = q.id
            and oi.flower_name LIKE concat('%', #{condition.flowerName},'%')
            )
        </if>
        <if test="condition.warehouseLocationCode != null and condition.warehouseLocationCode != ''">
            AND q.warehouse_location_code LIKE concat('%', #{condition.warehouseLocationCode},'%')
        </if>
        <if test="condition.createName != null and condition.createName != ''">
            AND u.nick_name LIKE concat('%', #{condition.createName},'%')
        </if>
        <if test="condition.province != null and condition.province != ''">
            AND q.customer_province LIKE concat('%', #{condition.province},'%')
        </if>
        <if test="condition.city != null and condition.city != ''">
            AND q.customer_city LIKE concat('%', #{condition.city},'%')
        </if>
        <if test="condition.region != null and condition.region != ''">
            AND q.customer_region LIKE concat('%', #{condition.region},'%')
        </if>
    </sql>
    <update id="updatePaymentCreateDate">
        update t_order  set payment_date_sta=#{order.paymentDate}, create_date_sta=#{order.createDate} where id=#{order.id}
    </update>
</mapper>