<?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.base.mapper.SheepFileMapper">

    <resultMap type="SheepFile" id="SheepFileResult">
        <result property="id"    column="id"    />
        <result property="bsManageTags"    column="bs_manage_tags"    />
        <result property="ranchId"    column="ranch_id"    />
        <result property="drRanch"    column="dr_ranch"    />
        <result property="sheepfoldId"    column="sheepfold_id"    />
        <result property="sheepfoldName"    column="sheepfold_name"    />
        <result property="electronicTags"    column="electronic_tags"    />
        <result property="varietyId"    column="variety_id"    />
        <result property="variety"    column="variety"    />
        <result property="family"    column="family"    />
        <result property="name"    column="name"    />
        <result property="gender"    column="gender"    />
        <result property="birthday"    column="birthday"    />
        <result property="dayAge"    column="day_age"    />
        <result property="monthAge"    column="month_age"    />
        <result property="parity"    column="parity"    />
        <result property="birthWeight"    column="birth_weight"    />
        <result property="weaningDate"    column="weaning_date"    />
        <result property="statusId"    column="status_id"    />
        <result property="weaningWeight"    column="weaning_weight"    />
        <result property="currentWeight"    column="current_weight"    />
        <result property="weaningDayAge"    column="weaning_day_age"    />
        <result property="weaningDailyGain"    column="weaning_daily_gain"    />
        <result property="breedStatusId"    column="breed_status_id"    />
        <result property="breed"    column="breed"    />
        <result property="bsFatherId"    column="bs_father_id"    />
        <result property="fatherManageTags"    column="father_manage_tags"    />
        <result property="bsMotherId"    column="bs_mother_id"    />
        <result property="motherManageTags"    column="mother_manage_tags"    />
        <result property="receptorId"    column="receptor_id"    />
        <result property="receptorManageTags"    column="receptor_manage_tags"    />
        <result property="fatherFatherId"    column="father_father_id"    />
        <result property="grandfatherManageTags"    column="grandfather_manage_tags"    />
        <result property="fatherMotherId"    column="father_mother_id"    />
        <result property="grandmotherManageTags"    column="grandmother_manage_tags"    />
        <result property="fatherId"    column="father_id"    />
        <result property="maternalGrandfatherManageTags"    column="maternal_grandfather_manage_tags"    />
        <result property="motherId"    column="mother_id"    />
        <result property="maternalGrandmotherManageTags"    column="maternal_grandmother_manage_tags"    />
        <result property="matingDate"    column="mating_date"    />
        <result property="matingTypeId"    column="mating_type_id"    />
        <result property="pregDate"    column="preg_date"    />
        <result property="lambingDate"    column="lambing_date"    />
        <result property="lambingDay"    column="lambing_day"    />
        <result property="matingDay"    column="mating_day"    />
        <result property="gestationDay"    column="gestation_day"    />
        <result property="expectedDate"    column="expected_date"    />
        <result property="postLambingDay"    column="post_lambing_day"    />
        <result property="lactationDay"    column="lactation_day"    />
        <result property="anestrousDay"    column="anestrous_day"    />
        <result property="matingCounts"    column="mating_counts"    />
        <result property="matingTotal"    column="mating_total"    />
        <result property="miscarriageCounts"    column="miscarriage_counts"    />
        <result property="comment"    column="comment"    />
        <result property="controlled"    column="controlled"    />
        <result property="body"    column="body"    />
        <result property="breast"    column="breast"    />
        <result property="source"    column="source"    />
        <result property="sourceDate"    column="source_date"    />
        <result property="sourceRanchId"    column="source_ranch_id"    />
        <result property="sourceRanch"    column="source_ranch"    />
        <result property="updateBy"    column="update_by"    />
        <result property="updateTime"    column="update_time"    />
        <result property="createBy"    column="create_by"    />
        <result property="createTime"    column="create_time"    />
        <result property="isDelete"    column="is_delete"    />
    </resultMap>

    <sql id="selectSheepFileVo">
        select id, bs_manage_tags, ranch_id, dr_ranch, sheepfold_id, sheepfold_name, electronic_tags, variety_id, variety, family, name, gender, birthday, day_age, month_age, parity, birth_weight, weaning_date, status_id, weaning_weight, current_weight,weaning_day_age,weaning_daily_gain,breed_status_id, breed, bs_father_id, father_manage_tags, bs_mother_id, mother_manage_tags, receptor_id, receptor_manage_tags, father_father_id, grandfather_manage_tags, father_mother_id, grandmother_manage_tags, father_id, maternal_grandfather_manage_tags, mother_id, maternal_grandmother_manage_tags, mating_date, mating_type_id, preg_date, lambing_date, lambing_day, mating_day, gestation_day, expected_date, post_lambing_day, lactation_day, anestrous_day, mating_counts, mating_total, miscarriage_counts, comment, controlled, body, breast, source, source_date, source_ranch_id, source_ranch, update_by, update_time, create_by, create_time, is_delete from sheep_file
    </sql>

    <select id="selectSheepFileList" parameterType="SheepFile" resultMap="SheepFileResult">
        <include refid="selectSheepFileVo"/>
        <where>
            AND (is_delete = 0 OR is_delete IS NULL)
            <if test="id != null "> and id = #{id}</if>
            <if test="bsManageTags != null  and bsManageTags != ''"> and bs_manage_tags = #{bsManageTags}</if>
            <if test="drRanch != null  and drRanch != ''"> and dr_ranch = #{drRanch}</if>
            <if test="electronicTags != null  and electronicTags != ''"> and electronic_tags = #{electronicTags}</if>
            <if test="variety != null  and variety != ''"> and variety = #{variety}</if>
            <if test="name != null  and name != ''"> and name = #{name}</if>
            <if test="gender != null "> and gender = #{gender}</if>
            <if test="statusId != null "> and status_id = #{statusId}</if>
            <if test="breed != null  and breed != ''"> and breed = #{breed}</if>
            ${params.dataScope}
        </where>
        ORDER BY id ASC
    </select>

    <select id="searchEarNumbers" resultType="String">
        SELECT DISTINCT bs_manage_tags
        FROM sheep_file
        WHERE (is_delete = 0 OR is_delete IS NULL)
        <if test="query != null and query != ''">
            AND bs_manage_tags LIKE CONCAT('%', #{query}, '%')
        </if>
        ORDER BY bs_manage_tags ASC
        LIMIT 20
    </select>

    <select id="selectSheepFileById" parameterType="Long" resultMap="SheepFileResult">
        <include refid="selectSheepFileVo"/>
        where id = #{id}
    </select>

    <select id="selectSheepByManageTags"  parameterType="String" resultMap="SheepFileResult">
        <include refid="selectSheepFileVo"/>
        where bs_manage_tags = #{tags}
    </select>

    <select id="countInGroup" resultType="java.lang.Long">
        SELECT COUNT(*)
        FROM sheep_file sf
        WHERE sf.status_id = 1
          AND (sf.is_delete = 0 OR sf.is_delete IS NULL)
            ${params.dataScope}
    </select>

    <select id="countBySheepType" resultType="java.util.Map">
        SELECT sf.name AS name, COUNT(*) AS value
        FROM sheep_file sf
        WHERE sf.status_id = 1
          AND (sf.is_delete = 0 OR sf.is_delete IS NULL)
            ${params.dataScope}
        GROUP BY sf.name
    </select>

    <select id="countByBreedStatus" resultType="java.util.Map">
        SELECT sf.breed AS name, COUNT(*) AS value
        FROM sheep_file sf
        WHERE sf.status_id = 1
          AND (sf.is_delete = 0 OR sf.is_delete IS NULL)
            ${params.dataScope}
        GROUP BY sf.breed
    </select>

    <select id="countByVariety" resultType="java.util.Map">
        SELECT sf.variety AS name, COUNT(*) AS value
        FROM sheep_file sf
        WHERE sf.status_id = 1
          AND (sf.is_delete = 0 OR sf.is_delete IS NULL)
            ${params.dataScope}
        GROUP BY sf.variety
    </select>

    <select id="countParityOfLactation" resultType="java.util.Map">
        SELECT sf.parity AS name, COUNT(*) AS value
        FROM sheep_file sf
        WHERE sf.status_id = 1
          AND sf.name = '泌乳羊'
          AND (sf.is_delete = 0 OR sf.is_delete IS NULL)
            ${params.dataScope}
        GROUP BY sf.parity
        ORDER BY sf.parity
    </select>

    <select id="selectFieldValues" parameterType="String" resultType="String">
        SELECT DISTINCT ${fieldName} as field_value
        FROM sheep_file
        WHERE ${fieldName} IS NOT NULL AND ${fieldName} != '' AND ${fieldName} != 'null'
        ORDER BY ${fieldName} ASC
    </select>

    <select id="selectSheepFileListByCondition" resultMap="SheepFileResult">
        <include refid="selectSheepFileVo"/>
        <where>
            AND (is_delete = 0 OR is_delete IS NULL)

            <if test="sheepFile != null">
                <if test="sheepFile.allEarNumbers != null and sheepFile.allEarNumbers.size() > 0">
                    AND bs_manage_tags IN
                    <foreach collection="sheepFile.allEarNumbers" item="item" open="(" separator="," close=")">
                        #{item}
                    </foreach>
                </if>
                <if test="sheepFile.allEleEarNumbers != null and sheepFile.allEleEarNumbers.size() > 0">
                    AND electronic_tags IN
                    <foreach collection="sheepFile.allEleEarNumbers" item="item" open="(" separator="," close=")">
                        #{item}
                    </foreach>
                </if>
                <if test="sheepFile.allGenders != null and sheepFile.allGenders.size() > 0">
                    AND gender IN
                    <foreach collection="sheepFile.allGenders" item="item" open="(" separator="," close=")">
                        #{item}
                    </foreach>
                </if>
                <if test="sheepFile.allBreedingStatus != null and sheepFile.allBreedingStatus.size() > 0">
                    AND breed IN
                    <foreach collection="sheepFile.allBreedingStatus" item="item" open="(" separator="," close=")">
                        #{item}
                    </foreach>
                </if>
                <if test="sheepFile.allSheepTypes != null and sheepFile.allSheepTypes.size() > 0">
                    AND name IN
                    <foreach collection="sheepFile.allSheepTypes" item="item" open="(" separator="," close=")">
                        #{item}
                    </foreach>
                </if>

                <if test="sheepFile.bsManageTags != null and sheepFile.bsManageTags != '' and (sheepFile.allEarNumbers == null or sheepFile.allEarNumbers.size() == 0)">
                    AND bs_manage_tags LIKE CONCAT('%', #{sheepFile.bsManageTags}, '%')
                </if>
                <if test="sheepFile.electronicTags != null and sheepFile.electronicTags != '' and (sheepFile.allEleEarNumbers == null or sheepFile.allEleEarNumbers.size() == 0)">
                    AND electronic_tags LIKE CONCAT('%', #{sheepFile.electronicTags}, '%')
                </if>
                <if test="sheepFile.drRanch != null and sheepFile.drRanch != ''">
                    AND dr_ranch LIKE CONCAT('%', #{sheepFile.drRanch}, '%')
                </if>
                <if test="sheepFile.variety != null and sheepFile.variety != ''">
                    AND variety LIKE CONCAT('%', #{sheepFile.variety}, '%')
                </if>
                <if test="sheepFile.name != null and sheepFile.name != '' and (sheepFile.allSheepTypes == null or sheepFile.allSheepTypes.size() == 0)">
                    AND name LIKE CONCAT('%', #{sheepFile.name}, '%')
                </if>
                <if test="sheepFile.gender != null and (sheepFile.allGenders == null or sheepFile.allGenders.size() == 0)">
                    AND gender = #{sheepFile.gender}
                </if>
                <if test="sheepFile.statusId != null">
                    AND status_id = #{sheepFile.statusId}
                </if>
                <if test="sheepFile.breed != null and sheepFile.breed != '' and (sheepFile.allBreedingStatus == null or sheepFile.allBreedingStatus.size() == 0)">
                    AND breed LIKE CONCAT('%', #{sheepFile.breed}, '%')
                </if>
            </if>

            <if test="params != null and !params.isEmpty()">
                <foreach collection="params.entrySet()" item="value" index="key">
                    <if test="value != null and value.toString() == 'IS_NULL'">
                        AND ${key} IS NULL
                    </if>
                    <if test="value != null and value.toString() == 'NOT_NULL'">
                        AND ${key} IS NOT NULL
                    </if>

                    <if test="value != null and value.toString() != null and (value.toString().startsWith('GT:') or value.toString().startsWith('LT:') or value.toString().startsWith('GE:') or value.toString().startsWith('LE:'))">
                        <choose>
                            <when test="value.toString().startsWith('GT:')">
                                AND ${key} &gt; #{value.toString().substring(3)}
                            </when>
                            <when test="value.toString().startsWith('LT:')">
                                AND ${key} &lt; #{value.toString().substring(3)}
                            </when>
                            <when test="value.toString().startsWith('GE:')">
                                AND ${key} &gt;= #{value.toString().substring(3)}
                            </when>
                            <when test="value.toString().startsWith('LE:')">
                                AND ${key} &lt;= #{value.toString().substring(3)}
                            </when>
                        </choose>
                    </if>

                    <if test="value != null and value.toString() != null and value.toString().contains(',') and !value.toString().startsWith('GT:')">
                        AND ${key} IN
                        <foreach collection="value.toString().split(',')" item="item" open="(" separator="," close=")">
                            #{item}
                        </foreach>
                    </if>

                    <if test="value != null and value.toString() != 'IS_NULL' and value.toString() != 'NOT_NULL' and !value.toString().contains(',') and !value.toString().startsWith('GT:') and !value.toString().startsWith('LT:') and !value.toString().startsWith('GE:') and !value.toString().startsWith('LE:')">
                        <choose>
                            <when test="key == 'bs_manage_tags' or key == 'electronic_tags' or
                              key == 'dr_ranch' or key == 'sheepfold_name' or
                              key == 'variety' or key == 'family' or
                              key == 'name' or key == 'breed' or
                              key == 'father_manage_tags' or key == 'mother_manage_tags' or
                              key == 'receptor_manage_tags'">
                                AND ${key} LIKE CONCAT('%', #{value}, '%')
                            </when>
                            <otherwise>
                                AND ${key} = #{value}
                            </otherwise>
                        </choose>
                    </if>
                </foreach>
            </if>
            ${params.dataScope}
        </where>
        ORDER BY id ASC
    </select>

    <select id="selectRamList" resultMap="SheepFileResult">
        SELECT * FROM sheep_file
        WHERE gender = 2 AND is_delete = 0
    </select>

    <select id="selectSheepFileByManageTags" resultMap="SheepFileResult">
        SELECT * FROM sheep_file
        WHERE bs_manage_tags = #{manageTags} AND is_delete = 0
            LIMIT 1
    </select>

    <insert id="insertSheepFile" parameterType="SheepFile" useGeneratedKeys="true" keyProperty="id">
        insert into sheep_file
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="bsManageTags != null">bs_manage_tags,</if>
            <if test="ranchId != null">ranch_id,</if>
            <if test="drRanch != null">dr_ranch,</if>
            <if test="sheepfoldId != null">sheepfold_id,</if>
            <if test="sheepfoldName != null">sheepfold_name,</if>
            <if test="electronicTags != null">electronic_tags,</if>
            <if test="varietyId != null">variety_id,</if>
            <if test="variety != null">variety,</if>
            <if test="family != null">family,</if>
            <if test="name != null">name,</if>
            <if test="gender != null">gender,</if>
            <if test="birthday != null">birthday,</if>
            <if test="dayAge != null">day_age,</if>
            <if test="monthAge != null">month_age,</if>
            <if test="parity != null">parity,</if>
            <if test="birthWeight != null">birth_weight,</if>
            <if test="weaningDate != null">weaning_date,</if>
            <if test="statusId != null">status_id,</if>
            <if test="weaningWeight != null">weaning_weight,</if>
            <if test="currentWeight != null">current_weight,</if>
            <if test="weaningDayAge != null">weaning_day_age,</if>
            <if test="weaningDailyGain != null">weaning_daily_gain,</if>
            <if test="breedStatusId != null">breed_status_id,</if>
            <if test="breed != null">breed,</if>
            <if test="bsFatherId != null">bs_father_id,</if>
            <if test="fatherManageTags != null">father_manage_tags,</if>
            <if test="bsMotherId != null">bs_mother_id,</if>
            <if test="motherManageTags != null">mother_manage_tags,</if>
            <if test="receptorId != null">receptor_id,</if>
            <if test="receptorManageTags != null">receptor_manage_tags,</if>
            <if test="fatherFatherId != null">father_father_id,</if>
            <if test="grandfatherManageTags != null">grandfather_manage_tags,</if>
            <if test="fatherMotherId != null">father_mother_id,</if>
            <if test="grandmotherManageTags != null">grandmother_manage_tags,</if>
            <if test="fatherId != null">father_id,</if>
            <if test="maternalGrandfatherManageTags != null">maternal_grandfather_manage_tags,</if>
            <if test="motherId != null">mother_id,</if>
            <if test="maternalGrandmotherManageTags != null">maternal_grandmother_manage_tags,</if>
            <if test="matingDate != null">mating_date,</if>
            <if test="matingTypeId != null">mating_type_id,</if>
            <if test="pregDate != null">preg_date,</if>
            <if test="lambingDate != null">lambing_date,</if>
            <if test="lambingDay != null">lambing_day,</if>
            <if test="matingDay != null">mating_day,</if>
            <if test="gestationDay != null">gestation_day,</if>
            <if test="expectedDate != null">expected_date,</if>
            <if test="postLambingDay != null">post_lambing_day,</if>
            <if test="lactationDay != null">lactation_day,</if>
            <if test="anestrousDay != null">anestrous_day,</if>
            <if test="matingCounts != null">mating_counts,</if>
            <if test="matingTotal != null">mating_total,</if>
            <if test="miscarriageCounts != null">miscarriage_counts,</if>
            <if test="comment != null">comment,</if>
            <if test="controlled != null">controlled,</if>
            <if test="body != null">body,</if>
            <if test="breast != null">breast,</if>
            <if test="source != null">source,</if>
            <if test="sourceDate != null">source_date,</if>
            <if test="sourceRanchId != null">source_ranch_id,</if>
            <if test="sourceRanch != null">source_ranch,</if>
            <if test="createBy != null">create_by,</if>
            <if test="createTime != null">create_time,</if>
            <if test="updateBy != null">update_by,</if>
            <if test="updateTime != null">update_time,</if>
            <if test="isDelete != null">is_delete,</if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="bsManageTags != null">#{bsManageTags},</if>
            <if test="ranchId != null">#{ranchId},</if>
            <if test="drRanch != null">#{drRanch},</if>
            <if test="sheepfoldId != null">#{sheepfoldId},</if>
            <if test="sheepfoldName != null">#{sheepfoldName},</if>
            <if test="electronicTags != null">#{electronicTags},</if>
            <if test="varietyId != null">#{varietyId},</if>
            <if test="variety != null">#{variety},</if>
            <if test="family != null">#{family},</if>
            <if test="name != null">#{name},</if>
            <if test="gender != null">#{gender},</if>
            <if test="birthday != null">#{birthday},</if>
            <if test="dayAge != null">#{dayAge},</if>
            <if test="monthAge != null">#{monthAge},</if>
            <if test="parity != null">#{parity},</if>
            <if test="birthWeight != null">#{birthWeight},</if>
            <if test="weaningDate != null">#{weaningDate},</if>
            <if test="statusId != null">#{statusId},</if>
            <if test="weaningWeight != null">#{weaningWeight},</if>
            <if test="currentWeight != null">#{currentWeight},</if>
            <if test="weaningDayAge != null">#{weaningDayAge},</if>
            <if test="weaningDailyGain != null">#{weaningDailyGain},</if>
            <if test="breedStatusId != null">#{breedStatusId},</if>
            <if test="breed != null">#{breed},</if>
            <if test="bsFatherId != null">#{bsFatherId},</if>
            <if test="fatherManageTags != null">#{fatherManageTags},</if>
            <if test="bsMotherId != null">#{bsMotherId},</if>
            <if test="motherManageTags != null">#{motherManageTags},</if>
            <if test="receptorId != null">#{receptorId},</if>
            <if test="receptorManageTags != null">#{receptorManageTags},</if>
            <if test="fatherFatherId != null">#{fatherFatherId},</if>
            <if test="grandfatherManageTags != null">#{grandfatherManageTags},</if>
            <if test="fatherMotherId != null">#{fatherMotherId},</if>
            <if test="grandmotherManageTags != null">#{grandmotherManageTags},</if>
            <if test="fatherId != null">#{fatherId},</if>
            <if test="maternalGrandfatherManageTags != null">#{maternalGrandfatherManageTags},</if>
            <if test="motherId != null">#{motherId},</if>
            <if test="maternalGrandmotherManageTags != null">#{maternalGrandmotherManageTags},</if>
            <if test="matingDate != null">#{matingDate},</if>
            <if test="matingTypeId != null">#{matingTypeId},</if>
            <if test="pregDate != null">#{pregDate},</if>
            <if test="lambingDate != null">#{lambingDate},</if>
            <if test="lambingDay != null">#{lambingDay},</if>
            <if test="matingDay != null">#{matingDay},</if>
            <if test="gestationDay != null">#{gestationDay},</if>
            <if test="expectedDate != null">#{expectedDate},</if>
            <if test="postLambingDay != null">#{postLambingDay},</if>
            <if test="lactationDay != null">#{lactationDay},</if>
            <if test="anestrousDay != null">#{anestrousDay},</if>
            <if test="matingCounts != null">#{matingCounts},</if>
            <if test="matingTotal != null">#{matingTotal},</if>
            <if test="miscarriageCounts != null">#{miscarriageCounts},</if>
            <if test="comment != null">#{comment},</if>
            <if test="controlled != null">#{controlled},</if>
            <if test="body != null">#{body},</if>
            <if test="breast != null">#{breast},</if>
            <if test="source != null">#{source},</if>
            <if test="sourceDate != null">#{sourceDate},</if>
            <if test="sourceRanchId != null">#{sourceRanchId},</if>
            <if test="sourceRanch != null">#{sourceRanch},</if>
            <if test="createBy != null">#{createBy},</if>
            <if test="createTime != null">#{createTime},</if>
            <if test="updateBy != null">#{updateBy},</if>
            <if test="updateTime != null">#{updateTime},</if>
            <if test="isDelete != null">#{isDelete},</if>
        </trim>
    </insert>

    <update id="updateSheepFile" parameterType="SheepFile">
        update sheep_file
        <trim prefix="SET" suffixOverrides=",">
            <if test="bsManageTags != null">bs_manage_tags = #{bsManageTags},</if>
            <if test="ranchId != null">ranch_id = #{ranchId},</if>
            <if test="drRanch != null">dr_ranch = #{drRanch},</if>
            <if test="sheepfoldId != null">sheepfold_id = #{sheepfoldId},</if>
            <if test="sheepfoldName != null">sheepfold_name = #{sheepfoldName},</if>
            <if test="electronicTags != null">electronic_tags = #{electronicTags},</if>
            <if test="varietyId != null">variety_id = #{varietyId},</if>
            <if test="variety != null">variety = #{variety},</if>
            <if test="family != null">family = #{family},</if>
            <if test="name != null">name = #{name},</if>
            <if test="gender != null">gender = #{gender},</if>
            <if test="birthday != null">birthday = #{birthday},</if>
            <if test="dayAge != null">day_age = #{dayAge},</if>
            <if test="monthAge != null">month_age = #{monthAge},</if>
            <if test="parity != null">parity = #{parity},</if>
            <if test="birthWeight != null">birth_weight = #{birthWeight},</if>
            <if test="weaningDate != null">weaning_date = #{weaningDate},</if>
            <if test="statusId != null">status_id = #{statusId},</if>
            <if test="weaningWeight != null">weaning_weight = #{weaningWeight},</if>
            <if test="currentWeight != null">current_weight = #{currentWeight},</if>
            <if test="weaningDayAge != null">weaning_day_age = #{weaningDayAge},</if>
            <if test="weaningDailyGain != null">weaning_daily_gain = #{weaningDailyGain},</if>
            <if test="breedStatusId != null">breed_status_id = #{breedStatusId},</if>
            <if test="breed != null">breed = #{breed},</if>
            <if test="bsFatherId != null">bs_father_id = #{bsFatherId},</if>
            <if test="fatherManageTags != null">father_manage_tags = #{fatherManageTags},</if>
            <if test="bsMotherId != null">bs_mother_id = #{bsMotherId},</if>
            <if test="motherManageTags != null">mother_manage_tags = #{motherManageTags},</if>
            <if test="receptorId != null">receptor_id = #{receptorId},</if>
            <if test="receptorManageTags != null">receptor_manage_tags = #{receptorManageTags},</if>
            <if test="fatherFatherId != null">father_father_id = #{fatherFatherId},</if>
            <if test="grandfatherManageTags != null">grandfather_manage_tags = #{grandfatherManageTags},</if>
            <if test="fatherMotherId != null">father_mother_id = #{fatherMotherId},</if>
            <if test="grandmotherManageTags != null">grandmother_manage_tags = #{grandmotherManageTags},</if>
            <if test="fatherId != null">father_id = #{fatherId},</if>
            <if test="maternalGrandfatherManageTags != null">maternal_grandfather_manage_tags = #{maternalGrandfatherManageTags},</if>
            <if test="motherId != null">mother_id = #{motherId},</if>
            <if test="maternalGrandmotherManageTags != null">maternal_grandmother_manage_tags = #{maternalGrandmotherManageTags},</if>
            <if test="matingDate != null">mating_date = #{matingDate},</if>
            <if test="matingTypeId != null">mating_type_id = #{matingTypeId},</if>
            <if test="pregDate != null">preg_date = #{pregDate},</if>
            <if test="lambingDate != null">lambing_date = #{lambingDate},</if>
            <if test="lambingDay != null">lambing_day = #{lambingDay},</if>
            <if test="matingDay != null">mating_day = #{matingDay},</if>
            <if test="gestationDay != null">gestation_day = #{gestationDay},</if>
            <if test="expectedDate != null">expected_date = #{expectedDate},</if>
            <if test="postLambingDay != null">post_lambing_day = #{postLambingDay},</if>
            <if test="lactationDay != null">lactation_day = #{lactationDay},</if>
            <if test="anestrousDay != null">anestrous_day = #{anestrousDay},</if>
            <if test="matingCounts != null">mating_counts = #{matingCounts},</if>
            <if test="matingTotal != null">mating_total = #{matingTotal},</if>
            <if test="miscarriageCounts != null">miscarriage_counts = #{miscarriageCounts},</if>
            <if test="comment != null">comment = #{comment},</if>
            <if test="controlled != null">controlled = #{controlled},</if>
            <if test="body != null">body = #{body},</if>
            <if test="breast != null">breast = #{breast},</if>
            <if test="source != null">source = #{source},</if>
            <if test="sourceDate != null">source_date = #{sourceDate},</if>
            <if test="sourceRanchId != null">source_ranch_id = #{sourceRanchId},</if>
            <if test="sourceRanch != null">source_ranch = #{sourceRanch},</if>
            <if test="updateBy != null">update_by = #{updateBy},</if>
            <if test="updateTime != null">update_time = #{updateTime},</if>
            <if test="isDelete != null">is_delete = #{isDelete},</if>
        </trim>
        where id = #{id}
    </update>

    <delete id="deleteSheepFileById" parameterType="Long">
        update sheep_file set is_delete = 1 where id = #{id}
    </delete>

    <delete id="deleteSheepFileByIds" parameterType="String">
        update sheep_file set is_delete = 1 where id in
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>

</mapper>