puzhibing
2026-07-22 ba0f5c3079fedcea55e3d375f319743e5daa239e
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
@@ -1,60 +1,76 @@
<?xml version="1.0" encoding="UTF-8"?>
<?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.ruoyi.order.mapper.TChargingOrderMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.ruoyi.order.api.model.TChargingOrder">
        <id column="id" property="id" />
        <result column="code" property="code" />
        <result column="order_type" property="orderType" />
        <result column="order_classification" property="orderClassification" />
        <result column="app_user_id" property="appUserId" />
        <result column="app_user_car_id" property="appUserCarId" />
        <result column="site_id" property="siteId" />
        <result column="parking_lot_id" property="parkingLotId" />
        <result column="charging_pile_id" property="chargingPileId" />
        <result column="charging_gun_id" property="chargingGunId" />
        <id column="id" property="id"/>
        <result column="code" property="code"/>
        <result column="order_type" property="orderType"/>
        <result column="order_classification" property="orderClassification"/>
        <result column="app_user_id" property="appUserId"/>
        <result column="app_user_car_id" property="appUserCarId"/>
        <result column="site_id" property="siteId"/>
        <result column="parking_lot_id" property="parkingLotId"/>
        <result column="charging_pile_id" property="chargingPileId"/>
        <result column="charging_gun_id" property="chargingGunId"/>
        <result column="charging_capacity" property="chargingCapacity"/>
        <result column="charging_power" property="chargingPower"/>
        <result column="start_time" property="startTime" />
        <result column="end_time" property="endTime" />
        <result column="status" property="status" />
        <result column="start_time" property="startTime"/>
        <result column="end_time" property="endTime"/>
        <result column="status" property="status"/>
        <result column="end_mode" property="endMode"/>
        <result column="recharge_amount" property="rechargeAmount" />
        <result column="recharge_payment_type" property="rechargePaymentType" />
        <result column="recharge_payment_status" property="rechargePaymentStatus" />
        <result column="recharge_serial_number" property="rechargeSerialNumber" />
        <result column="residual_amount" property="residualAmount" />
        <result column="order_amount" property="orderAmount" />
        <result column="app_coupon_id" property="appCouponId" />
        <result column="coupon_discount_amount" property="couponDiscountAmount" />
        <result column="vip_discount" property="vipDiscount" />
        <result column="vip_discount_amount" property="vipDiscountAmount" />
        <result column="payment_amount" property="paymentAmount" />
        <result column="refund_code" property="refundCode" />
        <result column="refund_amount" property="refundAmount" />
        <result column="refund_status" property="refundStatus" />
        <result column="refund_serial_number" property="refundSerialNumber" />
        <result column="refund_time" property="refundTime" />
        <result column="need_elec" property="needElec" />
        <result column="create_time" property="createTime" />
        <result column="del_flag" property="delFlag" />
        <result column="total_electricity" property="totalElectricity" />
        <result column="recharge_amount" property="rechargeAmount"/>
        <result column="recharge_payment_type" property="rechargePaymentType"/>
        <result column="recharge_payment_status" property="rechargePaymentStatus"/>
        <result column="pay_method" property="payMethod"/>
        <result column="balance_pay_amount" property="balancePayAmount"/>
        <result column="third_pay_amount" property="thirdPayAmount"/>
        <result column="balance_refund_amount" property="balanceRefundAmount"/>
        <result column="third_refund_amount" property="thirdRefundAmount"/>
        <result column="recharge_serial_number" property="rechargeSerialNumber"/>
        <result column="residual_amount" property="residualAmount"/>
        <result column="order_amount" property="orderAmount"/>
        <result column="app_coupon_id" property="appCouponId"/>
        <result column="coupon_discount_amount" property="couponDiscountAmount"/>
        <result column="is_whitelist" property="isWhitelist"/>
        <result column="whitelist_id" property="whitelistId"/>
        <result column="whitelist_benefit_type" property="whitelistBenefitType"/>
        <result column="whitelist_discount_amount" property="whitelistDiscountAmount"/>
        <result column="whitelist_electric_refund_amount" property="whitelistElectricRefundAmount"/>
        <result column="whitelist_service_refund_amount" property="whitelistServiceRefundAmount"/>
        <result column="vip_discount" property="vipDiscount"/>
        <result column="vip_discount_amount" property="vipDiscountAmount"/>
        <result column="payment_amount" property="paymentAmount"/>
        <result column="refund_code" property="refundCode"/>
        <result column="refund_amount" property="refundAmount"/>
        <result column="refund_status" property="refundStatus"/>
        <result column="refund_serial_number" property="refundSerialNumber"/>
        <result column="refund_time" property="refundTime"/>
        <result column="need_elec" property="needElec"/>
        <result column="create_time" property="createTime"/>
        <result column="del_flag" property="delFlag"/>
        <result column="total_electricity" property="totalElectricity"/>
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, code, order_type, order_classification, app_user_id, app_user_car_id,site_id, parking_lot_id, charging_pile_id, charging_gun_id,
            start_time, end_time, status, recharge_amount, recharge_payment_type, recharge_payment_status, recharge_serial_number,
            order_amount, app_coupon_id, coupon_discount_amount, vip_discount, vip_discount_amount, payment_amount, refund_code,
            refund_amount, refund_status, refund_serial_number, refund_time, create_time, del_flag,need_elec,total_electricity
        id, code, order_type, order_classification, app_user_id, app_user_car_id,site_id, parking_lot_id,
        charging_pile_id, charging_gun_id,
        start_time, end_time, status, recharge_amount, recharge_payment_type, recharge_payment_status, pay_method, balance_pay_amount, third_pay_amount, balance_refund_amount, third_refund_amount,
        recharge_serial_number,
        order_amount, app_coupon_id, coupon_discount_amount, is_whitelist, whitelist_id, whitelist_benefit_type, whitelist_discount_amount, whitelist_electric_refund_amount, whitelist_service_refund_amount, vip_discount, vip_discount_amount, payment_amount,
        refund_code,
        refund_amount, refund_status, refund_serial_number, refund_time, create_time,
        del_flag,need_elec,total_electricity
    </sql>
    <select id="getMyChargingOrderList" resultMap="BaseResultMap">
        select * from t_charging_order where del_flag = 0 and app_user_id = #{appUserId} and recharge_payment_status = 2
        <if test="1 == type">
            and id not in (select order_id from t_order_evaluate where order_type = 1 and app_user_id = #{appUserId} and del_flag = 0)
            and id not in (select order_id from t_order_evaluate where order_type = 1 and app_user_id = #{appUserId} and
            del_flag = 0)
        </if>
        order by create_time desc
        <if test="null != pageCurr and null != pageSize">
@@ -62,7 +78,8 @@
        </if>
    </select>
    <select id="getNoInvoicedOrder" resultMap="BaseResultMap">
        select * from t_charging_order where del_flag = 0 and status = 5 and recharge_payment_status = 2 and payment_amount is not null and app_user_id = #{appUserId}
        select * from t_charging_order where del_flag = 0 and status = 5 and recharge_payment_status = 2 and
        payment_amount is not null and app_user_id = #{appUserId}
        <if test="null != month and '' != month">
            and DATE_FORMAT(end_time, '%Y-%m') = #{month}
        </if>
@@ -74,19 +91,20 @@
    </select>
    <select id="chargingOrder" resultType="com.ruoyi.order.api.vo.ChargingOrderVO">
        select t1.*
        select t1.*,
        IFNULL(t1.whitelist_electric_refund_amount, 0) + IFNULL(t1.whitelist_service_refund_amount, 0) as whitelistRefundAmount
        from t_charging_order t1
        where t1.del_flag = 0
        <if test="null != req.code and req.code!=''">
            and t1.code  LIKE CONCAT('%',#{req.code},'%')
            and t1.code LIKE CONCAT('%',#{req.code},'%')
        </if>
        <if test="null != req.userIds and req.userIds.size()>0" >
        <if test="null != req.userIds and req.userIds.size()>0">
            and t1.app_user_id in
            <foreach collection="req.userIds" item="item" index="index" separator="," open="(" close=")">
                #{item}
            </foreach>
        </if>
        <if test="null != req.siteIds and req.siteIds.size()>0" >
        <if test="null != req.siteIds and req.siteIds.size()>0">
            and t1.site_id in
            <foreach collection="req.siteIds" item="item" index="index" separator="," open="(" close=")">
                #{item}
@@ -107,6 +125,18 @@
        <if test="req.orderSource != null and req.orderSource == 3 ">
            and t1.tripartite_platform_name = 'XinDianTu'
        </if>
        <if test="req.isWhitelist != null">
            and t1.is_whitelist = #{req.isWhitelist}
        </if>
        <if test="req.paymentType != null and req.paymentType == 1 ">
            and t1.recharge_payment_type = 1
        </if>
        <if test="req.paymentType != null and req.paymentType == 2 ">
            and t1.recharge_payment_type in (2, 3)
        </if>
        <if test="req.paymentType != null and req.paymentType == 3 ">
            and t1.pay_method in (1, 2)
        </if>
        <if test="req.siteId != null ">
            and t1.site_id = #{req.siteId}
        </if>
@@ -126,7 +156,8 @@
        order by t1.create_time desc
    </select>
    <select id="payOrderQuery" resultType="com.ruoyi.order.dto.PayOrderDto">
        SELECT o.*,i.phone FROM (SELECT
        SELECT o.*,i.phone FROM (
        SELECT
        a.id,
        a.`code`,
        1 as type,
@@ -145,7 +176,9 @@
        charging_pile_order.t_charging_order a
        left join charging_pile_order.t_charging_order_refund b on (b.charging_order_id = a.id)
        where a.recharge_payment_status = 2
        UNION ALL
        SELECT
        a.id,
        a.`code`,
@@ -165,7 +198,9 @@
        charging_pile_order.t_shopping_order a
        left join charging_pile_order.t_shopping_order_refund b on (b.shopping_order_id = a.id)
        where a.payment_status = 2
        UNION ALL
        SELECT
        a.id,
        a.`code`,
@@ -185,7 +220,9 @@
        charging_pile_order.t_vip_order a
        left join charging_pile_order.t_vip_order_refund b on (a.id = b.vip_order_id)
        where a.payment_status = 2
        UNION ALL
        SELECT
        id,
        `code`,
@@ -202,105 +239,114 @@
        0 as del_flag,
        app_user_id
        FROM
        charging_pile_service.t_parking_record ) o
        LEFT JOIN  `charging_pile_account`.`t_app_user` i on o.app_user_id = i.id
                <where>
                    o.del_flag = 0
        charging_pile_service.t_parking_record
        ) o
        LEFT JOIN `charging_pile_account`.`t_app_user` i on o.app_user_id = i.id
        <where>
            o.del_flag = 0
            <if test="data.code != null and data.code != ''">
                AND o.code LIKE CONCAT('%',#{data.code},'%')
            </if>
            <if test="data.phone != null and data.phone != ''">
                AND i.phone LIKE CONCAT('%',#{data.phone},'%')
            </if>
            <if test="data.type != null">
                AND o.type = #{data.type}
            </if>
            <if test="data.createTime1 != null">
                AND o.create_time &gt;= #{data.createTime1}
            </if>
            <if test="data.createTime2 != null">
                AND o.create_time &lt;= #{data.createTime2}
            </if>
            <if test="data.ids != null and data.ids.size() > 0">
                AND o.id IN
                <foreach collection="data.ids" item="id" open="(" separator="," close=")">
                    #{id}
                </foreach>
            </if>
            <if test="data.isRefund == 1">
                AND o.refund_status is not null
            </if>
            <if test="data.isRefund == 2">
                AND o.refund_status is null
            </if>
                    <if test="data.code != null and data.code != ''">
                        AND o.code LIKE CONCAT('%',#{data.code},'%')
                    </if>
                    <if test="data.phone != null and data.phone != ''">
                        AND i.phone LIKE CONCAT('%',#{data.phone},'%')
                    </if>
                    <if test="data.type != null">
                        AND o.type = #{data.type}
                    </if>
                    <if test="data.createTime1 != null">
                        AND o.create_time &gt;= #{data.createTime1}
                    </if>
                    <if test="data.createTime2 != null">
                        AND o.create_time &lt;= #{data.createTime2}
                    </if>
                    <if test="data.ids != null and data.ids.size() > 0">
                        AND o.id IN
                        <foreach collection="data.ids" item="id" open="(" separator="," close=")">
                            #{id}
                        </foreach>
                    </if>
                    <if test="data.isRefund == 1">
                        AND o.refund_status is not null
                    </if>
                    <if test="data.isRefund == 2">
                        AND o.refund_status is null
                    </if>
                </where>
        </where>
        ORDER BY o.create_time desc
    </select>
    <select id="getRefundList" resultType="com.ruoyi.order.api.model.TChargingOrderRefund">
        select * from (
        SELECT
            re.id,
            re.`code`,
            re.refund_code,
            re.refund_title,
            re.refund_reason,
            re.refund_amount,
            re.refund_total_amount,
            re.refund_time,
            re.pay_type,
            re.pay_amount,
            re.refund_remark,
            co.recharge_serial_number as serail_number,
            co.payment_amount,
            co.create_time as pay_time,
            co.id as order_id,
            co.app_user_id as user_id,
            1 as type
        re.id,
        re.`code`,
        re.refund_code,
        re.refund_title,
        re.refund_reason,
        re.refund_amount,
        re.balance_refund_amount,
        re.third_refund_amount,
        re.refund_total_amount,
        re.refund_time,
        re.pay_type,
        re.pay_amount,
        re.refund_remark,
        co.recharge_serial_number as serail_number,
        co.payment_amount,
        co.create_time as pay_time,
        co.id as order_id,
        co.app_user_id as user_id,
        co.pay_method as pay_method,
        1 as type
        FROM t_charging_order_refund re
        LEFT JOIN t_charging_order  co ON re.charging_order_id = co.id
        LEFT JOIN t_charging_order co ON re.charging_order_id = co.id
        UNION ALL
        SELECT
            re.id,
            re.`code`,
            re.refund_code,
            re.refund_title,
            re.refund_reason,
            re.refund_amount,
            re.refund_total_amount,
            re.refund_time,
            re.pay_type,
            re.pay_amount,
            re.refund_remark,
            so.serial_number,
            so.payment_amount,
            so.create_time as pay_time,
            so.id as order_id,
            so.app_user_id as user_id,
            2 as type
        re.id,
        re.`code`,
        re.refund_code,
        re.refund_title,
        re.refund_reason,
        re.refund_amount,
        0 as balance_refund_amount,
        re.refund_amount as third_refund_amount,
        re.refund_total_amount,
        re.refund_time,
        re.pay_type,
        re.pay_amount,
        re.refund_remark,
        so.serial_number,
        so.payment_amount,
        so.create_time as pay_time,
        so.id as order_id,
        so.app_user_id as user_id,
        3 as pay_method,
        2 as type
        FROM t_shopping_order_refund re
        LEFT JOIN t_shopping_order so on re.shopping_order_id = so.id
        UNION ALL
        SELECT
            vr.id,
            vr.`code`,
            vr.refund_code,
            vr.refund_title,
            vr.refund_reason,
            vr.refund_amount,
            vr.refund_total_amount,
            vr.refund_time,
            vr.pay_type,
            vr.pay_amount,
            vr.refund_remark,
            vo.serial_number,
            vo.payment_amount,
            vo.create_time as pay_time,
            vo.id as order_id,
            vo.app_user_id as user_id,
            3 as type
        vr.id,
        vr.`code`,
        vr.refund_code,
        vr.refund_title,
        vr.refund_reason,
        vr.refund_amount,
        0 as balance_refund_amount,
        vr.refund_amount as third_refund_amount,
        vr.refund_total_amount,
        vr.refund_time,
        vr.pay_type,
        vr.pay_amount,
        vr.refund_remark,
        vo.serial_number,
        vo.payment_amount,
        vo.create_time as pay_time,
        vo.id as order_id,
        vo.app_user_id as user_id,
        3 as pay_method,
        3 as type
        FROM t_vip_order_refund vr
        LEFT JOIN t_vip_order vo on vr.vip_order_id = vo.id
        ) o
@@ -316,7 +362,7 @@
    </select>
    <select id="chargingOrderGroup" resultType="com.ruoyi.common.core.dto.ChargingOrderGroup">
        SELECT SUM(tc.charging_capacity) as  charging_capacity,tc.site_id
        SELECT SUM(tc.charging_capacity) as charging_capacity,tc.site_id
        FROM t_charging_order tc
        left join `charging_pile_service`.`t_site` ts on tc.site_id = ts.id
        <where>
@@ -339,59 +385,49 @@
        GROUP BY site_id
    </select>
    <select id="charge" resultType="com.ruoyi.order.dto.SixChargingDto">
        SELECT
        DATE_FORMAT( subquery.create_time, '%m' ) AS MONTH,
       SUM(electrovalence) AS electrovalence,
        DATE_FORMAT(a.create_time, '%m') AS MONTH,
        SUM(IFNULL(b.period_electric_price, 0)) AS electrovalence,
        SUM(
        CASE
        WHEN subquery.order_source = 0 THEN subquery.service_charge
        WHEN subquery.order_source = 1 THEN subquery.service_charge
        ELSE subquery.service_charge * 0.8
        END
            CASE
            WHEN a.order_source = 0 THEN IFNULL(b.period_service_price, 0)
            WHEN a.order_source = 1 THEN IFNULL(b.period_service_price, 0)
            ELSE IFNULL(b.period_service_price, 0) * 0.8
            END
        ) AS service_charge
        FROM
            (
            SELECT
            a.create_time,
            b.period_electric_price as electrovalence,
            b.period_service_price as service_charge,
            a.order_source
            FROM
            t_charging_order a
            left join (select charging_order_id, sum(period_electric_price) as period_electric_price, sum(period_service_price) as period_service_price, sum(period_electric_price + period_service_price) as money from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id)
            <where>
                a.del_flag = 0 and a.recharge_payment_status = 2 and a.status = 5
                <if test="sixBefore != null">
                    AND a.create_time &gt;= #{sixBefore}
                </if>
                <if test="siteIds != null and siteIds.size() > 0">
                    AND a.site_id IN
                    <foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
                        #{siteId}
                    </foreach>
                </if>
            </where>
            ) AS subquery
        t_charging_order a
        LEFT JOIN t_charging_order_accounting_strategy b ON a.id = b.charging_order_id
        <where>
            a.del_flag = 0 and a.recharge_payment_status = 2 and a.status = 5
            <if test="sixBefore != null">
                AND a.create_time &gt;= #{sixBefore}
            </if>
            <if test="siteIds != null and siteIds.size() > 0">
                AND a.site_id IN
                <foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
                    #{siteId}
                </foreach>
            </if>
        </where>
        GROUP BY
            DATE_FORMAT( subquery.create_time, '%m' )
        DATE_FORMAT(a.create_time, '%m')
    </select>
    <select id="circle" resultType="com.ruoyi.order.dto.SixCircleDto">
        SELECT
        site_id as siteId,
        a.site_id as siteId,
        ROUND(SUM(CASE
        WHEN a.order_source = 0 THEN b.money
        WHEN a.order_source = 1 THEN b.money
        ELSE (b.period_electric_price + b.period_service_price * 0.8)
        WHEN a.order_source = 0 THEN IFNULL(b.period_electric_price, 0) + IFNULL(b.period_service_price, 0)
        WHEN a.order_source = 1 THEN IFNULL(b.period_electric_price, 0) + IFNULL(b.period_service_price, 0)
        ELSE (IFNULL(b.period_electric_price, 0) + IFNULL(b.period_service_price, 0) * 0.8)
        END), 2) AS paymentAmount
        FROM
        t_charging_order a
        left join (select charging_order_id, sum(period_electric_price) as period_electric_price, sum(period_service_price) as period_service_price, sum(period_electric_price + period_service_price) as money from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id)
        LEFT JOIN t_charging_order_accounting_strategy b ON a.id = b.charging_order_id
        <where>
            a.del_flag = 0 and a.recharge_payment_status = 2 and a.status = 5
            <if test="siteIds != null and siteIds.size() > 0">
@@ -401,7 +437,7 @@
                </foreach>
            </if>
            <if test="sixBefore != null">
                AND create_time &gt;= #{sixBefore}
                AND a.create_time &gt;= #{sixBefore}
            </if>
        </where>
        GROUP BY a.site_id
@@ -409,11 +445,25 @@
    </select>
    <select id="countAll" resultType="java.util.Map">
        select sum(electrovalence) as electrovalence,sum(service_charge) as service_charge,ROUND(sum(electrovalence+service_charge) * 0.006, 2) as commission_amount,sum(sharing_amount) as sharing_amount
        from t_charging_order
        where del_flag = 0 and recharge_payment_status = 2 and status = 5
        SELECT
        ROUND(SUM(IFNULL(b.period_electric_price, 0)), 2) AS electrovalence,
        ROUND(SUM(CASE
        WHEN a.order_source = 2 THEN IFNULL(b.period_service_price, 0) * 0.8
        ELSE IFNULL(b.period_service_price, 0)
        END), 2) AS service_charge,
        ROUND(SUM(CASE
        WHEN a.order_source = 2 THEN 0
        ELSE IFNULL(b.period_electric_price, 0) + IFNULL(b.period_service_price, 0)
        END) * 0.006, 2) AS commission_amount,
        ROUND(SUM(CASE
        WHEN a.order_source = 2 THEN IFNULL(b.period_service_price, 0) * 0.2
        ELSE 0
        END), 2) AS sharing_amount
        FROM t_charging_order a
        LEFT JOIN t_charging_order_accounting_strategy b ON a.id = b.charging_order_id
        WHERE a.del_flag = 0 AND a.recharge_payment_status = 2 AND a.status = 5
        <if test="siteIds != null and siteIds.size() > 0">
            AND site_id IN
            AND a.site_id IN
            <foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
                #{siteId}
            </foreach>
@@ -440,7 +490,7 @@
        FROM
        t_charging_order_accounting_strategy t1
        LEFT JOIN t_charging_order t2 on t1.charging_order_id = t2.id
        where t2.del_flag = 0 and t2.status = 5 and t2.recharge_payment_status = 2 and t2.create_time between #{start} and #{end}
        where t2.del_flag = 0 and t2.recharge_payment_status = 2 and t2.start_time IS NOT NULL and t2.end_time is not null and t2.pay_time between #{start} and #{end}
        <if test="null != siteIds and siteIds.size() > 0">
            and t2.site_id in
            <foreach collection="siteIds" separator="," open="(" close=")" item="item" index="index">
@@ -452,7 +502,7 @@
    </select>
    <select id="getDateData" resultType="java.util.Map">
        SELECT
        DATE_FORMAT(a.create_time, '%H:00' ) as time,
        DATE_FORMAT(a.pay_time, '%H:00' ) as time,
        SUM(CASE
        WHEN a.order_source = 0 THEN b.period_service_price
        WHEN a.order_source = 1 THEN b.period_service_price
@@ -468,10 +518,12 @@
        count(1) as orderCount
        FROM
        t_charging_order a
        left join (select charging_order_id, sum(period_electric_price) as period_electric_price, sum(period_service_price) as period_service_price, sum(period_electric_price + period_service_price) as money from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id)
        left join (select charging_order_id, sum(period_electric_price) as period_electric_price,
        sum(period_service_price) as period_service_price, sum(period_electric_price + period_service_price) as money
        from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id)
        <where>
            a.del_flag = 0 and a.status = 5  and a.recharge_payment_status = 2  and DATE(a.create_time) = CURDATE()
            and a.create_time between #{start} and #{end}
            a.del_flag = 0 and a.recharge_payment_status = 2 and a.start_time IS NOT NULL and a.end_time is not null
            and a.pay_time between #{start} and #{end}
            <if test="null != siteIds and siteIds.size() > 0">
                and a.site_id in
                <foreach collection="siteIds" separator="," open="(" close=")" item="item" index="index">
@@ -480,14 +532,14 @@
            </if>
        </where>
        GROUP BY
            time
        time
        ORDER BY
            time
        time
    </select>
    <select id="getWeekData" resultType="java.util.Map">
        SELECT
        DATE_FORMAT(a.create_time, '%Y-%m-%d' ) as time,
        DATE_FORMAT(a.pay_time, '%Y-%m-%d' ) as time,
        SUM(CASE
        WHEN a.order_source = 0 THEN b.period_service_price
        WHEN a.order_source = 1 THEN b.period_service_price
@@ -503,10 +555,12 @@
        count(1) as orderCount
        FROM
        t_charging_order a
        left join (select charging_order_id, sum(period_electric_price) as period_electric_price, sum(period_service_price) as period_service_price, sum(period_electric_price + period_service_price) as money from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id)
        left join (select charging_order_id, sum(period_electric_price) as period_electric_price,
        sum(period_service_price) as period_service_price, sum(period_electric_price + period_service_price) as money
        from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id)
        <where>
            a.del_flag = 0 and a.status = 5 and a.recharge_payment_status = 2  and YEARWEEK(DATE_FORMAT(a.create_time, '%Y-%m-%d'), 1) = YEARWEEK(NOW(), 1)
            and a.create_time between #{start} and #{end}
            a.del_flag = 0 and a.recharge_payment_status = 2 and a.start_time IS NOT NULL and a.end_time is not null
            and a.pay_time between #{start} and #{end}
            <if test="null != siteIds and siteIds.size() > 0">
                and a.site_id in
                <foreach collection="siteIds" separator="," open="(" close=")" item="item" index="index">
@@ -522,7 +576,7 @@
    </select>
    <select id="getMonthData" resultType="java.util.Map">
        SELECT
        DATE_FORMAT(a.create_time, '%Y-%m-%d' ) as time,
        DATE_FORMAT(a.pay_time, '%Y-%m-%d' ) as time,
        SUM(CASE
        WHEN a.order_source = 0 THEN b.period_service_price
        WHEN a.order_source = 1 THEN b.period_service_price
@@ -538,10 +592,12 @@
        count(1) as orderCount
        FROM
        t_charging_order a
        left join (select charging_order_id, sum(period_electric_price) as period_electric_price, sum(period_service_price) as period_service_price, sum(period_electric_price + period_service_price) as money from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id)
        left join (select charging_order_id, sum(period_electric_price) as period_electric_price,
        sum(period_service_price) as period_service_price, sum(period_electric_price + period_service_price) as money
        from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id)
        <where>
            a.del_flag = 0 and a.status = 5  and a.recharge_payment_status = 2  and MONTH(a.create_time) = MONTH(NOW())  AND YEAR(a.create_time) = YEAR(NOW())
            and a.create_time between #{start} and #{end}
            a.del_flag = 0 and a.recharge_payment_status = 2 and a.start_time IS NOT NULL and a.end_time is not null
            and a.pay_time between #{start} and #{end}
            <if test="null != siteIds and siteIds.size() > 0">
                and a.site_id in
                <foreach collection="siteIds" separator="," open="(" close=")" item="item" index="index">
@@ -557,7 +613,7 @@
    </select>
    <select id="getYearData" resultType="java.util.Map">
        SELECT
        DATE_FORMAT(a.create_time, '%Y-%m-%d' ) as time,
        DATE_FORMAT(a.pay_time, '%Y-%m-%d' ) as time,
        SUM(CASE
        WHEN a.order_source = 0 THEN b.period_service_price
        WHEN a.order_source = 1 THEN b.period_service_price
@@ -573,10 +629,12 @@
        count(1) as orderCount
        FROM
        t_charging_order a
        left join (select charging_order_id, sum(period_electric_price) as period_electric_price, sum(period_service_price) as period_service_price, sum(period_electric_price + period_service_price) as money from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id)
        left join (select charging_order_id, sum(period_electric_price) as period_electric_price,
        sum(period_service_price) as period_service_price, sum(period_electric_price + period_service_price) as money
        from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id)
        <where>
            a.del_flag = 0 and a.status = 5  and a.recharge_payment_status = 2  and YEAR(a.create_time) = YEAR(NOW())
            and a.create_time between #{start} and #{end}
            a.del_flag = 0 and a.recharge_payment_status = 2 and a.start_time IS NOT NULL and a.end_time is not null
            and a.pay_time between #{start} and #{end}
            <if test="null != siteIds and siteIds.size() > 0">
                and a.site_id in
                <foreach collection="siteIds" separator="," open="(" close=")" item="item" index="index">
@@ -591,7 +649,7 @@
    </select>
    <select id="getByDate" resultType="java.util.Map">
        SELECT
        DATE_FORMAT(a.create_time, '%Y-%m-%d' ) as time,
        DATE_FORMAT(a.pay_time, '%Y-%m-%d' ) as time,
        SUM(CASE
        WHEN a.order_source = 0 THEN b.period_service_price
        WHEN a.order_source = 1 THEN b.period_service_price
@@ -607,10 +665,12 @@
        count(1) as orderCount
        FROM
        t_charging_order a
        left join (select charging_order_id, sum(period_electric_price) as period_electric_price, sum(period_service_price) as period_service_price, sum(period_electric_price + period_service_price) as money from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id)
        left join (select charging_order_id, sum(period_electric_price) as period_electric_price,
        sum(period_service_price) as period_service_price, sum(period_electric_price + period_service_price) as money
        from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id)
        <where>
            a.del_flag = 0 and a.status = 5  and a.recharge_payment_status = 2
            and a.create_time between #{start} and #{end}
            a.del_flag = 0 and a.recharge_payment_status = 2 and a.start_time IS NOT NULL and a.end_time is not null
            and a.pay_time between #{start} and #{end}
            <if test="null != siteIds and siteIds.size() > 0">
                and a.site_id in
                <foreach collection="siteIds" separator="," open="(" close=")" item="item" index="index">
@@ -626,15 +686,15 @@
    </select>
    <select id="queryPower" resultType="java.util.Map">
        SELECT
            'today' AS data_type,
            DATE_FORMAT(create_time, '%H') AS TIME,
    SUM(power) AS power
        'today' AS data_type,
        DATE_FORMAT(create_time, '%H') AS TIME,
        SUM(power) AS power
        FROM
            t_charging_order
        t_charging_order
        WHERE
            del_flag = 0
          AND recharge_payment_status = 2
          AND DATE(create_time) = CURDATE()
        del_flag = 0
        AND recharge_payment_status = 2
        AND DATE(create_time) = CURDATE()
        <if test="siteIds != null and siteIds.size() > 0">
            AND site_id IN
            <foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
@@ -642,20 +702,20 @@
            </foreach>
        </if>
        GROUP BY
            TIME
        TIME
        UNION ALL
        SELECT
            'yesterday' AS data_type,
            DATE_FORMAT(create_time, '%H') AS TIME,
    SUM(power) AS power
        'yesterday' AS data_type,
        DATE_FORMAT(create_time, '%H') AS TIME,
        SUM(power) AS power
        FROM
            t_charging_order
        t_charging_order
        WHERE
            del_flag = 0
          AND recharge_payment_status = 2
          AND DATE(create_time) = CURDATE() - INTERVAL 1 DAY
        del_flag = 0
        AND recharge_payment_status = 2
        AND DATE(create_time) = CURDATE() - INTERVAL 1 DAY
        <if test="siteIds != null and siteIds.size() > 0">
            AND site_id IN
            <foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
@@ -663,10 +723,10 @@
            </foreach>
        </if>
        GROUP BY
            TIME
        TIME
        ORDER BY
            TIME;
        TIME;
    </select>
@@ -678,10 +738,10 @@
        SUM(CASE WHEN power BETWEEN 121 AND 300 THEN 1 ELSE 0 END) AS count_121_300,
        SUM(CASE WHEN power > 300 THEN 1 ELSE 0 END) AS count_above_300
        FROM
            t_charging_order
        t_charging_order
        WHERE
            del_flag = 0
          AND recharge_payment_status = 2
        del_flag = 0
        AND recharge_payment_status = 2
        <if test="siteIds != null and siteIds.size() > 0">
            AND site_id IN
            <foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
@@ -698,7 +758,7 @@
            AND MONTH(create_time) = MONTH(CURDATE())
        </if>
        <if test="statisticsQueryDto.dayType ==4">
           AND YEAR(create_time) = YEAR(CURDATE())
            AND YEAR(create_time) = YEAR(CURDATE())
        </if>
        <if test="statisticsQueryDto.dayType ==5">
@@ -714,31 +774,31 @@
        SELECT
            DATE_FORMAT( create_time, '%H:00' ) AS time,
   count(1) AS counts
        DATE_FORMAT( create_time, '%H:00' ) AS time,
        count(1) AS counts
        FROM
            charging_pile_account.t_app_user
        charging_pile_account.t_app_user
        WHERE
            del_flag = 0
          AND DATE ( create_time ) = CURDATE()
        del_flag = 0
        AND DATE ( create_time ) = CURDATE()
        GROUP BY
            time
        time
    </select>
    <select id="usersDay1" resultType="java.util.Map">
        SELECT
            'today' AS data_type,
            '1' as type,
            DATE_FORMAT( create_time, '%H:00' ) AS time,
        count(DISTINCT  app_user_id) AS counts
        'today' AS data_type,
        '1' as type,
        DATE_FORMAT( create_time, '%H:00' ) AS time,
        count(DISTINCT app_user_id) AS counts
        FROM
            t_charging_order
        t_charging_order
        WHERE
            del_flag = 0
          AND DATE ( create_time ) = CURDATE()
        del_flag = 0
        AND DATE ( create_time ) = CURDATE()
        GROUP BY
            time
        time
    </select>
    <select id="usersByQuery1" resultType="java.util.Map">
@@ -747,7 +807,7 @@
        'today' AS data_type,
        '1' as type,
        DATE_FORMAT( create_time, '%Y-%m-%d' ) AS time,
        count(DISTINCT  app_user_id) AS counts
        count(DISTINCT app_user_id) AS counts
        FROM
        t_charging_order
        WHERE
@@ -783,12 +843,12 @@
        SELECT
            DATE_FORMAT( create_time, '%Y-%m-%d' ) AS time,
   count(1) AS counts
        DATE_FORMAT( create_time, '%Y-%m-%d' ) AS time,
        count(1) AS counts
        FROM
            charging_pile_account.t_app_user
        charging_pile_account.t_app_user
        WHERE
            del_flag = 0
        del_flag = 0
        <if test="statisticsQueryDto.dayType ==1 ">
            AND DATE(create_time) = CURDATE()
        </if>
@@ -810,51 +870,52 @@
            </if>
        </if>
        GROUP BY
            time
        time
    </select>
    <select id="getUserTagCount" resultType="java.util.Map">
        SELECT
            tt.`name`,
            COUNT( 1 ) AS count
        tt.`name`,
        COUNT( 1 ) AS count
        FROM
            (
            SELECT
            a.app_user_id,
            a.user_tag_id,
            a.create_time
            FROM
            charging_pile_account.t_app_user_tag a
            JOIN ( SELECT app_user_id, MAX( create_time ) AS max_create_time FROM charging_pile_account.t_app_user_tag GROUP BY app_user_id ) b ON a.app_user_id = b.app_user_id
            AND a.create_time = b.max_create_time
            LEFT JOIN `charging_pile_other`.`t_user_tag` ct on a.user_tag_id = ct.id
            WHERE ct.del_flag = 0
            ) o
            LEFT JOIN `charging_pile_other`.`t_user_tag` tt on o.user_tag_id = tt.id
        (
        SELECT
        a.app_user_id,
        a.user_tag_id,
        a.create_time
        FROM
        charging_pile_account.t_app_user_tag a
        JOIN ( SELECT app_user_id, MAX( create_time ) AS max_create_time FROM charging_pile_account.t_app_user_tag GROUP
        BY app_user_id ) b ON a.app_user_id = b.app_user_id
        AND a.create_time = b.max_create_time
        LEFT JOIN `charging_pile_other`.`t_user_tag` ct on a.user_tag_id = ct.id
        WHERE ct.del_flag = 0
        ) o
        LEFT JOIN `charging_pile_other`.`t_user_tag` tt on o.user_tag_id = tt.id
        GROUP BY
            tt.name
        tt.name
    </select>
    <select id="getVipCount" resultType="java.util.Map">
        SELECT
            tv.`name`,
            count(1) AS Counts
        tv.`name`,
        count(1) AS Counts
        FROM
            charging_pile_account.t_app_user  ta
                LEFT JOIN `charging_pile_other`.`t_vip` tv on ta.vip_id = tv.id
        charging_pile_account.t_app_user ta
        LEFT JOIN `charging_pile_other`.`t_vip` tv on ta.vip_id = tv.id
        WHERE
            ta.del_flag = 0
        ta.del_flag = 0
        GROUP BY
            tv.`name`
        tv.`name`
    </select>
    <select id="unitConsumption" resultType="java.util.Map">
        SELECT
        tc.`name`,
            au.company_id as companyId,
            SUM( co.charging_capacity )  as chargingCapacity
        au.company_id as companyId,
        SUM( co.charging_capacity ) as chargingCapacity
        FROM
            charging_pile_order.t_charging_order co
                LEFT JOIN charging_pile_account.t_app_user au ON co.app_user_id = au.id
        charging_pile_order.t_charging_order co
        LEFT JOIN charging_pile_account.t_app_user au ON co.app_user_id = au.id
        LEFT JOIN `charging_pile_other`.`t_company` tc on au.company_id = tc.id
        <where>
@@ -866,7 +927,7 @@
                AND WEEKOFYEAR( co.create_time ) = WEEKOFYEAR( CURDATE() )
            </if>
            <if test="statisticsQueryDto.dayType == 3">
               AND MONTH( co.create_time ) = MONTH(CURDATE())
                AND MONTH( co.create_time ) = MONTH(CURDATE())
            </if>
            <if test="statisticsQueryDto.dayType == 4">
                AND YEAR( co.create_time ) = YEAR(CURDATE() )
@@ -876,7 +937,7 @@
                    and DATE(co.create_time) >= #{statisticsQueryDto.startTime}
                </if>
                <if test="statisticsQueryDto.endTime != null">
                    and DATE(co.create_time)  &lt;= #{statisticsQueryDto.endTime}
                    and DATE(co.create_time) &lt;= #{statisticsQueryDto.endTime}
                </if>
            </if>
        </where>
@@ -885,61 +946,61 @@
    </select>
    <select id="carUserMethod" resultType="java.util.Map">
        SELECT
            count(1) as counts,vehicle_use
        count(1) as counts,vehicle_use
        from charging_pile_account.t_app_user_car
        where  del_flag = 0
        where del_flag = 0
        GROUP BY vehicle_use
    </select>
    <select id="carUserBrand" resultType="java.util.Map">
        SELECT
            count(1) as counts,vehicle_brand
        count(1) as counts,vehicle_brand
        from charging_pile_account.t_app_user_car
        where  del_flag = 0
        where del_flag = 0
        GROUP BY vehicle_brand
        ORDER BY counts DESC
            limit 5
        limit 5
    </select>
    <select id="countLocalCar" resultType="java.util.Map">
        SELECT
            SUM(CASE WHEN license_plate LIKE '%川J%' THEN 1 ELSE 0 END) AS localCar,
            SUM(CASE WHEN license_plate NOT LIKE '%川J%' THEN 1 ELSE 0 END) AS  notLocalCar
        SUM(CASE WHEN license_plate LIKE '%川J%' THEN 1 ELSE 0 END) AS localCar,
        SUM(CASE WHEN license_plate NOT LIKE '%川J%' THEN 1 ELSE 0 END) AS notLocalCar
        FROM
            `charging_pile_account`.`t_app_user_car`
        `charging_pile_account`.`t_app_user_car`
        WHERE
            del_flag = 0
        del_flag = 0
    </select>
    <select id="getAver" resultType="java.lang.Double">
        SELECT
            ROUND(AVG(te.mark), 2) AS average_mark
        ROUND(AVG(te.mark), 2) AS average_mark
        FROM
            `t_order_evaluate` te
                LEFT JOIN t_charging_order  co on te.order_id = co.id
        `t_order_evaluate` te
        LEFT JOIN t_charging_order co on te.order_id = co.id
        WHERE
             1 = 1
        1 = 1
        <if test="siteIds != null and siteIds.size() > 0">
            AND co.site_id IN
            <foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
                #{siteId}
            </foreach>
        </if>
           AND  te.del_flag = 0
        AND te.del_flag = 0
    </select>
    <select id="getLevelEvaluate" resultType="java.util.Map">
        SELECT
            CASE
                WHEN te.mark BETWEEN 1 AND 2 THEN '1-2'
                WHEN te.mark = 3 THEN '3'
                WHEN te.mark BETWEEN 4 AND 5 THEN '4-5'
                ELSE 'Other'
                END AS score_range,
            COUNT(*) AS count
        CASE
        WHEN te.mark BETWEEN 1 AND 2 THEN '1-2'
        WHEN te.mark = 3 THEN '3'
        WHEN te.mark BETWEEN 4 AND 5 THEN '4-5'
        ELSE 'Other'
        END AS score_range,
        COUNT(*) AS count
        FROM
            `t_order_evaluate` te
            LEFT JOIN t_charging_order  co on te.order_id = co.id
        `t_order_evaluate` te
        LEFT JOIN t_charging_order co on te.order_id = co.id
        WHERE
            te.del_flag = 0
        te.del_flag = 0
        <if test="siteIds != null and siteIds.size() > 0">
            AND co.site_id IN
            <foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
@@ -947,68 +1008,392 @@
            </foreach>
        </if>
        GROUP BY
            score_range
        score_range
    </select>
    <select id="chargingList" resultType="com.ruoyi.order.api.vo.ChargingOrderListVO">
        select t1.*,
               t1.current as chargingCapacity,t1.payment_amount as paymentAmount,t1.electricity as chargingCapacity from t_charging_order t1
        where t1.del_flag = 0 and t1.status = 5  and t1.recharge_payment_status = 2
        select
        a.id,
        b.`name` as siteName,
        a.`status`,
        a.recharge_payment_type as rechargePaymentType,
        a.pay_method as payMethod,
        a.recharge_payment_status as rechargePaymentStatus,
        a.site_id as siteId,
        a.charging_pile_id as chargingPileId,
        a.app_user_id as appUserId,
        a.app_user_car_id as appUserCarId,
        c.license_plate as plateNum,
        a.start_charge_seq as startChargeSeq,
        a.charging_gun_id as chargingGunId,
        a.order_source as orderSource,
        a.`code`,
        a.order_type as orderType,
        d.`name` as terminalName,
        UNIX_TIMESTAMP(a.end_time) - UNIX_TIMESTAMP(a.start_time) as chargingSecond,
        a.electricity as chargingCapacity,
        a.electricity as electricity,
        a.recharge_amount as rechargeAmount,
        a.payment_amount as orderAmount,
        a.vip_discount_amount as vipDiscountAmount,
        e.refund_amount as refundAmount,
        a.is_whitelist as isWhitelist,
        IFNULL(a.whitelist_electric_refund_amount, 0) + IFNULL(a.whitelist_service_refund_amount, 0) as whitelistRefundAmount,
        IFNULL(a.whitelist_electric_refund_amount, 0) as whitelistElectricRefundAmount,
        IFNULL(a.whitelist_service_refund_amount, 0) as whitelistServiceRefundAmount,
        c.license_plate as licensePlate,
        f.phone,
        a.payment_amount as paymentAmount,
        a.third_pay_amount as thirdPayAmount,
        a.balance_pay_amount as balancePayAmount,
        e.refund_amount as residualAmount,
        h.electrovalence as electrovalence,
        CASE WHEN a.order_source = 1 THEN h.serviceCharge ELSE h.serviceCharge * 0.8 END as serviceCharge,
        CASE WHEN a.order_source = 2 THEN h.serviceCharge * 0.2 ELSE 0 END as sharingAmount,
        0 as commissionAmount,
        <!-- 引流平台分佣按三方订单原始服务费的20%计算,导出需展示在白名单字段前。 -->
        CASE WHEN a.order_source = 2 THEN IFNULL(h.serviceCharge, 0) * 0.2 ELSE 0 END as sharingAmount,
        a.tripartite_platform_name as tripartitePlatformName,
        a.create_time as createTime,
        a.start_time as startTime,
        a.end_time as endTime,
        a.end_mode as endMode,
        a.pay_time as payTime,
        a.start_soc as startSoc,
        a.end_soc as endSoc,
        g.`name` as accountingStrategyName
        from charging_pile_order.t_charging_order a
        left join charging_pile_service.t_site b on (a.site_id = b.id)
        left join charging_pile_account.t_app_user_car c on (a.app_user_car_id = c.id)
        left join charging_pile_service.t_charging_gun d on (a.charging_gun_id = d.id)
        left join charging_pile_order.t_charging_order_refund e on (a.id = e.charging_order_id)
        left join charging_pile_account.t_app_user f on (a.app_user_id = f.id)
        left join charging_pile_order.t_accounting_strategy_order g on (a.id = g.charging_order_id)
        left join (select sum(period_electric_price) as electrovalence,sum(period_service_price) as serviceCharge,charging_order_id from charging_pile_order.t_charging_order_accounting_strategy group by charging_order_id) as h on (a.id = h.charging_order_id)
        where a.del_flag = 0 and a.recharge_payment_status = 2
        <if test="null != req.code and req.code!=''">
            and t1.code  LIKE CONCAT('%',#{req.code},'%')
            and a.code LIKE CONCAT('%',#{req.code},'%')
        </if>
        <if test="null != req.carIds and req.carIds.size()>0" >
            and t1.app_user_car_id in
        <if test="null != req.carIds and req.carIds.size()>0">
            and a.app_user_car_id in
            <foreach collection="req.carIds" item="item" index="index" separator="," open="(" close=")">
                #{item}
            </foreach>
        </if>
        <if test="null != req.userIds and req.userIds.size()>0" >
            and t1.app_user_id in
        <if test="null != req.userIds and req.userIds.size()>0">
            and a.app_user_id in
            <foreach collection="req.userIds" item="item" index="index" separator="," open="(" close=")">
                #{item}
            </foreach>
        </if>
        <if test="null != req.siteIds and req.siteIds.size()>0" >
            and t1.site_id in
        <if test="null != req.siteIds and req.siteIds.size()>0">
            and a.site_id in
            <foreach collection="req.siteIds" item="item" index="index" separator="," open="(" close=")">
                #{item}
            </foreach>
        </if>
        <if test="req.orderType != null ">
            and t1.order_type = #{req.orderType}
            and a.order_type = #{req.orderType}
        </if>
        <if test="req.status != null ">
            and t1.status = #{req.status}
            and a.status = #{req.status}
        </if>
        <if test="req.status != null ">
            and t1.status = #{req.status}
            and a.status = #{req.status}
        </if>
        <if test="req.isWhitelist != null">
            and a.is_whitelist = #{req.isWhitelist}
        </if>
        <if test="req.siteId != null ">
            and t1.site_id = #{req.siteId}
            and a.site_id = #{req.siteId}
        </if>
        <if test="startTime1 != null and startTime1!=''">
            and (t1.create_time between #{startTime1} and #{startTime2})
            and (a.pay_time between #{startTime1} and #{startTime2})
        </if>
        <if test="endTime1 != null and endTime1!=''">
            and (t1.end_time between #{endTime1} and #{endTime2})
            and (a.end_time between #{endTime1} and #{endTime2})
        </if>
        and t1.start_time IS NOT NULL
        order by t1.create_time desc
        and a.start_time IS NOT NULL order by a.create_time desc
    </select>
    <select id="chargingList1" resultType="map">
        select
        aa.id,
        aa.`code`,
        aa.siteId,
        aa.siteName,
        aa.orderType,
        aa.terminalName,
        aa.electricity,
        aa.rechargeAmount,
        aa.rechargePaymentType,
        aa.payMethod,
        aa.isWhitelist,
        aa.whitelistRefundAmount,
        aa.whitelistElectricRefundAmount,
        aa.whitelistServiceRefundAmount,
        aa.paymentAmount,
        aa.thirdPayAmount,
        aa.balancePayAmount,
        aa.electrovalence,
        aa.serviceCharge,
        aa.orderSource,
        aa.tripartitePlatformName,
        aa.startTime,
        aa.endTime,
        aa.chargingSecond,
        aa.startSoc,
        aa.endSoc,
        aa.`status`,
        aa.endMode,
        aa.phone,
        aa.licensePlate,
        SUM(aa.period_electric_price) as periodElectricPrice,
        SUM(aa.period_service_price) as periodServicePrice,
        SUM(aa.jian) as jian,
        SUM(aa.feng) as feng,
        SUM(aa.ping) as ping,
        SUM(aa.gu) as gu
        from (
            select
            b.id,
            b.`code`,
            b.site_id as siteId,
            c.`name` as siteName,
            b.order_type as orderType,
            CONCAT(d.`name`, '-', e.`name`) as terminalName,
            b.electricity,
            b.recharge_amount as rechargeAmount,
            b.recharge_payment_type as rechargePaymentType,
            b.pay_method as payMethod,
            b.is_whitelist as isWhitelist,
            IFNULL(b.whitelist_electric_refund_amount, 0) + IFNULL(b.whitelist_service_refund_amount, 0) as whitelistRefundAmount,
            IFNULL(b.whitelist_electric_refund_amount, 0) as whitelistElectricRefundAmount,
            IFNULL(b.whitelist_service_refund_amount, 0) as whitelistServiceRefundAmount,
            b.payment_amount as paymentAmount,
            b.third_pay_amount as thirdPayAmount,
            b.balance_pay_amount as balancePayAmount,
            b.electrovalence,
            b.service_charge as serviceCharge,
            b.order_source as orderSource,
            b.tripartite_platform_name as tripartitePlatformName,
            DATE_FORMAT(b.start_time, '%Y-%m-%d %H:%i:%s') as startTime,
            DATE_FORMAT(b.end_time, '%Y-%m-%d %H:%i:%s') as endTime,
            (UNIX_TIMESTAMP(b.end_time) - UNIX_TIMESTAMP(b.start_time)) as chargingSecond,
            b.start_soc as startSoc,
            b.end_soc as endSoc,
            b.`status`,
            b.end_mode as endMode,
            f.phone,
            g.license_plate as licensePlate,
            a.period_electric_price,
            a.period_service_price,
            CASE WHEN a.type = 1 THEN a.charging_capacity ELSE 0 END as jian,
            CASE WHEN a.type = 2 THEN a.charging_capacity ELSE 0 END as feng,
            CASE WHEN a.type = 3 THEN a.charging_capacity ELSE 0 END as ping,
            CASE WHEN a.type = 4 THEN a.charging_capacity ELSE 0 END as gu
            from `charging_pile_order`.t_charging_order_accounting_strategy a
            left join `charging_pile_order`.t_charging_order b on (a.charging_order_id = b.id)
            left join `charging_pile_service`.t_site c on (b.site_id = c.id)
            left join `charging_pile_service`.t_charging_pile d on (b.charging_pile_id = d.id)
            left join `charging_pile_service`.t_charging_gun e on (b.charging_gun_id = e.id)
            left join `charging_pile_account`.t_app_user f on (b.app_user_id = f.id)
            left join `charging_pile_account`.t_app_user_car g on (b.app_user_car_id = g.id)
            where b.del_flag = 0 and b.recharge_payment_status = 2
            <if test="null != req.code and req.code!=''">
                and b.code LIKE CONCAT('%',#{req.code},'%')
            </if>
            <if test="null != req.carIds and req.carIds.size()>0">
                and b.app_user_car_id in
                <foreach collection="req.carIds" item="item" index="index" separator="," open="(" close=")">
                    #{item}
                </foreach>
            </if>
            <if test="null != req.userIds and req.userIds.size()>0">
                and b.app_user_id in
                <foreach collection="req.userIds" item="item" index="index" separator="," open="(" close=")">
                    #{item}
                </foreach>
            </if>
            <if test="null != req.siteIds and req.siteIds.size()>0">
                and b.site_id in
                <foreach collection="req.siteIds" item="item" index="index" separator="," open="(" close=")">
                    #{item}
                </foreach>
            </if>
            <if test="req.orderType != null ">
                and b.order_type = #{req.orderType}
            </if>
            <if test="req.status != null ">
                and b.status = #{req.status}
            </if>
            <if test="req.status != null ">
                and b.status = #{req.status}
            </if>
            <if test="req.isWhitelist != null">
                and b.is_whitelist = #{req.isWhitelist}
            </if>
            <if test="req.siteId != null ">
                and b.site_id = #{req.siteId}
            </if>
            <if test="startTime1 != null and startTime1!=''">
                and b.pay_time between #{startTime1} and #{startTime2}
            </if>
            <if test="endTime1 != null and endTime2!=''">
                and b.end_time between #{endTime1} and #{endTime2}
            </if>
            and b.start_time IS NOT NULL and b.end_time is not null
        ) as aa group by aa.id, aa.`code`, aa.siteId, aa.siteName, aa.orderType, aa.terminalName, aa.electricity, aa.rechargeAmount, aa.paymentAmount, aa.thirdPayAmount, aa.balancePayAmount, aa.electrovalence, aa.serviceCharge, aa.tripartitePlatformName,
        aa.startTime, aa.endTime, aa.chargingSecond, aa.startSoc, aa.endSoc, aa.`status`, aa.endMode, aa.phone, aa.licensePlate, aa.orderSource, aa.rechargePaymentType, aa.payMethod,
        aa.isWhitelist, aa.whitelistRefundAmount, aa.whitelistElectricRefundAmount, aa.whitelistServiceRefundAmount order by aa.startTime desc
    </select>
    <select id="chargingListSum" resultType="map">
        select
        a.id,
        sum(a.charging_capacity) as electronic,
        sum(a.period_electric_price) as electrovalence,
        sum(CASE WHEN a.order_source = 2 THEN a.period_service_price * 0.8 ELSE a.period_service_price END) as serviceCharge,
        sum(a.period_electric_price + (CASE WHEN a.order_source = 2 THEN a.period_service_price * 0.8 ELSE a.period_service_price END)) as paymentAmount,
        sum(CASE WHEN a.type = 1 THEN a.period_electric_price ELSE 0 END) as jianElectronic,
        sum(CASE WHEN a.type = 2 THEN a.period_electric_price ELSE 0 END) as fengElectronic,
        sum(CASE WHEN a.type = 3 THEN a.period_electric_price ELSE 0 END) as pingElectronic,
        sum(CASE WHEN a.type = 4 THEN a.period_electric_price ELSE 0 END) as guElectronic,
        sum(CASE WHEN a.order_source = 2 and a.type = 1 THEN a.period_service_price * 0.8 WHEN a.order_source != 2 and a.type = 1 THEN a.period_service_price ELSE 0 END) as jianService,
        sum(CASE WHEN a.order_source = 2 and a.type = 2 THEN a.period_service_price * 0.8 WHEN a.order_source != 2 and a.type = 2 THEN a.period_service_price ELSE 0 END) as fengService,
        sum(CASE WHEN a.order_source = 2 and a.type = 3 THEN a.period_service_price * 0.8 WHEN a.order_source != 2 and a.type = 3 THEN a.period_service_price ELSE 0 END) as pingService,
        sum(CASE WHEN a.order_source = 2 and a.type = 4 THEN a.period_service_price * 0.8 WHEN a.order_source != 2 and a.type = 4 THEN a.period_service_price ELSE 0 END) as guService,
        sum(CASE WHEN a.type = 1 THEN a.charging_capacity ELSE 0 END) as jian,
        sum(CASE WHEN a.type = 2 THEN a.charging_capacity ELSE 0 END) as feng,
        sum(CASE WHEN a.type = 3 THEN a.charging_capacity ELSE 0 END) as ping,
        sum(CASE WHEN a.type = 4 THEN a.charging_capacity ELSE 0 END) as gu
        from (
            select co.id,coas.type, coas.charging_capacity, coas.period_electric_price, coas.period_service_price, co.order_source
            from t_charging_order_accounting_strategy coas
            left join t_charging_order co on (coas.charging_order_id = co.id)
            where co.del_flag = 0 and co.recharge_payment_status = 2
            <if test="null != req.code and req.code!=''">
                and co.code LIKE CONCAT('%',#{req.code},'%')
            </if>
            <if test="null != req.carIds and req.carIds.size()>0">
                and co.app_user_car_id in
                <foreach collection="req.carIds" item="item" index="index" separator="," open="(" close=")">
                    #{item}
                </foreach>
            </if>
            <if test="null != req.userIds and req.userIds.size()>0">
                and co.app_user_id in
                <foreach collection="req.userIds" item="item" index="index" separator="," open="(" close=")">
                    #{item}
                </foreach>
            </if>
            <if test="null != req.siteIds and req.siteIds.size()>0">
                and co.site_id in
                <foreach collection="req.siteIds" item="item" index="index" separator="," open="(" close=")">
                    #{item}
                </foreach>
            </if>
            <if test="req.orderType != null ">
                and co.order_type = #{req.orderType}
            </if>
            <if test="req.status != null ">
                and co.status = #{req.status}
            </if>
            <if test="req.status != null ">
                and co.status = #{req.status}
            </if>
            <if test="req.isWhitelist != null">
                and co.is_whitelist = #{req.isWhitelist}
            </if>
            <if test="req.siteId != null ">
                and co.site_id = #{req.siteId}
            </if>
            <if test="startTime1 != null and startTime1!=''">
                and co.pay_time between #{startTime1} and #{startTime2}
            </if>
            <if test="endTime1 != null and endTime2!=''">
                and co.end_time between #{endTime1} and #{endTime2}
            </if>
            and co.start_time IS NOT NULL and co.end_time is not null
        ) as a group by a.id
    </select>
    <select id="chargingListSum1" resultType="map">
        select
        count(a.id) as orderCount,
        sum(a.charging_capacity) as electronic,
        sum(a.period_electric_price) as electrovalence,
        sum(CASE WHEN a.order_source = 2 THEN a.period_service_price * 0.8 ELSE a.period_service_price END) as serviceCharge,
        sum(a.period_electric_price + (CASE WHEN a.order_source = 2 THEN a.period_service_price * 0.8 ELSE a.period_service_price END)) as paymentAmount
        from (
        select co.id,coas.charging_capacity, coas.period_electric_price, coas.period_service_price, co.order_source
        from t_charging_order_accounting_strategy coas
        left join t_charging_order co on (coas.charging_order_id = co.id)
        where co.del_flag = 0 and co.recharge_payment_status = 2
        <if test="null != req.code and req.code!=''">
            and co.code LIKE CONCAT('%',#{req.code},'%')
        </if>
        <if test="null != req.carIds and req.carIds.size()>0">
            and co.app_user_car_id in
            <foreach collection="req.carIds" item="item" index="index" separator="," open="(" close=")">
                #{item}
            </foreach>
        </if>
        <if test="null != req.userIds and req.userIds.size()>0">
            and co.app_user_id in
            <foreach collection="req.userIds" item="item" index="index" separator="," open="(" close=")">
                #{item}
            </foreach>
        </if>
        <if test="null != req.siteIds and req.siteIds.size()>0">
            and co.site_id in
            <foreach collection="req.siteIds" item="item" index="index" separator="," open="(" close=")">
                #{item}
            </foreach>
        </if>
        <if test="req.orderType != null ">
            and co.order_type = #{req.orderType}
        </if>
        <if test="req.status != null ">
            and co.status = #{req.status}
        </if>
        <if test="req.isWhitelist != null">
            and co.is_whitelist = #{req.isWhitelist}
        </if>
        <if test="req.siteId != null ">
            and co.site_id = #{req.siteId}
        </if>
        <if test="startTime1 != null and startTime1!=''">
            and co.pay_time between #{startTime1} and #{startTime2}
        </if>
        <if test="endTime1 != null and endTime2!=''">
            and co.end_time between #{endTime1} and #{endTime2}
        </if>
        and co.start_time IS NOT NULL and co.end_time is not null
        ) as a
    </select>
    <select id="chargingListNoPage" resultType="com.ruoyi.order.api.vo.ChargingOrderListVO">
        select t1.* from t_charging_order t1
        where 1=1
        <if test="null != req.code and req.code!=''">
            and t1.code  LIKE CONCAT('%',#{req.code},'%')
            and t1.code LIKE CONCAT('%',#{req.code},'%')
        </if>
        <if test="null != req.carIds and req.carIds.size()>0" >
        <if test="null != req.carIds and req.carIds.size()>0">
            and t1.app_user_car_id in
            <foreach collection="req.carIds" item="item" index="index" separator="," open="(" close=")">
                #{item}
            </foreach>
        </if>
        <if test="null != req.userIds and req.userIds.size()>0" >
        <if test="null != req.userIds and req.userIds.size()>0">
            and t1.app_user_id in
            <foreach collection="req.userIds" item="item" index="index" separator="," open="(" close=")">
                #{item}
@@ -1022,6 +1407,9 @@
        </if>
        <if test="req.status != null ">
            and t1.status = #{req.status}
        </if>
        <if test="req.isWhitelist != null">
            and t1.is_whitelist = #{req.isWhitelist}
        </if>
        <if test="req.siteId != null ">
            and t1.site_id = #{req.siteId}
@@ -1044,53 +1432,54 @@
        end as source
        from t_charging_order
        where 1=1
        AND  del_flag = 0
        AND del_flag = 0
        AND recharge_payment_status = 2 and status = 5
            <if test="siteIds != null and siteIds.size() > 0">
                and site_id IN
                <foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
                    #{siteId}
                </foreach>
            </if>
            <if test="statisticsQueryDto.dayType == 1">
                AND DATE(create_time ) = CURDATE()
            </if>
            <if test="statisticsQueryDto.dayType != 1">
                and DATE(create_time) >= #{statisticsQueryDto.startTime}
                and DATE(create_time)  &lt;= #{statisticsQueryDto.endTime}
            </if>
        <if test="siteIds != null and siteIds.size() > 0">
            and site_id IN
            <foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
                #{siteId}
            </foreach>
        </if>
        <if test="statisticsQueryDto.dayType == 1">
            AND DATE(create_time ) = CURDATE()
        </if>
        <if test="statisticsQueryDto.dayType != 1">
            and DATE(create_time) >= #{statisticsQueryDto.startTime}
            and DATE(create_time) &lt;= #{statisticsQueryDto.endTime}
        </if>
        group by tripartite_platform_name
    </select>
    <select id="equipmentUserType1" resultType="java.util.Map">
        SELECT
            FORMAT(SUM(TIME_TO_SEC(TIMEDIFF(co.end_time, co.start_time)) /
                       <if test="statisticsQueryDto.dayType == 1">
                           864
                       </if>
                   <if test="statisticsQueryDto.dayType == 2">
                       6048
                   </if>
                   <if test="statisticsQueryDto.dayType == 3">
                       25920
                   </if>
                   <if test="statisticsQueryDto.dayType == 4">
                       315360
                   </if>
                   <if test="statisticsQueryDto.dayType == 5">
                       (864*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS days_difference
                       ))
                   </if>
        FORMAT(SUM(TIME_TO_SEC(TIMEDIFF(co.end_time, co.start_time)) /
        <if test="statisticsQueryDto.dayType == 1">
            864
        </if>
        <if test="statisticsQueryDto.dayType == 2">
            6048
        </if>
        <if test="statisticsQueryDto.dayType == 3">
            25920
        </if>
        <if test="statisticsQueryDto.dayType == 4">
            315360
        </if>
        <if test="statisticsQueryDto.dayType == 5">
            (864*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS
            days_difference
            ))
        </if>
                   ), 2) AS percent,co.charging_gun_id,tc.name,cp.name as siteName
        ), 2) AS percent,co.charging_gun_id,tc.name,cp.name as siteName
        FROM
            `charging_pile_order`.`t_charging_order` co
                LEFT JOIN  `charging_pile_service`.`t_charging_gun` tc on co.charging_gun_id = tc.id
                LEFT JOIN  `charging_pile_service`.`t_charging_pile` cp on tc.charging_pile_id = cp.id
        `charging_pile_order`.`t_charging_order` co
        LEFT JOIN `charging_pile_service`.`t_charging_gun` tc on co.charging_gun_id = tc.id
        LEFT JOIN `charging_pile_service`.`t_charging_pile` cp on tc.charging_pile_id = cp.id
        WHERE co.del_flag = 0 and
            co.start_time IS NOT NULL AND co.end_time IS NOT NULL and tc.type = 4
        co.start_time IS NOT NULL AND co.end_time IS NOT NULL and tc.type = 4
        <if test="siteIds != null and siteIds.size() > 0">
            and co.site_id IN
            <foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
@@ -1111,15 +1500,13 @@
        </if>
        <if test="statisticsQueryDto.dayType == 5">
                and DATE(co.create_time) >= #{statisticsQueryDto.startTime}
            and DATE(co.create_time) >= #{statisticsQueryDto.startTime}
                and DATE(co.create_time)  &lt;= #{statisticsQueryDto.endTime}
            and DATE(co.create_time) &lt;= #{statisticsQueryDto.endTime}
        </if>
        GROUP BY tc.name,cp.name,co.charging_gun_id
    </select>
@@ -1139,7 +1526,8 @@
            315360
        </if>
        <if test="statisticsQueryDto.dayType == 5">
            (864*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS days_difference
            (864*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS
            days_difference
            ))
        </if>
@@ -1147,8 +1535,8 @@
        ), 2) AS percent,co.charging_gun_id,tc.name,cp.name as siteName
        FROM
        `charging_pile_order`.`t_charging_order` co
        LEFT JOIN  `charging_pile_service`.`t_charging_gun` tc on co.charging_gun_id = tc.id
        LEFT JOIN  `charging_pile_service`.`t_charging_pile` cp on tc.charging_pile_id = cp.id
        LEFT JOIN `charging_pile_service`.`t_charging_gun` tc on co.charging_gun_id = tc.id
        LEFT JOIN `charging_pile_service`.`t_charging_pile` cp on tc.charging_pile_id = cp.id
        WHERE co.del_flag = 0 and
        co.start_time IS NOT NULL AND co.end_time IS NOT NULL and tc.type in (2,3)
        <if test="siteIds != null and siteIds.size() > 0">
@@ -1174,7 +1562,7 @@
                and DATE(co.create_time) >= #{statisticsQueryDto.startTime}
            </if>
            <if test="statisticsQueryDto.endTime != null">
                and DATE(co.create_time)  &lt;= #{statisticsQueryDto.endTime}
                and DATE(co.create_time) &lt;= #{statisticsQueryDto.endTime}
            </if>
        </if>
        GROUP BY tc.name,cp.name,co.charging_gun_id
@@ -1183,7 +1571,7 @@
    </select>
    <select id="equipmentMapbroke1" resultType="java.util.Map">
        SELECT
            FORMAT(SUM(TIME_TO_SEC(TIMEDIFF(co.end_time, co.down_time)) /
        FORMAT(SUM(TIME_TO_SEC(TIMEDIFF(co.end_time, co.down_time)) /
        <if test="statisticsQueryDto.dayType == 1">
            864
        </if>
@@ -1197,14 +1585,15 @@
            315360
        </if>
        <if test="statisticsQueryDto.dayType == 5">
            (864*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS days_difference
            (864*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS
            days_difference
            ))
        </if>
                   ), 2) AS percent,cp.name
        ), 2) AS percent,cp.name
        FROM
        `charging_pile_service`.`t_fault_message` co
        LEFT JOIN  `charging_pile_service`.`t_charging_pile` cp on co.charging_pile_id = cp.id
        LEFT JOIN `charging_pile_service`.`t_charging_pile` cp on co.charging_pile_id = cp.id
        WHERE
        co.down_time IS NOT NULL AND co.end_time IS NOT NULL and cp.type = 1 and co.status =2
        <if test="siteIds != null and siteIds.size() > 0">
@@ -1227,10 +1616,10 @@
        </if>
        <if test="statisticsQueryDto.dayType == 5">
                and DATE(co.create_time) >= #{statisticsQueryDto.startTime}
            and DATE(co.create_time) >= #{statisticsQueryDto.startTime}
                and DATE(co.create_time)  &lt;= #{statisticsQueryDto.endTime}
            and DATE(co.create_time) &lt;= #{statisticsQueryDto.endTime}
        </if>
        GROUP BY cp.name
@@ -1253,14 +1642,15 @@
            315360
        </if>
        <if test="statisticsQueryDto.dayType == 5">
            (864*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS days_difference
            (864*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS
            days_difference
            ))
        </if>
        ), 2) AS percent,cp.name
        FROM
        `charging_pile_service`.`t_fault_message` co
        LEFT JOIN  `charging_pile_service`.`t_charging_pile` cp on co.charging_pile_id = cp.id
        LEFT JOIN `charging_pile_service`.`t_charging_pile` cp on co.charging_pile_id = cp.id
        WHERE
        co.down_time IS NOT NULL AND co.end_time IS NOT NULL and cp.type in (2,3) and co.status =2
        <if test="siteIds != null and siteIds.size() > 0">
@@ -1283,9 +1673,9 @@
        </if>
        <if test="statisticsQueryDto.dayType == 5">
                and DATE(co.create_time) >= #{statisticsQueryDto.startTime}
            and DATE(co.create_time) >= #{statisticsQueryDto.startTime}
                and DATE(co.create_time)  &lt;= #{statisticsQueryDto.endTime}
            and DATE(co.create_time) &lt;= #{statisticsQueryDto.endTime}
        </if>
        GROUP BY cp.name
@@ -1308,14 +1698,15 @@
            315360
        </if>
        <if test="statisticsQueryDto.dayType == 5">
            (864*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS days_difference
            (864*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS
            days_difference
            ))
        </if>
        ), 2)  AS percent,cp.name
        ), 2) AS percent,cp.name
        FROM
        `charging_pile_service`.`t_fault_message` co
        LEFT JOIN  `charging_pile_service`.`t_charging_pile` cp on co.charging_pile_id = cp.id
        LEFT JOIN `charging_pile_service`.`t_charging_pile` cp on co.charging_pile_id = cp.id
        WHERE
        co.down_time IS NOT NULL AND co.end_time IS NOT NULL and cp.type = 1 and co.status =1
        <if test="siteIds != null and siteIds.size() > 0">
@@ -1341,7 +1732,7 @@
                and DATE(co.create_time) >= #{statisticsQueryDto.startTime}
            </if>
            <if test="statisticsQueryDto.endTime != null">
                and DATE(co.create_time)  &lt;= #{statisticsQueryDto.endTime}
                and DATE(co.create_time) &lt;= #{statisticsQueryDto.endTime}
            </if>
        </if>
        GROUP BY cp.name
@@ -1362,14 +1753,15 @@
            315360
        </if>
        <if test="statisticsQueryDto.dayType == 5">
            (864*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS days_difference
            (864*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS
            days_difference
            ))
        </if>
        ), 2) AS percent,cp.name
        FROM
        `charging_pile_service`.`t_fault_message` co
        LEFT JOIN  `charging_pile_service`.`t_charging_pile` cp on co.charging_pile_id = cp.id
        LEFT JOIN `charging_pile_service`.`t_charging_pile` cp on co.charging_pile_id = cp.id
        WHERE
        co.down_time IS NOT NULL AND co.end_time IS NOT NULL and cp.type = 2 and co.status =1
        <if test="siteIds != null and siteIds.size() > 0">
@@ -1395,7 +1787,7 @@
                and DATE(co.create_time) >= #{statisticsQueryDto.startTime}
            </if>
            <if test="statisticsQueryDto.endTime != null">
                and DATE(co.create_time)  &lt;= #{statisticsQueryDto.endTime}
                and DATE(co.create_time) &lt;= #{statisticsQueryDto.endTime}
            </if>
        </if>
        GROUP BY cp.name
@@ -1403,14 +1795,14 @@
    </select>
    <select id="needElec" resultType="java.util.Map">
        SELECT
            FORMAT((SUM(co.current)*100 / SUM(co.need_elec)), 2) AS percent,
            co.charging_gun_id,
            tc.name as name,
            cp.name AS siteName
        FORMAT((SUM(co.current)*100 / SUM(co.need_elec)), 2) AS percent,
        co.charging_gun_id,
        tc.name as name,
        cp.name AS siteName
        FROM
            `charging_pile_order`.`t_charging_order` co
                LEFT JOIN `charging_pile_service`.`t_charging_gun` tc ON co.charging_gun_id = tc.id
                LEFT JOIN `charging_pile_service`.`t_charging_pile` cp ON tc.charging_pile_id = cp.id
        `charging_pile_order`.`t_charging_order` co
        LEFT JOIN `charging_pile_service`.`t_charging_gun` tc ON co.charging_gun_id = tc.id
        LEFT JOIN `charging_pile_service`.`t_charging_pile` cp ON tc.charging_pile_id = cp.id
        <where>
            tc.type = 4 and co.need_elec != 0
            <if test="siteIds != null and siteIds.size() > 0">
@@ -1433,19 +1825,49 @@
            </if>
            <if test="statisticsQueryDto.dayType == 5">
                    and DATE(co.create_time) >= #{statisticsQueryDto.startTime}
                and DATE(co.create_time) >= #{statisticsQueryDto.startTime}
                    and DATE(co.create_time)  &lt;= #{statisticsQueryDto.endTime}
                and DATE(co.create_time) &lt;= #{statisticsQueryDto.endTime}
            </if>
        </where>
        GROUP BY
            tc.name,
            cp.name,
            co.charging_gun_id;
        tc.name,
        cp.name,
        co.charging_gun_id;
    </select>
    <select id="getChargingOrderCount" resultType="java.util.Map">
        select
            count(a.id) as num,
            sum(b.charging_capacity) as charging_capacity,
            sum(CASE WHEN a.order_source = 0 THEN b.period_service_price
                     WHEN a.order_source = 1 THEN b.period_service_price
                     ELSE b.period_service_price * 0.8
                END) as servicecharge,
            sum(b.period_electric_price) as electrovalence,
            sum(b.charging_capacity) as electricity
        from t_charging_order a
        left join (
            select charging_order_id,
                   sum(period_service_price) as period_service_price,
                   sum(period_electric_price) as period_electric_price,
                   sum(charging_capacity) as charging_capacity
            from t_charging_order_accounting_strategy group by charging_order_id
        ) as b on (a.id = b.charging_order_id)
        where a.del_flag = 0 and a.status = 5 and a.recharge_payment_status = 2 and DATE_FORMAT(a.create_time, '%Y-%m-%d') = #{time}
        <if test="siteIds != null and siteIds.size() > 0">
            and a.site_id IN
            <foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
                #{siteId}
            </foreach>
        </if>
    </select>
    <select id="getHourType" resultType="java.util.Map">
        select
        aa.time,
@@ -1472,8 +1894,11 @@
        (b.charging_capacity) as electricity
        FROM
        t_charging_order a
        left join (select charging_order_id, sum(period_electric_price) as period_electric_price, sum(period_service_price) as period_service_price, sum(charging_capacity) as charging_capacity, sum(period_electric_price + period_service_price) as money from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id)
        WHERE a.del_flag = 0 and a.status = 5 and a.recharge_payment_status = 2  and DATE_FORMAT(
        left join (select charging_order_id, sum(period_electric_price) as period_electric_price,
        sum(period_service_price) as period_service_price, sum(charging_capacity) as charging_capacity,
        sum(period_electric_price + period_service_price) as money from t_charging_order_accounting_strategy group by
        charging_order_id) b on (a.id = b.charging_order_id)
        WHERE a.del_flag = 0 and a.status = 5 and a.recharge_payment_status = 2 and DATE_FORMAT(
        <if test="statisticsQueryDto.type == 1">
            a.create_time
        </if>
@@ -1515,8 +1940,11 @@
        (b.charging_capacity) as electricity
        FROM
        t_charging_order a
        left join (select charging_order_id, sum(period_electric_price) as period_electric_price, sum(period_service_price) as period_service_price, sum(charging_capacity) as charging_capacity, sum(period_electric_price + period_service_price) as money from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id)
        WHERE a.del_flag = 0 and a.status = 5 and a.recharge_payment_status = 2  and DATE_FORMAT(
        left join (select charging_order_id, sum(period_electric_price) as period_electric_price,
        sum(period_service_price) as period_service_price, sum(charging_capacity) as charging_capacity,
        sum(period_electric_price + period_service_price) as money from t_charging_order_accounting_strategy group by
        charging_order_id) b on (a.id = b.charging_order_id)
        WHERE a.del_flag = 0 and a.status = 5 and a.recharge_payment_status = 2 and DATE_FORMAT(
        <if test="statisticsQueryDto.type == 1">
            a.start_time
        </if>
@@ -1558,8 +1986,11 @@
        (b.charging_capacity) as electricity
        FROM
        t_charging_order a
        left join (select charging_order_id, sum(period_electric_price) as period_electric_price, sum(period_service_price) as period_service_price, sum(charging_capacity) as charging_capacity, sum(period_electric_price + period_service_price) as money from t_charging_order_accounting_strategy group by charging_order_id) b on (a.id = b.charging_order_id)
        WHERE a.del_flag = 0 and a.status = 5 and a.recharge_payment_status = 2  and DATE_FORMAT(
        left join (select charging_order_id, sum(period_electric_price) as period_electric_price,
        sum(period_service_price) as period_service_price, sum(charging_capacity) as charging_capacity,
        sum(period_electric_price + period_service_price) as money from t_charging_order_accounting_strategy group by
        charging_order_id) b on (a.id = b.charging_order_id)
        WHERE a.del_flag = 0 and a.status = 5 and a.recharge_payment_status = 2 and DATE_FORMAT(
        <if test="statisticsQueryDto.type == 1">
            a.start_time
        </if>
@@ -1577,11 +2008,11 @@
    </select>
    <select id="getchargingCapacity" resultType="java.util.Map">
        SELECT
            DATE_FORMAT( create_time, '%Y-%m-%d' ) as time,
   SUM(charging_capacity) as chargingCapacity
        DATE_FORMAT( create_time, '%Y-%m-%d' ) as time,
        SUM(charging_capacity) as chargingCapacity
        FROM
            t_charging_order
        WHERE     del_flag = 0 and recharge_payment_status = 2
        t_charging_order
        WHERE del_flag = 0 and recharge_payment_status = 2
        <if test="statisticsQueryDto.dayType == 1">
            AND DATE( create_time ) between #{statisticsQueryDto.startTime} and #{statisticsQueryDto.endTime}
        </if>
@@ -1593,30 +2024,30 @@
            </foreach>
        </if>
        GROUP BY
            time
        time
    </select>
    <select id="countAllUserData" resultType="java.util.Map">
        SELECT
            COUNT( DISTINCT app_user_id ) AS counts,
            '1' AS type
        COUNT( DISTINCT app_user_id ) AS counts,
        '1' AS type
        FROM
            `charging_pile_order`.`t_charging_order` UNION ALL
        `charging_pile_order`.`t_charging_order` UNION ALL
        SELECT
            COUNT(*) AS counts,
            '2' AS type
        COUNT(*) AS counts,
        '2' AS type
        FROM
            `charging_pile_account`.`t_app_user`
        `charging_pile_account`.`t_app_user`
        WHERE
            `vip_end_time` > NOW()
        `vip_end_time` > NOW()
        UNION ALL
        SELECT
            COUNT(*) AS counts,
            '3' AS type
        COUNT(*) AS counts,
        '3' AS type
        FROM
            `charging_pile_account`.`t_app_user`
        `charging_pile_account`.`t_app_user`
        WHERE
            del_flag = 0
        del_flag = 0
    </select>
@@ -1627,7 +2058,8 @@
        tc.name as name,
        cp.name AS siteName
        FROM
        (select site_id,create_time,charging_gun_id, charging_pile_id, current, (CASE WHEN need_elec = 0 THEN `current` ELSE need_elec END) as need_elec from `charging_pile_order`.`t_charging_order`) co
        (select site_id,create_time,charging_gun_id, charging_pile_id, current, (CASE WHEN need_elec = 0 THEN `current`
        ELSE need_elec END) as need_elec from `charging_pile_order`.`t_charging_order`) co
        LEFT JOIN `charging_pile_service`.`t_charging_gun` tc ON co.charging_gun_id = tc.id
        LEFT JOIN `charging_pile_service`.`t_charging_pile` cp ON tc.charging_pile_id = cp.id
        <where>
@@ -1655,7 +2087,7 @@
                    and DATE(co.create_time) >= #{statisticsQueryDto.startTime}
                </if>
                <if test="statisticsQueryDto.endTime != null">
                    and DATE(co.create_time)  &lt;= #{statisticsQueryDto.endTime}
                    and DATE(co.create_time) &lt;= #{statisticsQueryDto.endTime}
                </if>
            </if>
        </where>
@@ -1668,167 +2100,372 @@
        SELECT count(1)
        from `charging_pile_account`.`t_app_user` au
        WHERE au.id not IN (
            SELECT app_user_id
            from `charging_pile_account`.`t_app_user_tag`
            GROUP BY app_user_id
        SELECT app_user_id
        from `charging_pile_account`.`t_app_user_tag`
        GROUP BY app_user_id
        )  and au.del_flag = 0
        ) and au.del_flag = 0
    </select>
    <select id="countCar" resultType="java.lang.Long">
        select count(1)
        from
            charging_pile_account.t_app_user_car
        charging_pile_account.t_app_user_car
        where del_flag = 0
        <if test="brands != null and brands.size() > 0">
          and vehicle_brand  not in
        <foreach collection="brands" item="brand" open="(" separator="," close=")">
            #{brand}
        </foreach>
            and vehicle_brand not in
            <foreach collection="brands" item="brand" open="(" separator="," close=")">
                #{brand}
            </foreach>
        </if>
    </select>
    <select id="chargingOrderNolimit" resultType="map">
        select
        sum(charging_capacity) as total,
        sum(charging_duration) as `time`,
        sum(electric_price) as electronicMoney,
        sum(income) as paymentMoney,
        sum(service_price) as serviceMoney
        from t_charging_order_summary_data
        where charging_order_id in (
        select t1.id
        from t_charging_order t1
        where 1=1
    <sql id="ChargingOrderSummaryWhere">
        where b.del_flag = 0 and b.recharge_payment_status = 2 and b.start_time IS NOT NULL and b.end_time is not null
        <if test="null != req.code and req.code!=''">
            and t1.code  LIKE CONCAT('%',#{req.code},'%')
            and b.code LIKE CONCAT('%',#{req.code},'%')
        </if>
        <if test="null != req.userIds and req.userIds.size()>0" >
            and t1.app_user_id in
        <if test="null != req.userIds and req.userIds.size()>0">
            and b.app_user_id in
            <foreach collection="req.userIds" item="item" index="index" separator="," open="(" close=")">
                #{item}
            </foreach>
        </if>
        <if test="null != req.siteIds and req.siteIds.size()>0" >
            and t1.site_id in
        <if test="null != req.siteIds and req.siteIds.size()>0">
            and b.site_id in
            <foreach collection="req.siteIds" item="item" index="index" separator="," open="(" close=")">
                #{item}
            </foreach>
        </if>
        <if test="req.orderType != null ">
            and t1.order_type = #{req.orderType}
            and b.order_type = #{req.orderType}
        </if>
        <if test="req.status != null ">
            and t1.status = #{req.status}
            and b.status = #{req.status}
        </if>
        <if test="req.orderSource != null and req.orderSource == 1 ">
            and (t1.order_source = 0 or t1.order_source = 1 )
            and (b.order_source = 0 or b.order_source = 1 )
        </if>
        <if test="req.orderSource != null and req.orderSource == 2 ">
            and t1.tripartite_platform_name = 'KuaiDian'
            and b.tripartite_platform_name = 'KuaiDian'
        </if>
        <if test="req.orderSource != null and req.orderSource == 3 ">
            and t1.tripartite_platform_name = 'XinDianTu'
            and b.tripartite_platform_name = 'XinDianTu'
        </if>
        <if test="req.isWhitelist != null">
            and b.is_whitelist = #{req.isWhitelist}
        </if>
        <if test="req.paymentType != null and req.paymentType == 1 ">
            and b.recharge_payment_type = 1
        </if>
        <if test="req.paymentType != null and req.paymentType == 2 ">
            and b.recharge_payment_type in (2, 3)
        </if>
        <if test="req.paymentType != null and req.paymentType == 3 ">
            and b.pay_method in (1, 2)
        </if>
        <if test="req.siteId != null ">
            and t1.site_id = #{req.siteId}
            and b.site_id = #{req.siteId}
        </if>
        <if test="req.pileId != null ">
            and t1.charging_pile_id = #{req.pileId}
            and b.charging_pile_id = #{req.pileId}
        </if>
        <if test="req.gunId != null ">
            and t1.charging_gun_id = #{req.gunId}
            and b.charging_gun_id = #{req.gunId}
        </if>
        <if test="startTime1 != null and startTime1!=''">
            and (t1.pay_time between #{startTime1} and #{startTime2})
            and (b.pay_time between #{startTime1} and #{startTime2})
        </if>
        <if test="endTime1 != null and endTime1!=''">
            and (t1.end_time between #{endTime1} and #{endTime2})
            and (b.end_time between #{endTime1} and #{endTime2})
        </if>
        and t1.del_flag = 0
        )
    </select>
    <select id="countOrdersByDate" resultType="com.ruoyi.order.vo.OrderCountByDate">
        SELECT  DATE_FORMAT(create_time, '%m/%d') AS `date`,  COUNT(*) AS `count`
        FROM t_charging_order
        WHERE
            del_flag = 0
        and
            status in (3,5)
    </sql>
            and charging_gun_id in
            <foreach item="item" index="index" collection="gunIds" open="(" separator="," close=")">
    <select id="chargingOrderNolimit" resultType="map">
        select
        sum(aa.time) as `time`,
        sum(aa.income) as income,
        sum(aa.electronicMoney) as electronicMoney,
        sum(aa.serviceMoney) as serviceMoney,
        sum(aa.total) as total
        from (
            select
            b.id,
            (UNIX_TIMESTAMP(b.end_time) - UNIX_TIMESTAMP(b.start_time)) as time,
            sum(a.charging_capacity) as total,
            sum(a.period_electric_price) as electronicMoney,
            sum(CASE WHEN b.order_source = 1 THEN a.period_service_price ELSE a.period_service_price * 0.8 END) as serviceMoney,
            sum(a.period_electric_price + (CASE WHEN b.order_source = 1 THEN a.period_service_price ELSE a.period_service_price * 0.8 END)) as income
            from `charging_pile_order`.t_charging_order_accounting_strategy a
            left join `charging_pile_order`.t_charging_order b on (a.charging_order_id = b.id)
            <include refid="ChargingOrderSummaryWhere"/>
            group by b.id,time
        ) as aa
    </select>
    <select id="chargingOrderFundSummary" resultType="map">
        select
        sum(CASE WHEN aa.recharge_payment_type = 1 and aa.thirdNetAmount > 0 THEN aa.thirdNetAmount ELSE 0 END) as wechatIncome,
        sum(CASE WHEN aa.recharge_payment_type in (2, 3) and aa.thirdNetAmount > 0 THEN aa.thirdNetAmount ELSE 0 END) as alipayIncome,
        0 as balanceIncome,
        0 as platformIncomeTotal,
        0 as partnerIncomeTotal,
        sum(CASE WHEN aa.is_whitelist = 1 THEN IFNULL(aa.electrovalence, 0) + IFNULL(aa.serviceCharge, 0) ELSE 0 END) as whitelistChargingIncome,
        sum(CASE WHEN aa.is_whitelist = 1 THEN IFNULL(aa.whitelist_electric_refund_amount, 0) + IFNULL(aa.whitelist_service_refund_amount, 0) ELSE 0 END) as whitelistRefund
        from (
            select
            b.id,
            b.recharge_payment_type,
            b.is_whitelist,
            b.electrovalence,
            b.service_charge as serviceCharge,
            b.whitelist_electric_refund_amount,
            b.whitelist_service_refund_amount,
            IFNULL(b.third_pay_amount, CASE WHEN b.pay_method = 3 THEN IFNULL(b.payment_amount, IFNULL(b.recharge_amount, 0)) ELSE 0 END) - IFNULL(b.third_refund_amount, CASE WHEN b.pay_method = 3 THEN IFNULL(b.refund_amount, 0) ELSE 0 END) as thirdNetAmount
            from `charging_pile_order`.t_charging_order b
            <include refid="ChargingOrderSummaryWhere"/>
        ) as aa
    </select>
    <select id="chargingOrderSummaryOrderIds" resultType="java.lang.Long">
        select b.id
        from `charging_pile_order`.t_charging_order b
        <include refid="ChargingOrderSummaryWhere"/>
    </select>
    <select id="exchangeCodeBalanceSummary" resultType="map">
        select
        sum(CASE WHEN change_type = 2 THEN IFNULL(used_amount, 0) - IFNULL(gift_used_amount, 0) WHEN change_type = 3 THEN -(IFNULL(used_amount, 0) - IFNULL(gift_used_amount, 0)) ELSE 0 END) as balanceIncome,
        sum(CASE WHEN change_type = 2 THEN IFNULL(gift_used_amount, 0) WHEN change_type = 3 THEN -IFNULL(gift_used_amount, 0) ELSE 0 END) as balanceGiftIncome
        from `charging_pile_other`.t_exchange_code_use_record
        where del_flag = 0 and change_type in (2, 3)
        <if test="orderIds != null and orderIds.size()>0">
            and order_id in
            <foreach collection="orderIds" item="item" index="index" separator="," open="(" close=")">
                #{item}
            </foreach>
        and   create_time BETWEEN #{startTime}  AND #{endTime}
        </if>
    </select>
    <select id="exchangeCodeBalanceIncomeByOrderIds" resultType="map">
        select
        order_id as orderId,
        sum(CASE WHEN change_type = 2 THEN IFNULL(used_amount, 0) - IFNULL(gift_used_amount, 0) WHEN change_type = 3 THEN -(IFNULL(used_amount, 0) - IFNULL(gift_used_amount, 0)) ELSE 0 END) as balanceIncome,
        sum(CASE WHEN change_type = 2 THEN IFNULL(gift_used_amount, 0) WHEN change_type = 3 THEN -IFNULL(gift_used_amount, 0) ELSE 0 END) as balanceGiftIncome
        from `charging_pile_other`.t_exchange_code_use_record
        where del_flag = 0 and order_id is not null and order_id != 0 and change_type in (2, 3)
        <if test="orderIds != null and orderIds.size()>0">
            and order_id in
            <foreach collection="orderIds" item="item" index="index" separator="," open="(" close=")">
                #{item}
            </foreach>
        </if>
        group by order_id
    </select>
    <select id="exchangeCodeBalanceIncomeDetail" resultType="com.ruoyi.order.api.vo.ChargingOrderBalanceIncomeDetailVO">
        select
        p.id as packageId,
        p.package_name as packageName,
        sum(CASE WHEN r.change_type = 2 THEN IFNULL(r.used_amount, 0) - IFNULL(r.gift_used_amount, 0) WHEN r.change_type = 3 THEN -(IFNULL(r.used_amount, 0) - IFNULL(r.gift_used_amount, 0)) ELSE 0 END) as balanceIncome,
        sum(CASE WHEN r.change_type = 2 THEN IFNULL(r.gift_used_amount, 0) WHEN r.change_type = 3 THEN -IFNULL(r.gift_used_amount, 0) ELSE 0 END) as giftIncome
        from `charging_pile_other`.t_exchange_code_use_record r
        left join `charging_pile_other`.t_exchange_code_detail d on r.detail_id = d.id
        left join `charging_pile_other`.t_exchange_code_package p on d.package_id = p.id
        where r.del_flag = 0 and r.change_type in (2, 3)
        <if test="orderIds != null and orderIds.size()>0">
            and r.order_id in
            <foreach collection="orderIds" item="item" index="index" separator="," open="(" close=")">
                #{item}
            </foreach>
        </if>
        group by p.id, p.package_name
        having balanceIncome != 0 or giftIncome != 0
        order by p.id desc
    </select>
    <select id="countOrdersByDate" resultType="com.ruoyi.order.vo.OrderCountByDate">
        SELECT DATE_FORMAT(create_time, '%m/%d') AS `date`, COUNT(*) AS `count`
        FROM t_charging_order
        WHERE
        del_flag = 0
        and
        status in (3,5)
        and charging_gun_id in
        <foreach item="item" index="index" collection="gunIds" open="(" separator="," close=")">
            #{item}
        </foreach>
        and create_time BETWEEN #{startTime} AND #{endTime}
        GROUP BY DATE(create_time, '%m/%d')
        ORDER BY DATE(create_time, '%m/%d') ASC
    </select>
    <select id="findFailedStartupOrder" resultType="com.ruoyi.order.api.model.TChargingOrder">
        SELECT
            *
        *
        FROM
            t_charging_order
        t_charging_order
        WHERE
            `status` = 2
          AND recharge_payment_status = 2
          AND recharge_serial_number IS NOT NULL
          AND NOW() >= ADDDATE(pay_time, INTERVAL 15 MINUTE )
          AND del_flag = 0
          AND order_source = 1
          AND id NOT IN (
            SELECT
                charging_order_id
            FROM
                t_charging_order_refund)
        `status` = 2
        AND recharge_payment_status = 2
        AND (NOW() >= ADDDATE(pay_time, INTERVAL 15 MINUTE ) OR NOW() >= ADDDATE(create_time, INTERVAL 30 MINUTE ))
        AND del_flag = 0
    </select>
    <select id="findStoppedOrder" resultType="com.ruoyi.order.api.model.TChargingOrder">
        SELECT
            *
        *
        FROM
            t_charging_order
        t_charging_order
        WHERE
            `status` = 4
          AND NOW() >= ADDDATE(end_time, INTERVAL 10 MINUTE )
          AND del_flag = 0
          AND id NOT IN (
            SELECT
                charging_order_id
            FROM
                t_charging_order_refund)
        `status` = 4
        AND NOW() >= ADDDATE(end_time, INTERVAL 10 MINUTE )
        AND del_flag = 0
        AND id NOT IN (
        SELECT
        charging_order_id
        FROM
        t_charging_order_refund)
    </select>
    <select id="findChargingOrder" resultType="com.ruoyi.order.api.model.TChargingOrder">
        SELECT
            *
        *
        FROM
            t_charging_order
        t_charging_order
        WHERE
            `status` = 3
          AND del_flag = 0
          AND id NOT IN (
            SELECT
                charging_order_id
            FROM
                t_charging_order_refund)
        `status` = 3
        AND del_flag = 0
        AND id NOT IN (
        SELECT
        charging_order_id
        FROM
        t_charging_order_refund)
    </select>
    <select id="getSumDegreeBySiteIds" resultType="java.lang.Double">
        SELECT IFNULL(SUM(t2.charging_capacity), 0.0) AS sumDegreeBySiteIds
        FROM t_charging_order t1
                 LEFT JOIN t_charging_order_summary_data t2 ON t1.id = t2.charging_order_id
        LEFT JOIN t_charging_order_summary_data t2 ON t1.id = t2.charging_order_id
        WHERE t1.del_flag = 0
          <if test="siteIds != null and siteIds.size() > 0">
        <if test="siteIds != null and siteIds.size() > 0">
            AND t1.site_id IN
            <foreach collection="siteIds" item="item" open="(" separator="," close=")">
                #{item}
            </foreach>
          </if>
     </select>
        </if>
    </select>
    <select id="findEndChargingOrder" resultType="com.ruoyi.order.api.model.TChargingOrder">
        SELECT
        *
        FROM
        t_charging_order
        WHERE `status` in (-1, 5) AND del_flag = 0 and create_time > '2025-08-01 00:00:00' and order_source = 1 AND id NOT IN (
        SELECT
        charging_order_id
        FROM
        t_charging_order_refund)
    </select>
    <select id="findUpStatusChargingOrder" resultType="com.ruoyi.order.api.model.TChargingOrder">
        select * from t_charging_order where `status` in (2, 3, 4) and id IN (
        SELECT
        charging_order_id
        FROM
        t_charging_order_refund)
    </select>
    <select id="getChargingSettlementBill" resultType="map">
        select
        aa.siteId,
        count(aa.orderId) as orderNum,
        sum(aa.chargingDuration) as chargingDuration,
        sum(aa.totalAmount) as totalAmount,
        sum(aa.couponDeduction) as couponDeduction,
        sum(aa.platformFee) as platformFee,
        SUM(aa.tripartiteCommission) as tripartiteCommission,
        sum(aa.totalElectricity) as totalElectricity,
        sum(aa.totalElectricityCharge) as totalElectricityCharge,
        sum(aa.totalServiceFee) as totalServiceFee
        from (
            select
            b.id as orderId,
            b.site_id as siteId,
            UNIX_TIMESTAMP(b.end_time) - UNIX_TIMESTAMP(b.start_time) as chargingDuration,
            b.payment_amount as totalAmount,
            b.coupon_discount_amount as couponDeduction,
            (CASE WHEN b.order_source != 2 THEN b.recharge_amount * 0.006 ELSE 0 END) as platformFee,
            sum((CASE WHEN b.order_source = 2 THEN a.period_service_price * 0.2 ELSE 0 END)) as tripartiteCommission,
            sum(a.charging_capacity) as totalElectricity,
            sum(a.period_electric_price) as totalElectricityCharge,
            sum(a.period_service_price) as totalServiceFee
            from `charging_pile_order`.t_charging_order_accounting_strategy a
            left join `charging_pile_order`.t_charging_order b on (a.charging_order_id = b.id)
            where b.`status` = 5 and b.del_flag = 0
            <if test="null != dateType and 1 == dateType">
                and b.start_time between #{startTime} and #{endTime}
            </if>
            <if test="null != dateType and 2 == dateType">
                and b.end_time between #{startTime} and #{endTime}
            </if>
            group by orderId,siteId, chargingDuration, totalAmount, couponDeduction, platformFee
        ) as aa group by aa.siteId order by aa.siteId
    </select>
    <select id="getAccountSettlementStatement" resultType="map">
        select
        aa.site_id as siteId,
        aa.recharge_payment_type as rechargePaymentType,
        sum(aa.recharge_amount) as rechargeAmount,
        sum(aa.refund_amount) as refundAmount,
        sum(aa.platformFee) as platformFee,
        sum(aa.tripartiteCommission) as tripartiteCommission
        from (
            select
            b.id as orderId,
            b.recharge_payment_type,
            b.site_id,
            b.recharge_amount,
            ifnull(c.refund_amount, 0) as refund_amount,
            (CASE WHEN b.order_source != 2 THEN b.recharge_amount * 0.006 ELSE 0 END) as platformFee,
            sum((CASE WHEN b.order_source = 2 THEN a.period_service_price * 0.2 ELSE 0 END)) as tripartiteCommission
            from t_charging_order_accounting_strategy a
            left join t_charging_order b on (a.charging_order_id = b.id)
            left join t_charging_order_refund c on (b.id = c.charging_order_id)
            where b.`status` = 5 and b.del_flag = 0 and b.recharge_payment_type = #{rechargePaymentType} and b.start_time between #{startTime} and #{endTime}
            group by orderId,recharge_payment_type,site_id,recharge_amount,refund_amount,platformFee
        ) as aa group by aa.site_id,aa.recharge_payment_type order by aa.site_id
    </select>
    <select id="getSiteChargingCapacity" resultType="map">
        select b.site_id as siteId, sum(a.charging_capacity) as chargingCapacity
        from t_charging_order_accounting_strategy a
        left join t_charging_order b on (a.charging_order_id = b.id)
        where b.status = 5
        <if test="null != siteIds and siteIds.size() > 0">
            and b.site_id in
            <foreach collection="siteIds" item="item" open="(" separator="," close=")">
                #{item}
            </foreach>
        </if>
        group by b.site_id
    </select>
</mapper>