puzhibing
2026-09-02 54b8d039c03b2a94b7e6dcd74b8bd18ee979f55d
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TCardChargingOrderMapper.xml
@@ -29,10 +29,10 @@
            <if test="query.gunId != null">
                AND o.charging_gun_id = #{query.gunId}
            </if>
            <if test="startTime1 != null and startTime1 != ''">
            <if test="startTime1 != null and startTime1 != '' and startTime2 != null and startTime2 != ''">
                AND o.pay_time BETWEEN #{startTime1} AND #{startTime2}
            </if>
            <if test="endTime1 != null and endTime1 != ''">
            <if test="endTime1 != null and endTime1 != '' and endTime2 != null and endTime2 != ''">
                AND o.end_time BETWEEN #{endTime1} AND #{endTime2}
            </if>
        </where>
@@ -77,55 +77,51 @@
               IFNULL(SUM(o.payment_amount), 0) AS paymentAmount,
               IFNULL(SUM(o.electrovalence), 0) AS electrovalence,
               IFNULL(SUM(o.service_charge), 0) AS serviceCharge,
               IFNULL(SUM(o.third_pay_amount), 0) AS thirdPayAmount,
               IFNULL(SUM(s.platform_income), 0) AS platformIncome,
               IFNULL(SUM(s.partner_income), 0) AS partnerIncome,
               IFNULL(SUM(s.platform_income), 0) AS platformIncomeTotal,
               IFNULL(SUM(s.partner_income), 0) AS partnerIncomeTotal,
               CONCAT(IFNULL(ROUND(SUM(a.capacity1) / NULLIF(SUM(a.capacity_total), 0) * 100, 2), 0), '%-',
                      IFNULL(ROUND(SUM(a.capacity2) / NULLIF(SUM(a.capacity_total), 0) * 100, 2), 0), '%-',
                      IFNULL(ROUND(SUM(a.capacity3) / NULLIF(SUM(a.capacity_total), 0) * 100, 2), 0), '%-',
                      IFNULL(ROUND(SUM(a.capacity4) / NULLIF(SUM(a.capacity_total), 0) * 100, 2), 0), '%') AS capacityProportion,
               CONCAT(IFNULL(ROUND(SUM(a.service1) / NULLIF(SUM(a.service_total), 0) * 100, 2), 0), '%-',
                      IFNULL(ROUND(SUM(a.service2) / NULLIF(SUM(a.service_total), 0) * 100, 2), 0), '%-',
                      IFNULL(ROUND(SUM(a.service3) / NULLIF(SUM(a.service_total), 0) * 100, 2), 0), '%-',
                      IFNULL(ROUND(SUM(a.service4) / NULLIF(SUM(a.service_total), 0) * 100, 2), 0), '%') AS serviceProportion,
               CONCAT(IFNULL(ROUND(SUM(a.electric1) / NULLIF(SUM(a.electric_total), 0) * 100, 2), 0), '%-',
                      IFNULL(ROUND(SUM(a.electric2) / NULLIF(SUM(a.electric_total), 0) * 100, 2), 0), '%-',
                      IFNULL(ROUND(SUM(a.electric3) / NULLIF(SUM(a.electric_total), 0) * 100, 2), 0), '%-',
                      IFNULL(ROUND(SUM(a.electric4) / NULLIF(SUM(a.electric_total), 0) * 100, 2), 0), '%') AS electronicProportion
               IFNULL(SUM(o.third_pay_amount), 0) AS thirdPayAmount
        FROM t_card_charging_order o
        LEFT JOIN (
            SELECT charging_order_id,
                   SUM(IFNULL(channel_electricity_amount, 0) + IFNULL(channel_service_amount, 0) - IFNULL(share_amount, 0)) AS platform_income,
                   SUM(IFNULL(share_amount, 0)) AS partner_income
            FROM t_card_charging_order_share_record
            WHERE del_flag = 0
            GROUP BY charging_order_id
        ) s ON s.charging_order_id = o.id
        LEFT JOIN (
            SELECT charging_order_id,
                   SUM(charging_capacity) AS capacity_total,
                   SUM(CASE WHEN type = 1 THEN charging_capacity ELSE 0 END) AS capacity1,
                   SUM(CASE WHEN type = 2 THEN charging_capacity ELSE 0 END) AS capacity2,
                   SUM(CASE WHEN type = 3 THEN charging_capacity ELSE 0 END) AS capacity3,
                   SUM(CASE WHEN type = 4 THEN charging_capacity ELSE 0 END) AS capacity4,
                   SUM(period_service_price) AS service_total,
                   SUM(CASE WHEN type = 1 THEN period_service_price ELSE 0 END) AS service1,
                   SUM(CASE WHEN type = 2 THEN period_service_price ELSE 0 END) AS service2,
                   SUM(CASE WHEN type = 3 THEN period_service_price ELSE 0 END) AS service3,
                   SUM(CASE WHEN type = 4 THEN period_service_price ELSE 0 END) AS service4,
                   SUM(period_electric_price) AS electric_total,
                   SUM(CASE WHEN type = 1 THEN period_electric_price ELSE 0 END) AS electric1,
                   SUM(CASE WHEN type = 2 THEN period_electric_price ELSE 0 END) AS electric2,
                   SUM(CASE WHEN type = 3 THEN period_electric_price ELSE 0 END) AS electric3,
                   SUM(CASE WHEN type = 4 THEN period_electric_price ELSE 0 END) AS electric4
            FROM t_card_charging_order_accounting_strategy
            GROUP BY charging_order_id
        ) a ON a.charging_order_id = o.id
        <include refid="queryCondition"/>
    </select>
    <select id="summaryOrderIds" resultType="java.lang.Long">
        SELECT o.id
        FROM t_card_charging_order o
        <include refid="queryCondition"/>
    </select>
    <select id="shareIncomeSummaryByOrderIds" resultType="java.util.LinkedHashMap">
        SELECT IFNULL(SUM(IFNULL(channel_electricity_amount, 0) + IFNULL(channel_service_amount, 0) - IFNULL(share_amount, 0)), 0) AS platformIncome,
               IFNULL(SUM(IFNULL(share_amount, 0)), 0) AS partnerIncome
        FROM t_card_charging_order_share_record
        WHERE del_flag = 0
          AND charging_order_id IN
        <foreach collection="orderIds" item="orderId" open="(" separator="," close=")">
            #{orderId}
        </foreach>
    </select>
    <select id="accountingSummaryByOrderIds" resultType="java.util.LinkedHashMap">
        SELECT IFNULL(SUM(charging_capacity), 0) AS capacityTotal,
               IFNULL(SUM(CASE WHEN type = 1 THEN charging_capacity ELSE 0 END), 0) AS capacity1,
               IFNULL(SUM(CASE WHEN type = 2 THEN charging_capacity ELSE 0 END), 0) AS capacity2,
               IFNULL(SUM(CASE WHEN type = 3 THEN charging_capacity ELSE 0 END), 0) AS capacity3,
               IFNULL(SUM(CASE WHEN type = 4 THEN charging_capacity ELSE 0 END), 0) AS capacity4,
               IFNULL(SUM(period_service_price), 0) AS serviceTotal,
               IFNULL(SUM(CASE WHEN type = 1 THEN period_service_price ELSE 0 END), 0) AS service1,
               IFNULL(SUM(CASE WHEN type = 2 THEN period_service_price ELSE 0 END), 0) AS service2,
               IFNULL(SUM(CASE WHEN type = 3 THEN period_service_price ELSE 0 END), 0) AS service3,
               IFNULL(SUM(CASE WHEN type = 4 THEN period_service_price ELSE 0 END), 0) AS service4,
               IFNULL(SUM(period_electric_price), 0) AS electricTotal,
               IFNULL(SUM(CASE WHEN type = 1 THEN period_electric_price ELSE 0 END), 0) AS electric1,
               IFNULL(SUM(CASE WHEN type = 2 THEN period_electric_price ELSE 0 END), 0) AS electric2,
               IFNULL(SUM(CASE WHEN type = 3 THEN period_electric_price ELSE 0 END), 0) AS electric3,
               IFNULL(SUM(CASE WHEN type = 4 THEN period_electric_price ELSE 0 END), 0) AS electric4
        FROM t_card_charging_order_accounting_strategy
        WHERE charging_order_id IN
        <foreach collection="orderIds" item="orderId" open="(" separator="," close=")">
            #{orderId}
        </foreach>
    </select>
    <select id="balanceIncomeDetail" resultType="java.util.LinkedHashMap">
        SELECT o.card_id AS cardId,
               o.card_no AS cardNo,