<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.3//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zw.platform.repository.vas.DeviceUpgradeDao">
    <insert id="addDeviceUpgradeByBatch" parameterType="java.util.List">
        INSERT INTO zw_m_vehicle_upgrade (id,vehicle_id,schedule_upgrade_time,upgrade_strategy_flag,batch_upgrade_num,file_id,upgrade_type,
        cron_expression,method_name,is_concurrent,description,bean_class,job_status,job_group,spring_bean,job_name,flag,create_data_time,create_data_username)
        VALUES
        <foreach collection="list" item="item" separator=",">
            (#{item.id},#{item.vehicleId}, #{item.scheduleUpgradeTime}, #{item.upgradeStrategyFlag}, #{item.batchUpgradeNum},
            #{item.upgradeFileId},#{item.upgradeType},
            #{item.cronExpression},#{item.methodName},#{item.isConcurrent},#{item.description},#{item.beanClass},
            #{item.jobStatus},#{item.jobGroup},#{item.springBean},#{item.jobName},1,#{item.createDataTime},#{item.createDataUsername})
        </foreach>
    </insert>

    <update id="deleteDeviceUpgradeById" parameterType="java.util.List">
        delete from zw_m_vehicle_upgrade
        WHERE vehicle_id IN
        <foreach item="item" collection="list" open="(" separator="," close=")">
            #{item}
        </foreach>
    </update>


    <insert id="addDeviceUpgradeFile" parameterType="com.zw.platform.domain.systems.DeviceUpgrade">
        insert into zw_m_upgrade_file_manager (id, upload_time, upgrade_type, file_name, url, manufacturer_id
            , equipment_model, factory_number, depend_soft_version, soft_version, flag)
        values (#{upgradeFileId}, #{uploadTime}, #{upgradeType}
            , #{fileName}, #{url}, #{manufacturerId}, #{equipmentModel}, #{factoryNumber}, #{dependSoftVersion},
            #{softVersion}, 1)
    </insert>

    <update id="updateDeviceUpgradeFile" parameterType="com.zw.platform.domain.systems.DeviceUpgrade">
        update zw_m_upgrade_file_manager
        <set>
            <if test="uploadTime !=null">
                upload_time = #{uploadTime},
            </if>
            <if test="url !=null">
                url = #{url},
            </if>
            <if test="fileName !=null and fileName !=''">
                file_name =#{fileName},
            </if>
            soft_version = #{softVersion}, depend_soft_version = #{dependSoftVersion},equipment_model = #{equipmentModel},
            factory_number = #{factoryNumber}, manufacturer_id = #{manufacturerId},upgrade_type = #{upgradeType}
        </set>
        where id = #{upgradeFileId} and flag =1
    </update>

    <update id="deleteDeviceUpgradeFile" parameterType="String">
        update zw_m_upgrade_file_manager
        set flag = 0
        where id = #{upgradeFileId}
    </update>

    <select id="queryDeviceUpgradeById" resultType="com.zw.platform.domain.systems.DeviceUpgrade">
        select *
        from zw_m_upgrade_file_manager
        where id = #{upgradeFileId}
    </select>

    <select id="queryList" resultType="com.zw.platform.domain.systems.DeviceUpgrade">
        select
            id as upgradeFileId,
            upload_time,
            upgrade_type,
            file_name,
            url,
            manufacturer_id,
            protocol_type,
            equipment_model,
            factory_number,
            depend_soft_version,
            soft_version,
            flag
        from zw_m_upgrade_file_manager
        where flag = 1 order by upload_time desc
    </select>

    <update id="delDeviceUpgradeByIds">
        delete from zw_m_vehicle_upgrade
        WHERE id IN
        <foreach item="item" collection="list" open="(" separator="," close=")">
            #{item}
        </foreach>
    </update>

    <select id="getBeforeVehicleUpgrade" resultType="com.zw.platform.domain.systems.DeviceUpgrade">
             SELECT
        zu.id,
        zu.cron_expression,
        zu.method_name,
        zu.is_concurrent,
        zu.description,
        zu.bean_class,
        zu.job_status,
        zu.job_group,
        zu.spring_bean,
        zu.job_name,
        zu.vehicle_id,
        zm.id as upgradeFileId,
                zm.upload_time,
                zm.upgrade_type,
                zm.file_name,
                zm.url,
                zm.manufacturer_id,
                zm.protocol_type,
                zm.equipment_model,
                zm.factory_number,
                zm.depend_soft_version,
                zm.soft_version
    FROM
        zw_m_vehicle_upgrade zu
        left join zw_m_upgrade_file_manager zm on zu.file_id = zm.id
    where zu.job_status = 1
    and zu.upgrade_strategy_flag = 1
    and zu.vehicle_id = #{vehicleId}
    and zm.upgrade_type = #{upgradeType}
    </select>


    <update id="updateBeforeVehicleUpgrade">
        update  zw_m_vehicle_upgrade set job_status = 2, flag = 0
        WHERE id = #{id}
    </update>

    <select id="getTaskJobById" resultType="com.zw.platform.domain.taskjob.TaskJobForm">
    SELECT
	`id`,
	`cron_expression`,
	`method_name`,
	`is_concurrent`,
	`description`,
	`bean_class`,
	`job_status`,
	`job_group`,
	`spring_bean`,
	`job_name`,
	vehicle_id,
	upgrade_type
FROM
	zw_m_vehicle_upgrade
WHERE
	id = #{id} and flag =1
</select>

    <select id="getTaskJobs" resultType="com.zw.platform.domain.taskjob.TaskJobForm">
        SELECT
	`id`,
	`cron_expression`,
	`method_name`,
	`is_concurrent`,
	`description`,
	`bean_class`,
	`job_status`,
	`job_group`,
	`spring_bean`,
	`job_name`,
	vehicle_id,
	upgrade_type
FROM
	zw_m_vehicle_upgrade
where flag =1 and upgrade_strategy_flag = 1 and job_status = 1
    </select>

    <update id="updateUpgradeStrategy">
        update  zw_m_vehicle_upgrade set job_status = 0, schedule_upgrade_time = null, upgrade_strategy_flag = 0
        WHERE id = #{id}
    </update>

</mapper>
