<?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.zhyc.module.produce.manage_sheep.mapper.ScTransGroupMapper">

    <resultMap type="com.zhyc.module.produce.manage_sheep.domain.ScTransGroup" id="ScTransGroupResult">
        <result property="id" column="id"/>
        <result property="sheepId" column="sheep_id"/>
        <result property="manageTags" column="manageTags"/>
        <result property="sheepTypeId" column="type_id"/>
        <result property="foldTo" column="fold_to"/>
        <result property="foldFrom" column="fold_from"/>
        <result property="reason" column="reason"/>
        <result property="varietyId" column="variety_id"/>
        <result property="varietyName" column="varietyName"/>
        <result property="technician" column="technician"/>
        <result property="status" column="status"/>
        <result property="comment" column="comment"/>
        <result property="createBy" column="create_by"/>
        <result property="createTime" column="create_time"/>
    </resultMap>

    <sql id="selectScTransGroupVo">
        SELECT tg.id,
               tg.sheep_id,
               s.manage_tags          AS manageTags,
               tg.event_type AS eventType,
               tg.trans_date AS transDate,
               tg.fold_to,
               tg.fold_from,
               tg.reason,
               tg.variety_id,
               bv.variety             AS varietyName,
               st.id                  AS sheepTypeId,
               st.name                AS sheepTypeName,
               tg.status,
               tg.comment,
               tg.create_by,
               tg.create_time,
               sf_from.sheepfold_name AS foldFromName,
               sf_to.sheepfold_name   AS foldToName,
               tg.technician,
               st.id                  AS sheepTypeId,
               st.name                AS sheepTypeName
        FROM sc_trans_group tg
                 LEFT JOIN bas_sheep s ON tg.sheep_id = s.id
                 LEFT JOIN bas_sheep_type st ON s.type_id = st.id
                 LEFT JOIN da_sheepfold sf_from ON tg.fold_from = sf_from.id
                 LEFT JOIN da_sheepfold sf_to ON tg.fold_to = sf_to.id
                 LEFT JOIN bas_sheep_variety bv ON tg.variety_id = bv.id
    </sql>

    <select id="selectScTransGroupList" parameterType="ScTransGroup" resultMap="ScTransGroupResult">
        <include refid="selectScTransGroupVo"/>
        <where>
            <if test="sheepId != null">and sheep_id = #{sheepId}</if>
            <if test="manageTags != null and manageTags != ''">
                and s.manage_tags like concat('%', #{manageTags}, '%')
            </if>
<!--            <if test="eventType != null">and tg.event_type = #{eventType}</if>-->
            <if test="params.beginTransDate != null and params.beginTransDate != '' and params.endTransDate != null and params.endTransDate != ''">
                and tg.trans_date between #{params.beginTransDate} and #{params.endTransDate}
            </if>
            <if test="foldTo != null and foldTo != ''">and fold_to = #{foldTo}</if>
            <if test="foldFrom != null and foldFrom != ''">and fold_from = #{foldFrom}</if>
            <if test="status != null">and status = #{status}</if>
            <if test="varietyId != null">and tg.variety_id = #{varietyId}</if>
            <if test="sheepTypeId != null">and st.id = #{sheepTypeId}</if>
<!--            <if test="params.beginCreateTime != null and params.beginCreateTime != '' and params.endCreateTime != null and params.endCreateTime != ''">-->
<!--                and tg.create_time between #{params.beginCreateTime} and #{params.endCreateTime}-->
<!--            </if>-->
        </where>
        ORDER BY tg.create_time DESC
    </select>


    <select id="selectScTransGroupById" parameterType="Integer" resultMap="ScTransGroupResult">
        <include refid="selectScTransGroupVo"/>
        where tg.id = #{id}
    </select>

    <insert id="insertScTransGroup" parameterType="ScTransGroup"
            useGeneratedKeys="true" keyProperty="id">
        insert into sc_trans_group
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="sheepId != null">sheep_id,</if>
            <if test="eventType != null">event_type,</if>
            <if test="transDate != null and transDate != ''">trans_date,</if>
            <if test="foldTo != null and foldTo != ''">fold_to,</if>
            <if test="foldFrom != null and foldFrom != ''">fold_from,</if>
            <if test="varietyId != null">variety_id,</if>
            <if test="reason != null">reason,</if>
            <if test="technician != null and technician != ''">technician,</if>
            <if test="status != null">status,</if>
            <if test="comment != null">comment,</if>
            <if test="createBy != null">create_by,</if>
            <if test="createTime != null">create_time,</if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="sheepId != null">#{sheepId},</if>
            <if test="eventType != null">#{eventType},</if>
            <if test="transDate != null and transDate != ''">#{transDate},</if>
            <if test="foldTo != null and foldTo != ''">#{foldTo},</if>
            <if test="foldFrom != null and foldFrom != ''">#{foldFrom},</if>
            <if test="varietyId != null">#{varietyId},</if>
            <if test="reason != null">#{reason},</if>
            <if test="technician != null and technician != ''">#{technician},</if>
            <if test="status != null">#{status},</if>
            <if test="comment != null">#{comment},</if>
            <if test="createBy != null">#{createBy},</if>
            <if test="createTime != null">#{createTime},</if>
        </trim>
    </insert>

    <update id="updateScTransGroup" parameterType="ScTransGroup">
        update sc_trans_group
        <trim prefix="SET" suffixOverrides=",">
            <if test="sheepId != null">sheep_id = #{sheepId},</if>
            <if test="eventType != null">event_type = #{eventType},</if>
            <if test="transDate != null and transDate != ''">trans_date = #{transDate},</if>
            <if test="foldTo != null and foldTo != ''">fold_to = #{foldTo},</if>
            <if test="foldFrom != null and foldFrom != ''">fold_from = #{foldFrom},</if>
            <if test="varietyId != null">variety_id = #{varietyId},</if>
            <if test="reason != null">reason = #{reason},</if>
            <if test="technician != null and technician != ''">technician = #{technician},</if>
            <if test="status != null">status = #{status},</if>
            <if test="comment != null">comment = #{comment},</if>
            <if test="createBy != null">create_by = #{createBy},</if>
            <if test="createTime != null">create_time = #{createTime},</if>
        </trim>
        where id = #{id}
    </update>

    <delete id="deleteScTransGroupById" parameterType="Integer">
        delete
        from sc_trans_group
        where tg.id = #{id}
    </delete>

    <delete id="deleteScTransGroupByIds" parameterType="String">
        delete from sc_trans_group where id in
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>
</mapper>