<?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"/>
|
<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="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="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, 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)
|
</if>
|
order by create_time desc
|
<if test="null != pageCurr and null != pageSize">
|
limit #{pageCurr}, #{pageSize}
|
</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}
|
<if test="null != month and '' != month">
|
and DATE_FORMAT(end_time, '%Y-%m') = #{month}
|
</if>
|
and id not in (select tod.order_id from t_order_invoice_detail tod inner join t_order_invoice toi on toi.id = tod.order_invoice_id where tod.order_type = 1 and toi.status != 4)
|
order by create_time desc
|
<if test="null != pageCurr and null != pageSize">
|
limit #{pageCurr}, #{pageSize}
|
</if>
|
</select>
|
|
<select id="chargingOrder" resultType="com.ruoyi.order.api.vo.ChargingOrderVO">
|
select t1.*,
|
IFNULL(t1.whitelist_electric_refund_amount, 0) + IFNULL(t1.whitelist_service_refund_amount, 0) as whitelistRefundAmount
|
from t_charging_order t1
|
<if test="req.phone != null and req.phone != ''">
|
inner join `charging_pile_account`.`t_app_user` app_user on app_user.id = t1.app_user_id
|
</if>
|
where t1.del_flag = 0
|
<if test="null != req.code and req.code!=''">
|
and t1.code LIKE CONCAT('%',#{req.code},'%')
|
</if>
|
<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="req.phone != null and req.phone != ''">
|
and app_user.phone LIKE CONCAT('%',#{req.phone},'%')
|
</if>
|
<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}
|
</foreach>
|
</if>
|
<if test="req.orderType != null ">
|
and t1.order_type = #{req.orderType}
|
</if>
|
<if test="req.status != null ">
|
and t1.status = #{req.status}
|
</if>
|
<if test="req.orderSource != null and req.orderSource == 1 ">
|
and (t1.order_source = 0 or t1.order_source = 1 )
|
</if>
|
<if test="req.orderSource != null and req.orderSource == 2 ">
|
and t1.tripartite_platform_name = 'KuaiDian'
|
</if>
|
<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>
|
<if test="req.pileId != null ">
|
and t1.charging_pile_id = #{req.pileId}
|
</if>
|
<if test="req.gunId != null ">
|
and t1.charging_gun_id = #{req.gunId}
|
</if>
|
<if test="startTime1 != null and startTime1!=''">
|
and (t1.pay_time between #{startTime1} and #{startTime2})
|
</if>
|
<if test="endTime1 != null and endTime1!=''">
|
and (t1.end_time between #{endTime1} and #{endTime2})
|
</if>
|
and t1.del_flag = 0
|
order by t1.create_time desc
|
</select>
|
<select id="payOrderQuery" resultType="com.ruoyi.order.dto.PayOrderDto">
|
SELECT o.*,i.phone FROM (
|
SELECT
|
a.id,
|
a.`code`,
|
1 as type,
|
a.title,
|
a.`status`,
|
a.recharge_amount as order_amount,
|
a.recharge_amount as payment_amount ,
|
a.create_time,
|
a.end_time,
|
a.pay_time,
|
a.refund_status as refund_status,
|
(a.recharge_amount-a.refund_amount) as final_amount,
|
a.del_flag,
|
a.app_user_id
|
FROM
|
charging_pile_order.t_charging_order a
|
where a.recharge_payment_status = 2
|
|
UNION ALL
|
|
SELECT
|
a.id,
|
a.`code`,
|
2 as type,
|
a.title,
|
a.`status`,
|
a.order_amount,
|
a.payment_amount ,
|
a.create_time,
|
a.receiving_time as end_time,
|
a.pay_time,
|
a.refund_status as refund_status,
|
(a.payment_amount-a.refund_amount) as final_amount,
|
a.del_flag,
|
a.app_user_id
|
FROM
|
charging_pile_order.t_shopping_order a
|
where a.payment_status = 2
|
|
UNION ALL
|
|
SELECT
|
a.id,
|
a.`code`,
|
3 as type,
|
a.title,
|
a.payment_status AS `status`,
|
a.order_amount,
|
a.payment_amount ,
|
a.create_time,
|
a.create_time as end_time,
|
a.pay_time,
|
a.refund_status as refund_status,
|
(a.payment_amount-a.refund_amount) as final_amount,
|
a.del_flag,
|
a.app_user_id
|
FROM
|
charging_pile_order.t_vip_order a
|
where a.payment_status = 2
|
|
UNION ALL
|
|
SELECT
|
id,
|
`code`,
|
4 as type,
|
title,
|
`status`,
|
order_amount ,
|
order_amount as payment_amount,
|
create_time,
|
out_parking_time as end_time,
|
out_parking_time as pay_time,
|
null as refund_status,
|
0 as final_amount,
|
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
|
<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 >= #{data.createTime1}
|
</if>
|
<if test="data.createTime2 != null">
|
AND o.create_time <= #{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>
|
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.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.site_id as site_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
|
<if test="data.specialRefund != null and data.specialRefund">
|
WHERE re.refund_title = '特殊退款处理'
|
</if>
|
<if test="data.specialRefund == null or !data.specialRefund">
|
UNION ALL
|
SELECT
|
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,
|
null as site_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,
|
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,
|
null as site_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
|
</if>
|
) o
|
<where>
|
<if test="data.code != null and data.code != ''">
|
AND o.code LIKE CONCAT('%',#{data.code},'%')
|
</if>
|
<if test="data.refundCode != null and data.refundCode != ''">
|
AND o.refund_code LIKE CONCAT('%',#{data.refundCode},'%')
|
</if>
|
<if test="data.serialNumber != null and data.serialNumber != ''">
|
AND o.serail_number LIKE CONCAT('%',#{data.serialNumber},'%')
|
</if>
|
<if test="data.specialRefund != null and data.specialRefund">
|
AND o.refund_title = '特殊退款处理'
|
</if>
|
<if test="data.siteIds != null and data.siteIds.size() > 0">
|
AND (o.type != 1 OR o.site_id IN
|
<foreach collection="data.siteIds" item="siteId" open="(" separator="," close=")">
|
#{siteId}
|
</foreach>
|
)
|
</if>
|
</where>
|
order by o.refund_time desc
|
|
</select>
|
<select id="chargingOrderGroup" resultType="com.ruoyi.common.core.dto.ChargingOrderGroup">
|
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>
|
<if test="chargingPercentProvinceDto.date1 != null">
|
AND tc.create_time >= #{chargingPercentProvinceDto.date1}
|
</if>
|
<if test="chargingPercentProvinceDto.date2 != null">
|
AND tc.create_time <= #{chargingPercentProvinceDto.date2}
|
</if>
|
<if test="chargingPercentProvinceDto.provinceCode != null">
|
AND ts.province_code = #{chargingPercentProvinceDto.provinceCode}
|
</if>
|
<if test="chargingPercentProvinceDto.siteIds != null and chargingPercentProvinceDto.siteIds.size() > 0">
|
AND site_id IN
|
<foreach collection="chargingPercentProvinceDto.siteIds" item="siteId" open="(" separator="," close=")">
|
#{siteId}
|
</foreach>
|
</if>
|
</where>
|
GROUP BY site_id
|
|
|
</select>
|
<select id="charge" resultType="com.ruoyi.order.dto.SixChargingDto">
|
<choose>
|
<when test="partnerView != null and partnerView">
|
SELECT EXTRACT(MONTH FROM create_time) AS MONTH,
|
SUM(IFNULL(electricity_share_amount, 0)) AS electrovalence,
|
SUM(IFNULL(service_share_amount, 0)) AS service_charge
|
FROM t_charging_order_share_record
|
WHERE del_flag = 0 AND online_share_status IN ('SUCCESS', 'RECORDED')
|
<if test="sixBefore != null">
|
AND create_time >= #{sixBefore}
|
</if>
|
<if test="siteIds != null and siteIds.size() > 0">
|
AND site_id IN
|
<foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
|
#{siteId}
|
</foreach>
|
</if>
|
GROUP BY EXTRACT(MONTH FROM create_time)
|
</when>
|
<otherwise>
|
SELECT income.MONTH,
|
SUM(income.electrovalence) AS electrovalence,
|
SUM(income.service_charge) AS service_charge
|
FROM (
|
SELECT EXTRACT(MONTH FROM billing_cycle) AS MONTH,
|
SUM(IFNULL(total_electricity_charge, 0)) AS electrovalence,
|
SUM(IFNULL(total_service_fee, 0) - IFNULL(tripartite_commission, 0)) AS service_charge
|
FROM t_charging_settlement_bill
|
WHERE statistical_date_type = 1
|
AND site_id != 0
|
AND billing_cycle < DATE_FORMAT(CURDATE(), '%Y-%m-01')
|
<if test="sixBefore != null">
|
AND billing_cycle >= #{sixBefore}
|
</if>
|
<if test="siteIds != null and siteIds.size() > 0">
|
AND site_id IN
|
<foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
|
#{siteId}
|
</foreach>
|
</if>
|
GROUP BY EXTRACT(MONTH FROM billing_cycle)
|
|
UNION ALL
|
|
SELECT EXTRACT(MONTH FROM charging_order.create_time) AS MONTH,
|
SUM(IFNULL(accounting.period_electric_price, 0)) AS electrovalence,
|
SUM(CASE
|
WHEN charging_order.order_source = 2
|
THEN IFNULL(accounting.period_service_price, 0) * 0.8
|
ELSE IFNULL(accounting.period_service_price, 0)
|
END) AS service_charge
|
FROM t_charging_order_accounting_strategy accounting
|
INNER JOIN t_charging_order charging_order
|
ON accounting.charging_order_id = charging_order.id
|
WHERE charging_order.del_flag = 0
|
AND charging_order.status = 5
|
AND charging_order.recharge_payment_status = 2
|
AND charging_order.create_time >= DATE_FORMAT(CURDATE(), '%Y-%m-01')
|
AND charging_order.create_time < DATE_ADD(DATE_FORMAT(CURDATE(), '%Y-%m-01'), INTERVAL 1 MONTH)
|
<if test="siteIds != null and siteIds.size() > 0">
|
AND charging_order.site_id IN
|
<foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
|
#{siteId}
|
</foreach>
|
</if>
|
GROUP BY EXTRACT(MONTH FROM charging_order.create_time)
|
) income
|
GROUP BY income.MONTH
|
</otherwise>
|
</choose>
|
</select>
|
|
<select id="circle" resultType="com.ruoyi.order.dto.SixCircleDto">
|
<choose>
|
<when test="partnerView != null and partnerView">
|
SELECT site_id AS siteId,
|
SUM(IFNULL(share_amount, 0)) AS paymentAmount
|
FROM t_charging_order_share_record
|
WHERE del_flag = 0 AND online_share_status IN ('SUCCESS', 'RECORDED')
|
<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="sixBefore != null">
|
AND create_time >= #{sixBefore}
|
</if>
|
GROUP BY site_id
|
</when>
|
<otherwise>
|
SELECT site_id AS siteId,
|
SUM(IFNULL(total_electricity_charge, 0) + IFNULL(total_service_fee, 0)
|
- IFNULL(tripartite_commission, 0)) AS paymentAmount
|
FROM t_charging_settlement_bill
|
WHERE statistical_date_type = 1 AND site_id != 0
|
<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="sixBefore != null">
|
AND billing_cycle >= #{sixBefore}
|
</if>
|
GROUP BY site_id
|
</otherwise>
|
</choose>
|
</select>
|
|
<select id="countAll" resultType="java.util.Map">
|
<choose>
|
<when test="partnerView != null and partnerView">
|
SELECT COALESCE(ROUND(SUM(IFNULL(electricity_share_amount, 0)), 2), 0) AS electrovalence,
|
COALESCE(ROUND(SUM(IFNULL(service_share_amount, 0)), 2), 0) AS service_charge,
|
COALESCE(ROUND(SUM(IFNULL(share_amount, 0)), 2), 0) AS commission_amount,
|
0 AS sharing_amount
|
FROM t_charging_order_share_record
|
WHERE del_flag = 0 AND online_share_status IN ('SUCCESS', 'RECORDED')
|
<if test="siteIds != null and siteIds.size() > 0">
|
AND site_id IN
|
<foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
|
#{siteId}
|
</foreach>
|
</if>
|
</when>
|
<otherwise>
|
SELECT COALESCE(ROUND(SUM(IFNULL(total_electricity_charge, 0)), 2), 0) AS electrovalence,
|
COALESCE(ROUND(SUM(IFNULL(total_service_fee, 0) - IFNULL(tripartite_commission, 0)), 2), 0) AS service_charge,
|
0 AS commission_amount,
|
COALESCE(ROUND(SUM(IFNULL(tripartite_commission, 0)), 2), 0) AS sharing_amount
|
FROM t_charging_settlement_bill
|
WHERE statistical_date_type = 1 AND site_id != 0
|
<if test="siteIds != null and siteIds.size() > 0">
|
AND site_id IN
|
<foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
|
#{siteId}
|
</foreach>
|
</if>
|
</otherwise>
|
</choose>
|
</select>
|
|
<select id="sumSuccessfulShareAmount" resultType="java.math.BigDecimal">
|
SELECT COALESCE(ROUND(SUM(IFNULL(share_amount, 0)), 2), 0)
|
FROM t_charging_order_share_record
|
WHERE del_flag = 0 AND online_share_status IN ('SUCCESS', 'RECORDED')
|
<if test="siteIds != null and siteIds.size() > 0">
|
AND site_id IN
|
<foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
|
#{siteId}
|
</foreach>
|
</if>
|
</select>
|
<select id="getSumByType" resultType="java.util.Map">
|
SELECT
|
t1.type,
|
SUM( t1.charging_capacity ) as charging_capacity ,
|
SUM(
|
CASE
|
WHEN t2.order_source = 0 THEN t1.period_service_price
|
WHEN t2.order_source = 1 THEN t1.period_service_price
|
ELSE t1.period_service_price * 0.8
|
END
|
)as period_electric_price,
|
SUM(t1.period_electric_price) as total_amount,
|
SUM(CASE
|
WHEN t2.order_source = 0 THEN 0
|
WHEN t2.order_source = 1 THEN 0
|
ELSE t1.period_service_price * 0.2
|
END) AS commissionAmount,
|
t2.order_source
|
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.recharge_payment_status = 2 and t2.start_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">
|
#{item}
|
</foreach>
|
</if>
|
GROUP BY
|
t1.type, t2.order_source
|
</select>
|
<select id="getDateData" resultType="java.util.Map">
|
SELECT
|
DATE_FORMAT(a.create_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
|
ELSE b.period_service_price * 0.8
|
END) as servicecharge,
|
SUM(a.charging_capacity) as electrovalence,
|
SUM(a.electrovalence) AS paymentAmount,
|
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)
|
END), 2) AS paymoney,
|
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)
|
<where>
|
a.del_flag = 0 and a.recharge_payment_status = 2 and DATE(a.create_time) = CURDATE()
|
and a.start_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">
|
#{item}
|
</foreach>
|
</if>
|
</where>
|
GROUP BY
|
time
|
ORDER BY
|
time
|
|
</select>
|
<select id="getWeekData" resultType="java.util.Map">
|
SELECT
|
DATE_FORMAT(a.create_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
|
ELSE b.period_service_price * 0.8
|
END) as servicecharge,
|
SUM(a.charging_capacity) as electrovalence,
|
SUM(a.electrovalence) AS paymentAmount,
|
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)
|
END), 2) AS paymoney,
|
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)
|
<where>
|
a.del_flag = 0 and a.recharge_payment_status = 2 and YEARWEEK(DATE_FORMAT(a.create_time,
|
'%Y-%m-%d'), 1) = YEARWEEK(NOW(), 1)
|
and a.start_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">
|
#{item}
|
</foreach>
|
</if>
|
</where>
|
GROUP BY
|
time
|
ORDER BY
|
time
|
|
</select>
|
<select id="getMonthData" resultType="java.util.Map">
|
SELECT
|
DATE_FORMAT(a.create_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
|
ELSE b.period_service_price * 0.8
|
END) as servicecharge,
|
SUM(a.charging_capacity) as electrovalence,
|
SUM(a.electrovalence) AS paymentAmount,
|
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)
|
END), 2) AS paymoney,
|
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)
|
<where>
|
a.del_flag = 0 and a.recharge_payment_status = 2 and MONTH(a.create_time) = MONTH(NOW())
|
AND YEAR(a.create_time) = YEAR(NOW())
|
and a.start_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">
|
#{item}
|
</foreach>
|
</if>
|
</where>
|
GROUP BY
|
time
|
ORDER BY
|
time
|
|
</select>
|
<select id="getYearData" resultType="java.util.Map">
|
SELECT
|
DATE_FORMAT(a.create_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
|
ELSE b.period_service_price * 0.8
|
END) as servicecharge,
|
SUM(a.charging_capacity) as electrovalence,
|
SUM(a.electrovalence) AS paymentAmount,
|
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)
|
END), 2) AS paymoney,
|
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)
|
<where>
|
a.del_flag = 0 and a.recharge_payment_status = 2 and YEAR(a.create_time) = YEAR(NOW())
|
and a.start_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">
|
#{item}
|
</foreach>
|
</if>
|
</where>
|
GROUP BY
|
time
|
ORDER BY
|
time
|
</select>
|
<select id="getByDate" resultType="java.util.Map">
|
SELECT
|
DATE_FORMAT(a.create_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
|
ELSE b.period_service_price * 0.8
|
END) as servicecharge,
|
SUM(a.charging_capacity) as electrovalence,
|
SUM(a.electrovalence) AS paymentAmount,
|
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)
|
END), 2) AS paymoney,
|
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)
|
<where>
|
a.del_flag = 0 and a.recharge_payment_status = 2
|
and a.start_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">
|
#{item}
|
</foreach>
|
</if>
|
</where>
|
GROUP BY
|
time
|
ORDER BY
|
time
|
|
</select>
|
<select id="queryPower" resultType="java.util.Map">
|
SELECT
|
'today' AS data_type,
|
DATE_FORMAT(create_time, '%H') AS TIME,
|
SUM(power) AS power
|
FROM
|
t_charging_order
|
WHERE
|
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=")">
|
#{siteId}
|
</foreach>
|
</if>
|
GROUP BY
|
TIME
|
|
UNION ALL
|
|
SELECT
|
'yesterday' AS data_type,
|
DATE_FORMAT(create_time, '%H') AS TIME,
|
SUM(power) AS power
|
FROM
|
t_charging_order
|
WHERE
|
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=")">
|
#{siteId}
|
</foreach>
|
</if>
|
GROUP BY
|
TIME
|
|
ORDER BY
|
TIME;
|
|
|
</select>
|
<select id="queryPowerLevel" resultType="java.util.Map">
|
SELECT
|
SUM(CASE WHEN power BETWEEN 0 AND 30 THEN 1 ELSE 0 END) AS count_0_30,
|
SUM(CASE WHEN power BETWEEN 31 AND 60 THEN 1 ELSE 0 END) AS count_31_60,
|
SUM(CASE WHEN power BETWEEN 61 AND 120 THEN 1 ELSE 0 END) AS count_61_120,
|
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
|
WHERE
|
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=")">
|
#{siteId}
|
</foreach>
|
</if>
|
<if test="statisticsQueryDto.dayType ==1">
|
AND DATE(create_time) = CURDATE()
|
</if>
|
<if test="statisticsQueryDto.dayType ==2">
|
AND WEEKOFYEAR(create_time) = WEEKOFYEAR(CURDATE())
|
</if>
|
<if test="statisticsQueryDto.dayType ==3">
|
AND MONTH(create_time) = MONTH(CURDATE())
|
</if>
|
<if test="statisticsQueryDto.dayType ==4">
|
AND YEAR(create_time) = YEAR(CURDATE())
|
</if>
|
<if test="statisticsQueryDto.dayType ==5">
|
|
AND DATE(create_time) >= #{statisticsQueryDto.startTime}
|
|
|
AND DATE(create_time) <= #{statisticsQueryDto.endTime}
|
|
</if>
|
|
</select>
|
<select id="usersDay" resultType="java.util.Map">
|
|
SELECT
|
|
DATE_FORMAT( create_time, '%H:00' ) AS time,
|
count(1) AS counts
|
FROM
|
charging_pile_account.t_app_user
|
WHERE
|
del_flag = 0
|
AND DATE ( create_time ) = CURDATE()
|
GROUP BY
|
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
|
FROM
|
t_charging_order
|
WHERE
|
del_flag = 0
|
AND DATE ( create_time ) = CURDATE()
|
GROUP BY
|
time
|
</select>
|
|
<select id="usersByQuery1" resultType="java.util.Map">
|
|
SELECT
|
'today' AS data_type,
|
'1' as type,
|
DATE_FORMAT( create_time, '%Y-%m-%d' ) AS time,
|
count(DISTINCT app_user_id) AS counts
|
FROM
|
t_charging_order
|
WHERE
|
del_flag = 0
|
<if test="statisticsQueryDto.dayType ==1 ">
|
AND DATE(create_time) = CURDATE()
|
</if>
|
<if test="statisticsQueryDto.dayType ==2 ">
|
AND WEEKOFYEAR(create_time) = WEEKOFYEAR(CURDATE())
|
</if>
|
<if test="statisticsQueryDto.dayType ==3 ">
|
AND MONTH(create_time) = MONTH(CURDATE())
|
</if>
|
<if test="statisticsQueryDto.dayType ==4">
|
AND YEAR(create_time) = YEAR(CURDATE())
|
</if>
|
<if test="statisticsQueryDto.dayType ==5">
|
<if test="statisticsQueryDto.startTime != null">
|
AND create_time >= #{statisticsQueryDto.startTime}
|
</if>
|
<if test="statisticsQueryDto.endTime != null">
|
AND create_time <= #{statisticsQueryDto.endTime}
|
</if>
|
</if>
|
GROUP BY
|
time
|
|
|
</select>
|
|
|
<select id="usersByQuery" resultType="java.util.Map">
|
|
SELECT
|
|
DATE_FORMAT( create_time, '%Y-%m-%d' ) AS time,
|
count(1) AS counts
|
FROM
|
charging_pile_account.t_app_user
|
WHERE
|
del_flag = 0
|
<if test="statisticsQueryDto.dayType ==1 ">
|
AND DATE(create_time) = CURDATE()
|
</if>
|
<if test="statisticsQueryDto.dayType ==2 ">
|
AND WEEKOFYEAR(create_time) = WEEKOFYEAR(CURDATE())
|
</if>
|
<if test="statisticsQueryDto.dayType ==3 ">
|
AND MONTH(create_time) = MONTH(CURDATE())
|
</if>
|
<if test="statisticsQueryDto.dayType ==4">
|
AND YEAR(create_time) = YEAR(CURDATE())
|
</if>
|
<if test="statisticsQueryDto.dayType ==5">
|
<if test="statisticsQueryDto.startTime != null">
|
AND DATE(create_time) >= #{statisticsQueryDto.startTime}
|
</if>
|
<if test="statisticsQueryDto.endTime != null">
|
AND DATE(create_time) <= #{statisticsQueryDto.endTime}
|
</if>
|
</if>
|
GROUP BY
|
time
|
|
|
</select>
|
<select id="getUserTagCount" resultType="java.util.Map">
|
SELECT
|
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
|
GROUP BY
|
tt.name
|
</select>
|
<select id="getVipCount" resultType="java.util.Map">
|
SELECT
|
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
|
WHERE
|
ta.del_flag = 0
|
GROUP BY
|
tv.`name`
|
</select>
|
<select id="unitConsumption" resultType="java.util.Map">
|
SELECT
|
tc.`name`,
|
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
|
LEFT JOIN `charging_pile_other`.`t_company` tc on au.company_id = tc.id
|
|
<where>
|
co.del_flag = 0
|
<if test="statisticsQueryDto.dayType == 1">
|
AND DATE( co.create_time ) = CURDATE()
|
</if>
|
<if test="statisticsQueryDto.dayType == 2">
|
AND WEEKOFYEAR( co.create_time ) = WEEKOFYEAR( CURDATE() )
|
</if>
|
<if test="statisticsQueryDto.dayType == 3">
|
AND MONTH( co.create_time ) = MONTH(CURDATE())
|
</if>
|
<if test="statisticsQueryDto.dayType == 4">
|
AND YEAR( co.create_time ) = YEAR(CURDATE() )
|
</if>
|
<if test="statisticsQueryDto.dayType == 5">
|
<if test="statisticsQueryDto.startTime != null">
|
and DATE(co.create_time) >= #{statisticsQueryDto.startTime}
|
</if>
|
<if test="statisticsQueryDto.endTime != null">
|
and DATE(co.create_time) <= #{statisticsQueryDto.endTime}
|
</if>
|
</if>
|
</where>
|
GROUP BY
|
tc.`name`, au.company_id
|
</select>
|
<select id="carUserMethod" resultType="java.util.Map">
|
SELECT
|
count(1) as counts,vehicle_use
|
from charging_pile_account.t_app_user_car
|
where del_flag = 0
|
GROUP BY vehicle_use
|
</select>
|
<select id="carUserBrand" resultType="java.util.Map">
|
SELECT
|
count(1) as counts,vehicle_brand
|
from charging_pile_account.t_app_user_car
|
where del_flag = 0
|
|
GROUP BY vehicle_brand
|
ORDER BY counts DESC
|
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
|
FROM
|
`charging_pile_account`.`t_app_user_car`
|
WHERE
|
del_flag = 0
|
</select>
|
<select id="getAver" resultType="java.lang.Double">
|
SELECT
|
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
|
WHERE
|
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
|
|
</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
|
FROM
|
`t_order_evaluate` te
|
LEFT JOIN t_charging_order co on te.order_id = co.id
|
WHERE
|
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=")">
|
#{siteId}
|
</foreach>
|
</if>
|
GROUP BY
|
score_range
|
|
</select>
|
<select id="chargingList" resultType="com.ruoyi.order.api.vo.ChargingOrderListVO">
|
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.source_name as sourceName,
|
a.recharge_serial_number as rechargeSerialNumber,
|
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 a.code LIKE CONCAT('%',#{req.code},'%')
|
</if>
|
<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 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 a.site_id in
|
<foreach collection="req.siteIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</if>
|
<if test="req.orderType != null ">
|
and a.order_type = #{req.orderType}
|
</if>
|
<if test="req.status != null ">
|
and a.status = #{req.status}
|
</if>
|
<if test="req.status != null ">
|
and a.status = #{req.status}
|
</if>
|
<if test="req.isWhitelist != null">
|
and a.is_whitelist = #{req.isWhitelist}
|
</if>
|
<if test="req.siteId != null ">
|
and a.site_id = #{req.siteId}
|
</if>
|
<if test="startTime1 != null and startTime1!=''">
|
and (a.pay_time between #{startTime1} and #{startTime2})
|
</if>
|
<if test="endTime1 != null and endTime1!=''">
|
and (a.end_time between #{endTime1} and #{endTime2})
|
</if>
|
and a.start_time IS NOT NULL and a.end_time IS NOT NULL order by a.create_time desc
|
</select>
|
|
|
<select id="chargingList1" resultType="map">
|
select
|
b.id,
|
b.`code`,
|
b.site_id as siteId,
|
b.charging_pile_id as chargingPileId,
|
b.charging_gun_id as chargingGunId,
|
b.app_user_id as appUserId,
|
b.app_user_car_id as appUserCarId,
|
b.order_type as orderType,
|
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,
|
a.periodElectricPrice,
|
a.periodServicePrice,
|
a.jian,
|
a.feng,
|
a.ping,
|
a.gu
|
from t_charging_order b
|
inner join (
|
select
|
charging_order_id,
|
sum(period_electric_price) as periodElectricPrice,
|
sum(period_service_price) as periodServicePrice,
|
sum(CASE WHEN type = 1 THEN charging_capacity ELSE 0 END) as jian,
|
sum(CASE WHEN type = 2 THEN charging_capacity ELSE 0 END) as feng,
|
sum(CASE WHEN type = 3 THEN charging_capacity ELSE 0 END) as ping,
|
sum(CASE WHEN type = 4 THEN charging_capacity ELSE 0 END) as gu
|
from t_charging_order_accounting_strategy
|
group by charging_order_id
|
) a on a.charging_order_id = b.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.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
|
order by b.start_time desc
|
</select>
|
|
|
|
|
<select id="chargingListSum" 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,
|
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, co.site_id as siteId, coas.type, coas.charging_capacity, coas.period_electric_price, coas.period_service_price, co.order_source
|
from t_charging_order_accounting_strategy coas
|
inner 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="chargingListSummaryOrderIds" resultType="java.lang.Long">
|
select co.id
|
from t_charging_order co
|
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
|
</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},'%')
|
</if>
|
<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">
|
and t1.app_user_id in
|
<foreach collection="req.userIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</if>
|
<if test="req.orderType != null ">
|
and t1.order_type = #{req.orderType}
|
</if>
|
<if test="req.status != null ">
|
and t1.status = #{req.status}
|
</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}
|
</if>
|
<if test="startTime1 != null and startTime1!=''">
|
and (t1.start_time between #{startTime1} and #{startTime2})
|
</if>
|
<if test="endTime1 != null and endTime1!=''">
|
and (t1.end_time between #{endTime1} and #{endTime2})
|
</if>
|
</select>
|
<select id="countBySource" resultType="java.util.Map">
|
select
|
count(1) as counts,
|
case
|
when tripartite_platform_name is null then '明星充电'
|
when tripartite_platform_name = 'KuaiDian' then '快电'
|
when tripartite_platform_name = 'XinDianTu' then '新电途'
|
else tripartite_platform_name
|
end as source
|
from t_charging_order
|
where 1=1
|
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) <= #{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>
|
|
|
), 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
|
WHERE co.del_flag = 0 and
|
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=")">
|
#{siteId}
|
</foreach>
|
</if>
|
<if test="statisticsQueryDto.dayType == 1">
|
AND DATE( co.create_time ) = CURDATE()
|
</if>
|
<if test="statisticsQueryDto.dayType == 2">
|
AND WEEKOFYEAR( co.create_time ) = WEEKOFYEAR( CURDATE() )
|
</if>
|
<if test="statisticsQueryDto.dayType == 3">
|
AND MONTH( co.create_time ) = MONTH(CURDATE())
|
</if>
|
<if test="statisticsQueryDto.dayType == 4">
|
AND YEAR( co.create_time ) = YEAR(CURDATE() )
|
</if>
|
<if test="statisticsQueryDto.dayType == 5">
|
|
and DATE(co.create_time) >= #{statisticsQueryDto.startTime}
|
|
|
and DATE(co.create_time) <= #{statisticsQueryDto.endTime}
|
|
</if>
|
GROUP BY tc.name,cp.name,co.charging_gun_id
|
|
|
</select>
|
<select id="equipmentUserType2" 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>
|
|
|
), 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
|
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">
|
and co.site_id IN
|
<foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
|
#{siteId}
|
</foreach>
|
</if>
|
<if test="statisticsQueryDto.dayType == 1">
|
AND DATE( co.create_time ) = CURDATE()
|
</if>
|
<if test="statisticsQueryDto.dayType == 2">
|
AND WEEKOFYEAR( co.create_time ) = WEEKOFYEAR( CURDATE() )
|
</if>
|
<if test="statisticsQueryDto.dayType == 3">
|
AND MONTH( co.create_time ) = MONTH(CURDATE())
|
</if>
|
<if test="statisticsQueryDto.dayType == 4">
|
AND YEAR( co.create_time ) = YEAR(CURDATE() )
|
</if>
|
<if test="statisticsQueryDto.dayType == 5">
|
<if test="statisticsQueryDto.startTime != null">
|
and DATE(co.create_time) >= #{statisticsQueryDto.startTime}
|
</if>
|
<if test="statisticsQueryDto.endTime != null">
|
and DATE(co.create_time) <= #{statisticsQueryDto.endTime}
|
</if>
|
</if>
|
GROUP BY tc.name,cp.name,co.charging_gun_id
|
|
|
</select>
|
<select id="equipmentMapbroke1" resultType="java.util.Map">
|
SELECT
|
FORMAT(SUM(TIME_TO_SEC(TIMEDIFF(co.end_time, co.down_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,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
|
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">
|
and co.site_id IN
|
<foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
|
#{siteId}
|
</foreach>
|
</if>
|
<if test="statisticsQueryDto.dayType == 1">
|
AND DATE( co.create_time ) = CURDATE()
|
</if>
|
<if test="statisticsQueryDto.dayType == 2">
|
AND WEEKOFYEAR( co.create_time ) = WEEKOFYEAR( CURDATE() )
|
</if>
|
<if test="statisticsQueryDto.dayType == 3">
|
AND MONTH( co.create_time ) = MONTH(CURDATE())
|
</if>
|
<if test="statisticsQueryDto.dayType == 4">
|
AND YEAR( co.create_time ) = YEAR(CURDATE() )
|
</if>
|
<if test="statisticsQueryDto.dayType == 5">
|
|
and DATE(co.create_time) >= #{statisticsQueryDto.startTime}
|
|
|
and DATE(co.create_time) <= #{statisticsQueryDto.endTime}
|
|
</if>
|
GROUP BY cp.name
|
|
|
</select>
|
<select id="equipmentMapbroke2" resultType="java.util.Map">
|
SELECT
|
FORMAT(SUM(TIME_TO_SEC(TIMEDIFF(co.end_time, co.down_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,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
|
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">
|
and co.site_id IN
|
<foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
|
#{siteId}
|
</foreach>
|
</if>
|
<if test="statisticsQueryDto.dayType == 1">
|
AND DATE( co.create_time ) = CURDATE()
|
</if>
|
<if test="statisticsQueryDto.dayType == 2">
|
AND WEEKOFYEAR( co.create_time ) = WEEKOFYEAR( CURDATE() )
|
</if>
|
<if test="statisticsQueryDto.dayType == 3">
|
AND MONTH( co.create_time ) = MONTH(CURDATE())
|
</if>
|
<if test="statisticsQueryDto.dayType == 4">
|
AND YEAR( co.create_time ) = YEAR(CURDATE() )
|
</if>
|
<if test="statisticsQueryDto.dayType == 5">
|
|
and DATE(co.create_time) >= #{statisticsQueryDto.startTime}
|
|
and DATE(co.create_time) <= #{statisticsQueryDto.endTime}
|
|
</if>
|
GROUP BY cp.name
|
|
|
</select>
|
<select id="equipmentMapOut1" resultType="java.util.Map">
|
SELECT
|
FORMAT(SUM(TIME_TO_SEC(TIMEDIFF(co.end_time, co.down_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,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
|
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">
|
and co.site_id IN
|
<foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
|
#{siteId}
|
</foreach>
|
</if>
|
<if test="statisticsQueryDto.dayType == 1">
|
AND DATE( co.create_time ) = CURDATE()
|
</if>
|
<if test="statisticsQueryDto.dayType == 2">
|
AND WEEKOFYEAR( co.create_time ) = WEEKOFYEAR( CURDATE() )
|
</if>
|
<if test="statisticsQueryDto.dayType == 3">
|
AND MONTH( co.create_time ) = MONTH(CURDATE())
|
</if>
|
<if test="statisticsQueryDto.dayType == 4">
|
AND YEAR( co.create_time ) = YEAR(CURDATE() )
|
</if>
|
<if test="statisticsQueryDto.dayType == 5">
|
<if test="statisticsQueryDto.startTime != null">
|
and DATE(co.create_time) >= #{statisticsQueryDto.startTime}
|
</if>
|
<if test="statisticsQueryDto.endTime != null">
|
and DATE(co.create_time) <= #{statisticsQueryDto.endTime}
|
</if>
|
</if>
|
GROUP BY cp.name
|
</select>
|
<select id="equipmentMapOut2" resultType="java.util.Map">
|
SELECT
|
FORMAT(SUM(TIME_TO_SEC(TIMEDIFF(co.end_time, co.down_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,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
|
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">
|
and co.site_id IN
|
<foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
|
#{siteId}
|
</foreach>
|
</if>
|
<if test="statisticsQueryDto.dayType == 1">
|
AND DATE( co.create_time ) = CURDATE()
|
</if>
|
<if test="statisticsQueryDto.dayType == 2">
|
AND WEEKOFYEAR( co.create_time ) = WEEKOFYEAR( CURDATE() )
|
</if>
|
<if test="statisticsQueryDto.dayType == 3">
|
AND MONTH( co.create_time ) = MONTH(CURDATE())
|
</if>
|
<if test="statisticsQueryDto.dayType == 4">
|
AND YEAR( co.create_time ) = YEAR(CURDATE() )
|
</if>
|
<if test="statisticsQueryDto.dayType == 5">
|
<if test="statisticsQueryDto.startTime != null">
|
and DATE(co.create_time) >= #{statisticsQueryDto.startTime}
|
</if>
|
<if test="statisticsQueryDto.endTime != null">
|
and DATE(co.create_time) <= #{statisticsQueryDto.endTime}
|
</if>
|
</if>
|
GROUP BY cp.name
|
|
</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
|
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>
|
tc.type = 4 and co.need_elec != 0
|
<if test="siteIds != null and siteIds.size() > 0">
|
and co.site_id IN
|
<foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
|
#{siteId}
|
</foreach>
|
</if>
|
<if test="statisticsQueryDto.dayType == 1">
|
AND DATE( co.create_time ) = CURDATE()
|
</if>
|
<if test="statisticsQueryDto.dayType == 2">
|
AND WEEKOFYEAR( co.create_time ) = WEEKOFYEAR( CURDATE() )
|
</if>
|
<if test="statisticsQueryDto.dayType == 3">
|
AND MONTH( co.create_time ) = MONTH(CURDATE())
|
</if>
|
<if test="statisticsQueryDto.dayType == 4">
|
AND YEAR( co.create_time ) = YEAR(CURDATE() )
|
</if>
|
<if test="statisticsQueryDto.dayType == 5">
|
|
and DATE(co.create_time) >= #{statisticsQueryDto.startTime}
|
|
and DATE(co.create_time) <= #{statisticsQueryDto.endTime}
|
|
</if>
|
</where>
|
GROUP BY
|
tc.name,
|
cp.name,
|
co.charging_gun_id;
|
|
|
</select>
|
|
|
<select id="getChargingOrderCount" resultType="java.util.Map">
|
select
|
count(distinct 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 t_charging_order_accounting_strategy 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 >= CONCAT(#{time}, ' 00:00:00')
|
and a.create_time < DATE_ADD(#{time}, INTERVAL 1 DAY)
|
<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,
|
sum(aa.servicecharge) as servicecharge,
|
sum(aa.electrovalence) as electrovalence,
|
sum(aa.electricity) as electricity,
|
count(1) as orderCount
|
from (
|
SELECT
|
DATE_FORMAT(
|
<if test="statisticsQueryDto.type == 1">
|
a.start_time
|
</if>
|
<if test="statisticsQueryDto.type == 2">
|
a.end_time
|
</if>
|
, '%H:00') as time,
|
(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,
|
(b.period_electric_price) as electrovalence,
|
(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(
|
<if test="statisticsQueryDto.type == 1">
|
a.create_time
|
</if>
|
<if test="statisticsQueryDto.type == 2">
|
a.end_time
|
</if>
|
, '%Y-%m-%d') = #{statisticsQueryDto.hourDate}
|
<if test="siteIds != null and siteIds.size() > 0">
|
and a.site_id IN
|
<foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
|
#{siteId}
|
</foreach>
|
</if>
|
) as aa GROUP BY aa.time ORDER BY aa.time
|
</select>
|
<select id="getDateType" resultType="java.util.Map">
|
select
|
aa.time,
|
sum(aa.servicecharge) as servicecharge,
|
sum(aa.electrovalence) as electrovalence,
|
sum(aa.electricity) as electricity,
|
count(1) as orderCount
|
from (
|
SELECT
|
DATE_FORMAT(
|
<if test="statisticsQueryDto.type == 1">
|
a.start_time
|
</if>
|
<if test="statisticsQueryDto.type == 2">
|
a.end_time
|
</if>
|
, '%Y-%m-%d') as time,
|
(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,
|
(b.period_electric_price) as electrovalence,
|
(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(
|
<if test="statisticsQueryDto.type == 1">
|
a.start_time
|
</if>
|
<if test="statisticsQueryDto.type == 2">
|
a.end_time
|
</if>
|
, '%Y-%m-%d') between #{statisticsQueryDto.startTime} and #{statisticsQueryDto.endTime}
|
<if test="siteIds != null and siteIds.size() > 0">
|
and a.site_id IN
|
<foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
|
#{siteId}
|
</foreach>
|
</if>
|
) as aa GROUP BY aa.time ORDER BY aa.time
|
</select>
|
<select id="getMonthType" resultType="java.util.Map">
|
select
|
aa.time,
|
sum(aa.servicecharge) as servicecharge,
|
sum(aa.electrovalence) as electrovalence,
|
sum(aa.electricity) as electricity,
|
count(1) as orderCount
|
from (
|
SELECT
|
DATE_FORMAT(
|
<if test="statisticsQueryDto.type == 1">
|
a.start_time
|
</if>
|
<if test="statisticsQueryDto.type == 2">
|
a.end_time
|
</if>
|
, '%Y-%m') as time,
|
(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,
|
(b.period_electric_price) as electrovalence,
|
(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(
|
<if test="statisticsQueryDto.type == 1">
|
a.start_time
|
</if>
|
<if test="statisticsQueryDto.type == 2">
|
a.end_time
|
</if>
|
, '%Y-%m-%d') between #{statisticsQueryDto.startTime} and #{statisticsQueryDto.endTime}
|
<if test="siteIds != null and siteIds.size() > 0">
|
and a.site_id IN
|
<foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
|
#{siteId}
|
</foreach>
|
</if>
|
) as aa GROUP BY aa.time ORDER BY aa.time
|
</select>
|
<select id="getchargingCapacity" resultType="java.util.Map">
|
SELECT
|
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
|
<if test="statisticsQueryDto.dayType == 1">
|
AND DATE( create_time ) between #{statisticsQueryDto.startTime} and #{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>
|
GROUP BY
|
time
|
</select>
|
<select id="countAllUserData" resultType="java.util.Map">
|
SELECT
|
COUNT( DISTINCT app_user_id ) AS counts,
|
'1' AS type
|
FROM
|
`charging_pile_order`.`t_charging_order` UNION ALL
|
SELECT
|
COUNT(*) AS counts,
|
'2' AS type
|
FROM
|
`charging_pile_account`.`t_app_user`
|
WHERE
|
`vip_end_time` > NOW()
|
|
UNION ALL
|
SELECT
|
COUNT(*) AS counts,
|
'3' AS type
|
FROM
|
`charging_pile_account`.`t_app_user`
|
WHERE
|
del_flag = 0
|
|
|
</select>
|
<select id="needElec1" 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
|
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
|
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 in (2,3)
|
<if test="siteIds != null and siteIds.size() > 0">
|
and co.site_id IN
|
<foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
|
#{siteId}
|
</foreach>
|
</if>
|
<if test="statisticsQueryDto.dayType == 1">
|
AND DATE( co.create_time ) = CURDATE()
|
</if>
|
<if test="statisticsQueryDto.dayType == 2">
|
AND WEEKOFYEAR( co.create_time ) = WEEKOFYEAR( CURDATE() )
|
</if>
|
<if test="statisticsQueryDto.dayType == 3">
|
AND MONTH( co.create_time ) = MONTH(CURDATE())
|
</if>
|
<if test="statisticsQueryDto.dayType == 4">
|
AND YEAR( co.create_time ) = YEAR(CURDATE() )
|
</if>
|
<if test="statisticsQueryDto.dayType == 5">
|
<if test="statisticsQueryDto.startTime != null">
|
and DATE(co.create_time) >= #{statisticsQueryDto.startTime}
|
</if>
|
<if test="statisticsQueryDto.endTime != null">
|
and DATE(co.create_time) <= #{statisticsQueryDto.endTime}
|
</if>
|
</if>
|
</where>
|
GROUP BY
|
tc.name,
|
cp.name,
|
co.charging_gun_id;
|
</select>
|
<select id="countNoTag" resultType="java.lang.Long">
|
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
|
|
) and au.del_flag = 0
|
|
</select>
|
<select id="countCar" resultType="java.lang.Long">
|
select count(1)
|
from
|
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>
|
</if>
|
</select>
|
|
|
<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 b.code LIKE CONCAT('%',#{req.code},'%')
|
</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="req.phone != null and req.phone != ''">
|
and app_user.phone LIKE CONCAT('%',#{req.phone},'%')
|
</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.orderSource != null and req.orderSource == 1 ">
|
and (b.order_source = 0 or b.order_source = 1 )
|
</if>
|
<if test="req.orderSource != null and req.orderSource == 2 ">
|
and b.tripartite_platform_name = 'KuaiDian'
|
</if>
|
<if test="req.orderSource != null and req.orderSource == 3 ">
|
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 b.site_id = #{req.siteId}
|
</if>
|
<if test="req.pileId != null ">
|
and b.charging_pile_id = #{req.pileId}
|
</if>
|
<if test="req.gunId != null ">
|
and b.charging_gun_id = #{req.gunId}
|
</if>
|
<if test="startTime1 != null and startTime1!=''">
|
and (b.pay_time between #{startTime1} and #{startTime2})
|
</if>
|
<if test="endTime1 != null and endTime1!=''">
|
and (b.end_time between #{endTime1} and #{endTime2})
|
</if>
|
</sql>
|
|
<select id="chargingOrderBaseSummary" 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,
|
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,
|
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,
|
CASE WHEN count(a.id) > 0 THEN (UNIX_TIMESTAMP(MAX(b.end_time)) - UNIX_TIMESTAMP(MAX(b.start_time))) ELSE 0 END 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,
|
MAX(b.recharge_payment_type) as recharge_payment_type,
|
MAX(b.is_whitelist) as is_whitelist,
|
MAX(b.electrovalence) as electrovalence,
|
MAX(b.service_charge) as serviceCharge,
|
MAX(b.whitelist_electric_refund_amount) as whitelist_electric_refund_amount,
|
MAX(b.whitelist_service_refund_amount) as whitelist_service_refund_amount,
|
MAX(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
|
left join `charging_pile_order`.t_charging_order_accounting_strategy a on a.charging_order_id = b.id
|
<if test="req.phone != null and req.phone != ''">
|
inner join `charging_pile_account`.`t_app_user` app_user on app_user.id = b.app_user_id
|
</if>
|
<include refid="ChargingOrderSummaryWhere"/>
|
group by b.id,b.end_time,b.start_time,b.order_source
|
) as aa
|
</select>
|
|
<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)
|
<if test="req.phone != null and req.phone != ''">
|
inner join `charging_pile_account`.`t_app_user` app_user on app_user.id = b.app_user_id
|
</if>
|
<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
|
<if test="req.phone != null and req.phone != ''">
|
inner join `charging_pile_account`.`t_app_user` app_user on app_user.id = b.app_user_id
|
</if>
|
<include refid="ChargingOrderSummaryWhere"/>
|
) as aa
|
</select>
|
|
<select id="chargingOrderShareIncomeByOrderIds" resultType="map">
|
select
|
s.charging_order_id as orderId,
|
sum(
|
IFNULL(s.channel_pay_amount, 0)
|
- IFNULL(o.third_refund_amount, CASE WHEN o.pay_method = 3 THEN IFNULL(o.refund_amount, 0) ELSE 0 END)
|
- IFNULL(s.share_amount, 0)
|
* (IFNULL(s.channel_pay_amount, 0)
|
- IFNULL(o.third_refund_amount, CASE WHEN o.pay_method = 3 THEN IFNULL(o.refund_amount, 0) ELSE 0 END))
|
/ IFNULL(s.channel_pay_amount, 0)
|
) as platformIncome,
|
sum(
|
IFNULL(s.share_amount, 0)
|
* (IFNULL(s.channel_pay_amount, 0)
|
- IFNULL(o.third_refund_amount, CASE WHEN o.pay_method = 3 THEN IFNULL(o.refund_amount, 0) ELSE 0 END))
|
/ IFNULL(s.channel_pay_amount, 0)
|
) as partnerIncome
|
from `charging_pile_order`.t_charging_order_share_record s
|
inner join `charging_pile_order`.t_charging_order o on o.id = s.charging_order_id
|
where s.del_flag = 0 and s.charging_order_id is not null
|
and IFNULL(o.third_refund_amount, CASE WHEN o.pay_method = 3 THEN IFNULL(o.refund_amount, 0) ELSE 0 END)
|
< IFNULL(s.channel_pay_amount, 0)
|
<if test="orderIds != null and orderIds.size()>0">
|
and s.charging_order_id in
|
<foreach collection="orderIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</if>
|
group by s.charging_order_id
|
</select>
|
|
<select id="chargingOrderShareIncomeByPayChannel" resultType="map">
|
select
|
s.pay_channel as payChannel,
|
sum(
|
IFNULL(s.share_amount, 0)
|
* (IFNULL(s.channel_pay_amount, 0)
|
- IFNULL(o.third_refund_amount, CASE WHEN o.pay_method = 3 THEN IFNULL(o.refund_amount, 0) ELSE 0 END))
|
/ IFNULL(s.channel_pay_amount, 0)
|
) as shareAmount
|
from t_charging_order_share_record s
|
inner join t_charging_order o on s.charging_order_id = o.id
|
where s.del_flag = 0
|
and s.charging_order_id is not null
|
and o.del_flag = 0
|
and o.recharge_payment_status = 2
|
and o.status = 5
|
and IFNULL(o.third_refund_amount, CASE WHEN o.pay_method = 3 THEN IFNULL(o.refund_amount, 0) ELSE 0 END)
|
< IFNULL(s.channel_pay_amount, 0)
|
<if test="sixBefore != null">
|
and o.create_time >= #{sixBefore}
|
</if>
|
<if test="siteIds != null and siteIds.size() > 0">
|
and o.site_id in
|
<foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
|
#{siteId}
|
</foreach>
|
</if>
|
group by s.pay_channel
|
</select>
|
|
<select id="chargingOrderShareIncomeSummaryByOrderIds" resultType="map">
|
select
|
sum(
|
IFNULL(s.channel_pay_amount, 0)
|
- IFNULL(o.third_refund_amount, CASE WHEN o.pay_method = 3 THEN IFNULL(o.refund_amount, 0) ELSE 0 END)
|
- IFNULL(s.share_amount, 0)
|
* (IFNULL(s.channel_pay_amount, 0)
|
- IFNULL(o.third_refund_amount, CASE WHEN o.pay_method = 3 THEN IFNULL(o.refund_amount, 0) ELSE 0 END))
|
/ IFNULL(s.channel_pay_amount, 0)
|
) as platformIncomeTotal,
|
sum(
|
IFNULL(s.share_amount, 0)
|
* (IFNULL(s.channel_pay_amount, 0)
|
- IFNULL(o.third_refund_amount, CASE WHEN o.pay_method = 3 THEN IFNULL(o.refund_amount, 0) ELSE 0 END))
|
/ IFNULL(s.channel_pay_amount, 0)
|
) as partnerIncomeTotal
|
from `charging_pile_order`.t_charging_order_share_record s
|
inner join `charging_pile_order`.t_charging_order o on o.id = s.charging_order_id
|
where s.del_flag = 0 and s.charging_order_id is not null
|
and IFNULL(o.third_refund_amount, CASE WHEN o.pay_method = 3 THEN IFNULL(o.refund_amount, 0) ELSE 0 END)
|
< IFNULL(s.channel_pay_amount, 0)
|
<if test="orderIds != null and orderIds.size()>0">
|
and s.charging_order_id in
|
<foreach collection="orderIds" item="item" index="index" separator="," open="(" close=")">
|
#{item}
|
</foreach>
|
</if>
|
</select>
|
|
<select id="chargingOrderSummaryOrderIds" resultType="java.lang.Long">
|
select b.id
|
from `charging_pile_order`.t_charging_order b
|
<if test="req.phone != null and req.phone != ''">
|
inner join `charging_pile_account`.`t_app_user` app_user on app_user.id = b.app_user_id
|
</if>
|
<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>
|
</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
|
WHERE
|
`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
|
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)
|
</select>
|
|
|
<select id="findChargingOrder" resultType="com.ruoyi.order.api.model.TChargingOrder">
|
SELECT
|
*
|
FROM
|
t_charging_order
|
WHERE
|
`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
|
WHERE t1.del_flag = 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>
|
|
|
<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>
|
|
<sql id="enterpriseChargingBaseWhere">
|
toi.invoicing_object_type = 2
|
AND toi.status IN (1, 2, 3)
|
AND tod.order_type = 1
|
AND co.del_flag = 0
|
AND co.recharge_payment_status = 2
|
<if test="data.exactCompanyName != null and data.exactCompanyName != ''">
|
AND toi.name = #{data.exactCompanyName}
|
</if>
|
<if test="(data.exactCompanyName == null or data.exactCompanyName == '') and data.companyName != null and data.companyName != ''">
|
AND toi.name LIKE CONCAT('%', #{data.companyName}, '%')
|
</if>
|
<if test="data.socialCreditCode != null and data.socialCreditCode != ''">
|
AND IFNULL(toi.tax_identification_number, '') = #{data.socialCreditCode}
|
</if>
|
<if test="data.siteType != null">
|
AND s.site_type = #{data.siteType}
|
</if>
|
<if test="data.partnerId != null">
|
AND s.partner_id = #{data.partnerId}
|
</if>
|
<if test="data.siteId != null">
|
AND co.site_id = #{data.siteId}
|
</if>
|
<if test="data.createTime1 != null">
|
AND co.create_time >= #{data.createTime1}
|
</if>
|
<if test="data.createTime2 != null">
|
AND co.create_time <= #{data.createTime2}
|
</if>
|
</sql>
|
|
<select id="enterpriseChargingAnalysis" resultType="com.ruoyi.order.dto.EnterpriseChargingAnalysisVO">
|
SELECT
|
b.companyName,
|
b.socialCreditCode,
|
MAX(b.companyAddress) AS companyAddress,
|
MAX(b.companyPhone) AS companyPhone,
|
SUM(b.orderCount) AS chargingCount,
|
COUNT(1) AS invoiceCount,
|
SUM(CASE WHEN b.detailInvoiceAmount > 0 THEN b.detailInvoiceAmount ELSE b.totalAmount END) AS invoiceAmount,
|
MAX(b.latestChargingTime) AS latestChargingTime
|
FROM (
|
SELECT
|
toi.id AS invoiceId,
|
toi.name AS companyName,
|
IFNULL(toi.tax_identification_number, '') AS socialCreditCode,
|
MAX(toi.company_address) AS companyAddress,
|
MAX(toi.company_phone) AS companyPhone,
|
MAX(IFNULL(toi.total_amount, 0)) AS totalAmount,
|
SUM(IFNULL(tod.invoice_amount, 0)) AS detailInvoiceAmount,
|
COUNT(DISTINCT co.id) AS orderCount,
|
MAX(co.start_time) AS latestChargingTime
|
FROM t_order_invoice toi
|
INNER JOIN t_order_invoice_detail tod ON tod.order_invoice_id = toi.id
|
INNER JOIN t_charging_order co ON co.id = tod.order_id
|
LEFT JOIN charging_pile_service.t_site s ON s.id = co.site_id
|
<where>
|
<include refid="enterpriseChargingBaseWhere" />
|
</where>
|
GROUP BY toi.id, toi.name, toi.tax_identification_number
|
) b
|
GROUP BY b.companyName, b.socialCreditCode
|
ORDER BY chargingCount DESC
|
</select>
|
|
<select id="enterpriseTopSites" resultType="map">
|
SELECT
|
s.name AS siteName,
|
COUNT(DISTINCT co.id) AS counts
|
FROM t_order_invoice toi
|
INNER JOIN t_order_invoice_detail tod ON tod.order_invoice_id = toi.id
|
INNER JOIN t_charging_order co ON co.id = tod.order_id
|
LEFT JOIN charging_pile_service.t_site s ON s.id = co.site_id
|
<where>
|
<include refid="enterpriseChargingBaseWhere" />
|
AND s.name IS NOT NULL
|
</where>
|
GROUP BY s.id, s.name
|
ORDER BY counts DESC
|
LIMIT 3
|
</select>
|
|
<select id="enterpriseTopSitesByCompanies" resultType="map">
|
SELECT
|
toi.name AS companyName,
|
IFNULL(toi.tax_identification_number, '') AS socialCreditCode,
|
s.name AS siteName,
|
COUNT(DISTINCT co.id) AS counts
|
FROM t_order_invoice toi
|
INNER JOIN t_order_invoice_detail tod ON tod.order_invoice_id = toi.id
|
INNER JOIN t_charging_order co ON co.id = tod.order_id
|
LEFT JOIN charging_pile_service.t_site s ON s.id = co.site_id
|
<where>
|
<include refid="enterpriseChargingBaseWhere" />
|
AND s.name IS NOT NULL
|
AND toi.name IN
|
<foreach collection="companyNames" item="companyName" open="(" separator="," close=")">
|
#{companyName}
|
</foreach>
|
</where>
|
GROUP BY toi.name, toi.tax_identification_number, s.id, s.name
|
</select>
|
|
<select id="enterpriseChargingTimes" resultType="java.time.LocalDateTime">
|
SELECT DISTINCT co.start_time
|
FROM t_order_invoice toi
|
INNER JOIN t_order_invoice_detail tod ON tod.order_invoice_id = toi.id
|
INNER JOIN t_charging_order co ON co.id = tod.order_id
|
LEFT JOIN charging_pile_service.t_site s ON s.id = co.site_id
|
<where>
|
<include refid="enterpriseChargingBaseWhere" />
|
AND co.start_time IS NOT NULL
|
</where>
|
ORDER BY co.start_time ASC
|
</select>
|
|
<select id="enterpriseChargingTimesByCompanies" resultType="map">
|
SELECT DISTINCT
|
toi.name AS companyName,
|
IFNULL(toi.tax_identification_number, '') AS socialCreditCode,
|
co.start_time AS startTime
|
FROM t_order_invoice toi
|
INNER JOIN t_order_invoice_detail tod ON tod.order_invoice_id = toi.id
|
INNER JOIN t_charging_order co ON co.id = tod.order_id
|
LEFT JOIN charging_pile_service.t_site s ON s.id = co.site_id
|
<where>
|
<include refid="enterpriseChargingBaseWhere" />
|
AND co.start_time IS NOT NULL
|
AND toi.name IN
|
<foreach collection="companyNames" item="companyName" open="(" separator="," close=")">
|
#{companyName}
|
</foreach>
|
</where>
|
ORDER BY toi.name, co.start_time
|
</select>
|
|
<sql id="enterpriseChargingDetailWhere">
|
<include refid="enterpriseChargingBaseWhere" />
|
<if test="data.code != null and data.code != ''">
|
AND co.code LIKE CONCAT('%', #{data.code}, '%')
|
</if>
|
<if test="data.orderType != null">
|
AND co.order_type = #{data.orderType}
|
</if>
|
<if test="data.phone != null and data.phone != ''">
|
AND au.phone LIKE CONCAT('%', #{data.phone}, '%')
|
</if>
|
<if test="data.status != null">
|
AND co.status = #{data.status}
|
</if>
|
<if test="data.partnerName != null and data.partnerName != ''">
|
AND p.name LIKE CONCAT('%', #{data.partnerName}, '%')
|
</if>
|
<if test="data.orderSource != null">
|
AND co.order_source = #{data.orderSource}
|
</if>
|
<if test="data.startTime1 != null">
|
AND co.start_time >= #{data.startTime1}
|
</if>
|
<if test="data.startTime2 != null">
|
AND co.start_time <= #{data.startTime2}
|
</if>
|
<if test="data.endTime1 != null">
|
AND co.end_time >= #{data.endTime1}
|
</if>
|
<if test="data.endTime2 != null">
|
AND co.end_time <= #{data.endTime2}
|
</if>
|
</sql>
|
|
<sql id="enterpriseChargingDetailSelect">
|
SELECT DISTINCT
|
co.id,
|
co.code,
|
co.order_type AS orderType,
|
co.order_classification AS orderClassification,
|
s.name AS siteName,
|
CONCAT(IFNULL(cp.name, ''), IFNULL(cg.name, '')) AS terminalName,
|
co.status,
|
(UNIX_TIMESTAMP(co.end_time) - UNIX_TIMESTAMP(co.start_time)) AS chargingSecond,
|
co.recharge_amount AS totalAmount,
|
IFNULL(co.coupon_discount_amount, 0) AS couponDiscountAmount,
|
IFNULL(co.vip_discount_amount, 0) AS vipDiscountAmount,
|
co.payment_amount AS paymentAmount,
|
IFNULL(co.refund_amount, 0) AS refundAmount,
|
co.order_source AS orderSource,
|
p.name AS partnerName,
|
au.phone AS phone,
|
car.license_plate AS licensePlate,
|
co.charging_capacity AS chargingCapacity,
|
IFNULL(price.electrovalence, 0) AS electrovalence,
|
IFNULL(price.serviceCharge, 0) AS serviceCharge,
|
co.end_mode AS endMode,
|
IFNULL(price.periodCount, 0) AS periodCount,
|
co.create_time AS createTime,
|
co.start_time AS startTime,
|
co.end_time AS endTime,
|
co.pay_time AS payTime
|
FROM t_order_invoice toi
|
INNER JOIN t_order_invoice_detail tod ON tod.order_invoice_id = toi.id
|
INNER JOIN t_charging_order co ON co.id = tod.order_id
|
LEFT JOIN charging_pile_service.t_site s ON s.id = co.site_id
|
LEFT JOIN charging_pile_service.t_partner p ON p.id = s.partner_id
|
LEFT JOIN charging_pile_service.t_charging_pile cp ON cp.id = co.charging_pile_id
|
LEFT JOIN charging_pile_service.t_charging_gun cg ON cg.id = co.charging_gun_id
|
LEFT JOIN charging_pile_account.t_app_user au ON au.id = co.app_user_id
|
LEFT JOIN charging_pile_account.t_app_user_car car ON car.id = co.app_user_car_id
|
LEFT JOIN (
|
SELECT charging_order_id,
|
SUM(period_electric_price) AS electrovalence,
|
SUM(period_service_price) AS serviceCharge,
|
COUNT(1) AS periodCount
|
FROM t_charging_order_accounting_strategy
|
GROUP BY charging_order_id
|
) price ON price.charging_order_id = co.id
|
</sql>
|
|
<select id="enterpriseChargingDetail" resultType="com.ruoyi.order.dto.EnterpriseChargingDetailVO">
|
<include refid="enterpriseChargingDetailSelect" />
|
<where>
|
<include refid="enterpriseChargingDetailWhere" />
|
</where>
|
ORDER BY co.create_time DESC
|
</select>
|
|
<select id="enterpriseChargingDetailExport" resultType="com.ruoyi.order.dto.EnterpriseChargingDetailVO">
|
<include refid="enterpriseChargingDetailSelect" />
|
<where>
|
<include refid="enterpriseChargingDetailWhere" />
|
</where>
|
ORDER BY co.create_time DESC
|
</select>
|
</mapper>
|