<?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.beiyin.localMapper.LocalTranLogMapper">
    <!-- 记录本地应用库交易日志 -->
    <insert id="insertTranlog" parameterType="com.beiyin.pojo.Tranlog">
        insert into tranlog (tranlog_date,tranlog_branchid,tranlog_branchseq,tranlog_trancfgid,
        tranlog_strtime,tranlog_endtime,tranlog_tmcost,tranlog_success,tranlog_note,tranlog_fld1)
        values (#{tranlog_date},#{tranlog_branchid},#{tranlog_branchseq},#{tranlog_trancfgid},
        #{tranlog_strtime},#{tranlog_endtime},#{tranlog_tmcost},#{tranlog_success},#{tranlog_note},#{tranlog_fld1})
    </insert>
    <!-- 记录本地应用库历史交易日志 -->
    <insert id="insertTranlogHistory">
	    insert into tranlog_history select * from tranlog where tranlog_strtime &lt; #{tranlog_strtime} limit #{num_count}
    </insert>
    <!-- 插入历史日志表tranlog_history时删除tranlog,防止tranlog表过大 -->
    <insert id="deleteTranlog">
	    delete from tranlog where tranlog_strtime &lt; #{tranlog_strtime} limit #{num_count}
    </insert>
    <!-- 按条件统计交易日志表tranlog数量 -->
    <select id="countTranlog" parameterType="com.beiyin.pojo.Tranlog" resultType="java.lang.Long">
	    select count(tranlog_branchid) from tranlog where 1=1
        <if test="tranlog_strtime != null">
           and tranlog_strtime &lt; #{tranlog_strtime}
        </if>
    	<if test="tranlog_trancfgid != null and tranlog_trancfgid !=''">
           and tranlog_trancfgid = #{tranlog_trancfgid} 
        </if>
         <if test="tranlog_fld1 != null and tranlog_fld1 !=''">
           and tranlog_fld1 = #{tranlog_fld1} 
        </if>
    </select>
    <!-- 通过tranlog表统计不同业务的耗时情况 -->
    <select id="tranlogCostTimeCount" resultType="com.beiyin.pojo.TranlogCount" parameterType="java.lang.String">
    	SELECT
			tranlog_trancfgid as trancfg_type,
			sum(tranlog_tmcost) as total_cost,
			avg(tranlog_tmcost) as avg_cost,
			max(tranlog_tmcost) as max_cost,
			count(1) as num
		FROM
			tranlog
		where tranlog_fld1 = #{tranlog_fld1}
		GROUP BY
			tranlog_trancfgid
    </select>
     <!-- 页面折线图统计 -->
    <select id="findTmcostByTrancfgid" resultType="java.lang.Integer" parameterType="java.lang.String">
    	select tranlog_tmcost from tranlog where tranlog_trancfgid = #{tranlog_trancfgid} and tranlog_fld1 = #{process_id} order by tranlog_strtime asc;
    </select>
    <!-- 页面折线图统计 -->
    <select id="findTmcostCountByTrancfgid" resultType="com.beiyin.pojo.TranLogStatsDTO" parameterType="java.lang.String">
    	select tranlog_tmcost tmcost, count(1) countNum from tranlog where tranlog_trancfgid = #{tranlog_trancfgid} and tranlog_fld1 = #{process_id} group by tranlog_tmcost order by tranlog_tmcost asc;
    </select>
    <!-- 页面折线图统计 -->
    <select id="findMinAndMaxTimeByTrancfgid" resultType="com.beiyin.pojo.TranlogTimeGapDTO" parameterType="java.lang.String">
        SELECT MIN(tranlog_strtime) minTime, MAX(tranlog_strtime) maxTime from tranlog where tranlog_trancfgid = #{tranlog_trancfgid};
    </select>
    <!-- 页面折线图统计 -->
    <select id="findTmcostWithSpaceByTrancfgid" resultType="java.lang.Integer">
    	select tranlog_tmcost from tranlog where tranlog_trancfgid = #{tranlog_trancfgid} and SUBSTRING(UNIX_TIMESTAMP(tranlog_strtime),1) = #{unixStartTime} LIMIT 1;
    </select>
    <!-- 页面折线图统计 -->
    <select id="findTmcostWithFilterByTrancfgid" resultType="com.beiyin.pojo.TranlogWithOrderDTO">
    	select tranlog_strtime unixStrTime, tranlog_tmcost tmcost from tranlog where tranlog_trancfgid = #{tranlog_trancfgid} and tranlog_fld1 = #{process_id} and SUBSTRING(tranlog_strtime,#{index}) = #{unixStartTime} order by tranlog_strtime asc;
    </select>
</mapper>