<?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.social.mapper.TDispatchInfoMapper">

  <resultMap id="tDispatchInfoMap" type="com.yifu.cloud.plus.v1.yifu.social.entity.TDispatchInfo">
    <id property="id" column="ID"/>
    <result property="empId" column="EMP_ID"/>
    <result property="empName" column="EMP_NAME"/>
    <result property="empNo" column="EMP_NO"/>
    <result property="empIdcard" column="EMP_IDCARD"/>
    <result property="empType" column="EMP_TYPE"/>
    <result property="empMobile" column="EMP_MOBILE"/>
    <result property="empNational" column="EMP_NATIONAL"/>
    <result property="status" column="STATUS"/>
    <result property="type" column="TYPE"/>
    <result property="socialId" column="SOCIAL_ID"/>
    <result property="fundId" column="FUND_ID"/>
    <result property="typeSub" column="TYPE_SUB"/>
    <result property="processInstId" column="PROCESS_INST_ID"/>
    <result property="settleDomain" column="SETTLE_DOMAIN"/>
    <result property="deleteFlag" column="DELETE_FLAG"/>
    <result property="socialReduceDate" column="SOCIAL_REDUCE_DATE"/>
    <result property="fundReduceDate" column="FUND_REDUCE_DATE"/>
    <result property="leaveDate" column="LEAVE_DATE"/>
    <result property="reduceReason" column="REDUCE_REASON"/>
    <result property="reduceRemark" column="REDUCE_REMARK"/>
    <result property="belongUnit" column="BELONG_UNIT"/>
    <result property="currentOperator" column="CURRENT_OPERATOR"/>
    <result property="dispatchIdBak" column="DISPATCH_ID_BAK"/>
    <result property="contractStart" column="CONTRACT_START"/>
    <result property="contractEnd" column="CONTRACT_END"/>
    <result property="contractTerm" column="CONTRACT_TERM"/>
    <result property="empRegisType" column="EMP_REGIS_TYPE"/>
    <result property="fileAddr" column="FILE_ADDR"/>
    <result property="post" column="POST"/>
    <result property="trustRemark" column="TRUST_REMARK"/>
    <result property="fileProvince" column="FILE_PROVINCE"/>
    <result property="fileCity" column="FILE_CITY"/>
    <result property="fileTown" column="FILE_TOWN"/>
    <result property="contractType" column="CONTRACT_TYPE"/>
    <result property="socialHandleStatus" column="SOCIAL_HANDLE_STATUS"/>
    <result property="fundHandleStatus" column="FUND_HANDLE_STATUS"/>
    <result property="handleRemark" column="HANDLE_REMARK"/>
    <result property="auditRemark" column="AUDIT_REMARK"/>
    <result property="fundHandleRemark" column="FUND_HANDLE_REMARK"/>
    <result property="socialHandleRemark" column="SOCIAL_HANDLE_REMARK"/>
    <result property="socialProvince" column="SOCIAL_PROVINCE"/>
    <result property="socialCity" column="SOCIAL_CITY"/>
    <result property="socialTown" column="SOCIAL_TOWN"/>
    <result property="fundProvince" column="FUND_PROVINCE"/>
    <result property="fundCity" column="FUND_CITY"/>
    <result property="fundTown" column="FUND_TOWN"/>
    <result property="auditUser" column="AUDIT_USER"/>
    <result property="auditTime" column="AUDIT_TIME"/>
    <result property="workingHours" column="WORKING_HOURS"/>
    <result property="createBy" column="CREATE_BY"/>
    <result property="updateBy" column="UPDATE_BY"/>
    <result property="createName" column="CREATE_NAME"/>
    <result property="updateTime" column="UPDATE_TIME"/>
    <result property="organName" column="ORGAN_NAME"/>
    <result property="dispatchItem" column="DISPATCH_ITEM"/>
    <result property="settleDomainName" column="SETTLE_DOMAIN_NAME"/>
	<result property="settleDomainCode" column="SETTLE_DOMAIN_CODE"/>
    <result property="belongUnitName" column="BELONG_UNIT_NAME"/>
	<result property="dispatchCode" column="DISPATCH_CODE"/>
	<result property="contractSubName" column="CONTRACT_SUB_NAME"/>
	<result property="contractId" column="CONTRACT_ID"/>
	<result property="educationName" column="EDUCATION_NAME"/>

	<result property="tryPeriod" column="TRY_PERIOD"/>
	<result property="idCardProvince" column="ID_CARD_PROVINCE"/>
	<result property="idCardCity" column="ID_CARD_CITY"/>
	<result property="idCardTown" column="ID_CARD_TOWN"/>
	<result property="idCardAddress" column="ID_CARD_ADDRESS"/>
	<result property="applyNo" column="APPLY_NO"/>
	  <result property="createTime" column="CREATE_TIME"/>
  </resultMap>
	<resultMap id="dispatchPageMap" type="com.yifu.cloud.plus.v1.yifu.social.vo.TDispatchInfoPageVo" extends="tDispatchInfoMap">
		<result property="providentHouseholdName" column="PROVIDENT_HOUSEHOLD_NAME"/>
		<result property="socialHouseholdName" column="SOCIAL_HOUSEHOLD_NAME"/>
	</resultMap>
	<!-- 派单导出vo -->
	<resultMap id="exportMap" type="com.yifu.cloud.plus.v1.yifu.social.vo.TDispatchInfoExportVo">
		<id property="id" column="ID"/>
		<result property="applyNo" column="APPLY_NO"/>
		<result property="empNo" column="EMP_NO"/>
		<result property="empName" column="EMP_NAME"/>
		<result property="empIdcard" column="EMP_IDCARD"/>
		<result property="empType" column="EMP_TYPE"/>
		<result property="typeSub" column="TYPE_SUB"/>
		<result property="belongUnitName" column="BELONG_UNIT_NAME"/>
		<result property="settleDomainName" column="SETTLE_DOMAIN_NAME"/>
		<result property="settleDomainCode" column="SETTLE_DOMAIN_CODE"/>
		<result property="type" column="TYPE"/>
		<result property="dispatchItem" column="DISPATCH_ITEM"/>
		<result property="socialHouseholdName" column="SOCIAL_HOUSEHOLD_NAME"/>
		<result property="providentHouseholdName" column="PROVIDENT_HOUSEHOLD_NAME"/>
		<result property="status" column="STATUS"/>
		<result property="socialHandleStatus" column="SOCIAL_HANDLE_STATUS"/>
		<result property="pensionHandle" column="PENSION_HANDLE"/>
		<result property="medicalHandle" column="MEDICAL_HANDLE"/>
		<result property="unemployHandle" column="UNEMPLOY_HANDLE"/>
		<result property="workInjuryHandle" column="WORK_INJURY_HANDLE"/>
		<result property="birthHandle" column="BIRTH_HANDLE"/>
		<result property="bigailmentHandle" column="BIGAILMENT_HANDLE"/>
		<result property="fundHandleStatus" column="FUND_HANDLE_STATUS"/>
		<result property="createName" column="CREATE_NAME"/>
		<result property="organName" column="ORGAN_NAME"/>
		<result property="createTime" column="CREATE_TIME"/>
	</resultMap>


	<resultMap id="fundSupplementaryMap" type="com.yifu.cloud.plus.v1.yifu.social.vo.FundSupplementaryExportVo">
		<result property="providentStart" column="PROVIDENT_START"/>
		<result property="unitProvidengCardinal" column="UNIT_PROVIDENG_CARDINAL"/>
		<result property="personalProvidentCardinal" column="PERSONAL_PROVIDENT_CARDINAL"/>
		<result property="unitProvidentPer" column="UNIT_PROVIDENT_PER"/>
		<result property="personalProvidentPer" column="PERSONAL_PROVIDENT_PER"/>
		<result property="unitProvidentFee" column="UNIT_PROVIDENT_FEE"/>
		<result property="personalProvidentFee" column="PERSONAL_PROVIDENT_FEE"/>
		<result property="empName" column="EMP_NAME"/>
	</resultMap>

    <sql id="Base_Column_List">
		a.ID,
		a.EMP_ID,
		a.EMP_NAME,
		a.EMP_NO,
		a.EMP_IDCARD,
		a.EMP_TYPE,
		a.EMP_MOBILE,
		a.EMP_NATIONAL,
		a.STATUS,
		a.TYPE,
		a.SOCIAL_ID,
		a.FUND_ID,
		a.TYPE_SUB,
		a.PROCESS_INST_ID,
		a.SETTLE_DOMAIN,
		a.DELETE_FLAG,
		a.SOCIAL_REDUCE_DATE,
		a.FUND_REDUCE_DATE,
		a.LEAVE_DATE,
		a.REDUCE_REASON,
		a.REDUCE_REMARK,
		a.BELONG_UNIT,
		a.CURRENT_OPERATOR,
		a.DISPATCH_ID_BAK,
		a.CONTRACT_START,
		a.CONTRACT_END,
		a.CONTRACT_TERM,
		a.EMP_REGIS_TYPE,
		a.ENJOIN_DATE,
		a.FILE_ADDR,
		a.POST,
		a.TRUST_REMARK,
		a.FILE_PROVINCE,
		a.FILE_CITY,
		a.FILE_TOWN,
		a.CONTRACT_TYPE,
		a.SOCIAL_HANDLE_STATUS,
		a.FUND_HANDLE_STATUS,
		a.HANDLE_REMARK,
		a.AUDIT_REMARK,
		a.FUND_HANDLE_REMARK,
		a.SOCIAL_HANDLE_REMARK,
		a.SOCIAL_PROVINCE,
		a.SOCIAL_CITY,
		a.SOCIAL_TOWN,
		a.FUND_PROVINCE,
		a.FUND_CITY,
		a.FUND_TOWN,
		a.AUDIT_USER,
		a.AUDIT_TIME,
		a.WORKING_HOURS,
		a.CREATE_BY,
		a.UPDATE_BY,
		a.CREATE_NAME,
		a.CREATE_TIME,
		a.UPDATE_TIME,
		a.ORGAN_NAME,
		a.DISPATCH_ITEM,
		a.SETTLE_DOMAIN_NAME,
		a.BELONG_UNIT_NAME,
		a.DISPATCH_CODE,
		a.SETTLE_DOMAIN_CODE,
		a.CONTRACT_SUB_NAME,
		a.CONTRACT_ID,
		a.EDUCATION_NAME,
		a.TRY_PERIOD,
		a.ID_CARD_PROVINCE,
		a.ID_CARD_CITY,
		a.ID_CARD_TOWN,
		a.ID_CARD_ADDRESS,
		a.APPLY_NO
    </sql>
    <sql id="tDispatchInfo_where">
        <if test="tDispatchInfo != null">
					<if test="tDispatchInfo.idList != null and tDispatchInfo.idList.size >0">
						AND a.ID in
						<foreach item="idStr" index="index" collection="tDispatchInfo.idList" open="(" separator="," close=")">
							#{idStr}
						</foreach>
					</if>
                    <if test="tDispatchInfo.id != null and tDispatchInfo.id.trim() != ''">
                        AND a.ID = #{tDispatchInfo.id}
                    </if>
                    <if test="tDispatchInfo.empId != null and tDispatchInfo.empId.trim() != ''">
                        AND a.EMP_ID = #{tDispatchInfo.empId}
                    </if>
                    <if test="tDispatchInfo.empName != null and tDispatchInfo.empName.trim() != ''">
                        AND a.EMP_NAME = #{tDispatchInfo.empName}
                    </if>
                    <if test="tDispatchInfo.empNo != null and tDispatchInfo.empNo.trim() != ''">
                        AND a.EMP_NO = #{tDispatchInfo.empNo}
                    </if>
                    <if test="tDispatchInfo.empIdcard != null and tDispatchInfo.empIdcard.trim() != ''">
                        AND a.EMP_IDCARD = #{tDispatchInfo.empIdcard}
                    </if>
                    <if test="tDispatchInfo.empType != null and tDispatchInfo.empType.trim() != ''">
                        AND a.EMP_TYPE = #{tDispatchInfo.empType}
                    </if>
                    <if test="tDispatchInfo.empMobile != null and tDispatchInfo.empMobile.trim() != ''">
                        AND a.EMP_MOBILE = #{tDispatchInfo.empMobile}
                    </if>
                    <if test="tDispatchInfo.empNational != null and tDispatchInfo.empNational.trim() != ''">
                        AND a.EMP_NATIONAL = #{tDispatchInfo.empNational}
                    </if>
                    <if test="tDispatchInfo.status != null and tDispatchInfo.status.trim() != ''">
                        AND a.STATUS = #{tDispatchInfo.status}
                    </if>
                    <if test="tDispatchInfo.type != null and tDispatchInfo.type.trim() != ''">
                        AND a.TYPE = #{tDispatchInfo.type}
                    </if>
                    <if test="tDispatchInfo.socialId != null and tDispatchInfo.socialId.trim() != ''">
                        AND a.SOCIAL_ID = #{tDispatchInfo.socialId}
                    </if>
                    <if test="tDispatchInfo.fundId != null and tDispatchInfo.fundId.trim() != ''">
                        AND a.FUND_ID = #{tDispatchInfo.fundId}
                    </if>
                    <if test="tDispatchInfo.typeSub != null and tDispatchInfo.typeSub.trim() != ''">
                        AND a.TYPE_SUB = #{tDispatchInfo.typeSub}
                    </if>
                    <if test="tDispatchInfo.processInstId != null and tDispatchInfo.processInstId.trim() != ''">
                        AND a.PROCESS_INST_ID = #{tDispatchInfo.processInstId}
                    </if>
                    <if test="tDispatchInfo.settleDomain != null and tDispatchInfo.settleDomain.trim() != ''">
                        AND a.SETTLE_DOMAIN = #{tDispatchInfo.settleDomain}
                    </if>
					<if test="tDispatchInfo.settleDomainName != null and tDispatchInfo.settleDomainName.trim() != ''">
						AND a.SETTLE_DOMAIN_NAME like CONCAT(#{tDispatchInfo.settleDomainName}, '%')
					</if>
					<if test="tDispatchInfo.settleDomainCode != null and tDispatchInfo.settleDomainCode.trim() != ''">
						AND a.SETTLE_DOMAIN_CODE = #{tDispatchInfo.settleDomainCode}
					</if>

                    <if test="tDispatchInfo.deleteFlag != null and tDispatchInfo.deleteFlag.trim() != ''">
                        AND a.DELETE_FLAG = #{tDispatchInfo.deleteFlag}
                    </if>
                    <if test="tDispatchInfo.socialReduceDate != null">
                        AND a.SOCIAL_REDUCE_DATE = #{tDispatchInfo.socialReduceDate}
                    </if>
                    <if test="tDispatchInfo.fundReduceDate != null">
                        AND a.FUND_REDUCE_DATE = #{tDispatchInfo.fundReduceDate}
                    </if>
                    <if test="tDispatchInfo.leaveDate != null">
                        AND a.LEAVE_DATE = #{tDispatchInfo.leaveDate}
                    </if>
                    <if test="tDispatchInfo.reduceReason != null and tDispatchInfo.reduceReason.trim() != ''">
                        AND a.REDUCE_REASON = #{tDispatchInfo.reduceReason}
                    </if>
                    <if test="tDispatchInfo.reduceRemark != null and tDispatchInfo.reduceRemark.trim() != ''">
                        AND a.REDUCE_REMARK = #{tDispatchInfo.reduceRemark}
                    </if>
                    <if test="tDispatchInfo.belongUnit != null and tDispatchInfo.belongUnit.trim() != ''">
                        AND a.BELONG_UNIT = #{tDispatchInfo.belongUnit}
                    </if>
                    <if test="tDispatchInfo.currentOperator != null and tDispatchInfo.currentOperator.trim() != ''">
                        AND a.CURRENT_OPERATOR = #{tDispatchInfo.currentOperator}
                    </if>
                    <if test="tDispatchInfo.dispatchIdBak != null and tDispatchInfo.dispatchIdBak.trim() != ''">
                        AND a.DISPATCH_ID_BAK = #{tDispatchInfo.dispatchIdBak}
                    </if>
                    <if test="tDispatchInfo.contractStart != null">
                        AND a.CONTRACT_START = #{tDispatchInfo.contractStart}
                    </if>
                    <if test="tDispatchInfo.contractEnd != null">
                        AND a.CONTRACT_END = #{tDispatchInfo.contractEnd}
                    </if>
                    <if test="tDispatchInfo.contractTerm != null">
                        AND a.CONTRACT_TERM = #{tDispatchInfo.contractTerm}
                    </if>
                    <if test="tDispatchInfo.empRegisType != null and tDispatchInfo.empRegisType.trim() != ''">
                        AND a.EMP_REGIS_TYPE = #{tDispatchInfo.empRegisType}
                    </if>
                    <if test="tDispatchInfo.fileAddr != null and tDispatchInfo.fileAddr.trim() != ''">
                        AND a.FILE_ADDR = #{tDispatchInfo.fileAddr}
                    </if>
                    <if test="tDispatchInfo.post != null and tDispatchInfo.post.trim() != ''">
                        AND a.POST = #{tDispatchInfo.post}
                    </if>
                    <if test="tDispatchInfo.trustRemark != null and tDispatchInfo.trustRemark.trim() != ''">
                        AND a.TRUST_REMARK = #{tDispatchInfo.trustRemark}
                    </if>
                    <if test="tDispatchInfo.fileProvince != null">
                        AND a.FILE_PROVINCE = #{tDispatchInfo.fileProvince}
                    </if>
                    <if test="tDispatchInfo.fileCity != null">
                        AND a.FILE_CITY = #{tDispatchInfo.fileCity}
                    </if>
                    <if test="tDispatchInfo.fileTown != null">
                        AND a.FILE_TOWN = #{tDispatchInfo.fileTown}
                    </if>
                    <if test="tDispatchInfo.contractType != null and tDispatchInfo.contractType.trim() != ''">
                        AND a.CONTRACT_TYPE = #{tDispatchInfo.contractType}
                    </if>
                    <if test="tDispatchInfo.socialHandleStatus != null and tDispatchInfo.socialHandleStatus.trim() != ''">
                        AND a.SOCIAL_HANDLE_STATUS = #{tDispatchInfo.socialHandleStatus}
                    </if>
                    <if test="tDispatchInfo.fundHandleStatus != null and tDispatchInfo.fundHandleStatus.trim() != ''">
                        AND a.FUND_HANDLE_STATUS = #{tDispatchInfo.fundHandleStatus}
                    </if>
                    <if test="tDispatchInfo.handleRemark != null and tDispatchInfo.handleRemark.trim() != ''">
                        AND a.HANDLE_REMARK = #{tDispatchInfo.handleRemark}
                    </if>
                    <if test="tDispatchInfo.auditRemark != null and tDispatchInfo.auditRemark.trim() != ''">
                        AND a.AUDIT_REMARK = #{tDispatchInfo.auditRemark}
                    </if>
                    <if test="tDispatchInfo.fundHandleRemark != null and tDispatchInfo.fundHandleRemark.trim() != ''">
                        AND a.FUND_HANDLE_REMARK = #{tDispatchInfo.fundHandleRemark}
                    </if>
                    <if test="tDispatchInfo.socialHandleRemark != null and tDispatchInfo.socialHandleRemark.trim() != ''">
                        AND a.SOCIAL_HANDLE_REMARK = #{tDispatchInfo.socialHandleRemark}
                    </if>
                    <if test="tDispatchInfo.socialProvince != null and tDispatchInfo.socialProvince.trim() != ''">
                        AND a.SOCIAL_PROVINCE = #{tDispatchInfo.socialProvince}
                    </if>
                    <if test="tDispatchInfo.socialCity != null and tDispatchInfo.socialCity.trim() != ''">
                        AND a.SOCIAL_CITY = #{tDispatchInfo.socialCity}
                    </if>
                    <if test="tDispatchInfo.socialTown != null and tDispatchInfo.socialTown.trim() != ''">
                        AND a.SOCIAL_TOWN = #{tDispatchInfo.socialTown}
                    </if>
                    <if test="tDispatchInfo.fundProvince != null and tDispatchInfo.fundProvince.trim() != ''">
                        AND a.FUND_PROVINCE = #{tDispatchInfo.fundProvince}
                    </if>
                    <if test="tDispatchInfo.fundCity != null and tDispatchInfo.fundCity.trim() != ''">
                        AND a.FUND_CITY = #{tDispatchInfo.fundCity}
                    </if>
                    <if test="tDispatchInfo.fundTown != null and tDispatchInfo.fundTown.trim() != ''">
                        AND a.FUND_TOWN = #{tDispatchInfo.fundTown}
                    </if>
                    <if test="tDispatchInfo.auditUser != null and tDispatchInfo.auditUser.trim() != ''">
                        AND a.AUDIT_USER = #{tDispatchInfo.auditUser}
                    </if>
                    <if test="tDispatchInfo.auditTime != null">
                        AND a.AUDIT_TIME = #{tDispatchInfo.auditTime}
                    </if>
                    <if test="tDispatchInfo.workingHours != null and tDispatchInfo.workingHours.trim() != ''">
                        AND a.WORKING_HOURS = #{tDispatchInfo.workingHours}
                    </if>
                    <if test="tDispatchInfo.createBy != null and tDispatchInfo.createBy.trim() != ''">
                        AND a.CREATE_BY = #{tDispatchInfo.createBy}
                    </if>
                    <if test="tDispatchInfo.updateBy != null and tDispatchInfo.updateBy.trim() != ''">
                        AND a.UPDATE_BY = #{tDispatchInfo.updateBy}
                    </if>
                    <if test="tDispatchInfo.createName != null and tDispatchInfo.createName.trim() != ''">
                        AND a.CREATE_NAME = #{tDispatchInfo.createName}
                    </if>
                    <if test="tDispatchInfo.updateTime != null">
                        AND a.UPDATE_TIME = #{tDispatchInfo.updateTime}
                    </if>
                    <if test="tDispatchInfo.organName != null and tDispatchInfo.organName.trim() != ''">
                        AND a.ORGAN_NAME = #{tDispatchInfo.organName}
                    </if>
                    <if test="tDispatchInfo.dispatchItem != null and tDispatchInfo.dispatchItem.trim() != ''">
                        AND a.DISPATCH_ITEM = #{tDispatchInfo.dispatchItem}
                    </if>
                    <if test="tDispatchInfo.belongUnitName != null and tDispatchInfo.belongUnitName.trim() != ''">
                        AND a.BELONG_UNIT_NAME = #{tDispatchInfo.belongUnitName}
                    </if>

					<if test="tDispatchInfo.socialHouseholdName != null and tDispatchInfo.socialHouseholdName.trim() != ''">
						AND s.SOCIAL_HOUSEHOLD_NAME like CONCAT(CONCAT(#{tDispatchInfo.socialHouseholdName}), '%')
					</if>
					<if test="tDispatchInfo.providentHouseholdName != null and tDispatchInfo.providentHouseholdName.trim() != ''">
						AND f.PROVIDENT_HOUSEHOLD_NAME like CONCAT(CONCAT(#{tDispatchInfo.providentHouseholdName}), '%')
					</if>
					<if test="tDispatchInfo.createTimeStart != null">
						AND a.CREATE_TIME <![CDATA[ >= ]]> #{tDispatchInfo.createTimeStart}
					</if>
					<if test="tDispatchInfo.createTimeEnd != null">
						AND a.CREATE_TIME <![CDATA[ <= ]]> #{tDispatchInfo.createTimeEnd}
					</if>
		</if>
    </sql>
    <!--tDispatchInfo简单分页查询-->
    <select id="getTDispatchInfoPage" resultMap="dispatchPageMap">
        SELECT
        <include refid="Base_Column_List"/>,
               s.SOCIAL_HOUSEHOLD_NAME,
               f.PROVIDENT_HOUSEHOLD_NAME
        FROM t_dispatch_info a
		left join t_social_info s on s.id=a.SOCIAL_ID
		left join t_provident_fund f on f.id=a.FUND_ID
        <where>
            1=1
            <include refid="tDispatchInfo_where"/>
        </where>
		order by a.CREATE_TIME desc
    </select>

	<!-- 派单导出 -->
    <select id="exportDispatch" resultMap="exportMap">
		select
			a.ID,
			a.APPLY_NO,
			a.EMP_NO,
			a.EMP_NAME,
			a.EMP_IDCARD,
			a.EMP_TYPE,
			a.TYPE_SUB,
			a.BELONG_UNIT_NAME,
			a.SETTLE_DOMAIN_NAME,
			a.SETTLE_DOMAIN_CODE,
			a.TYPE,
			a.DISPATCH_ITEM,
			s.SOCIAL_HOUSEHOLD_NAME,
			f.PROVIDENT_HOUSEHOLD_NAME,
			a.STATUS,
			a.SOCIAL_HANDLE_STATUS,
			s.PENSION_HANDLE,
			s.MEDICAL_HANDLE,
			s.UNEMPLOY_HANDLE,
			s.WORK_INJURY_HANDLE,
			s.BIRTH_HANDLE,
			s.BIGAILMENT_HANDLE,
			a.FUND_HANDLE_STATUS,
			a.CREATE_NAME,
			a.ORGAN_NAME,
			a.CREATE_TIME
		from t_dispatch_info a
		left join t_social_info s on s.id=a.SOCIAL_ID
		left join t_provident_fund f on f.id=a.FUND_ID
        <where>
            a.DELETE_FLAG = '0'
            <include refid="tDispatchInfo_where"/>
        </where>
		order by a.CREATE_TIME desc
		<if test="tDispatchInfo.limitStart != null">
			limit #{tDispatchInfo.limitStart},#{tDispatchInfo.limitEnd}
		</if>
    </select>
	<resultMap id="socialHandleExportMap" type="com.yifu.cloud.plus.v1.yifu.social.vo.SocialHandleExportVo">
		<result property="empName" column="EMP_NAME"/>
		<result property="empIdcard" column="EMP_IDCARD"/>
		<result property="empType" column="EMP_TYPE"/>
		<result property="empMobile" column="EMP_MOBILE"/>
		<result property="empNational" column="EMP_NATIONAL"/>
		<result property="type" column="TYPE"/>
		<result property="settleDomain" column="SETTLE_DOMAIN_NAME"/>
		<result property="reduceReason" column="REDUCE_REASON"/>
		<result property="belongUnit" column="BELONG_UNIT_NAME"/>
		<result property="contractStart" column="CONTRACT_START"/>
		<result property="contractEnd" column="CONTRACT_END"/>
		<result property="contractTerm" column="CONTRACT_TERM"/>
		<result property="empRegisType" column="EMP_REGIS_TYPE"/>
		<result property="post" column="POST"/>
		<result property="socialHandleStatus" column="SOCIAL_HANDLE_STATUS"/>
		<result property="socialProvince" column="SOCIAL_PROVINCE"/>
		<result property="socialCity" column="SOCIAL_CITY"/>
		<result property="socialTown" column="SOCIAL_TOWN"/>
		<result property="workingHours" column="WORKING_HOURS"/>
		<result property="educationName" column="EDUCATION_NAME"/>
		<result property="createUserName" column="CREATE_NAME"/>

		<result property="socialHouseholdName" column="SOCIAL_HOUSEHOLD_NAME"/>
		<result property="socialProvince" column="SOCIAL_PROVINCE"/>
		<result property="socialCity" column="SOCIAL_CITY"/>
		<result property="socialTown" column="SOCIAL_TOWN"/>
		<result property="unitPensionCardinal" column="UNIT_PENSION_CARDINAL"/>
		<result property="unitMedicalCardinal" column="UNIT_MEDICAL_CARDINAL"/>
		<result property="unitUnemploymentCardinal" column="UNIT_UNEMPLOYMENT_CARDINAL"/>
		<result property="unitWorkInjuryCardinal" column="UNIT_WORK_INJURY_CARDINAL"/>
		<result property="unitBirthCardinal" column="UNIT_BIRTH_CARDINAL"/>
		<result property="personalBigailmentMoney" column="PERSONAL_BIGAILMENT_MONEY"/>
		<result property="unitBigailmentMoney" column="UNIT_BIGAILMENT_MONEY"/>
		<result property="unitBigailmentCardinal" column="UNIT_BIGAILMENT_CARDINAL"/>
		<result property="socailTrustRemark" column="TRUST_REMARK"/>
		<result property="pensionStart" column="PENSION_START"/>
		<result property="medicalStart" column="MEDICAL_START"/>
		<result property="unemployStart" column="UNEMPLOY_START"/>
		<result property="workInjuryStart" column="WORK_INJURY_START"/>
		<result property="birthStart" column="BIRTH_START"/>
		<result property="bigailmentStart" column="BIGAILMENT_START"/>

	</resultMap>

	<resultMap id="fundHandleMap" type="com.yifu.cloud.plus.v1.yifu.social.vo.FundHandleExportVo">
		<result property="type" column="TYPE"/>
		<result property="empName" column="EMP_NAME"/>
		<result property="empIdcard" column="EMP_IDCARD"/>
		<result property="belongUnit" column="BELONG_UNIT_NAME"/>
		<result property="settleDomain" column="SETTLE_DOMAIN_NAME"/>
		<result property="empMobile" column="EMP_MOBILE"/>
		<result property="createUserName" column="CREATE_NAME"/>

		<result property="providentHouseholdName" column="PROVIDENT_HOUSEHOLD_NAME"/>
		<result property="providentStart" column="PROVIDENT_START"/>
		<result property="unitProvidengCardinal" column="UNIT_PROVIDENG_CARDINAL"/>
		<result property="personalProvidentCardinal" column="PERSONAL_PROVIDENT_CARDINAL"/>
		<result property="unitProvidentPer" column="UNIT_PROVIDENT_PER"/>
		<result property="personalProvidentPer" column="PERSONAL_PROVIDENT_PER"/>
		<result property="unitProvidentFee" column="UNIT_PROVIDENT_FEE"/>
		<result property="personalProvidentFee" column="PERSONAL_PROVIDENT_FEE"/>
		<result property="fundProvince" column="FUND_PROVINCE"/>
		<result property="fundCity" column="FUND_CITY"/>
		<result property="fundTown" column="FUND_TOWN"/>
		<result property="belongUnit" column="BELONG_UNIT_NAME"/>

	</resultMap>
	<!--tDispatchInfo 社保花名册数据查询-->
	<select id="getSocialRecordRosterList" resultMap="socialHandleExportMap">
		SELECT
		a.TYPE,
		a.SOCIAL_HANDLE_STATUS,
		IF(a.TYPE='0',b.PENSION_HANDLE,IF(b.PENSION_HANDLE='2',"--",a.SOCIAL_HANDLE_STATUS)) as "PENSION_HANDLE",
		IF(a.TYPE='0',b.MEDICAL_HANDLE,IF(b.MEDICAL_HANDLE='2',"--",a.SOCIAL_HANDLE_STATUS)) as "MEDICAL_HANDLE",
		IF(a.TYPE='0',b.UNEMPLOY_HANDLE,IF(b.UNEMPLOY_HANDLE='2',"--",a.SOCIAL_HANDLE_STATUS)) as "UNEMPLOY_HANDLE",
		IF(a.TYPE='0',b.WORK_INJURY_HANDLE,IF(b.WORK_INJURY_HANDLE='2',"--",a.SOCIAL_HANDLE_STATUS)) as "WORK_INJURY_HANDLE",
		IF(a.TYPE='0',b.BIRTH_HANDLE,IF(b.BIRTH_HANDLE='2',"--",a.SOCIAL_HANDLE_STATUS)) as "BIRTH_HANDLE",
		IF(a.TYPE='0',b.BIGAILMENT_HANDLE,IF(b.BIGAILMENT_HANDLE='2',"--",a.SOCIAL_HANDLE_STATUS)) as "BIGAILMENT_HANDLE",
		a.EMP_NAME,
		a.EMP_IDCARD,
		a.EDUCATION_NAME,
		a.BELONG_UNIT_NAME,
		a.SETTLE_DOMAIN_NAME,
		a.EMP_TYPE,
		a.POST,
		a.EMP_MOBILE,
		a.EMP_REGIS_TYPE,
		a.EMP_NATIONAL,
		a.WORKING_HOURS,
		a.CONTRACT_TERM,
		a.CONTRACT_START,
		a.CONTRACT_END,
		a.CREATE_NAME,
		b.RECORD_BASE,
		b.PAYMENT_TYPE,
		b.SOCIAL_HOUSEHOLD_NAME,
		b.SOCIAL_PROVINCE,
		b.SOCIAL_CITY,
		b.SOCIAL_TOWN,
		b.PENSION_START,
		b.UNIT_PENSION_CARDINAL,
		b.MEDICAL_START,
		b.UNIT_MEDICAL_CARDINAL,
		b.UNEMPLOY_START,
		b.UNIT_UNEMPLOYMENT_CARDINAL,
		b.WORK_INJURY_START,
		b.UNIT_WORK_INJURY_CARDINAL,
		b.BIRTH_START,
		b.UNIT_BIRTH_CARDINAL,
		b.BIGAILMENT_START,
		b.UNIT_BIGAILMENT_CARDINAL,
		b.UNIT_BIGAILMENT_MONEY,
		b.PERSONAL_BIGAILMENT_MONEY,
		b.TRUST_REMARK socailTrustRemark,
		a.REDUCE_REASON
		<include refid="where_getSocialRecordRoster"/>
	</select>

	<!--tDispatchInfo 社保花名册数据查询count-->
	<select id="getSocialRecordRosterListCount" resultType="java.lang.Integer">
		SELECT
		count(1)
		<include refid="where_getSocialRecordRoster"/>
	</select>

	<!--tDispatchInfo 社保办理数据查询-->
	<select id="getTDispatchSocialHandlePage" resultMap="dispatchPageMap">
		SELECT
		<include refid="Base_Column_List"/>,
		       b.SOCIAL_HOUSEHOLD_NAME
		<include refid="where_getSocialRecordRoster"/>
	</select>
	<!--tDispatchInfo 公积金办理数据查询-->
	<select id="getTDispatchFundHandlePage" resultMap="dispatchPageMap">
		SELECT
		<include refid="Base_Column_List"/>,
		c.PROVIDENT_HOUSEHOLD_NAME
		<include refid="where_getFundRecord"/>
	</select>

	<!--tDispatchInfo 公积金变更清册cout-->
	<select id="getFundRecordCount" resultType="java.lang.Integer">
		SELECT
		count(1)
		<include refid="where_getFundRecord"/>
	</select>
	<!--tDispatchInfo 公积金变更清册查询-->
	<select id="getFundRecordList" resultMap="fundHandleMap">
		SELECT
		a.TYPE,
		a.EMP_NAME,
		a.EMP_IDCARD,
		a.BELONG_UNIT_NAME,
		a.SETTLE_DOMAIN_NAME,
		a.EMP_MOBILE,
		a.CREATE_NAME,

		c.PROVIDENT_HOUSEHOLD_NAME,
		c.PROVIDENT_START,
		c.UNIT_PROVIDENG_CARDINAL,
		c.PERSONAL_PROVIDENT_CARDINAL,
		c.UNIT_PROVIDENT_PER,
		c.PERSONAL_PROVIDENT_PER,
		c.UNIT_PROVIDENT_FEE,
		c.PERSONAL_PROVIDENT_FEE,
		c.FUND_PROVINCE,
		c.FUND_CITY,
		c.FUND_TOWN
		<include refid="where_getFundRecord"/>
	</select>

	<!--tDispatchInfo 公积金补交清册-->
	<select id="getFundSupplementaryRecords" resultMap="fundSupplementaryMap">
		SELECT
		c.PROVIDENT_START,
		c.UNIT_PROVIDENG_CARDINAL,
		c.PERSONAL_PROVIDENT_CARDINAL,
		c.UNIT_PROVIDENT_PER,
		c.PERSONAL_PROVIDENT_PER,
		c.UNIT_PROVIDENT_FEE,
		c.PERSONAL_PROVIDENT_FEE,
		c.EMP_NAME
		<include refid="where_getFundRecord"/>
	</select>
	<sql id="where_getSocialRecordRoster">
		FROM t_dispatch_info a
		left join t_social_info b on a.SOCIAL_ID = b.id
		<where>
			1=1 and b.DELETE_FLAG = 0
			<if test="idsStr != null and idsStr.size > 0">
				AND a.ID in
				<foreach item="items" index="index" collection="idsStr" open="(" separator="," close=")">
					#{items}
				</foreach>
			</if>
			/** 社保办理状态：0待办理/1已办理2办理失败3已派减4 办理中 5 部分办理失败 派单社保办理状态 0 未办理 1 全部办理成功(原-已办理) 2 全部办理失败（原-办理失败）  3 部分办理成功 4 办理中  **/
			/*社保代办理 1.派单审核通过 2.派增(type=0)：待办理(social_handle_status='0')  or 派减(type=1)：已办理完成或部分办理失败 且已派减*/
			AND a.social_id is not null
			AND a.STATUS = "2"
			and (( a.type = '0' AND (b.HANDLE_STATUS = "0" or b.HANDLE_STATUS = "4") ) or ( a.type ='1'  AND b.HANDLE_STATUS in ('1','5')  and b.REDUCE_CAN = '1'))
			and a.SOCIAL_HANDLE_STATUS in ('0','4')

			<!--<if test="tDispatchInfo.status != null and tDispatchInfo.status.trim() != ''">
				/*待办理组合判断*/
				<if test="'2'.toString() == tDispatchInfo.status.trim() and tDispatchInfo.typeSub != null ">
					/*社保代办理*/
					<if test=" '0'.toString()==tDispatchInfo.typeSub.trim() ">
						<if test="tDispatchInfo.socialHandleStatus != null and tDispatchInfo.socialHandleStatus != ''">

						</if>
						<if test="tDispatchInfo.socialHandleStatus == null or tDispatchInfo.socialHandleStatus == ''">
							and (( a.type = '0' AND b.HANDLE_STATUS in ('0','4')) or ( a.type ='1'  AND b.HANDLE_STATUS in ('1','5')  and b.REDUCE_CAN = '1'))
							and a.SOCIAL_HANDLE_STATUS in ('0','4')
						</if>
					</if>
					/* 公积金办理*/
					<if test=" '1'.toString()==tDispatchInfo.typeSub.trim() ">
						and (( a.type = '0' AND c.HANDLE_STATUS = '0') or ( a.type ='1'  AND c.HANDLE_STATUS = '1' and c.REDUCE_CAN = '1'))
						and a.FUND_HANDLE_STATUS='0'
					</if>
				</if>
			</if>-->

			<if test="tDispatchInfo != null">
				<if test="tDispatchInfo.type != null and tDispatchInfo.type.trim() != ''">
					AND a.TYPE = #{tDispatchInfo.type}
				</if>
				<if test="tDispatchInfo.socialProvince != null and tDispatchInfo.socialProvince!= null">
					AND  b.social_province = #{tDispatchInfo.socialProvince}
					<if test="tDispatchInfo.socialCity != null and tDispatchInfo.socialCity!= null">
						AND  b.social_city = #{tDispatchInfo.socialCity}
					</if>
					<if test="tDispatchInfo.socialTown != null and tDispatchInfo.socialTown!= null">
						AND  b.social_town = #{tDispatchInfo.socialTown}
					</if>
				</if>
				<if test="tDispatchInfo.empName != null and tDispatchInfo.empName.trim() != ''">
					AND a.EMP_NAME = #{tDispatchInfo.empName}
				</if>
				<if test="tDispatchInfo.empIdcard != null and tDispatchInfo.empIdcard.trim() != ''">
					AND a.EMP_IDCARD = #{tDispatchInfo.empIdcard}
				</if>
				<if test="tDispatchInfo.status != null and tDispatchInfo.status.trim() != ''">
					AND a.STATUS = #{tDispatchInfo.status}
				</if>

				<if test="tDispatchInfo.settleDomain != null and tDispatchInfo.settleDomain.trim() != ''">
					AND a.SETTLE_DOMAIN = #{tDispatchInfo.settleDomain}
				</if>

				<if test="tDispatchInfo.settleDomainCode != null and tDispatchInfo.settleDomainCode.trim() != ''">
					AND a.SETTLE_DOMAIN_CODE = #{tDispatchInfo.settleDomainCode}
				</if>

				<if test="tDispatchInfo.socialHandleStatus != null and tDispatchInfo.socialHandleStatus.trim() != ''">
					AND a.SOCIAL_HANDLE_STATUS = #{tDispatchInfo.socialHandleStatus}
				</if>

				<if test="tDispatchInfo.createName != null and tDispatchInfo.createName.trim() != ''">
					AND a.CREATE_NAME = #{tDispatchInfo.createName}
				</if>

				<if test="tDispatchInfo.settleDomainName != null and tDispatchInfo.settleDomainName.trim() != ''">
					AND a.SETTLE_DOMAIN_NAME like CONCAT(CONCAT(#{tDispatchInfo.settleDomainName}), '%')
				</if>
				<if test="tDispatchInfo.belongUnitName != null and tDispatchInfo.belongUnitName.trim() != ''">
					AND a.BELONG_UNIT_NAME = #{tDispatchInfo.belongUnitName}
				</if>
				<if test="tDispatchInfo.createTimeEnd != null">
					AND a.CREATE_TIME <![CDATA[<=]]> #{tDispatchInfo.createTimeEnd}
				</if>
				<if test="tDispatchInfo.createTimeStart != null">
					AND a.CREATE_TIME <![CDATA[>=]]> #{tDispatchInfo.createTimeStart}
				</if>
				<if test="tDispatchInfo.socialHouseholdName != null and tDispatchInfo.socialHouseholdName.trim() != ''">
					AND b.SOCIAL_HOUSEHOLD_NAME  like CONCAT(CONCAT(#{tDispatchInfo.socialHouseholdName}), '%')
				</if>

			</if>
			<if test='sql != null and sql != ""'>
				and <![CDATA[sql]]>
			</if>
			order by a.CREATE_TIME desc
		</where>
	</sql>

	<sql id="where_getFundRecord">
		FROM t_dispatch_info a
		left join t_provident_fund c on a.FUND_ID = c.id
		<where>
			1=1 and a.DELETE_FLAG = 0
			<if test="idsStr != null and idsStr.size > 0">
				AND a.ID in
				<foreach item="items" index="index" collection="idsStr" open="(" separator="," close=")">
					#{items}
				</foreach>
			</if>
			/** 社保办理状态：0待办理/1已办理2办理失败3已派减4 办理中 5 部分办理失败 派单社保办理状态 0 未办理 1 全部办理成功(原-已办理) 2 全部办理失败（原-办理失败）  3 部分办理成功 4 办理中  **/
			/*社保代办理 1.派单审核通过 2.派增(type=0)：待办理(social_handle_status='0')  or 派减(type=1)：已办理完成或部分办理失败 且已派减*/
			AND a.fund_id is not null
			AND a.STATUS = "2"
			and (( a.type = '0' AND c.HANDLE_STATUS = '0') or ( a.type ='1'  AND c.HANDLE_STATUS = '1' and c.REDUCE_CAN = '1'))
			and a.FUND_HANDLE_STATUS='0'
			<!--<if test="tDispatchInfo.status != null and tDispatchInfo.status.trim() != ''">
				/*待办理组合判断*/
				<if test="'2'.toString() == tDispatchInfo.status.trim() and tDispatchInfo.typeSub != null ">
					/*社保代办理*/
					<if test=" '0'.toString()==tDispatchInfo.typeSub.trim() ">
						<if test="tDispatchInfo.socialHandleStatus != null and tDispatchInfo.socialHandleStatus != ''">

						</if>
						<if test="tDispatchInfo.socialHandleStatus == null or tDispatchInfo.socialHandleStatus == ''">
							and (( a.type = '0' AND b.HANDLE_STATUS in ('0','4')) or ( a.type ='1'  AND b.HANDLE_STATUS in ('1','5')  and b.REDUCE_CAN = '1'))
							and a.SOCIAL_HANDLE_STATUS in ('0','4')
						</if>
					</if>
					/* 公积金办理*/
					<if test=" '1'.toString()==tDispatchInfo.typeSub.trim() ">
						and (( a.type = '0' AND c.HANDLE_STATUS = '0') or ( a.type ='1'  AND c.HANDLE_STATUS = '1' and c.REDUCE_CAN = '1'))
						and a.FUND_HANDLE_STATUS='0'
					</if>
				</if>
			</if>-->

			<if test="tDispatchInfo != null">
				<if test="tDispatchInfo.fundProvince != null and tDispatchInfo.fundProvince.trim() != ''">
					AND a.FUND_PROVINCE = #{tDispatchInfo.fundProvince}
				</if>
				<if test="tDispatchInfo.type != null and tDispatchInfo.type.trim() != ''">
					AND a.TYPE = #{tDispatchInfo.type}
				</if>
				<if test="tDispatchInfo.fundCity != null and tDispatchInfo.fundCity.trim() != ''">
					AND a.FUND_CITY = #{tDispatchInfo.fundCity}
				</if>
				<if test="tDispatchInfo.fundTown != null and tDispatchInfo.fundTown.trim() != ''">
					AND a.FUND_TOWN = #{tDispatchInfo.fundTown}
				</if>
				<if test="tDispatchInfo.empName != null and tDispatchInfo.empName.trim() != ''">
					AND a.EMP_NAME = #{tDispatchInfo.empName}
				</if>
				<if test="tDispatchInfo.empIdcard != null and tDispatchInfo.empIdcard.trim() != ''">
					AND a.EMP_IDCARD = #{tDispatchInfo.empIdcard}
				</if>
				<if test="tDispatchInfo.status != null and tDispatchInfo.status.trim() != ''">
					AND a.STATUS = #{tDispatchInfo.status}
				</if>

				<if test="tDispatchInfo.settleDomain != null and tDispatchInfo.settleDomain.trim() != ''">
					AND a.SETTLE_DOMAIN = #{tDispatchInfo.settleDomain}
				</if>

				<if test="tDispatchInfo.settleDomainCode != null and tDispatchInfo.settleDomainCode.trim() != ''">
					AND a.SETTLE_DOMAIN_CODE = #{tDispatchInfo.settleDomainCode}
				</if>

				<if test="tDispatchInfo.socialHandleStatus != null and tDispatchInfo.socialHandleStatus.trim() != ''">
					AND a.SOCIAL_HANDLE_STATUS = #{tDispatchInfo.socialHandleStatus}
				</if>

				<if test="tDispatchInfo.createName != null and tDispatchInfo.createName.trim() != ''">
					AND a.CREATE_NAME = #{tDispatchInfo.createName}
				</if>

				<if test="tDispatchInfo.settleDomainName != null and tDispatchInfo.settleDomainName.trim() != ''">
					AND a.SETTLE_DOMAIN_NAME like CONCAT(CONCAT(#{tDispatchInfo.settleDomainName}), '%')
				</if>
				<if test="tDispatchInfo.belongUnitName != null and tDispatchInfo.belongUnitName.trim() != ''">
					AND a.BELONG_UNIT_NAME = #{tDispatchInfo.belongUnitName}
				</if>
				<if test="tDispatchInfo.createTimeEnd != null">
					AND a.CREATE_TIME <![CDATA[<=]]> #{tDispatchInfo.createTimeEnd}
				</if>
				<if test="tDispatchInfo.createTimeStart != null">
					AND a.CREATE_TIME <![CDATA[>=]]> #{tDispatchInfo.createTimeStart}
				</if>
				<if test="tDispatchInfo.providentHouseholdName != null and tDispatchInfo.providentHouseholdName.trim() != ''">
					AND c.PROVIDENT_HOUSEHOLD_NAME like CONCAT(CONCAT(#{tDispatchInfo.providentHouseholdName}), '%')
				</if>

			</if>
			<if test='sql != null and sql != ""'>
				and <![CDATA[sql]]>
			</if>
			order by a.CREATE_TIME desc
		</where>
	</sql>

	<!-- 获取当日最大的编码 -->
	<select id="getMaxDispatchCode" resultType="java.lang.String">
		SELECT ifnull(max(right(e.APPLY_NO,4)),0) APPLY_NO FROM t_dispatch_info e where e.DELETE_FLAG = 0 and e.CREATE_TIME>DATE_FORMAT(now(),'%Y-%m-%d')
	</select>
</mapper>
