<?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="cn.timer.api.dao.insure.InsureUserMapper">

    <!-- 可根据自己的需求,是否要使用 -->
    <resultMap type="cn.timer.api.bean.insure.InsureUser" id="insureUserMap">
        <result property="id" column="id"/>
        <result property="transId" column="trans_id"/>
        <result property="price" column="price"/>
        <result property="insuredName" column="insured_name"/>
        <result property="batchNo" column="batch_no"/>
        <result property="premium" column="premium"/>
        <result property="insuredMobile" column="insured_mobile"/>
        <result property="insuredNo" column="insured_no"/>
        <result property="insuredEContact" column="insured_e_contact"/>
        <result property="benefitBasicPlan" column="benefit_basic_plan"/>
        <result property="benefitOccupationCategory" column="benefit_occupation_category"/>
        <result property="benefitElEmployeeNumberT" column="benefit_EL_employee_number_t"/>
        <result property="tricycleFrameNumber" column="Tricycle_frame_number"/>
        <result property="policyNo" column="policy_no"/>
        <result property="status" column="status"/>
        <result property="type" column="type"/>
        <result property="orgCode" column="org_code"/>
        <result property="userId" column="user_id"/>
        <result property="applicantEmployeeList" column="applicant_employee_list"/>
        <result property="policyDateStart" column="policy_date_start"/>
        <result property="policyDateEnd" column="policy_date_end"/>
    </resultMap>

    <select id="queryObject" resultType="cn.timer.api.bean.insure.InsureUser">
        select *
        from insure_user
        where id = #{value}
    </select>

    <select id="queryList" resultType="cn.timer.api.bean.insure.InsureUser">
        select * from insure_user
        <where>
            <if test="transId != null and transId != ''">AND `trans_id` = #{transId}</if>
            <if test="price != null and price != ''">AND `price` = #{price}</if>
            <if test="insuredName != null and insuredName != ''">AND `insured_name` = #{insuredName}</if>
            <if test="batchNo != null and batchNo != ''">AND `batch_no` = #{batchNo}</if>
            <if test="premium != null and premium != ''">AND `premium` = #{premium}</if>
            <if test="insuredMobile != null and insuredMobile != ''">AND `insured_mobile` = #{insuredMobile}</if>
            <if test="insuredNo != null and insuredNo != ''">AND `insured_no` = #{insuredNo}</if>
            <if test="insuredEContact != null and insuredEContact != ''">AND `insured_e_contact` = #{insuredEContact}
            </if>
            <if test="benefitBasicPlan != null and benefitBasicPlan != ''">AND `benefit_basic_plan` =
                #{benefitBasicPlan}
            </if>
            <if test="benefitOccupationCategory != null and benefitOccupationCategory != ''">AND
                `benefit_occupation_category` = #{benefitOccupationCategory}
            </if>
            <if test="benefitElEmployeeNumberT != null and benefitElEmployeeNumberT != ''">AND
                `benefit_EL_employee_number_t` = #{benefitElEmployeeNumberT}
            </if>
            <if test="tricycleFrameNumber != null and tricycleFrameNumber != ''">AND `Tricycle_frame_number` =
                #{tricycleFrameNumber}
            </if>
            <if test="policyNo != null and policyNo != ''">AND `policy_no` = #{policyNo}</if>
            <if test="status != null and status != ''">AND `status` = #{status}</if>
            <if test="type != null and type != ''">AND `type` = #{type}</if>
            <if test="orgCode != null and orgCode != ''">AND `org_code` = #{orgCode}</if>
            <if test="userId != null and userId != ''">AND `user_id` = #{userId}</if>
            <if test="applicantEmployeeList != null and applicantEmployeeList != ''">AND `applicant_employee_list` =
                #{applicantEmployeeList}
            </if>
        </where>
        <choose>
            <when test="sidx != null and sidx.trim() != ''">
                order by ${sidx} ${order}
            </when>
            <otherwise>
                order by id desc
            </otherwise>
        </choose>
        <if test="offset != null and limit != null">
            limit #{offset}, #{limit}
        </if>
    </select>

    <select id="queryTotal" resultType="int">
        select count(*) from insure_user
        <where>
            <if test="transId != null and transId != ''">AND `trans_id` = #{transId}</if>
            <if test="price != null and price != ''">AND `price` = #{price}</if>
            <if test="insuredName != null and insuredName != ''">AND `insured_name` = #{insuredName}</if>
            <if test="batchNo != null and batchNo != ''">AND `batch_no` = #{batchNo}</if>
            <if test="premium != null and premium != ''">AND `premium` = #{premium}</if>
            <if test="insuredMobile != null and insuredMobile != ''">AND `insured_mobile` = #{insuredMobile}</if>
            <if test="insuredNo != null and insuredNo != ''">AND `insured_no` = #{insuredNo}</if>
            <if test="insuredEContact != null and insuredEContact != ''">AND `insured_e_contact` = #{insuredEContact}
            </if>
            <if test="benefitBasicPlan != null and benefitBasicPlan != ''">AND `benefit_basic_plan` =
                #{benefitBasicPlan}
            </if>
            <if test="benefitOccupationCategory != null and benefitOccupationCategory != ''">AND
                `benefit_occupation_category` = #{benefitOccupationCategory}
            </if>
            <if test="benefitElEmployeeNumberT != null and benefitElEmployeeNumberT != ''">AND
                `benefit_EL_employee_number_t` = #{benefitElEmployeeNumberT}
            </if>
            <if test="tricycleFrameNumber != null and tricycleFrameNumber != ''">AND `Tricycle_frame_number` =
                #{tricycleFrameNumber}
            </if>
            <if test="policyNo != null and policyNo != ''">AND `policy_no` = #{policyNo}</if>
            <if test="status != null and status != ''">AND `status` = #{status}</if>
            <if test="type != null and type != ''">AND `type` = #{type}</if>
            <if test="orgCode != null and orgCode != ''">AND `org_code` = #{orgCode}</if>
            <if test="userId != null and userId != ''">AND `user_id` = #{userId}</if>
            <if test="applicantEmployeeList != null and applicantEmployeeList != ''">AND `applicant_employee_list` =
                #{applicantEmployeeList}
            </if>
        </where>
    </select>

    <insert id="save" parameterType="cn.timer.api.bean.insure.InsureUser" useGeneratedKeys="true" keyProperty="id">
        insert into insure_user
        (`trans_id`,
         `price`,
         `insured_name`,
         `batch_no`,
         `premium`,
         `insured_mobile`,
         `insured_no`,
         `insured_e_contact`,
         `benefit_basic_plan`,
         `benefit_occupation_category`,
         `benefit_EL_employee_number_t`,
         `Tricycle_frame_number`,
         `policy_no`,
         `status`,
         `type`,
         `org_code`,
         `user_id`,
         `applicant_employee_list`)
        values (#{transId},
                #{price},
                #{insuredName},
                #{batchNo},
                #{premium},
                #{insuredMobile},
                #{insuredNo},
                #{insuredEContact},
                #{benefitBasicPlan},
                #{benefitOccupationCategory},
                #{benefitElEmployeeNumberT},
                #{tricycleFrameNumber},
                #{policyNo},
                #{status},
                #{type},
                #{orgCode},
                #{userId},
                #{applicantEmployeeList})
    </insert>

    <insert id="saveSelective" parameterType="cn.timer.api.bean.insure.InsureUser" useGeneratedKeys="true"
            keyProperty="id">
        insert into insure_user
        (
        <if test="transId != null">,`trans_id`</if>
        <if test="price != null">,`price`</if>
        <if test="insuredName != null">,`insured_name`</if>
        <if test="batchNo != null">,`batch_no`</if>
        <if test="premium != null">,`premium`</if>
        <if test="insuredMobile != null">,`insured_mobile`</if>
        <if test="insuredNo != null">,`insured_no`</if>
        <if test="insuredEContact != null">,`insured_e_contact`</if>
        <if test="benefitBasicPlan != null">,`benefit_basic_plan`</if>
        <if test="benefitOccupationCategory != null">,`benefit_occupation_category`</if>
        <if test="benefitElEmployeeNumberT != null">,`benefit_EL_employee_number_t`</if>
        <if test="tricycleFrameNumber != null">,`Tricycle_frame_number`</if>
        <if test="policyNo != null">,`policy_no`</if>
        <if test="status != null">,`status`</if>
        <if test="type != null">,`type`</if>
        <if test="orgCode != null">,`org_code`</if>
        <if test="userId != null">,`user_id`</if>
        <if test="applicantEmployeeList != null">,`applicant_employee_list`</if>
        )
        values
        (
        <if test="transId != null">,#{transId}</if>
        <if test="price != null">,#{price}</if>
        <if test="insuredName != null">,#{insuredName}</if>
        <if test="batchNo != null">,#{batchNo}</if>
        <if test="premium != null">,#{premium}</if>
        <if test="insuredMobile != null">,#{insuredMobile}</if>
        <if test="insuredNo != null">,#{insuredNo}</if>
        <if test="insuredEContact != null">,#{insuredEContact}</if>
        <if test="benefitBasicPlan != null">,#{benefitBasicPlan}</if>
        <if test="benefitOccupationCategory != null">,#{benefitOccupationCategory}</if>
        <if test="benefitElEmployeeNumberT != null">,#{benefitElEmployeeNumberT}</if>
        <if test="tricycleFrameNumber != null">,#{tricycleFrameNumber}</if>
        <if test="policyNo != null">,#{policyNo}</if>
        <if test="status != null">,#{status}</if>
        <if test="type != null">,#{type}</if>
        <if test="orgCode != null">,#{orgCode}</if>
        <if test="userId != null">,#{userId}</if>
        <if test="applicantEmployeeList != null">,#{applicantEmployeeList}</if>
        )
    </insert>


    <insert id="saveList" parameterType="cn.timer.api.bean.insure.InsureUser" useGeneratedKeys="true" keyProperty="id">
        insert into insure_user
        (
        `trans_id`,
        `price`,
        `insured_name`,
        `batch_no`,
        `premium`,
        `insured_mobile`,
        `insured_no`,
        `insured_e_contact`,
        `benefit_basic_plan`,
        `benefit_occupation_category`,
        `benefit_EL_employee_number_t`,
        `Tricycle_frame_number`,
        `policy_no`,
        `status`,
        `type`,
        `org_code`,
        `user_id`,
        `applicant_employee_list`
        )
        values
        <foreach collection="list" item="item" index="index" separator=",">
            (
            #{item.transId},
            #{item.price},
            #{item.insuredName},
            #{item.batchNo},
            #{item.premium},
            #{item.insuredMobile},
            #{item.insuredNo},
            #{item.insuredEContact},
            #{item.benefitBasicPlan},
            #{item.benefitOccupationCategory},
            #{item.benefitElEmployeeNumberT},
            #{item.tricycleFrameNumber},
            #{item.policyNo},
            #{item.status},
            #{item.type},
            #{item.orgCode},
            #{item.userId},
            #{item.applicantEmployeeList}
            )
        </foreach>
    </insert>


    <update id="update" parameterType="cn.timer.api.bean.insure.InsureUser">
        update insure_user
        <set>
            <if test="transId != null">`trans_id` = #{transId},</if>
            <if test="price != null">`price` = #{price},</if>
            <if test="insuredName != null">`insured_name` = #{insuredName},</if>
            <if test="batchNo != null">`batch_no` = #{batchNo},</if>
            <if test="premium != null">`premium` = #{premium},</if>
            <if test="insuredMobile != null">`insured_mobile` = #{insuredMobile},</if>
            <if test="insuredNo != null">`insured_no` = #{insuredNo},</if>
            <if test="insuredEContact != null">`insured_e_contact` = #{insuredEContact},</if>
            <if test="benefitBasicPlan != null">`benefit_basic_plan` = #{benefitBasicPlan},</if>
            <if test="benefitOccupationCategory != null">`benefit_occupation_category` = #{benefitOccupationCategory},
            </if>
            <if test="benefitElEmployeeNumberT != null">`benefit_EL_employee_number_t` = #{benefitElEmployeeNumberT},
            </if>
            <if test="tricycleFrameNumber != null">`Tricycle_frame_number` = #{tricycleFrameNumber},</if>
            <if test="policyNo != null">`policy_no` = #{policyNo},</if>
            <if test="status != null">`status` = #{status},</if>
            <if test="type != null">`type` = #{type},</if>
            <if test="orgCode != null">`org_code` = #{orgCode},</if>
            <if test="userId != null">`user_id` = #{userId},</if>
            <if test="applicantEmployeeList != null">`applicant_employee_list` = #{applicantEmployeeList}</if>
        </set>
        where id = #{id}
    </update>

    <delete id="delete">
        delete
        from insure_user
        where id = #{value}
    </delete>

    <delete id="deleteBatch">
        delete from insure_user where id in
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>

    <select id="selectPolicyList" resultType="cn.timer.api.dto.insure.PolicyDto">
        select iu.id,yme.`name`,yme.zj_type,yme.zj_num,iu.policy_no,iu.`status`,ip.scheme_name,iu.policy_date_start,
               iu.policy_date_end,ip.create_time,iu.insured_name,iu.benefit_basic_plan AS benefitBasicPlan,iu.price AS price from insure_user iu
            LEFT JOIN yggl_main_emp yme on yme.id=iu.user_id
            LEFT JOIN insure_policy ip on ip.policy_no=iu.policy_no
        where yme.org_code = 3
            <if test="id !=null and id !=''">
                and ip.id=#{id}
            </if>
    </select>

</mapper>