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

	<resultMap id="tSocialDeadlineInfoMap" type="com.yifu.cloud.plus.v1.yifu.social.entity.TSocialDeadlineInfo">
		<id property="id" column="ID"/>
		<result property="month" column="MONTH"/>
		<result property="province" column="PROVINCE"/>
		<result property="city" column="CITY"/>
		<result property="town" column="TOWN"/>
		<result property="socialEndDate" column="SOCIAL_END_DATE"/>
		<result property="medicalEndDate" column="MEDICAL_END_DATE"/>
		<result property="createBy" column="CREATE_BY"/>
		<result property="createName" column="CREATE_NAME"/>
		<result property="createTime" column="CREATE_TIME"/>
		<result property="updateBy" column="UPDATE_BY"/>
		<result property="updateName" column="UPDATE_NAME"/>
		<result property="updateTime" column="UPDATE_TIME"/>
		<result property="status" column="STATUS"/>
		<result property="type" column="TYPE"/>
		<result property="socialStartDate" column="SOCIAL_START_DATE"/>
		<result property="medicalStartDate" column="MEDICAL_START_DATE"/>
		<result property="socialStartDateReduce" column="SOCIAL_START_DATE_REDUCE"/>
		<result property="medicalStartDateReduce" column="MEDICAL_START_DATE_REDUCE"/>
		<result property="socialEndDateReduce" column="SOCIAL_END_DATE_REDUCE"/>
		<result property="medicalEndDateReduce" column="MEDICAL_END_DATE_REDUCE"/>
		<result property="socialPreReduceStartDate" column="SOCIAL_PRE_REDUCE_START_DATE"/>
		<result property="socialPreReduceEndDate" column="SOCIAL_PRE_REDUCE_END_DATE"/>
	</resultMap>
	<sql id="Base_Column_List">
		a.ID,
                a.MONTH,
                a.PROVINCE,
                a.CITY,
                a.TOWN,
                a.SOCIAL_END_DATE,
                a.MEDICAL_END_DATE,
                a.CREATE_BY,
                a.CREATE_NAME,
                a.CREATE_TIME,
                a.UPDATE_BY,
                a.UPDATE_NAME,
                a.UPDATE_TIME,
                a.STATUS,a.TYPE,
                a.SOCIAL_START_DATE,a.MEDICAL_START_DATE,
				a.SOCIAL_START_DATE_REDUCE,
				a.MEDICAL_START_DATE_REDUCE,
				a.SOCIAL_END_DATE_REDUCE,
				a.MEDICAL_END_DATE_REDUCE,
				a.SOCIAL_PRE_REDUCE_START_DATE,
				a.SOCIAL_PRE_REDUCE_END_DATE
	</sql>
	<sql id="tSocialDeadlineInfo_where">
		<if test="tSocialDeadlineInfo != null">
			<if test="tSocialDeadlineInfo.id != null and tSocialDeadlineInfo.id.trim() != ''">
				AND a.ID = #{tSocialDeadlineInfo.id}
			</if>
			<if test="tSocialDeadlineInfo.month != null and tSocialDeadlineInfo.month.trim() != ''">
				AND a.MONTH = #{tSocialDeadlineInfo.month}
			</if>
			<if test="tSocialDeadlineInfo.province != null and tSocialDeadlineInfo.province.trim() != ''">
				AND a.PROVINCE = #{tSocialDeadlineInfo.province}
			</if>
			<if test="tSocialDeadlineInfo.city != null and tSocialDeadlineInfo.city.trim() != ''">
				AND a.CITY = #{tSocialDeadlineInfo.city}
			</if>
			<if test="tSocialDeadlineInfo.town != null and tSocialDeadlineInfo.town.trim() != ''">
				AND a.TOWN = #{tSocialDeadlineInfo.town}
			</if>
			<if test="tSocialDeadlineInfo.socialEndDate != null">
				AND a.SOCIAL_END_DATE = #{tSocialDeadlineInfo.socialEndDate}
			</if>
			<if test="tSocialDeadlineInfo.medicalEndDate != null">
				AND a.MEDICAL_END_DATE = #{tSocialDeadlineInfo.medicalEndDate}
			</if>
			<if test="tSocialDeadlineInfo.createBy != null and tSocialDeadlineInfo.createBy.trim() != ''">
				AND a.CREATE_BY = #{tSocialDeadlineInfo.createBy}
			</if>
			<if test="tSocialDeadlineInfo.createName != null and tSocialDeadlineInfo.createName.trim() != ''">
				AND a.CREATE_NAME = #{tSocialDeadlineInfo.createName}
			</if>
			<if test="tSocialDeadlineInfo.createTime != null">
				AND a.CREATE_TIME = #{tSocialDeadlineInfo.createTime}
			</if>
			<if test="tSocialDeadlineInfo.updateBy != null and tSocialDeadlineInfo.updateBy.trim() != ''">
				AND a.UPDATE_BY = #{tSocialDeadlineInfo.updateBy}
			</if>
			<if test="tSocialDeadlineInfo.updateName != null and tSocialDeadlineInfo.updateName.trim() != ''">
				AND a.UPDATE_NAME = #{tSocialDeadlineInfo.updateName}
			</if>
			<if test="tSocialDeadlineInfo.updateTime != null">
				AND a.UPDATE_TIME = #{tSocialDeadlineInfo.updateTime}
			</if>
			<if test="tSocialDeadlineInfo.updateTimeStart != null">
				AND a.UPDATE_TIME >= #{tSocialDeadlineInfo.updateTimeStart}
			</if>
			<if test="tSocialDeadlineInfo.updateTimeEnd != null">
				AND a.UPDATE_TIME <![CDATA[ <= ]]> #{tSocialDeadlineInfo.updateTimeEnd}
			</if>
			<if test="tSocialDeadlineInfo.status != null and tSocialDeadlineInfo.status.trim() != ''">
				AND a.STATUS = #{tSocialDeadlineInfo.status}
			</if>
			<if test="tSocialDeadlineInfo.monthEnd != 0">
				AND a.MONTH <![CDATA[<=]]> #{tSocialDeadlineInfo.monthEnd}
			</if>
			<if test="tSocialDeadlineInfo.monthStart != 0">
				AND a.MONTH <![CDATA[>=]]> #{tSocialDeadlineInfo.monthStart}
			</if>
			<if test="tSocialDeadlineInfo.type != null and tSocialDeadlineInfo.type.trim() != ''">
				AND a.TYPE = #{tSocialDeadlineInfo.type}
			</if>
		</if>
	</sql>
	<!--tSocialDeadlineInfo简单分页查询-->
	<select id="getTSocialDeadlineInfoPage" resultMap="tSocialDeadlineInfoMap">
		SELECT
		<include refid="Base_Column_List"/>
		FROM t_social_deadline_info a
		<where>
			1=1
			<include refid="tSocialDeadlineInfo_where"/>
		</where>
		order by a.month DESC
		         ,a.id desc
	</select>

	<!-- 导出查条数 -->
	<select id="getTSocialDeadlineInfoExportCount" resultType="java.lang.Integer">
		SELECT
		count(1)
		FROM t_social_deadline_info a
		<where>
			1=1
			<include refid="tSocialDeadlineInfo_where"/>
			<if test="tSocialDeadlineInfo != null">
				<if test="tSocialDeadlineInfo.idList != null">
					AND a.id in
					<foreach item="idStr" index="index" collection="tSocialDeadlineInfo.idList" open="(" separator="," close=")">
						#{idStr}
					</foreach>
				</if>
			</if>
		</where>
	</select>

	<!-- 导出数据 -->
	<select id="getTSocialDeadlineInfoListExport" resultType="com.yifu.cloud.plus.v1.yifu.social.vo.TSocialDeadlineInfoExport">
		SELECT
			a.MONTH month,
			concat(ifnull(sp.AREA_NAME,'')
			,if(sc.AREA_NAME is not null,concat('/',sc.AREA_NAME),'')
			,if(st.AREA_NAME is not null,concat('/',st.AREA_NAME),'')
			) provinceCityTown,
			DATE_FORMAT(a.SOCIAL_START_DATE,'%Y-%m-%d %H:%i') socialStartDate,
			DATE_FORMAT(a.SOCIAL_END_DATE,'%Y-%m-%d %H:%i') socialEndDate,
			DATE_FORMAT(a.SOCIAL_START_DATE_REDUCE,'%Y-%m-%d %H:%i') socialStartDateReduce,
			DATE_FORMAT(a.SOCIAL_END_DATE_REDUCE,'%Y-%m-%d %H:%i') socialEndDateReduce,
			DATE_FORMAT(a.SOCIAL_PRE_REDUCE_START_DATE,'%Y-%m-%d %H:%i') socialPreReduceStartDate,
			DATE_FORMAT(a.SOCIAL_PRE_REDUCE_END_DATE,'%Y-%m-%d %H:%i') socialPreReduceEndDate,
			DATE_FORMAT(a.MEDICAL_START_DATE,'%Y-%m-%d %H:%i') medicalStartDate,
			DATE_FORMAT(a.MEDICAL_END_DATE,'%Y-%m-%d %H:%i') medicalEndDate,
			DATE_FORMAT(a.MEDICAL_START_DATE_REDUCE,'%Y-%m-%d %H:%i') medicalStartDateReduce,
			DATE_FORMAT(a.MEDICAL_END_DATE_REDUCE,'%Y-%m-%d %H:%i') medicalEndDateReduce,
			a.UPDATE_NAME updateName,
			DATE_FORMAT(a.UPDATE_TIME,'%Y-%m-%d %H:%i:%s') updateTime,
			if(a.TYPE='0','非基础配置','基础配置') type,
			if(a.status='0','启用','禁用') status
		FROM t_social_deadline_info a
		left join sys_area sp on sp.id = a.PROVINCE
		left join sys_area sc on sc.id = a.CITY
		left join sys_area st on st.id = a.TOWN
		<where>
			1=1
			<include refid="tSocialDeadlineInfo_where"/>
			<if test="tSocialDeadlineInfo != null">
				<if test="tSocialDeadlineInfo.idList != null">
					AND a.id in
					<foreach item="idStr" index="index" collection="tSocialDeadlineInfo.idList" open="(" separator="," close=")">
						#{idStr}
					</foreach>
				</if>
			</if>
		</where>
		order by a.month DESC,a.id desc
		<if test="tSocialDeadlineInfo != null">
			<if test="tSocialDeadlineInfo.limitStart != null">
				limit #{tSocialDeadlineInfo.limitStart},#{tSocialDeadlineInfo.limitEnd}
			</if>
		</if>
	</select>

</mapper>
