<?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.basic.repository.VehiclePurposeDao">
    <select id="getByName" parameterType="string" resultType="com.zw.platform.basic.domain.VehiclePurposeDO">
       SELECT * from zw_m_vehicle_purpose where flag = 1 and purpose_category = BINARY #{name} order by create_data_time  desc limit 1
    </select>

    <insert id="insert" parameterType="com.zw.platform.basic.domain.VehiclePurposeDO">
        INSERT INTO zw_m_vehicle_purpose
        (
        id,
        purpose_category,
        description,
        flag,
        create_data_time,
        create_data_username,
        update_data_time,
        update_data_username,
        code_num
        )
        values (
        #{id},
        #{purposeCategory},
        #{description},
        1,
        now(),
        #{createDataUsername},
        #{updateDataTime},
        #{updateDataUsername},
        #{codeNum}
        )
    </insert>

    <update id="update" parameterType="com.zw.platform.basic.domain.VehiclePurposeDO">
        UPDATE zw_m_vehicle_purpose
        <set>
            <if test='null != purposeCategory'>purpose_category = #{purposeCategory},</if>
            <if test='null != description'>description = #{description},</if>
            <if test='null != flag'>flag = #{flag},</if>
            <if test='null != createDataTime'>create_data_time = #{createDataTime},</if>
            <if test='null != createDataUsername'>create_data_username = #{createDataUsername},</if>
            update_data_time = now(),
            <if test='null != updateDataUsername'>update_data_username = #{updateDataUsername},</if>
            <if test='null != codeNum'>code_num = #{codeNum},</if>
        </set>
        WHERE id = #{id}
    </update>

    <select id="getById" resultType="com.zw.platform.basic.domain.VehiclePurposeDO">
        SELECT
        *
        FROM zw_m_vehicle_purpose
        WHERE id = #{id}
        and flag = 1
    </select>

    <select id="getByIds" resultType="com.zw.platform.basic.domain.VehiclePurposeDO">
        SELECT
        *
        FROM zw_m_vehicle_purpose
        WHERE id in
        <foreach item="id" collection="ids" separator="," open="(" close=")">
            #{id}
        </foreach>
        and flag = 1
    </select>

    <update id="delBatch">
        update zw_m_vehicle_purpose set flag=0,update_data_time = now()
        where id in
        <foreach collection="ids" item="id" open="(" separator="," close=")">
            #{id}
        </foreach>
    </update>

    <update id="delete">
        update zw_m_vehicle_purpose
        set flag = 0,
            update_data_time = now()
        where id = #{id}
    </update>

    <select id="getByKeyword" resultType="com.zw.platform.basic.dto.VehiclePurposeDTO">
        SELECT id,purpose_category,description,code_num from zw_m_vehicle_purpose
        where flag = 1
        <if test="keyword != null and keyword!=''">
            and (purpose_category LIKE BINARY CONCAT('%',#{keyword},'%'))
        </if>
        order by code_num ,create_data_time desc
    </select>

    <insert id="addBatch" parameterType="com.zw.platform.basic.domain.VehiclePurposeDO">
        insert into zw_m_vehicle_purpose
        (id,purpose_category,description,create_data_time,create_data_username)
        values
        <foreach collection="vehiclePurposeList" item="item" index="index" separator=",">
            (#{item.id}, #{item.purposeCategory}, #{item.description},now(), #{item.createDataUsername})
        </foreach>
    </insert>

    <select id="findVehicleCategory" resultType="com.zw.platform.domain.basicinfo.VehiclePurpose">
        select id, group_concat(distinct purpose_category) as purposeCategory, code_num as codeNum
        from zw_m_vehicle_purpose
        where flag = 1
        group by purpose_category
        order by code_num
    </select>
</mapper>