<?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="com.yonge.cooleshow.biz.dal.dao.ContractTemplateDao">

	<resultMap type="com.yonge.cooleshow.biz.dal.entity.ContractTemplate"
		id="BaseResultMap">
		<result column="id_" property="id" />
		<result column="source_" property="source" />
		<result column="type_" property="type" />
		<result column="name_" property="name" />
		<result column="contract_template_content_" property="contractTemplateContent" />
		<result column="origanal_file_url_" property="origanalFileUrl" />
		<result column="contract_no_" property="contractNo" />
		<result column="status_" property="status" />
		<result column="version_" property="version" />
		<result column="modify_by_" property="modifyBy" />
		<result column="update_time_" property="updateTime" />
		<result column="create_time_" property="createTime" />
		<result column="owner_" property="owner" />
	</resultMap>

	<resultMap type="com.yonge.cooleshow.biz.dal.dto.ContractTemplateDto"
		id="ContractTemplateDto">
		<result column="latest_operator_" property="latestOperator" />
	</resultMap>

	<!-- 根据主键查询一条记录 -->
	<select id="get" resultMap="BaseResultMap">
		SELECT * FROM contract_template WHERE id_ = #{id}
	</select>

	<!-- 全查询 -->
	<select id="findAll" resultMap="BaseResultMap">
		SELECT * FROM contract_template ORDER BY id_
	</select>

	<!-- 向数据库增加一条记录 -->
	<insert id="insert" parameterType="com.yonge.cooleshow.biz.dal.entity.ContractTemplate"
		useGeneratedKeys="true" keyColumn="id" keyProperty="id">
		INSERT INTO
		contract_template
		(id_,source_,name_,type_,contract_template_content_,origanal_file_url_,contract_no_,status_,version_,modify_by_,update_time_,create_time_,owner_)
		VALUES(#{id},#{source},#{name},#{type},#{contractTemplateContent},#{origanalFileUrl},#{contractNo},#{status},#{version},#{modifyBy},#{updateTime},#{createTime},#{owner})
	</insert>

	<!-- 根据主键查询一条记录 -->
	<update id="update" parameterType="com.yonge.cooleshow.biz.dal.entity.ContractTemplate">
		UPDATE contract_template
		<set>
			<if test="contractTemplateContent != null">
				contract_template_content_ = #{contractTemplateContent},
			</if>
			<if test="status != null">
				status_ = #{status},
			</if>
			<if test="origanalFileUrl != null">
				origanal_file_url_ = #{origanalFileUrl},
			</if>
			<if test="id != null">
				id_ = #{id},
			</if>
			<if test="owner != null">
				owner_ = #{owner},
			</if>
			<if test="updateTime != null">
				update_time_ = #{updateTime},
			</if>
			<if test="version != null">
				version_ = #{version},
			</if>
			<if test="modifyBy != null">
				modify_by_ = #{modifyBy},
			</if>
			<if test="type != null">
				type_ = #{type},
			</if>
			<if test="source != null">
				source_ = #{source},
			</if>
			<if test="contractNo != null">
				contract_no_ = #{contractNo},
			</if>
			<if test="name != null">
				name_ = #{name},
			</if>
			<if test="createTime != null">
				create_time_ = #{createTime},
			</if>
		</set>
		WHERE id_ = #{id}
	</update>

	<!-- 根据主键删除一条记录 -->
	<delete id="delete">
		DELETE FROM contract_template WHERE id_ = #{id}
	</delete>

	<!-- 分页查询 -->
	<select id="queryPage" resultMap="BaseResultMap" parameterType="map">
		SELECT tct.*,ifnull(u.real_name_,u.username_) latest_operator_ FROM contract_template tct left join sys_user u on tct.modify_by_ = u.id_
		<where>
			<if test="status != null">
				and tct.status_ = #{status}
			</if>
			<if test="source != null">
				and tct.source_ = #{source}
			</if>
			<if test="type != null">
				and tct.type_ = #{type}
			</if>
			<if test="owner != null">
				and tct.owner_ = #{owner}
			</if>
		</where>
		ORDER BY id_
		<include refid="global.limit" />
	</select>

	<!-- 分页查询 -->
	<select id="queryPageList" resultMap="ContractTemplateDto" parameterType="map">
		SELECT
		       tct.*,ifnull(u.real_name_,u.username_) latest_operator_
		FROM contract_template tct
		left join sys_user u on tct.modify_by_ = u.id_
		<where>
			<if test="status != null">
				and tct.status_ = #{status}
			</if>
			<if test="source != null">
				and tct.source_ = #{source}
			</if>
			<if test="type != null">
				and tct.type_ = #{type}
			</if>
			<if test="owner != null">
				and tct.owner_ = #{owner}
			</if>
		</where>
		ORDER BY id_
		<include refid="global.limit" />
	</select>


	<!-- 查询当前表的总记录数 -->
	<select id="queryCount" resultType="int">
		SELECT COUNT(tct.id_) FROM contract_template tct
		<where>
			tct.source_ = 'PLATFORM'
			<if test="status != null">
				and tct.status_ = #{status}
			</if>
			<if test="source != null">
				and tct.source_ = #{source}
			</if>
			<if test="type != null">
				and tct.type_ = #{type}
			</if>
			<if test="owner != null">
				and tct.owner_ = #{owner}
			</if>
		</where>
	</select>

	<select id="queryMaxVersion" resultType="java.lang.Integer">
		SELECT max(a.version_) FROM contract_template a
		where a.source_ = #{contractSource} and a.type_ = #{type}
	</select>

	<select id="queryLatestContractTemplate" resultMap="BaseResultMap">
		SELECT a.* FROM (
			select
				source_,type_,MAX(version_) as version_
			from contract_template where status_ = 1 and source_ = #{contractSource} and type_ = #{type}
			group by source_ ,type_
		) t
		left join contract_template a on t.source_ =a.source_ and t.type_ = a.type_ and t.version_ = a.version_
		where a.source_ = #{contractSource} and a.type_ = #{type}
	</select>

	<update id="disableContract">
		update contract_template set status_ = 0 where status_ = 1 and source_ = 'PLATFORM'
			and type_ = #{type}
	</update>

</mapper>
