<?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.kqmk.KqglAssoLeaveBalanceMapper">

    <resultMap id="BaseResultMap" type="cn.timer.api.bean.kqmk.KqglAssoLeaveBalance" >
                <id column="id" property="id" />
                <result column="leave_rules_id" property="leaveRulesId" />
                <result column="userid" property="userid" />
                <result column="modify_action" property="modifyAction" />
                <result column="balance_days" property="balanceDays" />
                <result column="reason" property="reason" />
                <result column="modify_userid" property="modifyUserid" />
                <result column="modify_timer" property="modifyTimer" />
                <result column="modify_number" property="modifyNumber" />
                <result column="org_code" property="orgCode" />
                <result column="is_automatic" property="isAutomatic" />
    </resultMap>
    
    <resultMap id="LeaveBalanceMap" type="cn.timer.api.dto.kqmk.EmployeeLeaveBalanceDto" >
            <result column="empnum" property="empnum" />
            <result column="empname" property="empname" />
            <result column="department" property="department" />
            <result column="rztime" property="rztime" />
            <result column="orgcode" property="orgcode" />
            <result column="turnover_status" property="turnover_status" />
            <collection property="balanceTo" ofType="cn.timer.api.dto.kqmk.BalanceSheetDataDto">
		   		<result column="leaverulesid" property="leaverulesid"/>
		   		<result column="balancedays" property="balancedays"/>
		    </collection>
    </resultMap>
    
    <resultMap id="JiaqibalanceMap" type="cn.timer.api.dto.kqmk.JiaqibalanceDto" >
   			<result column="userid" property="userid" />
            <result column="balancedays" property="balancedays" />
    </resultMap>
    
    <resultMap id="AdditionalMap" type="cn.timer.api.dto.kqmk.AdditionalDto" >
            <result column="empnum" property="empnum" />
            <result column="empname" property="empname" />
            <result column="phone" property="phone" />
            <result column="department" property="department" />
            <result column="position" property="position" />
    </resultMap>

    <sql id="Base_Column_List">
                id,
                leave_rules_id,
                userid,
                modify_action,
                balance_days,
                reason,
                modify_userid,
                modify_timer,
                modify_number,
                org_code,
                is_automatic
    </sql>
    
    <sql id="Base_Column_List_Alias">
                id KqglAssoLeaveBalance_id,
                leave_rules_id KqglAssoLeaveBalance_leave_rules_id,
                userid KqglAssoLeaveBalance_userid,
                modify_action KqglAssoLeaveBalance_modify_action,
                balance_days KqglAssoLeaveBalance_balance_days,
                reason KqglAssoLeaveBalance_reason,
                modify_userid KqglAssoLeaveBalance_modify_userid,
                modify_timer KqglAssoLeaveBalance_modify_timer,
                modify_number KqglAssoLeaveBalance_modify_number,
                org_code KqglAssoLeaveBalance_org_code,
                is_automatic KqglAssoLeaveBalance_is_automatic
    </sql>
    
    <select id="selectPageByQueryLeaveBalance" resultMap="LeaveBalanceMap">
			SELECT emp.emp_num as empnum,
				   emp.`name` as empname,
				   emp.org_code as orgcode,
				   IFNULL(c.name,'') as department,
			       IFNULL(emp.rz_time,'') as rztime,
			       IFNULL((select em.job_status from yggl_main_lzb em where em.emp_num = emp.emp_num and em.org_code = emp.org_code),0) as turnover_status
			from yggl_main_emp emp
			LEFT JOIN zzgl_bmgw_m as gw on gw.id = emp.bmgw_id
			LEFT JOIN zzgl_bmgw_m as c ON c.id = gw.up_id
			where emp.org_code = #{param.orgCode}
			<if test="param.query != null and param.query != ''">
				and (	emp.`name` like CONCAT('%',#{param.query},'%') or 
						emp.emp_num like CONCAT('%',#{param.query},'%') or
						c.name like CONCAT('%',#{param.query},'%'))
			</if>
			<if test="param.deptid != null and param.deptid != ''">
				and c.id in (select m.id from zzgl_bmgw_m m where m.up_id = #{param.deptid}) or (c.id =#{param.deptid})
			</if>
			<if test="param.turnover_status == 0">
				and emp.emp_num not in (select em.emp_num from yggl_main_lzb em where em.org_code = #{param.orgCode} and em.job_status = 3)			
			</if>
			<if test="param.turnover_status == 1">
			UNION
				SELECT emp.emp_num AS empnum,
					emp.`name` AS empname,
					emp.org_code AS orgcode,
					IFNULL(c. NAME, '') AS department,
					IFNULL(emp.rz_time, '') AS rztime,
					IFNULL(emp.job_status,0) as turnover_status
				FROM yggl_main_lzb emp
				LEFT JOIN zzgl_bmgw_m AS gw ON gw.id = emp.bmgw_id
				LEFT JOIN zzgl_bmgw_m AS c ON c.id = gw.up_id
				WHERE emp.job_status = 3
				<if test="param.query != null and param.query != ''">
				and (	emp.`name` like CONCAT('%',#{param.query},'%') or 
						emp.emp_num like CONCAT('%',#{param.query},'%') or
						c.name like CONCAT('%',#{param.query},'%'))
				</if>
				<if test="param.deptid != null and param.deptid != ''">
					and c.id in (select m.id from zzgl_bmgw_m m where m.up_id = #{param.deptid}) or (c.id =#{param.deptid})
				</if>
				and emp.org_code = #{param.orgCode}
			</if>
			<!--and c.id = #{param.deptid} 
				
			ORDER BY emp.emp_num DESC
			LEFT JOIN kqgl_asso_leave_employee_balance as yz on yz.userid = emp.emp_num 
			yz.leave_rules_id as leaverulesid,
				   yz.balance_days as balancedays-->
    </select>
    
    
    <select id="selectAdditional" resultMap="AdditionalMap">
    	SELECT emp.emp_num as empnum,
				   emp.`name` as empname,
				   IFNULL(c.name,'') as department,
			     gw.`name` as position
			from yggl_main_emp emp
			LEFT JOIN zzgl_bmgw_m as gw on gw.id = emp.bmgw_id
			LEFT JOIN zzgl_bmgw_m as c ON c.id = gw.up_id
			where emp.org_code = #{orgcode} 
			and emp.emp_num = #{empnum}
    </select>
    
    <select id="selectAdditionalList" resultMap="AdditionalMap">
    	SELECT emp.emp_num as empnum,
				   emp.`name` as empname,
				   emp.phone,
				   IFNULL(c.name,null) as department,
			       IFNULL(gw.`name`,null) as position
			from yggl_main_emp emp
			LEFT JOIN zzgl_bmgw_m as gw on gw.id = emp.bmgw_id
			LEFT JOIN zzgl_bmgw_m as c ON c.id = gw.up_id
			where emp.org_code = #{orgcode} 
			<!-- and emp.emp_num = 100083 -->
			<!-- and emp.job_status != 3 -->
    </select>
    
    <select id="RealTimeUpdate" resultMap="AdditionalMap">
    		SELECT emp.emp_num as empnum,
				   emp.`name` as empname,
				   emp.phone,
				   IFNULL(c.name,null) as department,
			       IFNULL(gw.`name`,null) as position
			from yggl_main_emp emp
			LEFT JOIN kqgl_asso_yhkqz as yhkqz on yhkqz.userid = emp.emp_num
			LEFT JOIN zzgl_bmgw_m as gw on gw.id = emp.bmgw_id
			LEFT JOIN zzgl_bmgw_m as c ON c.id = gw.up_id
			where emp.org_code = #{orgcode} 
			and yhkqz.kqzid = #{kqzid} 
			and emp.job_status != 3;
    </select>
    
    <select id="selectAdditionalByempnum" resultMap="AdditionalMap">
    	SELECT emp.emp_num as empnum,
				   emp.`name` as empname,
				   emp.phone,
				   IFNULL(c.name,null) as department,
			       IFNULL(gw.`name`,null) as position
			from yggl_main_emp emp
			LEFT JOIN zzgl_bmgw_m as gw on gw.id = emp.bmgw_id
			LEFT JOIN zzgl_bmgw_m as c ON c.id = gw.up_id
			where emp.org_code = #{orgcode} 
			and emp.job_status != 3
			and emp.emp_num = #{empnum}
    </select>
    
    
    <!-- <select id="selectleavebalanceList" resultMap="JiaqibalanceMap">
    	select bal.userid,SUM(bal.balance_days) as balancedays 
			from kqgl_asso_leave_balance bal 
			where bal.leave_rules_id = #{leaverulesid} and bal.userid = #{userid}
			GROUP BY bal.userid
    </select> -->

	<select id="Sumbalancedays" resultType="java.lang.Double">
        select SUM(ba.balance_days) from kqgl_asso_leave_balance ba where ba.userid = #{userid} and ba.org_code = #{orgcode} and ba.leave_rules_id = #{leaverulesid}
    </select>

	<!-- 

    <insert id="insert" useGeneratedKeys="true" keyColumn="id" parameterType="cn.timer.api.bean.kqmk.KqglAssoLeaveBalance">
        INSERT INTO kqgl_asso_leave_balance
        <trim prefix="(" suffix=")" suffixOverrides=",">
                        <if test ='null != leaveRulesId'>
                        leave_rules_id,
                        </if>
                        <if test ='null != userid'>
                        userid,
                        </if>
                        <if test ='null != modifyAction'>
                        modify_action,
                        </if>
                        <if test ='null != balanceDays'>
                        balance_days,
                        </if>
                        <if test ='null != reason'>
                        reason,
                        </if>
                        <if test ='null != modifyUserid'>
                        modify_userid,
                        </if>
                        <if test ='null != modifyTimer'>
                        modify_timer,
                        </if>
                        <if test ='null != modifyNumber'>
                        modify_number,
                        </if>
                        <if test ='null != orgCode'>
                        org_code,
                        </if>
                        <if test ='null != isAutomatic'>
                        is_automatic
                        </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
                        <if test ='null != leaveRulesId'>
                        #{leaveRulesId},
                        </if>
                        <if test ='null != userid'>
                        #{userid},
                        </if>
                        <if test ='null != modifyAction'>
                        #{modifyAction},
                        </if>
                        <if test ='null != balanceDays'>
                        #{balanceDays},
                        </if>
                        <if test ='null != reason'>
                        #{reason},
                        </if>
                        <if test ='null != modifyUserid'>
                        #{modifyUserid},
                        </if>
                        <if test ='null != modifyTimer'>
                        #{modifyTimer},
                        </if>
                        <if test ='null != modifyNumber'>
                        #{modifyNumber},
                        </if>
                        <if test ='null != orgCode'>
                        #{orgCode},
                        </if>
                        <if test ='null != isAutomatic'>
                        #{isAutomatic}
                        </if>
        </trim>
    </insert>

    <delete id="delete" >
        DELETE FROM kqgl_asso_leave_balance
        WHERE id = #{id}
    </delete>

    <update id="update" parameterType="cn.timer.api.bean.kqmk.KqglAssoLeaveBalance">
        UPDATE kqgl_asso_leave_balance
        <set>
                    <if test ='null != leaveRulesId'>leave_rules_id = #{leaveRulesId},</if>
                    <if test ='null != userid'>userid = #{userid},</if>
                    <if test ='null != modifyAction'>modify_action = #{modifyAction},</if>
                    <if test ='null != balanceDays'>balance_days = #{balanceDays},</if>
                    <if test ='null != reason'>reason = #{reason},</if>
                    <if test ='null != modifyUserid'>modify_userid = #{modifyUserid},</if>
                    <if test ='null != modifyTimer'>modify_timer = #{modifyTimer},</if>
                    <if test ='null != modifyNumber'>modify_number = #{modifyNumber},</if>
                    <if test ='null != orgCode'>org_code = #{orgCode},</if>
                    <if test ='null != isAutomatic'>is_automatic = #{isAutomatic}</if>
        </set>
        WHERE id = #{id}
    </update>


    <select id="load" resultMap="BaseResultMap">
        SELECT <include refid="Base_Column_List" />
        FROM kqgl_asso_leave_balance
        WHERE id = #{id}
    </select>

    <select id="pageList" resultMap="BaseResultMap">
        SELECT <include refid="Base_Column_List" />
        FROM kqgl_asso_leave_balance
        LIMIT #{offset}, #{pageSize}
    </select>

    <select id="pageListCount" resultType="java.lang.Integer">
        SELECT count(1)
        FROM kqgl_asso_leave_balance
    </select>

	 -->

</mapper>