<?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.xxl.job.admin.dao.XxlJobLogDao"> <resultMap id="XxlJobLog" type="com.xxl.job.admin.core.model.XxlJobLog" > <result column="id" property="id" /> <result column="job_group" property="jobGroup" /> <result column="job_id" property="jobId" /> <result column="executor_address" property="executorAddress" /> <result column="executor_handler" property="executorHandler" /> <result column="executor_param" property="executorParam" /> <result column="executor_sharding_param" property="executorShardingParam" /> <result column="executor_fail_retry_count" property="executorFailRetryCount" /> <result column="trigger_time" property="triggerTime" /> <result column="trigger_code" property="triggerCode" /> <result column="trigger_msg" property="triggerMsg" /> <result column="handle_time" property="handleTime" /> <result column="handle_code" property="handleCode" /> <result column="handle_msg" property="handleMsg" /> <result column="alarm_status" property="alarmStatus" /> </resultMap> <sql id="Base_Column_List"> t.id, t.job_group, t.job_id, t.executor_address, t.executor_handler, t.executor_param, t.executor_sharding_param, t.executor_fail_retry_count, t.trigger_time, t.trigger_code, t.trigger_msg, t.handle_time, t.handle_code, t.handle_msg, t.alarm_status </sql> <select id="pageList" resultMap="XxlJobLog"> SELECT <include refid="Base_Column_List" /> FROM "XXLJOB"."XXL_JOB_LOG" AS t <trim prefix="WHERE" prefixOverrides="AND | OR" > <if test="jobId==0 and jobGroup gt 0"> AND t.job_group = #{jobGroup} </if> <if test="jobId gt 0"> AND t.job_id = #{jobId} </if> <if test="triggerTimeStart != null"> AND t.trigger_time <![CDATA[ >= ]]> #{triggerTimeStart} </if> <if test="triggerTimeEnd != null"> AND t.trigger_time <![CDATA[ <= ]]> #{triggerTimeEnd} </if> <if test="logStatus == 1" > AND t.handle_code = 200 </if> <if test="logStatus == 2" > AND ( t.trigger_code NOT IN (0, 200) OR t.handle_code NOT IN (0, 200) ) </if> <if test="logStatus == 3" > AND t.trigger_code = 200 AND t.handle_code = 0 </if> </trim> ORDER BY t.trigger_time DESC LIMIT #{offset}, #{pagesize} </select> <select id="pageListCount" resultType="int"> SELECT count(1) FROM "XXLJOB"."XXL_JOB_LOG" AS t <trim prefix="WHERE" prefixOverrides="AND | OR" > <if test="jobId==0 and jobGroup gt 0"> AND t.job_group = #{jobGroup} </if> <if test="jobId gt 0"> AND t.job_id = #{jobId} </if> <if test="triggerTimeStart != null"> AND t.trigger_time <![CDATA[ >= ]]> #{triggerTimeStart} </if> <if test="triggerTimeEnd != null"> AND t.trigger_time <![CDATA[ <= ]]> #{triggerTimeEnd} </if> <if test="logStatus == 1" > AND t.handle_code = 200 </if> <if test="logStatus == 2" > AND ( t.trigger_code NOT IN (0, 200) OR t.handle_code NOT IN (0, 200) ) </if> <if test="logStatus == 3" > AND t.trigger_code = 200 AND t.handle_code = 0 </if> </trim> </select> <select id="load" parameterType="java.lang.Long" resultMap="XxlJobLog"> SELECT <include refid="Base_Column_List" /> FROM "XXLJOB"."XXL_JOB_LOG" AS t WHERE t.id = #{id} </select> <insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobLog" useGeneratedKeys="true" keyProperty="id" > INSERT INTO "XXLJOB"."XXL_JOB_LOG" ( job_group, job_id, trigger_time, trigger_code, handle_code ) VALUES ( #{jobGroup}, #{jobId}, #{triggerTime}, #{triggerCode}, #{handleCode} ); <!--<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id"> SELECT LAST_INSERT_ID() </selectKey>--> </insert> <update id="updateTriggerInfo" > UPDATE "XXLJOB"."XXL_JOB_LOG" SET trigger_time= #{triggerTime}, trigger_code= #{triggerCode}, trigger_msg= #{triggerMsg}, executor_address= #{executorAddress}, executor_handler=#{executorHandler}, executor_param= #{executorParam}, executor_sharding_param= #{executorShardingParam}, executor_fail_retry_count= #{executorFailRetryCount} WHERE id= #{id} </update> <update id="updateHandleInfo"> UPDATE "XXLJOB"."XXL_JOB_LOG" SET handle_time= #{handleTime}, handle_code= #{handleCode}, handle_msg= #{handleMsg} WHERE id= #{id} </update> <delete id="delete" > delete from "XXLJOB"."XXL_JOB_LOG" WHERE job_id = #{jobId} </delete> <!--<select id="triggerCountByDay" resultType="java.util.Map" > SELECT DATE_FORMAT(trigger_time,'%Y-%m-%d') triggerDay, COUNT(handle_code) triggerDayCount, SUM(CASE WHEN (trigger_code in (0, 200) and handle_code = 0) then 1 else 0 end) as triggerDayCountRunning, SUM(CASE WHEN handle_code = 200 then 1 else 0 end) as triggerDayCountSuc FROM "XXLJOB"."XXL_JOB_LOG" WHERE trigger_time BETWEEN #{from} and #{to} GROUP BY triggerDay ORDER BY triggerDay </select>--> <select id="findLogReport" resultType="java.util.Map" > SELECT COUNT(handle_code) triggerDayCount, SUM(CASE WHEN (trigger_code in (0, 200) and handle_code = 0) then 1 else 0 end) as triggerDayCountRunning, SUM(CASE WHEN handle_code = 200 then 1 else 0 end) as triggerDayCountSuc FROM "XXLJOB"."XXL_JOB_LOG" WHERE trigger_time BETWEEN #{from} and #{to} </select> <select id="findClearLogIds" resultType="long" > SELECT id FROM "XXLJOB"."XXL_JOB_LOG" <trim prefix="WHERE" prefixOverrides="AND | OR" > <if test="jobGroup gt 0"> AND job_group = #{jobGroup} </if> <if test="jobId gt 0"> AND job_id = #{jobId} </if> <if test="clearBeforeTime != null"> AND trigger_time <![CDATA[ <= ]]> #{clearBeforeTime} </if> <if test="clearBeforeNum gt 0"> AND id NOT in( SELECT id FROM( SELECT id FROM "XXLJOB"."XXL_JOB_LOG" AS t <trim prefix="WHERE" prefixOverrides="AND | OR" > <if test="jobGroup gt 0"> AND t.job_group = #{jobGroup} </if> <if test="jobId gt 0"> AND t.job_id = #{jobId} </if> </trim> ORDER BY t.trigger_time desc LIMIT 0, #{clearBeforeNum} ) t1 ) </if> </trim> order by id asc LIMIT #{pagesize} </select> <delete id="clearLog" > delete from "XXLJOB"."XXL_JOB_LOG" WHERE id in <foreach collection="logIds" item="item" open="(" close=")" separator="," > #{item} </foreach> </delete> <!-- MySQL中 WHERE 第一个条件为 !( (trigger_code in (0, 200) and handle_code = 0) OR (handle_code = 200) ) --> <select id="findFailJobLogIds" resultType="long" > SELECT id FROM "XXLJOB"."XXL_JOB_LOG" <!-- WHERE !( (trigger_code in (0, 200) and handle_code = 0) OR (handle_code = 200) ) --> WHERE ( (trigger_code not in (0, 200) OR handle_code != 0) AND (handle_code != 200) ) AND alarm_status = 0 ORDER BY id ASC LIMIT #{pagesize} </select> <update id="updateAlarmStatus" > UPDATE "XXLJOB"."XXL_JOB_LOG" SET alarm_status = #{newAlarmStatus} WHERE id= #{logId} AND alarm_status = #{oldAlarmStatus} </update> <select id="findLostJobIds" resultType="long" > SELECT t.id FROM "XXLJOB"."XXL_JOB_LOG" t LEFT JOIN "XXLJOB"."XXL_JOB_REGISTRY" t2 ON t.executor_address = t2.registry_value WHERE t.trigger_code = 200 AND t.handle_code = 0 AND t.trigger_time <![CDATA[ <= ]]> #{losedTime} AND t2.id IS NULL; </select> <!-- SELECT t.id FROM "XXLJOB"."XXL_JOB_LOG" AS t WHERE t.trigger_code = 200 and t.handle_code = 0 and t.trigger_time <![CDATA[ <= ]]> #{losedTime} and t.executor_address not in ( SELECT t2.registry_value FROM xxl_job_registry AS t2 ) --> </mapper>