<?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.TPreEmpMainMapper">

  <resultMap id="tPreEmpMainMap" type="com.yifu.cloud.plus.v1.yifu.archives.entity.TPreEmpMain">
    <id property="id" column="ID"/>
    <result property="status" column="STATUS"/>
    <result property="empId" column="EMP_ID"/>
    <result property="empName" column="EMP_NAME"/>
    <result property="empIdcard" column="EMP_IDCARD"/>
    <result property="empPhone" column="EMP_PHONE"/>
    <result property="empWx" column="EMP_WX"/>
    <result property="unitId" column="UNIT_ID"/>
    <result property="unitName" column="UNIT_NAME"/>
    <result property="unitNo" column="UNIT_NO"/>
    <result property="deptId" column="DEPT_ID"/>
    <result property="deptName" column="DEPT_NAME"/>
    <result property="deptNo" column="DEPT_NO"/>
    <result property="businessPrimaryType" column="BUSINESS_PRIMARY_TYPE"/>
    <result property="businessSecondType" column="BUSINESS_SECOND_TYPE"/>
    <result property="businessThirdType" column="BUSINESS_THIRD_TYPE"/>
    <result property="businessType" column="BUSINESS_TYPE"/>
    <result property="empNatrue" column="EMP_NATRUE"/>
    <result property="auditId" column="AUDIT_ID"/>
    <result property="auditName" column="AUDIT_NAME"/>
    <result property="auditTime" column="AUDIT_TIME"/>
    <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="settleDomain" column="SETTLE_DOMAIN"/>
    <result property="declarationId" column="DECLARATION_ID"/>
  </resultMap>
    <sql id="Base_Column_List">
                a.ID,
                a.STATUS,
                a.EMP_ID,
                a.EMP_NAME,
                a.EMP_IDCARD,
                a.EMP_PHONE,
                a.EMP_WX,
                a.UNIT_ID,
                a.UNIT_NAME,
                a.UNIT_NO,
                a.DEPT_ID,
                a.DEPT_NAME,
                a.DEPT_NO,
                a.BUSINESS_PRIMARY_TYPE,
                a.BUSINESS_SECOND_TYPE,
                a.BUSINESS_THIRD_TYPE,
                concat(a.BUSINESS_PRIMARY_TYPE,'-',ifnull(a.BUSINESS_SECOND_TYPE,''),'-',ifnull(a.BUSINESS_THIRD_TYPE,'')) BUSINESS_TYPE,
                a.EMP_NATRUE,
                a.AUDIT_ID,
                if(a.STATUS in ('3','4'),a.AUDIT_NAME,'') AUDIT_NAME,
                if(a.STATUS in ('3','4'),a.AUDIT_TIME,null) AUDIT_TIME,
                a.CREATE_BY,
                a.UPDATE_BY,
                a.CREATE_NAME,
                a.CREATE_TIME,
                a.UPDATE_TIME,
                a.SETTLE_DOMAIN,
                a.DECLARATION_ID
    </sql>
    <sql id="tPreEmpMain_where">
        <if test="tPreEmpMain != null">
			<if test="tPreEmpMain.statusList != null and tPreEmpMain.statusList.length>0">
				AND a.STATUS IN
				<foreach collection="tPreEmpMain.statusList" item="item" index="index" open="(" separator="," close=")">
					#{item}
				</foreach>
			</if>
                    <if test="tPreEmpMain.id != null and tPreEmpMain.id.trim() != ''">
                        AND a.ID = #{tPreEmpMain.id}
                    </if>
					<if test="tPreEmpMain.ids != null and tPreEmpMain.ids.length > 0">
						AND a.ID in
						<foreach item="idStr" index="index" collection="tPreEmpMain.ids" open="(" separator="," close=")">
							#{idStr}
						</foreach>
					</if>
                    <if test="tPreEmpMain.status != null and tPreEmpMain.status.trim() != ''">
                        AND a.STATUS = #{tPreEmpMain.status}
                    </if>

					<if test="tPreEmpMain.statusArray != null and tPreEmpMain.statusArray.length > 0">
						AND a.STATUS in
						<foreach item="idStr" index="index" collection="tPreEmpMain.statusArray" open="(" separator="," close=")">
							#{idStr}
						</foreach>
					</if>
                    <if test="tPreEmpMain.empId != null and tPreEmpMain.empId.trim() != ''">
                        AND a.EMP_ID = #{tPreEmpMain.empId}
                    </if>
                    <if test="tPreEmpMain.empName != null and tPreEmpMain.empName.trim() != ''">
                        AND a.EMP_NAME like concat('%',#{tPreEmpMain.empName},'%')
                    </if>
                    <if test="tPreEmpMain.empIdcard != null and tPreEmpMain.empIdcard.trim() != ''">
                        AND a.EMP_IDCARD like concat('%',#{tPreEmpMain.empIdcard},'%')
                    </if>
                    <if test="tPreEmpMain.empPhone != null and tPreEmpMain.empPhone.trim() != ''">
                        AND a.EMP_PHONE = #{tPreEmpMain.empPhone}
                    </if>
                    <if test="tPreEmpMain.empWx != null and tPreEmpMain.empWx.trim() != ''">
                        AND a.EMP_WX = #{tPreEmpMain.empWx}
                    </if>
                    <if test="tPreEmpMain.unitId != null and tPreEmpMain.unitId.trim() != ''">
                        AND a.UNIT_ID = #{tPreEmpMain.unitId}
                    </if>
                    <if test="tPreEmpMain.unitName != null and tPreEmpMain.unitName.trim() != ''">
                        AND a.UNIT_NAME like concat('%',#{tPreEmpMain.unitName},'%')
                    </if>
                    <if test="tPreEmpMain.unitNo != null and tPreEmpMain.unitNo.trim() != ''">
                        AND a.UNIT_NO = #{tPreEmpMain.unitNo}
                    </if>
                    <if test="tPreEmpMain.deptId != null and tPreEmpMain.deptId.trim() != ''">
                        AND a.DEPT_ID = #{tPreEmpMain.deptId}
                    </if>
                    <if test="tPreEmpMain.deptName != null and tPreEmpMain.deptName.trim() != ''">
                        AND a.DEPT_NAME like concat('%',#{tPreEmpMain.deptName},'%')
                    </if>
                    <if test="tPreEmpMain.deptNo != null and tPreEmpMain.deptNo.trim() != ''">
                        AND a.DEPT_NO = #{tPreEmpMain.deptNo}
                    </if>
                    <if test="tPreEmpMain.businessPrimaryType != null and tPreEmpMain.businessPrimaryType.trim() != ''">
                        AND a.BUSINESS_PRIMARY_TYPE like concat('%',#{tPreEmpMain.businessPrimaryType},'%')
                    </if>
                    <if test="tPreEmpMain.businessSecondType != null and tPreEmpMain.businessSecondType.trim() != ''">
                        AND a.BUSINESS_SECOND_TYPE like concat('%',#{tPreEmpMain.businessSecondType},'%')
                    </if>
                    <if test="tPreEmpMain.businessThirdType != null and tPreEmpMain.businessThirdType.trim() != ''">
                        AND a.BUSINESS_THIRD_TYPE like concat('%',#{tPreEmpMain.businessThirdType},'%')
                    </if>
                    <if test="tPreEmpMain.empNatrue != null and tPreEmpMain.empNatrue.trim() != ''">
                        AND a.EMP_NATRUE = #{tPreEmpMain.empNatrue}
                    </if>
					<if test="tPreEmpMain.empNatureArray != null and tPreEmpMain.empNatureArray.length > 0">
						AND a.EMP_NATRUE in
						<foreach item="idStr" index="index" collection="tPreEmpMain.empNatureArray" open="(" separator="," close=")">
							#{idStr}
						</foreach>
					</if>
                    <if test="tPreEmpMain.auditId != null and tPreEmpMain.auditId.trim() != ''">
                        AND a.AUDIT_ID = #{tPreEmpMain.auditId}
                    </if>
                    <if test="tPreEmpMain.auditName != null and tPreEmpMain.auditName.trim() != ''">
                        AND a.AUDIT_NAME = #{tPreEmpMain.auditName}
                    </if>
                    <if test="tPreEmpMain.auditTime != null">
                        AND a.AUDIT_TIME = #{tPreEmpMain.auditTime}
                    </if>
                    <if test="tPreEmpMain.createBy != null and tPreEmpMain.createBy.trim() != ''">
                        AND a.CREATE_BY = #{tPreEmpMain.createBy}
                    </if>
                    <if test="tPreEmpMain.updateBy != null and tPreEmpMain.updateBy.trim() != ''">
                        AND a.UPDATE_BY = #{tPreEmpMain.updateBy}
                    </if>
                    <if test="tPreEmpMain.createName != null and tPreEmpMain.createName.trim() != ''">
                        AND a.CREATE_NAME = #{tPreEmpMain.createName}
                    </if>
                    <if test="tPreEmpMain.createTime != null">
                        AND a.CREATE_TIME = #{tPreEmpMain.createTime}
                    </if>
                    <if test="tPreEmpMain.updateTime != null">
                        AND a.UPDATE_TIME = #{tPreEmpMain.updateTime}
                    </if>
                    <if test="tPreEmpMain.settleDomain != null and tPreEmpMain.settleDomain.trim() != ''">
                        AND a.SETTLE_DOMAIN = #{tPreEmpMain.settleDomain}
                    </if>
                    <if test="tPreEmpMain.createTimeStart != null">
                        AND a.CREATE_TIME >= #{tPreEmpMain.createTimeStart}
                    </if>
                    <if test="tPreEmpMain.createTimeEnd != null">
                        AND a.CREATE_TIME <![CDATA[ <= ]]> #{tPreEmpMain.createTimeEnd}
                    </if>
        </if>
    </sql>
    <!--tPreEmpMain简单分页查询-->
    <select id="getTPreEmpMainPage" resultMap="tPreEmpMainMap">
        SELECT
        <include refid="Base_Column_List"/>
        FROM t_pre_emp_main a
        <where>
            a.STATUS != '5'
            <include refid="tPreEmpMain_where"/>
			<if test="tPreEmpMain != null">
				<if test="tPreEmpMain.authSql != null and tPreEmpMain.authSql.trim() != ''">
					${tPreEmpMain.authSql}
				</if>
			</if>
        </where>
		order by a.create_time desc
    </select>

    <select id="getTPreEmpMainCount" resultType="java.lang.Integer">
        SELECT
        	count(1)
        FROM t_pre_emp_main a
        <where>
            a.STATUS != '5'
            <include refid="tPreEmpMain_where"/>
			<if test="tPreEmpMain != null">
				<if test="tPreEmpMain.authSql != null and tPreEmpMain.authSql.trim() != ''">
					${tPreEmpMain.authSql}
				</if>
			</if>
        </where>
    </select>

	<!--list-->
	<select id="getTPreEmpMainList" resultMap="tPreEmpMainMap">
		SELECT
		<include refid="Base_Column_List"/>
		FROM t_pre_emp_main a
		<where>
			a.STATUS != '5'
			<include refid="tPreEmpMain_where"/>
			<if test="tPreEmpMain != null">
				<if test="tPreEmpMain.authSql != null and tPreEmpMain.authSql.trim() != ''">
					${tPreEmpMain.authSql}
				</if>
			</if>
			<if test="tPreEmpMain != null">
				<if test="tPreEmpMain.limitStart != null">
					limit #{tPreEmpMain.limitStart},#{tPreEmpMain.limitEnd}
				</if>
			</if>
		</where>
	</select>

    <select id="getTPreEmpMainAllCount" resultType="java.lang.Integer">
        SELECT
        	count(1)
        FROM t_pre_emp_main a
		left join t_pre_employee_info e on a.id=e.PRE_MAIN_ID
		left join view_sys_dict_item emp_natrue on emp_natrue.value=a.emp_Natrue and emp_natrue.type='emp_natrue'
		left join view_sys_dict_item emp_married on emp_married.value=e.EMP_MARRI_STATUS and emp_married.type='emp_married'
		left join view_sys_dict_item nation on nation.value=e.EMP_NATIONAL and nation.type='emp_national'
		left join view_sys_dict_item registype on registype.value=e.EMP_REGIS_TYPE and registype.type='emp_registype'
		left join view_sys_dict_item politicalStatus on politicalStatus.value=e.POLITICAL_STATUS and politicalStatus.type='emp_political'
		left join sys_area pi on pi.id=e.ID_PROVINCE
		left join sys_area ci on ci.id=e.ID_CITY
		left join sys_area ti on ti.id=e.ID_TOWN
		left join sys_area pf on pf.id=e.FILE_PROVINCE
		left join sys_area cf on cf.id=e.FILE_CITY
		left join sys_area tf on tf.id=e.FILE_TOWN
		left join t_pre_employee_project p on a.id=p.PRE_MAIN_ID
		left join view_sys_dict_item contractType on contractType.value=p.CONTRACT_TYPE and contractType.type='employee_contract_type'
		left join view_sys_dict_item workingHours on workingHours.value=p.WORKING_HOURS and workingHours.type='working_hours'
		left join t_pre_emp_contact_info ec on a.id=ec.PRE_MAIN_ID
		left join t_pre_emp_education ee on a.id=ee.PRE_MAIN_ID
		left join view_sys_dict_item education on education.value=ee.EDUCATION_NAME and education.type='education'
		left join t_pre_emp_work_recording ew on a.id=ew.PRE_MAIN_ID
		left join t_pre_emp_family ef on a.id=ef.PRE_MAIN_ID
		left join t_pre_emp_professional_qualification ep on a.id=ep.PRE_MAIN_ID
		left join view_sys_dict_item qualification_type on qualification_type.value=ep.QUALIFICATION_TYPE and qualification_type.type='qualification_type'
		left join t_pre_emp_disability_info ed on a.id=ed.PRE_MAIN_ID
		left join t_pre_emp_bad_record eb on a.id=eb.PRE_MAIN_ID
        <where>
            a.STATUS != '5'
            <include refid="tPreEmpMain_where"/>
			<if test="tPreEmpMain != null">
				<if test="tPreEmpMain.authSql != null and tPreEmpMain.authSql.trim() != ''">
					${tPreEmpMain.authSql}
				</if>
			</if>
        </where>
    </select>

	<!--list-->
	<select id="getTPreEmpMainAllList" resultType="com.yifu.cloud.plus.v1.yifu.archives.vo.TPreMainExportAllVO">
		SELECT
			case a.STATUS when '0' then '草稿' when '1' then '待完善' when '2' then '待审核' when '3' then '审核不通过' when '4' then '审核通过' else '-' end field1
			,DATE_FORMAT(a.create_time,'%Y-%m-%d %H:%i:%s') field2,if(a.STATUS in ('3','4'),a.AUDIT_NAME,'') field64,if(a.STATUS in ('3','4'),DATE_FORMAT(a.AUDIT_TIME,'%Y-%m-%d %H:%i:%s'),'') field65
		     ,e.EMP_CODE field3,emp_natrue.label field4,a.emp_name field5,a.emp_idcard field6
			,if(e.EMP_SEX='2','女',if(e.EMP_SEX='1','男','-')) field7
			,if(e.VALIDITY_END is null,'-',if(e.VALIDITY_END > '2999-12-30','长期','固定')) field8	,e.VALIDITY_START field9
			,if(e.VALIDITY_END > '2999-12-30','长期',e.VALIDITY_END) field10,e.EMP_BIRTHDAY field11,e.EMP_AGE field12	,emp_married.label field13,nation.label field14
			,politicalStatus.label field15,e.EMP_PHONE field16,e.EMP_EMAIL field17
			,concat(ifnull(pi.AREA_NAME,''),ifnull(ci.AREA_NAME,''),ifnull(ti.AREA_NAME,'')) field18	,registype.label field19
			,concat(ifnull(pf.AREA_NAME,''),ifnull(cf.AREA_NAME,''),ifnull(tf.AREA_NAME,'')) field20	,if(e.status=0,'草稿','已审核') field21,
			cp.AREA_NAME as "field66",
			cc.AREA_NAME as "field67",
			ct.AREA_NAME as "field68"
		     ,e.CONTACT_ADDRESS field22,p.UNIT_NAME field23,p.DEPT_NAME field24
			,concat(p.BUSINESS_PRIMARY_TYPE,'-',ifnull(p.BUSINESS_SECOND_TYPE,''),'-',ifnull(p.BUSINESS_THIRD_TYPE,'')) field25
			,contractType.label field26	,workingHours.label field27,p.POST field28,p.ENJOIN_DATE field29
			,p.TRY_PERIOD field30,p.EMP_LABEL field31
			,ec.EMP_NAME field32,ec.RELATION_TYPE field33,ec.ADDRESS field34,ec.TEL field35
			,ee.SCHOOL field36,ee.MAJOR field37,education.label field38,if(e.IS_COLLEGE=0,'否','是') field39
			,educationEmp.label field40	,ee.ENTRY_DATE field41,ee.GRADUTION_DATE field42

			,if(e.FIRST_WORK_FLAG is null,'',if(e.FIRST_WORK_FLAG=0,'是','否')) field43,ew.WORK_UNIT field44,ew.WORK_JOB field45,ew.START_DATE field46,ew.END_DATE field47
			,ef.FAMILY_NAME field48,family_relation.label field49,ef.CONTRACT_TEL field50
			,if(e.HAVE_QUALIFICATION is null,'',if(e.HAVE_QUALIFICATION=0,'是','否')) field51,ep.DECLARE_YEAR field52,qualification_type.label field53

			,if(ed.INJURY_IDENTIFICATION=0,'是','否') field54,if(ed.OCCUPATIONAL_DISEASE_FLAG=0,'是','否') field55	,ed.OCCUPATIONAL_DISEASE field56
			,if(ed.INFECTIOUS_DISEASE_FLAG=0,'是','否') field57	,ed.INFECTIOUS_NAME field58	,if(ed.DISABILITY_FLAG=0,'是','否') field59
			,ed.DISABILITY_NAME field60,disability_grade.label field61,if(ed.OTHER_FLAG=0,'是','否') field62,eb.REMARK field63
		FROM t_pre_emp_main a
		left join t_pre_employee_info e on a.id=e.PRE_MAIN_ID
		left join view_sys_dict_item emp_natrue on emp_natrue.value=a.emp_Natrue and emp_natrue.type='emp_natrue'
		left join view_sys_dict_item educationEmp on educationEmp.value=e.HIGN_EDUCATION and educationEmp.type='education'
		left join view_sys_dict_item emp_married on emp_married.value=e.EMP_MARRI_STATUS and emp_married.type='emp_married'
		left join view_sys_dict_item nation on nation.value=e.EMP_NATIONAL and nation.type='emp_national'
		left join view_sys_dict_item registype on registype.value=e.EMP_REGIS_TYPE and registype.type='emp_registype'
		left join view_sys_dict_item politicalStatus on politicalStatus.value=e.POLITICAL_STATUS and politicalStatus.type='emp_political'
		left join sys_area pi on pi.id=e.ID_PROVINCE
		left join sys_area ci on ci.id=e.ID_CITY
		left join sys_area ti on ti.id=e.ID_TOWN
		left join sys_area pf on pf.id=e.FILE_PROVINCE
		left join sys_area cf on cf.id=e.FILE_CITY
		left join sys_area tf on tf.id=e.FILE_TOWN

		left join sys_area cp on cp.id=e.CONTACT_PROVINCE
		left join sys_area cc on cc.id=e.CONTACT_CITY
		left join sys_area ct on ct.id=e.CONTACT_TOWN

		left join t_pre_employee_project p on a.id=p.PRE_MAIN_ID
		left join view_sys_dict_item contractType on contractType.value=p.CONTRACT_TYPE and contractType.type='personnel_type'
		left join view_sys_dict_item workingHours on workingHours.value=p.WORKING_HOURS and workingHours.type='working_hours'
		left join t_pre_emp_contact_info ec on a.id=ec.PRE_MAIN_ID
		left join t_pre_emp_education ee on a.id=ee.PRE_MAIN_ID
		left join view_sys_dict_item education on education.value=ee.EDUCATION_NAME and education.type='education'
		left join (
		select
		SUBSTRING_INDEX(GROUP_CONCAT(ee.PRE_MAIN_ID ORDER BY ee.create_time desc),',',1) PRE_MAIN_ID
		,SUBSTRING_INDEX(GROUP_CONCAT(ee.WORK_UNIT ORDER BY ee.create_time desc),',',1) WORK_UNIT
		,SUBSTRING_INDEX(GROUP_CONCAT(ee.WORK_JOB ORDER BY ee.create_time desc),',',1) WORK_JOB
		,SUBSTRING_INDEX(GROUP_CONCAT(ee.START_DATE ORDER BY ee.create_time desc),',',1) START_DATE
		,SUBSTRING_INDEX(GROUP_CONCAT(ee.END_DATE ORDER BY ee.create_time desc),',',1) END_DATE
		from t_pre_emp_work_recording ee
		GROUP BY ee.PRE_MAIN_ID
		) ew on a.id=ew.PRE_MAIN_ID
		left join (
		select
		SUBSTRING_INDEX(GROUP_CONCAT(ee.PRE_MAIN_ID ORDER BY ee.create_time desc),',',1) PRE_MAIN_ID
		,SUBSTRING_INDEX(GROUP_CONCAT(ee.FAMILY_NAME ORDER BY ee.create_time desc),',',1) FAMILY_NAME
		,SUBSTRING_INDEX(GROUP_CONCAT(ee.RELATIONSHIP_SELF ORDER BY ee.create_time desc),',',1) RELATIONSHIP_SELF
		,SUBSTRING_INDEX(GROUP_CONCAT(ee.CONTRACT_TEL ORDER BY ee.create_time desc),',',1) CONTRACT_TEL
		from t_pre_emp_family ee
		GROUP BY ee.PRE_MAIN_ID
		) ef on a.id=ef.PRE_MAIN_ID
		left join view_sys_dict_item family_relation on family_relation.value=ef.RELATIONSHIP_SELF and family_relation.type='family_relation'
		left join (
		select
		SUBSTRING_INDEX(GROUP_CONCAT(ee.PRE_MAIN_ID ORDER BY ee.create_time desc),',',1) PRE_MAIN_ID
		,SUBSTRING_INDEX(GROUP_CONCAT(ee.DECLARE_YEAR ORDER BY ee.create_time desc),',',1) DECLARE_YEAR
		,SUBSTRING_INDEX(GROUP_CONCAT(ee.QUALIFICATION_TYPE ORDER BY ee.create_time desc),',',1) QUALIFICATION_TYPE
		from t_pre_emp_professional_qualification ee
		GROUP BY ee.PRE_MAIN_ID
		) ep on a.id=ep.PRE_MAIN_ID

		    left join view_sys_dict_item qualification_type on qualification_type.value=ep.QUALIFICATION_TYPE and qualification_type.type='qualification_type'
		left join t_pre_emp_disability_info ed on a.id=ed.PRE_MAIN_ID
		left join view_sys_dict_item disability_grade on disability_grade.value=ed.DISABILITY_LEVEL and disability_grade.type='disability_grade'
		left join t_pre_emp_bad_record eb on a.id=eb.PRE_MAIN_ID
		<where>
			a.STATUS != '5'
			<include refid="tPreEmpMain_where"/>
			<if test="tPreEmpMain != null">
				<if test="tPreEmpMain.authSql != null and tPreEmpMain.authSql.trim() != ''">
					${tPreEmpMain.authSql}
				</if>
			</if>
			<if test="tPreEmpMain != null">
				<if test="tPreEmpMain.limitStart != null">
					limit #{tPreEmpMain.limitStart},#{tPreEmpMain.limitEnd}
				</if>
			</if>
		</where>
	</select>


	<!-- 数量 -->
	<select id="getTEmpMainAllCountOneWork" resultType="java.lang.Integer">
		SELECT
		count(1)
		FROM t_pre_emp_main a
		left join t_pre_employee_info e on a.id=e.PRE_MAIN_ID
		left join t_pre_emp_work_recording ew on a.id=ew.PRE_MAIN_ID
		<where>
			a.STATUS != '5' and ew.id is not null and EXISTS (
			select 1 from (select a.EMP_IDCARD from t_pre_emp_work_recording a left join t_pre_emp_main p on a.PRE_MAIN_ID=p.id where p.STATUS != '5' and p.id is not null GROUP BY a.EMP_IDCARD HAVING count(1)>1) ea where ea.EMP_IDCARD=ew.EMP_IDCARD
			)
			<include refid="tPreEmpMain_where"/>
		</where>
	</select>

	<!--导出统计list1主要工作经历-->
	<select id="getTEmpMainAllListOneWork" resultType="com.yifu.cloud.plus.v1.yifu.archives.vo.TPreMainExportAllVO">
		SELECT
		e.emp_idcard field6
		,if(e.FIRST_WORK_FLAG is null,'',if(e.FIRST_WORK_FLAG=0,'是','否')) field43,ew.WORK_UNIT field44,ew.WORK_JOB field45,ew.START_DATE field46,ew.END_DATE field47
		FROM t_pre_emp_main a
		left join t_pre_employee_info e on a.id=e.PRE_MAIN_ID
		left join t_pre_emp_work_recording ew on a.id=ew.PRE_MAIN_ID
		<where>
			a.STATUS != '5' and ew.id is not null and EXISTS (
			select 1 from (select a.EMP_IDCARD from t_pre_emp_work_recording a left join t_pre_emp_main p on a.PRE_MAIN_ID=p.id where p.STATUS != '5' and p.id is not null GROUP BY a.EMP_IDCARD HAVING count(1)>1) ea where ea.EMP_IDCARD=ew.EMP_IDCARD
			)
			<include refid="tPreEmpMain_where"/>
		</where>
		ORDER BY a.emp_idcard DESC
		<if test="tPreEmpMain != null">
			<if test="tPreEmpMain.limitStart != null">
				limit #{tPreEmpMain.limitStart},#{tPreEmpMain.limitEnd}
			</if>
		</if>
	</select>

	<!-- 数量 -->
	<select id="getTEmpMainAllCountTwoFamily" resultType="java.lang.Integer">
		SELECT
		count(1)
		FROM t_pre_emp_main a
		left join t_pre_employee_info e on a.id=e.PRE_MAIN_ID
		left join t_pre_emp_family ef on a.id=ef.PRE_MAIN_ID
		<where>
			a.STATUS != '5' and ef.id is not null and EXISTS (
			select 1 from (select a.EMP_IDCARD from t_pre_emp_family a left join t_pre_emp_main p on a.PRE_MAIN_ID=p.id where p.STATUS != '5' and p.id is not null GROUP BY a.EMP_IDCARD HAVING count(1)>1) ea where ea.EMP_IDCARD=ef.EMP_IDCARD
			)
			<include refid="tPreEmpMain_where"/>
		</where>
	</select>
	<!--导出统计list2主要家庭成员信息-->
	<select id="getTEmpMainAllListTwoFamily" resultType="com.yifu.cloud.plus.v1.yifu.archives.vo.TPreMainExportAllVO">
		SELECT
		e.emp_idcard field6
		,ef.FAMILY_NAME field48,family_relation.label field49,ef.CONTRACT_TEL field50
		FROM t_pre_emp_main a
		left join t_pre_employee_info e on a.id=e.PRE_MAIN_ID
		left join t_pre_emp_family ef on a.id=ef.PRE_MAIN_ID
		left join view_sys_dict_item family_relation on family_relation.value=ef.RELATIONSHIP_SELF and family_relation.type='family_relation'
		<where>
			a.STATUS != '5' and ef.id is not null and EXISTS (
			select 1 from (select a.EMP_IDCARD from t_pre_emp_family a left join t_pre_emp_main p on a.PRE_MAIN_ID=p.id where p.STATUS != '5' and p.id is not null GROUP BY a.EMP_IDCARD HAVING count(1)>1) ea where ea.EMP_IDCARD=ef.EMP_IDCARD
			)
			<include refid="tPreEmpMain_where"/>
		</where>
		ORDER BY a.emp_idcard DESC
		<if test="tPreEmpMain != null">
			<if test="tPreEmpMain.limitStart != null">
				limit #{tPreEmpMain.limitStart},#{tPreEmpMain.limitEnd}
			</if>
		</if>
	</select>

	<!-- 数量 -->
	<select id="getTEmpMainAllCountThreeProfessional" resultType="java.lang.Integer">
		SELECT
		count(1)
		FROM t_pre_emp_main a
		left join t_pre_employee_info e on a.id=e.PRE_MAIN_ID
		left join t_pre_emp_professional_qualification ep on a.id=ep.PRE_MAIN_ID
		<where>
			a.STATUS != '5' and ep.id is not null and EXISTS (
			select 1 from (select a.EMP_IDCARD from t_pre_emp_professional_qualification a left join t_pre_emp_main p on a.PRE_MAIN_ID=p.id where p.STATUS != '5' and p.id is not null GROUP BY a.EMP_IDCARD HAVING count(1)>1) ea where ea.EMP_IDCARD=ep.EMP_IDCARD
			)
			<include refid="tPreEmpMain_where"/>
		</where>
	</select>
	<!--导出统计list3职业资格信息-->
	<select id="getTEmpMainAllListThreeProfessional" resultType="com.yifu.cloud.plus.v1.yifu.archives.vo.TPreMainExportAllVO">
		SELECT
		e.emp_idcard field6
		,if(e.HAVE_QUALIFICATION is null,'',if(e.HAVE_QUALIFICATION=0,'是','否')) field51,ep.DECLARE_YEAR field52,qualification_type.label field53
		FROM t_pre_emp_main a
		left join t_pre_employee_info e on a.id=e.PRE_MAIN_ID
		left join t_pre_emp_professional_qualification ep on a.id=ep.PRE_MAIN_ID
		left join view_sys_dict_item qualification_type on qualification_type.value=ep.QUALIFICATION_TYPE and qualification_type.type='qualification_type'
		<where>
			a.STATUS != '5' and ep.id is not null and EXISTS (
			select 1 from (select a.EMP_IDCARD from t_pre_emp_professional_qualification a left join t_pre_emp_main p on a.PRE_MAIN_ID=p.id where p.STATUS != '5' and p.id is not null GROUP BY a.EMP_IDCARD HAVING count(1)>1) ea where ea.EMP_IDCARD=ep.EMP_IDCARD
			)
			<include refid="tPreEmpMain_where"/>
		</where>
		ORDER BY a.emp_idcard DESC
		<if test="tPreEmpMain != null">
			<if test="tPreEmpMain.limitStart != null">
				limit #{tPreEmpMain.limitStart},#{tPreEmpMain.limitEnd}
			</if>
		</if>
	</select>
	

    <!--tPreEmpMain简单分页查询-->
    <select id="getTPreEmpMainByCardAndDept" resultMap="tPreEmpMainMap">
        SELECT
        <include refid="Base_Column_List"/>
        FROM t_pre_emp_main a
        where  a.EMP_IDCARD = #{empIdCard} AND a.DEPT_ID = #{deptId}
		limit 1
    </select>

    <!--tPreEmpMain简单分页查询-->
    <select id="getTPreEmpMainByCardAndDeptNo" resultMap="tPreEmpMainMap">
        SELECT
        <include refid="Base_Column_List"/>
        FROM t_pre_emp_main a
        where  a.EMP_IDCARD = #{empIdCard} AND a.DEPT_NO = #{deptNo}
		limit 1
    </select>

	<delete id="deleteBadByMainId">
		delete from t_pre_emp_bad_record where PRE_MAIN_ID = #{preMainId}
	</delete>
	<delete id="deleteContactByMainId">
		delete from t_pre_emp_contact_info where PRE_MAIN_ID = #{preMainId}
	</delete>
	<delete id="deleteDisabilityByMainId">
		delete from t_pre_emp_disability_info where PRE_MAIN_ID = #{preMainId}
	</delete>
	<delete id="deleteEducationByMainId">
		delete from t_pre_emp_education where PRE_MAIN_ID = #{preMainId}
	</delete>
	<delete id="deleteFamilyByMainId">
		delete from t_pre_emp_family where PRE_MAIN_ID = #{preMainId}
	</delete>
	<delete id="deleteEmployeeByMainId">
		delete from t_pre_employee_info where PRE_MAIN_ID = #{preMainId}
	</delete>
	<delete id="deleteProjectByMainId">
		delete from t_pre_employee_project where PRE_MAIN_ID = #{preMainId}
	</delete>

</mapper>
