<?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.xhpc.charging.station.mapper.XhpcChargingStationMapper">

    <resultMap id="BaseResultMap" type="com.xhpc.common.domain.XhpcChargingStation">
        <result property="chargingStationId" column="charging_station_id"/>
        <result property="name" column="name"/>
        <result property="operatorId" column="operator_id"/>
        <result property="type" column="type"/>
        <result property="stationType" column="station_type"/>
        <result property="constructionSite" column="construction_site"/>
        <result property="serviceFacilities" column="service_facilities"/>
        <result property="peripheryFacilities" column="periphery_facilities"/>
        <result property="areaCode" column="area_code"/>
        <result property="address" column="address"/>
        <result property="detailedAddress" column="detailed_address"/>
        <result property="longitude" column="longitude"/>
        <result property="latitude" column="latitude"/>
        <result property="parkingInstructions" column="parking_instructions"/>
        <result property="serialNumber" column="serial_number"/>
        <result property="clientVisible" column="client_visible"/>
        <result property="status" column="status"/>
        <result property="delFlag" column="del_flag"/>
        <result property="createTime" column="create_time"/>
        <result property="createBy" column="create_by"/>
        <result property="updateTime" column="update_time"/>
        <result property="updateBy" column="update_by"/>
        <result property="remark" column="remark"/>
        <result property="rateModelId" column="rate_model_id"/>
        <result property="imgId" column="img_id"/>
        <result property="businessInstructions" column="business_instructions"/>
        <result property="reminderInstructions" column="reminder_instructions"/>
        <result property="serviceTel" column="service_tel"/>
        <result property="parkNums" column="park_nums"/>
        <result property="installedTotalPower" column="installed_total_power" />
        <result property="runningTotalPower" column="running_total_power" />
    </resultMap>

    <sql id="selectXhpcChargingStationVo">
        select charging_station_id,
               name,
               operator_id,
               type,
               construction_site,
               service_facilities,
               periphery_facilities,
               area_code,
               address,
               detailed_address,
               longitude,
               latitude,
               parking_instructions,
               serial_number,
               client_visible,
               status,
               del_flag,
               create_time,
               create_by,
               update_time,
               update_by,
               remark,
               rate_model_id,
               installed_total_power,
               running_total_power
        from xhpc_charging_station
    </sql>


    <select id="selectXhpcChargingStationList" resultType="java.util.Map">
        select
        cs.charging_station_id as chargingStationId,
        cs.name as name,
        ope.name as operatorName,
        cs.address as address,
        cs.img_id as imgId,
        cs.client_visible as clientVisible,
        cs.status as status
        from xhpc_charging_station as cs
        left join xhpc_operator as ope on cs.operator_id = ope.operator_id
        where cs.del_flag =0
        <if test="name !=null and name !=''">
            and cs.name like CONCAT('%',#{name},'%')
        </if>
        <if test="operatorName !=null and operatorName !=''">
            and ope.name like CONCAT('%',#{operatorName},'%')
        </if>
        <if test="operatorId !=null">
             and cs.operator_id = #{operatorId}
        </if>
        <if test="chargingStationId !=null">
            and cs.charging_station_id = #{chargingStationId}
        </if>
        <if test="type ==1">
            and cs.charging_station_id in(select charging_station_id from xhpc_charging_station where operator_id=#{logOperatorId})
        </if>
        <if test="type ==2">
            and cs.charging_station_id in(select charging_station_id from xhpc_user_privilege where user_id=#{logOperatorId})
        </if>
        <if test="tenantId !=null and tenantId !=''">
            and cs.tenant_id=#{tenantId}
        </if>
    </select>


    <select id="selectXhpcChargingStationById" resultMap="BaseResultMap">
        <include refid="selectXhpcChargingStationVo"/>
        where charging_station_id = #{chargingStationId}
    </select>

    <select id="selectXhpcChargingStationByName" resultMap="BaseResultMap">
        <include refid="selectXhpcChargingStationVo"/>
        where name = #{chargingStationName}
    </select>

    <insert id="insertXhpcChargingStation" parameterType="com.xhpc.common.domain.XhpcChargingStation">
        insert into xhpc_charging_station
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="chargingStationId != null">charging_station_id,</if>
            <if test="name != null">name,</if>
            <if test="operatorId != null">operator_id,</if>
            <if test="type != null">type,</if>
            <if test="constructionSite != null">construction_site,</if>
            <if test="serviceFacilities != null">service_facilities,</if>
            <if test="peripheryFacilities != null">periphery_facilities,</if>
            <if test="areaCode != null">area_code,</if>
            <if test="address != null">address,</if>
            <if test="detailedAddress != null">detailed_address,</if>
            <if test="longitude != null">longitude,</if>
            <if test="latitude != null">latitude,</if>
            <if test="parkingInstructions != null">parking_instructions,</if>
            <if test="serialNumber != null">serial_number,</if>
            <if test="clientVisible != null">client_visible,</if>
            <if test="status != null">status,</if>
            <if test="delFlag != null">del_flag,</if>
            <if test="createTime != null">create_time,</if>
            <if test="createBy != null">create_by,</if>
            <if test="updateTime != null">update_time,</if>
            <if test="updateBy != null">update_by,</if>
            <if test="remark != null">remark,</if>
            <if test="rateModelId != null">rate_model_id,</if>
            <if test="installedTotalPower != null">installed_total_power,</if>
            <if test="runningTotalPower != null">running_total_power,</if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="chargingStationId != null">#{chargingStationId},</if>
            <if test="name != null">#{name},</if>
            <if test="operatorId != null">#{operatorId},</if>
            <if test="type != null">#{type},</if>
            <if test="constructionSite != null">#{constructionSite},</if>
            <if test="serviceFacilities != null">#{serviceFacilities},</if>
            <if test="peripheryFacilities != null">#{peripheryFacilities},</if>
            <if test="areaCode != null">#{areaCode},</if>
            <if test="address != null">#{address},</if>
            <if test="detailedAddress != null">#{detailedAddress},</if>
            <if test="longitude != null">#{longitude},</if>
            <if test="latitude != null">#{latitude},</if>
            <if test="parkingInstructions != null">#{parkingInstructions},</if>
            <if test="serialNumber != null">#{serialNumber},</if>
            <if test="clientVisible != null">#{clientVisible},</if>
            <if test="status != null">#{status},</if>
            <if test="delFlag != null">#{delFlag},</if>
            <if test="createTime != null">#{createTime},</if>
            <if test="createBy != null">#{createBy},</if>
            <if test="updateTime != null">#{updateTime},</if>
            <if test="updateBy != null">#{updateBy},</if>
            <if test="remark != null">#{remark},</if>
            <if test="rateModelId != null">#{rateModelId},</if>
            <if test="installedTotalPower != null">#{installedTotalPower},</if>
            <if test="runningTotalPower != null">#{runningTotalPower},</if>
        </trim>
    </insert>

    <update id="updateXhpcChargingStation" parameterType="com.xhpc.common.domain.XhpcChargingStation">
        update xhpc_charging_station
        <trim prefix="SET" suffixOverrides=",">
            <if test="name != null">name = #{name},</if>
            <if test="operatorId != null">operator_id = #{operatorId},</if>
            <if test="type != null">type = #{type},</if>
            <if test="constructionSite != null">construction_site = #{constructionSite},</if>
            <if test="serviceFacilities != null">service_facilities = #{serviceFacilities},</if>
            <if test="peripheryFacilities != null">periphery_facilities = #{peripheryFacilities},</if>
            <if test="areaCode != null">area_code = #{areaCode},</if>
            <if test="address != null">address = #{address},</if>
            <if test="detailedAddress != null">detailed_address = #{detailedAddress},</if>
            <if test="longitude != null">longitude = #{longitude},</if>
            <if test="latitude != null">latitude = #{latitude},</if>
            <if test="parkingInstructions != null">parking_instructions = #{parkingInstructions},</if>
            <if test="serialNumber != null">serial_number = #{serialNumber},</if>
            <if test="clientVisible != null">client_visible = #{clientVisible},</if>
            <if test="status != null">status = #{status},</if>
            <if test="delFlag != null">del_flag = #{delFlag},</if>
            <if test="createTime != null">create_time = #{createTime},</if>
            <if test="createBy != null">create_by = #{createBy},</if>
            <if test="updateTime != null">update_time = #{updateTime},</if>
            <if test="updateBy != null">update_by = #{updateBy},</if>
            <if test="remark != null">remark = #{remark},</if>
            <if test="rateModelId != null">rate_model_id = #{rateModelId},</if>
            <if test="businessInstructions != null">business_instructions = #{businessInstructions},</if>
            <if test="reminderInstructions != null">reminder_instructions = #{reminderInstructions},</if>
            <if test="imgId != null">img_id = #{imgId},</if>
            <if test="stationType != null">station_type = #{stationType},</if>
            <if test="operatorIdEvcs != null">operator_id_evcs = #{operatorIdEvcs},</if>
            <if test="serviceTel != null">service_tel = #{serviceTel},</if>
            <if test="parkNums != null">park_nums = #{parkNums},</if>
            <if test="installedTotalPower != null">installed_total_power=#{installedTotalPower},</if>
            <if test="runningTotalPower != null">running_total_power=#{runningTotalPower},</if>
        </trim>
        where charging_station_id = #{chargingStationId}
    </update>

    <update id="updateXhpcChargingStationById" parameterType="Long">
        update xhpc_charging_station
        set del_flag =1
        where charging_station_id = #{chargingStationId}
    </update>

    <update id="updateXhpcChargingStationByIds" parameterType="java.lang.String">
        update xhpc_charging_station set del_flag =1 where charging_station_id in
        <foreach item="chargingStationId" collection="array" open="(" separator="," close=")">
            #{chargingStationId}
        </foreach>
    </update>

    <update id="status">
        update xhpc_charging_station
        set status =#{status}
        where charging_station_id = #{chargingStationId}
          and del_flag = 0
    </update>

    <update id="clientVisible">
        update xhpc_charging_station
        set client_visible =#{clientVisible}
        where charging_station_id = #{chargingStationId}
          and del_flag = 0
    </update>

    <select id="stationInternetBlackList" resultType="java.util.Map">
        select name
        from xhpc_internet_user
        where del_flag = 0
          and internet_user_id not in (select internet_user_id
                                       from xhpc_station_internet_blacklist
                                       where charging_station_id = #{chargingStationId})
    </select>

    <select id="getXhpcChargingStationMessage" resultType="java.util.Map">
        select ct.charging_station_id                  as                                           chargingStationId,
               ct.name                                 as                                           name,
               ct.operator_id                          as                                           operatorId,
               ct.operator_id_evcs                     as                                           operatorIdEvcs,
               ct.station_type                         as                                           stationType,
               op.name                                 as                                           operatorName,
               ct.type                                 as                                           type,
               (select dict_value
                from xhpc_dict_biz
                where code = 'charging_station_type'
                  and dict_key = ct.station_type)      as                                           stationTypeName,
               ct.serial_number                        as                                           serialNumber,
               ct.construction_site                    as                                           constructionSite,
               (select dict_value
                from xhpc_dict_biz
                where code = 'charging_construction_site'
                  and dict_key = ct.construction_site) as                                           constructionSiteName,
               ct.address                              as                                           address,
               ct.remark                               as                                           remark,
               ct.detailed_address                     as                                           detailedAddress,
               ct.periphery_facilities                 as                                           peripheryFacilities,
               ct.service_facilities                   as                                           serviceFacilities,
               ct.parking_instructions                 as                                           parkingInstructions,
               ct.business_instructions                as                                           businessInstructions,
               ct.reminder_instructions                as                                           reminderInstructions,
               ct.client_visible                       as                                           clientVisible,
               ct.img_id                               as                                           imgId,
               ct.service_tel                          as                                           serviceTel,
               ct.park_nums                            as                                           parkNums,
               GROUP_CONCAT(DISTINCT xdbs.dict_value  ORDER BY xdbs.create_time ASC separator ',' ) serviceFacilitiesName,
               GROUP_CONCAT(DISTINCT xdbp.dict_value  ORDER BY xdbp.create_time ASC separator ',' ) peripheryFacilitiesName
        from xhpc_charging_station as ct
        left join xhpc_operator as op on op.operator_id = ct.operator_id
        left JOIN xhpc_dict_biz as xdbs on xdbs.code='service_facilities' and xdbs.dict_key !=-1 and xdbs.del_flag=0
		left JOIN xhpc_dict_biz as xdbp on xdbp.code='charging_periphery_facilities' and xdbp.dict_key !=-1 and xdbp.del_flag=0
        where ct.charging_station_id = #{chargingStationId}
          and ct.del_flag = 0
    </select>

    <select id="getWXList" resultType="map">
        select
        cs.charging_station_id as chargingStationId,
        cs.name as name,
        cs.longitude as longitude,
        cs.latitude as latitude,
        cs.parking_instructions as parkingInstructions,
        cs.detailed_address as detailedAddress,
        cs.service_facilities as serviceFacilities,
        (select count(terminal_id) from xhpc_terminal where status=0 and del_flag =0 and
        charging_station_id=cs.charging_station_id) as common,
        ra.service_fee as serviceFee,
        ra.power_fee as powerFee,
        (ra.power_fee+ra.service_fee) as money,
        (select GROUP_CONCAT(dict_value) from xhpc_dict_biz where FIND_IN_SET(dict_key,cs.service_facilities ) and code
        = 'service_facilities' and parent_id > 0 and del_flag = 0) as serviceFacilitiesName,
        ROUND(ACOS(SIN((#{latitude} * 3.141593) / 180 ) *SIN((cs.latitude * 3.141593) / 180 ) +
        COS((#{latitude} * 3.141593) / 180 ) * COS((cs.latitude * 3.141593) / 180 ) *
        COS((#{longitude} * 3.141593) / 180 - (cs.longitude * 3.141593) / 180 ) ) * 6370.9968,2)AS distance
        from xhpc_charging_station as cs
        left JOIN xhpc_rate_time as xrt on xrt.charging_station_id =cs.charging_station_id and cs.rate_model_id = xrt.rate_model_id and xrt.start_time &lt;= #{date} and replace(xrt.end_time, '00:00:00', '24:00:00') &gt;= #{date} and xrt.status = 0 and xrt.del_flag = 0
        LEFT JOIN xhpc_rate as ra on ra.rate_id =xrt.rate_id

        where cs.del_flag =0 and cs.status =0
        and FIND_IN_SET(#{clientVisible},cs.client_visible)>0
        <if test="name !=null and name !=''">
            and cs.name like CONCAT('%',#{name},'%')
        </if>
        <if test="serviceFacilities !=null and serviceFacilities.size()>0 ">
            and
            <foreach collection="serviceFacilities" item="item" index="index" open="(" close=")" separator="or">
                cs.service_facilities like CONCAT('%',#{item},'%')
            </foreach>
        </if>
        <if test="code !=null and code !=''">
            and cs.area_code in (select code from xhpc_area where pcode=#{code}) or cs.area_code=#{code}
        </if>
        ORDER BY distance asc
    </select>

    <select id="getCode" resultType="java.util.Map">
        select code, dict_key, dict_value
        from xhpc_dict_biz
        where code = #{code} and parent_id > 0 and del_flag = 0
        <if test="serviceFacilities !=null and serviceFacilities.size()>0 ">
            and
            <foreach collection="serviceFacilities" item="item" index="index" open="(" close=")" separator="or">
                dict_biz_id like CONCAT('%',#{item},'%')
            </foreach>
        </if>
    </select>

    <select id="getWXXhpcChargingStationMessage" resultType="java.util.Map">
        select charging_station_id as chargingStationId,
                longitude,latitude,
               (select type
                from xhpc_charging_pile
                where charging_station_id = charging_station_id
                  and del_flag = 0
                  and status = 0      limit 1)               as type,
                (select count(terminal_id) from xhpc_terminal where status=0 and del_flag =0 and charging_station_id=#{chargingStationId}) as common,
                (select GROUP_CONCAT(dict_value) from xhpc_dict_biz where FIND_IN_SET(dict_key,service_facilities ) and code= 'service_facilities' and parent_id > 0 and del_flag = 0) as serviceFacilitiesName,
               name                                                                                            as name,
               reminder_instructions                                                                           as reminderInstructions,
               detailed_address                                                                                as detailedAddress,
               parking_instructions                                                                            as parkingInstructions,
               business_instructions                                                                           as businessInstructions,
               service_facilities                                                                              as serviceFacilities,
               img_id                                                                                          as imgId,
               remark                                                                                          as remark,
               ROUND(ACOS(SIN((#{latitude} * 3.141593) / 180) * SIN((latitude * 3.141593) / 180) + COS((#{latitude} * 3.141593) / 180) * COS((latitude * 3.141593) / 180) * COS((#{longitude} * 3.141593) / 180 - (longitude * 3.141593) / 180)) * 6370.9968,
            2) AS distance
        from xhpc_charging_station

        where charging_station_id = #{chargingStationId}
          and del_flag = 0
          and status = 0
    </select>

    <select id="getImageList" resultType="java.util.Map">
        select
        img_id as imgId,
        url as url
        from xhpc_img where del_flag=0 and status=0
        <if test="imgIds !=null and imgIds.size()>0 ">
            and img_id in
            <foreach collection="imgIds" item="chargingStationId" open="(" separator="," close=")">
                #{chargingStationId}
            </foreach>
        </if>
    </select>

    <select id="getWXXhpcRateTimeMassage" resultType="java.util.Map">
        select xrt.start_time as startTime,
               xrt.end_time   as endTime,
               xr.power_fee   as powerFee,
               xr.service_fee as serviceFee
        from xhpc_rate_time as xrt
        left join xhpc_rate as xr on xr.rate_id = xrt.rate_id
        where xrt.charging_station_id = #{chargingStationId}
          and xrt.status = 0
          and xrt.del_flag = 0
        order by xrt.sort asc
    </select>


    <select id="getWXXhpcTerminalMassage" resultType="java.util.Map">
        select te.name                   as name,
               cp.power                  as power,
               cp.auxiliary_power_supply as auxiliaryPowerSupply,
               te.serial_number          as serialNumber,
               cp.input_voltage          as inputVoltage
        from xhpc_terminal as te
        left join xhpc_charging_pile as cp on cp.charging_pile_id = te.charging_pile_id
        where te.charging_station_id = #{chargingStationId}
          and te.status = 0
          and te.del_flag = 0
        order by te.serial_number desc
    </select>

    <select id="getCountXhpcChargingStation" resultType="int">
        select count(charging_station_id) from xhpc_charging_station where tenant_id=#{tenantId} and del_flag=0
    </select>


    <insert id="insertXhpcRateModel" parameterType="com.xhpc.common.domain.XhpcRateModel" useGeneratedKeys="true"
            keyProperty="rateModelId">
        insert into xhpc_rate_model
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="null != status ">
                status,
            </if>
            <if test="null != delFlag ">
                del_flag,
            </if>
            <if test="null != createTime ">
                create_time,
            </if>
            <if test="null != createBy and '' != createBy">
                create_by,
            </if>
            <if test="null != updateTime ">
                update_time,
            </if>
            <if test="null != updateBy and '' != updateBy">
                update_by,
            </if>
            <if test="null != remark and '' != remark">
                remark
            </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="null != status ">
                #{status},
            </if>
            <if test="null != delFlag ">
                #{delFlag},
            </if>
            <if test="null != createTime ">
                #{createTime},
            </if>
            <if test="null != createBy and '' != createBy">
                #{createBy},
            </if>
            <if test="null != updateTime ">
                #{updateTime},
            </if>
            <if test="null != updateBy and '' != updateBy">
                #{updateBy},
            </if>
            <if test="null != remark and '' != remark">
                #{remark}
            </if>
        </trim>
    </insert>

    <insert id="insertxhpcChargingStation" parameterType="com.xhpc.common.domain.XhpcChargingStation"
            useGeneratedKeys="true" keyProperty="chargingStationId">
        insert into xhpc_charging_station
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="null != name and '' != name">
                name,
            </if>
            <if test="null != operatorId ">
                operator_id,
            </if>
            <if test="null != type ">
                type,
            </if>
            <if test="null != constructionSite and '' != constructionSite">
                construction_site,
            </if>
            <if test="null != serviceFacilities and '' != serviceFacilities">
                service_facilities,
            </if>
            <if test="null != peripheryFacilities and '' != peripheryFacilities">
                periphery_facilities,
            </if>
            <if test="null != areaCode ">
                area_code,
            </if>
            <if test="null != address and '' != address">
                address,
            </if>
            <if test="null != detailedAddress and '' != detailedAddress">
                detailed_address,
            </if>
            <if test="null != longitude and '' != longitude">
                longitude,
            </if>
            <if test="null != latitude and '' != latitude">
                latitude,
            </if>
            <if test="null != parkingInstructions and '' != parkingInstructions">
                parking_instructions,
            </if>
            <if test="null != serialNumber and '' != serialNumber">
                serial_number,
            </if>
            <if test="null != clientVisible and '' != clientVisible">
                client_visible,
            </if>
            <if test="null != rateModelId and '' != rateModelId">
                rate_model_id,
            </if>
            <if test="null != imgId and '' != imgId">
                img_id,
            </if>
            <if test="null != businessInstructions and '' != businessInstructions">
                business_instructions,
            </if>
            <if test="null != reminderInstructions and '' != reminderInstructions">
                reminder_instructions,
            </if>
            <if test="null != status ">
                status,
            </if>
            <if test="null != delFlag ">
                del_flag,
            </if>
            <if test="null != createTime ">
                create_time,
            </if>
            <if test="null != createBy and '' != createBy">
                create_by,
            </if>
            <if test="null != updateTime ">
                update_time,
            </if>
            <if test="null != updateBy and '' != updateBy">
                update_by,
            </if>
            <if test="null != remark and '' != remark">
                remark,
            </if>
            <if test="null != stationType">
                station_type,
            </if>
            <if test="null != operatorIdEvcs and '' != operatorIdEvcs">
                operator_id_evcs,
            </if>
            <if test="null != serviceTel and '' != serviceTel">
                service_tel,
            </if>
            <if test="null != parkNums and '' != parkNums">
                park_nums,
            </if>
            <if test="installedTotalPower != null">installed_total_power,</if>
            <if test="runningTotalPower != null">running_total_power,</if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="null != name and '' != name">
                #{name},
            </if>
            <if test="null != operatorId ">
                #{operatorId},
            </if>
            <if test="null != type ">
                #{type},
            </if>
            <if test="null != constructionSite and '' != constructionSite">
                #{constructionSite},
            </if>
            <if test="null != serviceFacilities and '' != serviceFacilities">
                #{serviceFacilities},
            </if>
            <if test="null != peripheryFacilities and '' != peripheryFacilities">
                #{peripheryFacilities},
            </if>
            <if test="null != areaCode ">
                #{areaCode},
            </if>
            <if test="null != address and '' != address">
                #{address},
            </if>
            <if test="null != detailedAddress and '' != detailedAddress">
                #{detailedAddress},
            </if>
            <if test="null != longitude and '' != longitude">
                #{longitude},
            </if>
            <if test="null != latitude and '' != latitude">
                #{latitude},
            </if>
            <if test="null != parkingInstructions and '' != parkingInstructions">
                #{parkingInstructions},
            </if>
            <if test="null != serialNumber and '' != serialNumber">
                #{serialNumber},
            </if>
            <if test="null != clientVisible and '' != clientVisible">
                #{clientVisible},
            </if>
            <if test="null != rateModelId and '' != rateModelId">
                #{rateModelId},
            </if>
            <if test="null != imgId and '' != imgId">
                #{imgId},
            </if>
            <if test="null != businessInstructions and '' != businessInstructions">
                #{businessInstructions},
            </if>
            <if test="null != reminderInstructions and '' != reminderInstructions">
                #{reminderInstructions},
            </if>
            <if test="null != status ">
                #{status},
            </if>
            <if test="null != delFlag ">
                #{delFlag},
            </if>
            <if test="null != createTime ">
                #{createTime},
            </if>
            <if test="null != createBy and '' != createBy">
                #{createBy},
            </if>
            <if test="null != updateTime ">
                #{updateTime},
            </if>
            <if test="null != updateBy and '' != updateBy">
                #{updateBy},
            </if>
            <if test="null != remark and '' != remark">
                #{remark},
            </if>
            <if test="null != stationType">
                #{stationType},
            </if>
            <if test="null != operatorIdEvcs and '' != operatorIdEvcs">
                #{operatorIdEvcs},
            </if>
            <if test="null != serviceTel and '' != serviceTel">
                #{serviceTel},
            </if>
            <if test="null != parkNums and '' != parkNums">
                #{parkNums},
            </if>
            <if test="installedTotalPower != null">#{installedTotalPower},</if>
            <if test="runningTotalPower != null">#{runningTotalPower},</if>
        </trim>
    </insert>

    <insert id="insertXhpcRate" parameterType="com.xhpc.common.domain.XhpcRate" useGeneratedKeys="true"
            keyProperty="rateId">
        insert into xhpc_rate
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="null != chargingStationId ">
                charging_station_id,
            </if>
            <if test="null != powerFee ">
                power_fee,
            </if>
            <if test="null != serviceFee ">
                service_fee,
            </if>
            <if test="null != name and '' != name">
                name,
            </if>
            <if test="null != delFlag ">
                del_flag,
            </if>
            <if test="null != createTime ">
                create_time,
            </if>
            <if test="null != createBy and '' != createBy">
                create_by,
            </if>
            <if test="null != updateTime ">
                update_time,
            </if>
            <if test="null != updateBy and '' != updateBy">
                update_by,
            </if>
            <if test="null != remark and '' != remark">
                remark,
            </if>
            <if test="null != rateValue">
                rate_value,
            </if>
            <if test="null != rateModelId">
                rate_model_id
            </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="null != chargingStationId ">
                #{chargingStationId},
            </if>
            <if test="null != powerFee ">
                #{powerFee},
            </if>
            <if test="null != serviceFee ">
                #{serviceFee},
            </if>
            <if test="null != name and '' != name">
                #{name},
            </if>
            <if test="null != status ">
                #{status},
            </if>
            <if test="null != delFlag ">
                #{delFlag},
            </if>
            <if test="null != createTime ">
                #{createTime},
            </if>
            <if test="null != createBy and '' != createBy">
                #{createBy},
            </if>
            <if test="null != updateTime ">
                #{updateTime},
            </if>
            <if test="null != updateBy and '' != updateBy">
                #{updateBy},
            </if>
            <if test="null != remark and '' != remark">
                #{remark},
            </if>
            <if test="null != rateValue">
                #{rateValue},
            </if>
            <if test="null != rateModelId">
                #{rateModelId}
            </if>

        </trim>
    </insert>


    <insert id="insertXhpcRateTime" parameterType="com.xhpc.common.domain.XhpcRateTime" useGeneratedKeys="true"
            keyProperty="rateId">
        insert into xhpc_rate_time
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="null != chargingStationId ">
                charging_station_id,
            </if>
            <if test="null != rateId ">
                rate_id,
            </if>
            <if test="null != startTime ">
                start_time,
            </if>
            <if test="null != endTime ">
                end_time,
            </if>
            <if test="null != rateModelId ">
                rate_model_id,
            </if>
            <if test="null != sort ">
                sort,
            </if>
            <if test="null != status ">
                status,
            </if>
            <if test="null != delFlag ">
                del_flag,
            </if>
            <if test="null != createTime ">
                create_time,
            </if>
            <if test="null != createBy and '' != createBy">
                create_by,
            </if>
            <if test="null != updateTime ">
                update_time,
            </if>
            <if test="null != updateBy and '' != updateBy">
                update_by,
            </if>
            <if test="null != remark and '' != remark">
                remark,
            </if>
            <if test="null != type ">
                type,
            </if>
            <if test="null != rateValue ">
                rate_value
            </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="null != chargingStationId ">
                #{chargingStationId},
            </if>
            <if test="null != rateId ">
                #{rateId},
            </if>
            <if test="null != startTime ">
                #{startTime},
            </if>
            <if test="null != endTime ">
                #{endTime},
            </if>
            <if test="null != rateModelId ">
                #{rateModelId},
            </if>
            <if test="null != sort ">
                #{sort},
            </if>
            <if test="null != status ">
                #{status},
            </if>
            <if test="null != delFlag ">
                #{delFlag},
            </if>
            <if test="null != createTime ">
                #{createTime},
            </if>
            <if test="null != createBy and '' != createBy">
                #{createBy},
            </if>
            <if test="null != updateTime ">
                #{updateTime},
            </if>
            <if test="null != updateBy and '' != updateBy">
                #{updateBy},
            </if>
            <if test="null != remark and '' != remark">
                #{remark},
            </if>
            <if test="null != type ">
                #{type},
            </if>
            <if test="null != rateValue ">
                #{rateValue}
            </if>
        </trim>
    </insert>

    <select id="getXhpcRateList" resultType="java.util.Map">
        select power_fee   as powerFee,
               service_fee as serviceFee,
               name        as name,
               rate_value  as id
        from xhpc_rate
        where charging_station_id = #{chargingStationId}
          and del_flag = 0
        GROUP BY rate_value
    </select>

    <select id="getXhpcRateTimeTypeList" resultType="java.util.Map">
        select rt.start_time                                as startTime,
               replace(rt.end_time, '00:00:00', '24:00:00') AS endTime,
               rt.rate_id                                   as rateId,
               rt.rate_value                                as id,
               ra.name                                      as rateName,
               ra.power_fee                                 as powerFee,
               ra.service_fee                               as serviceFee
        from xhpc_rate_time as rt
        left join xhpc_rate as ra on ra.rate_id = rt.rate_id
        where rt.charging_station_id = #{chargingStationId}
          and rt.del_flag = 0
    </select>

    <select id="getXhpcRateTimeOrderStatistics" resultType="java.util.Map">

        select IF(SUM(total_power) IS NULL, 0, SUM(total_power)) as chargingDegreeSum,
               COUNT(history_order_id)                            as realTimeOrderIdCount,
            ((SELECT count(user_id) from xhpc_history_order where charging_station_id =#{chargingStationId} and create_time &gt;= #{createTime} and source=1 ) +
              (SELECT count(DISTINCT user_id) from xhpc_history_order where charging_station_id =#{chargingStationId} and create_time &gt;= #{createTime} and source!=1 )) as userIdCount
        from xhpc_history_order
        where charging_station_id =#{chargingStationId} and create_time &gt;= #{createTime}
    </select>

    <update id="updateXhpcRate">
        update xhpc_rate
        set del_flag =1
        where charging_station_id = #{chargingStationId}
          and del_flag = 0
    </update>

    <update id="updateXhpcRateTime">
        update xhpc_rate_time
        set del_flag =1
        where charging_station_id = #{chargingStationId}
          and del_flag = 0
    </update>

    <select id="getXchargingPileList" resultType="java.lang.String">
        select serial_number as pileNo
        from xhpc_charging_pile
        where charging_station_id = #{chargingStationId}
          and del_flag = 0
          and status = 0
    </select>

    <select id="getXhpcRateTimeNumber" resultType="java.util.Map">
        SELECT CAST(((UNIX_TIMESTAMP(end_time) - UNIX_TIMESTAMP(start_time)) / 1800) AS SIGNED) as number,
               rate_value                                                                       as rateValue
        FROM xhpc_rate_time
        where charging_station_id = #{chargingStationId}
        order by sort
    </select>

    <update id="updateXhpcChargingPile">
        update xhpc_charging_pile set rate_model_id=#{rateModelId} WHERE charging_station_id=#{chargingStationId}
    </update>

    <update id="updateXhpcTerminal">
        update xhpc_terminal set rate_model_id=#{rateModelId} WHERE charging_station_id=#{chargingStationId}
    </update>

    <select id="getLandUser" resultType="map">
        select user_id as userId,user_type as userType,operator_id as operatorId  from sys_user where user_id =#{userId}
    </select>

    <insert id="insertXhpcUserPrivilege">
        insert into xhpc_user_privilege(
        <if test="null != userId and '' != userId">
            user_id,
        </if>
        <if test="null != chargingStationId and '' != chargingStationId">
            charging_station_id
        </if>
        )values(
        <if test="null != userId and '' != userId">
            #{userId},
        </if>
        <if test="null != chargingStationId and '' != chargingStationId">
            #{chargingStationId}
        </if>
        )
    </insert>

    <select id="getActivityDiscountTime" resultType="com.xhpc.charging.station.dto.XhpcActivityDiscountDto">
        select
        xad.activity_id as activityId,
        xad.activity_name as activityName,
        xad.template_id as templateId,
        xad.app_user_list as appUserList,
        xad.com_user_list as comUserList,
        xad.cus_user_list as cusUserList,
        xad.station_list as stationList,
        xad.tenant_id as tenantId,
        xad.start_time as startTime,
        xad.end_time as endTime,
        xad.status as status,
        xad.del_flag as delFlag,
        xad.create_by as createBy,
        xad.create_time as createTime,
        xad.update_by as updateBy,
        xad.update_time as updateTime,
        xad.check_by as checkBy,
        xad.check_time as checkTime,
        xat.discount_type discountType,
        xat.applet_activity_name appletActivityName,
        xat.discount_rate discountRate
        from xhpc_activity_discount as xad
        join xhpc_activity_template as xat on xat.activity_template_id = xad.template_id and xat.del_flag =0 and xat.status=1
        where xad.tenant_id=#{tenantId} and xad.status=3 and xad.del_flag =0
        and find_in_set(#{chargingStationId}, xad.station_list)
        <if test="userType ==0">
            and (find_in_set(#{internetUserId}, xad.app_user_list) or xad.app_user_list='-1')
        </if>
        <if test="userType ==2">
            and (find_in_set(#{internetUserId}, xad.com_user_list) or xad.com_user_list='-1')
        </if>
        <if test="userType ==3">
            and (find_in_set(#{internetUserId}, xad.cus_user_list) or xad.cus_user_list='-1')
        </if>
        and xad.start_time &lt;=#{startTime}   and xad.end_time &gt; #{startTime}
        order by xad.start_time asc
    </select>
</mapper>
