<?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.zc.business.mapper.DcEmployeesMapper">

    <resultMap type="DcEmployees" id="DcEmployeesResult">
        <result property="id"    column="id"    />
        <result property="postId"    column="post_id"    />
        <result property="organizationId"    column="organization_id"    />
        <result property="name"    column="name"    />
        <result property="contactNumber"    column="contact_number"    />
        <result property="createTime"    column="create_time"    />
        <result property="updateTime"    column="update_time"    />
        <result property="postName"    column="post_name"    />
        <result property="organizationName"    column="organization_name"    />
        <result property="employeesType"    column="employees_type"    />
        <result property="wxUserId"    column="wx_user_id"    />
    </resultMap>

    <sql id="selectDcEmployeesVo">
        select employees.employees_type,employees.id, employees.post_id, employees.organization_id,
               organization.organization_name,post.post_name,
               employees.name, employees.contact_number,
               employees.create_time, employees.update_time
        from dc_employees as employees
              left join  dc_organization as organization on organization.id=employees.organization_id
              left join sys_post as post on post.post_id=employees.post_id
    </sql>

    <select id="selectDcEmployeesList" parameterType="DcEmployees" resultMap="DcEmployeesResult">
        <include refid="selectDcEmployeesVo"/>
        <where>
            <if test="postId != null  and postId != ''"> and employees.post_id = #{postId}</if>
            <if test="organizationId != null "> and employees.organization_id = #{organizationId}</if>
            <if test="name != null  and name != ''"> and CONCAT(employees.name,employees.contact_number) like concat('%', #{name}, '%')</if>
            <if test="employeesType != null "> and employees.employees_type = #{employeesType}</if>
        </where>
    </select>

    <select id="selectDcEmployeesById" parameterType="Long" resultMap="DcEmployeesResult">
        <include refid="selectDcEmployeesVo"/>
        where employees.id = #{id}
    </select>


    <insert id="insertDcEmployees" parameterType="DcEmployees">
        insert into dc_employees
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">id,</if>
            <if test="postId != null">post_id,</if>
            <if test="organizationId != null">organization_id,</if>
            <if test="name != null and name != ''">name,</if>
            <if test="contactNumber != null and contactNumber != ''">contact_number,</if>
            <if test="createTime != null">create_time,</if>
            <if test="updateTime != null">update_time,</if>
            <if test="employeesType != null">employees_type,</if>
            <if test="wxUserId != null">wx_user_id,</if>
         </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="id != null">#{id},</if>
            <if test="postId != null">#{postId},</if>
            <if test="organizationId != null">#{organizationId},</if>
            <if test="name != null and name != ''">#{name},</if>
            <if test="contactNumber != null and contactNumber != ''">#{contactNumber},</if>
            <if test="createTime != null">#{createTime},</if>
            <if test="updateTime != null">#{updateTime},</if>
            <if test="employeesType != null">#{employeesType},</if>
            <if test="wxUserId != null">#{wxUserId},</if>
         </trim>
    </insert>

    <update id="updateDcEmployees" parameterType="DcEmployees">
        update dc_employees
        <trim prefix="SET" suffixOverrides=",">
            <if test="postId != null">post_id = #{postId},</if>
            <if test="organizationId != null">organization_id = #{organizationId},</if>
            <if test="name != null and name != ''">name = #{name},</if>
            <if test="contactNumber != null and contactNumber != ''">contact_number = #{contactNumber},</if>
            <if test="createTime != null">create_time = #{createTime},</if>
            <if test="updateTime != null">update_time = #{updateTime},</if>
            <if test="employeesType != null">employees_type = #{employeesType},</if>
            <if test="wxUserId != null">wx_user_id = #{wxUserId},</if>
        </trim>
        where id = #{id}
    </update>


    <delete id="deleteDcEmployeesById" parameterType="Long">
        delete from dc_employees where id = #{id}
    </delete>

    <delete id="deleteDcEmployeesByIds" parameterType="String">
        delete from dc_employees where id in
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>
    <delete id="deleteShifts">
        delete from dc_shifts where employees_id in
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>
    <select id="selectOrganizationAll" resultType="java.util.HashMap">
        select id,parent_id parentId,organization_name organizationName,organization_type organizationType
        from dc_organization
    </select>
    <select id="selectSysPostAll" resultType="java.util.HashMap">
        select post_id  postId,post_name postName from sys_post
    </select>
    <select id="selectEmployeesPost" resultType="java.util.HashMap">
        select employees.name, post.post_name postName,employees.contact_number contactNumber,employees.post_id postId  from dc_employees as  employees
        left join sys_post as post on employees.post_id=post.post_id
    </select>
    <select id="selectEmployeesPostAll" resultType="java.util.HashMap">
      select employees.id ,employees.name ,post.post_name postName,
             employees.contact_number contactNumber from dc_employees as employees
       left join  sys_post as post on employees.post_id=post.post_id
    </select>
    <select id="selectJobInformation" resultType="java.util.HashMap">
        select ifnull(employees_id,0) employeesId,ifnull(station,0)station from dc_shifts
        where date=#{date}
        group by employees_id
        order by create_time
     </select>
    <select id="selectEmployeesByIds"  resultType="com.zc.business.domain.DcEmployees">
        select * from dc_employees where id in
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </select>
    <update id="updateJobInformation">
        update dc_employees set  organization_id=#{station} where employees_id=#{employeesId}
    </update>
</mapper>