<?xml version="1.0" encoding="UTF-8"?>

<!--
  ~
  ~      Copyright (c) 2018-2025, lengleng All rights reserved.
  ~
  ~  Redistribution and use in source and binary forms, with or without
  ~  modification, are permitted provided that the following conditions are met:
  ~
  ~ Redistributions of source code must retain the above copyright notice,
  ~  this list of conditions and the following disclaimer.
  ~  Redistributions in binary form must reproduce the above copyright
  ~  notice, this list of conditions and the following disclaimer in the
  ~  documentation and/or other materials provided with the distribution.
  ~  Neither the name of the yifu4cloud.com developer nor the names of its
  ~  contributors may be used to endorse or promote products derived from
  ~  this software without specific prior written permission.
  ~  Author: lengleng (wangiegie@gmail.com)
  ~
  -->

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.yifu.cloud.plus.v1.yifu.archives.mapper.TEmpContactInfoMapper">

  <resultMap id="tEmpContactInfoMap" type="com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpContactInfo">
    <id property="id" column="ID"/>
    <result property="empId" column="EMP_ID"/>
    <result property="empName" column="EMP_NAME"/>
	<result property="empIdcard" column="EMP_IDCARD"/>
    <result property="relationType" column="RELATION_TYPE"/>
    <result property="address" column="ADDRESS"/>
    <result property="tel" column="TEL"/>
    <result property="createBy" column="CREATE_BY"/>
    <result property="updateBy" column="UPDATE_BY"/>
    <result property="createName" column="CREATE_NAME"/>
    <result property="createTime" column="CREATE_TIME"/>
    <result property="updateTime" column="UPDATE_TIME"/>

	  <result property="relationProvince" column="RELATION_PROVINCE"/>
	  <result property="relationCity" column="RELATION_CITY"/>
	  <result property="relationTown" column="RELATION_TOWN"/>
  </resultMap>
    <sql id="Base_Column_List">
                a.ID,
                a.EMP_ID,
                a.EMP_IDCARD,
                a.EMP_NAME,
                a.RELATION_TYPE,
                a.ADDRESS,
                a.TEL,
                a.CREATE_BY,
                a.UPDATE_BY,
                a.CREATE_NAME,
                a.CREATE_TIME,
                a.UPDATE_TIME,

                a.RELATION_PROVINCE,
                a.RELATION_CITY,
                a.RELATION_TOWN
    </sql>
    <sql id="tEmpContactInfo_where">
        <if test="tEmpContactInfo != null">
                    <if test="tEmpContactInfo.id != null and tEmpContactInfo.id.trim() != ''">
                        AND a.ID = #{tEmpContactInfo.id}
                    </if>
                    <if test="tEmpContactInfo.empId != null and tEmpContactInfo.empId.trim() != ''">
                        AND a.EMP_ID = #{tEmpContactInfo.empId}
                    </if>
                    <if test="tEmpContactInfo.empName != null and tEmpContactInfo.empName.trim() != ''">
                        AND a.EMP_NAME = #{tEmpContactInfo.empName}
                    </if>
					<if test="tEmpContactInfo.empIdcard != null and tEmpContactInfo.empIdcard.trim() != ''">
						AND a.EMP_IDCARD = #{tEmpContactInfo.empIdcard}
					</if>
                    <if test="tEmpContactInfo.relationType != null and tEmpContactInfo.relationType.trim() != ''">
                        AND a.RELATION_TYPE = #{tEmpContactInfo.relationType}
                    </if>
                    <if test="tEmpContactInfo.address != null and tEmpContactInfo.address.trim() != ''">
                        AND a.ADDRESS = #{tEmpContactInfo.address}
                    </if>
                    <if test="tEmpContactInfo.tel != null and tEmpContactInfo.tel.trim() != ''">
                        AND a.TEL = #{tEmpContactInfo.tel}
                    </if>
                    <if test="tEmpContactInfo.createBy != null and tEmpContactInfo.createBy.trim() != ''">
                        AND a.CREATE_BY = #{tEmpContactInfo.createBy}
                    </if>
                    <if test="tEmpContactInfo.updateBy != null and tEmpContactInfo.updateBy.trim() != ''">
                        AND a.UPDATE_BY = #{tEmpContactInfo.updateBy}
                    </if>
                    <if test="tEmpContactInfo.createName != null and tEmpContactInfo.createName.trim() != ''">
                        AND a.CREATE_NAME = #{tEmpContactInfo.createName}
                    </if>
                    <if test="tEmpContactInfo.createTime != null">
                        AND a.CREATE_TIME = #{tEmpContactInfo.createTime}
                    </if>
                    <if test="tEmpContactInfo.updateTime != null">
                        AND a.UPDATE_TIME = #{tEmpContactInfo.updateTime}
                    </if>
        </if>
    </sql>
    <!--tEmpContactInfo简单分页查询-->
    <select id="getTEmpContactInfoPage" resultMap="tEmpContactInfoMap">
        SELECT
        <include refid="Base_Column_List"/>
        FROM t_emp_contact_info a
        <where>
            1=1
            <include refid="tEmpContactInfo_where"/>
        </where>
    </select>

	<!-- 获取紧急联系人信息，电子签推送法大大需要用紧急联系人相关字段 -->
	<select id="getTEmpContactInfoOneByCard" resultType="com.yifu.cloud.plus.v1.yifu.archives.vo.TEmployeeContractPrePushFascVo">
		SELECT
			a.EMP_NAME contactEmpName,a.tel contactTel,concat(ifnull(sp.AREA_NAME,'')
			,ifnull(sc.AREA_NAME,'')
			,ifnull(st.AREA_NAME,'')
			,ifnull(a.ADDRESS,'')
			) contactAddress
		from t_emp_contact_info a
		 left join sys_area sp on sp.id = a.RELATION_PROVINCE
		 left join sys_area sc on sc.id = a.RELATION_CITY
		 left join sys_area st on st.id = a.RELATION_TOWN
		where a.EMP_IDCARD = #{empIdCard} ORDER BY a.CREATE_TIME desc limit 1
	</select>

	<!-- 获取档案信息，电子签推送法大大需要用紧急联系人相关字段 -->
	<select id="getTEmpInfoOneByCard" resultType="com.yifu.cloud.plus.v1.yifu.archives.vo.TEmployeeContractPrePushFascVo">
		select
			concat(ifnull(sp.AREA_NAME,'')
				,ifnull(sc.AREA_NAME,'')
				,ifnull(st.AREA_NAME,'')
				) huArea,
			concat(ifnull(sp2.AREA_NAME,'')
				,ifnull(sc2.AREA_NAME,'')
				,ifnull(st2.AREA_NAME,'')
				,ifnull(a.CONTACT_ADDRESS,'')
				) contactArea,a.EMP_EMAIL empEmail,
			a.EMP_PHONE empPhone,a.WE_CHAT_ID weChatId
		from t_employee_info a
		 left join sys_area sp on sp.id = a.ID_PROVINCE
		 left join sys_area sc on sc.id = a.ID_CITY
		 left join sys_area st on st.id = a.ID_TOWN
		 left join sys_area sp2 on sp2.id = a.CONTACT_PROVINCE
		 left join sys_area sc2 on sc2.id = a.CONTACT_CITY
		 left join sys_area st2 on st2.id = a.CONTACT_TOWN
		where a.EMP_IDCARD = #{empIdCard} ORDER BY a.CREATE_TIME desc limit 1
	</select>

    <select id="getContactByDeptId" resultMap="tEmpContactInfoMap">
        SELECT
        	<include refid="Base_Column_List"/>
        FROM t_emp_contact_info a
		left join t_employee_project b on a.EMP_IDCARD = b.EMP_IDCARD
		where b.DEPT_ID = #{deptId}
		GROUP BY a.EMP_IDCARD
    </select>

    <select id="getContactByIdCardList" resultMap="tEmpContactInfoMap">
        SELECT
        	<include refid="Base_Column_List"/>
        FROM t_emp_contact_info a
		where a.EMP_IDCARD in
		<foreach item="item" index="index" collection="idCardList" open="(" separator="," close=")">
			#{item}
		</foreach>
		GROUP BY a.EMP_IDCARD
    </select>
</mapper>
