refactor(xxl): 重构代码 mapper.xml 支持达梦数据库

This commit is contained in:
冷冷 committed 2024-11-22 11:35:39 +08:00
1 parent 075cda636a
commit 9dd236e068
7 files changed
+294 -311

No files matched your search

+6 -1
View File
@@ -59,7 +59,7 @@
<artifactId>spring-boot-starter-mail</artifactId> <artifactId>spring-boot-starter-mail</artifactId>
</dependency> </dependency>
<!-- mybatis-starter:mybatis + mybatis-spring + hikari(default) --> <!-- mybatis-starter:mybatis + mybatis-spring + druid(default) -->
<dependency> <dependency>
<groupId>org.mybatis.spring.boot</groupId> <groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId> <artifactId>mybatis-spring-boot-starter</artifactId>
@@ -76,6 +76,11 @@
<artifactId>mysql-connector-j</artifactId> <artifactId>mysql-connector-j</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.dameng</groupId>
<artifactId>DmJdbcDriver18</artifactId>
</dependency>
<!-- xxl-job-core --> <!-- xxl-job-core -->
<dependency> <dependency>
<groupId>com.xuxueli</groupId> <groupId>com.xuxueli</groupId>
@@ -2,13 +2,11 @@ package com.xxl.job.admin.core.thread;
import com.xxl.job.admin.core.conf.XxlJobAdminConfig; import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
import com.xxl.job.admin.core.model.XxlJobLogReport; import com.xxl.job.admin.core.model.XxlJobLogReport;
import lombok.Getter;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.util.Calendar; import java.util.*;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
/** /**
@@ -16,155 +14,144 @@ import java.util.concurrent.TimeUnit;
* *
* @author xuxueli 2019-11-22 * @author xuxueli 2019-11-22
*/ */
public class JobLogReportHelper { public class JobLogReportHelper {
private static Logger logger = LoggerFactory.getLogger(JobLogReportHelper.class); private static Logger logger = LoggerFactory.getLogger(JobLogReportHelper.class);
private static JobLogReportHelper instance = new JobLogReportHelper(); @Getter
private static JobLogReportHelper instance = new JobLogReportHelper();
public static JobLogReportHelper getInstance() { private Thread logrThread;
return instance;
}
private Thread logrThread; private volatile boolean toStop = false;
private volatile boolean toStop = false; public void start() {
logrThread = new Thread(new Runnable() {
public void start() { @Override
logrThread = new Thread(new Runnable() { public void run() {
@Override // last clean log time
public void run() { long lastCleanLogTime = 0;
// last clean log time while (!toStop) {
long lastCleanLogTime = 0;
while (!toStop) { // 1、log-report refresh: refresh log report in 3 days
try {
// 1、log-report refresh: refresh log report in 3 days for (int i = 0; i < 3; i++) {
try {
for (int i = 0; i < 3; i++) { // today
Calendar itemDay = Calendar.getInstance();
itemDay.add(Calendar.DAY_OF_MONTH, -i);
itemDay.set(Calendar.HOUR_OF_DAY, 0);
itemDay.set(Calendar.MINUTE, 0);
itemDay.set(Calendar.SECOND, 0);
itemDay.set(Calendar.MILLISECOND, 0);
// today Date todayFrom = itemDay.getTime();
Calendar itemDay = Calendar.getInstance();
itemDay.add(Calendar.DAY_OF_MONTH, -i);
itemDay.set(Calendar.HOUR_OF_DAY, 0);
itemDay.set(Calendar.MINUTE, 0);
itemDay.set(Calendar.SECOND, 0);
itemDay.set(Calendar.MILLISECOND, 0);
Date todayFrom = itemDay.getTime(); itemDay.set(Calendar.HOUR_OF_DAY, 23);
itemDay.set(Calendar.MINUTE, 59);
itemDay.set(Calendar.SECOND, 59);
itemDay.set(Calendar.MILLISECOND, 999);
itemDay.set(Calendar.HOUR_OF_DAY, 23); Date todayTo = itemDay.getTime();
itemDay.set(Calendar.MINUTE, 59);
itemDay.set(Calendar.SECOND, 59);
itemDay.set(Calendar.MILLISECOND, 999);
Date todayTo = itemDay.getTime(); // refresh log-report every minute
XxlJobLogReport xxlJobLogReport = new XxlJobLogReport();
xxlJobLogReport.setTriggerDay(todayFrom);
xxlJobLogReport.setRunningCount(0);
xxlJobLogReport.setSucCount(0);
xxlJobLogReport.setFailCount(0);
// refresh log-report every minute Map<String, Object> triggerCountMap = XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao()
XxlJobLogReport xxlJobLogReport = new XxlJobLogReport(); .findLogReport(todayFrom, todayTo);
xxlJobLogReport.setTriggerDay(todayFrom); if (triggerCountMap != null && !triggerCountMap.isEmpty()) {
xxlJobLogReport.setRunningCount(0); Map<String, Object> lowerTriggerCountMap = new HashMap<>(triggerCountMap.size());
xxlJobLogReport.setSucCount(0); triggerCountMap.forEach((k, v) -> lowerTriggerCountMap.put(k.toLowerCase(Locale.ROOT), v));
xxlJobLogReport.setFailCount(0); int triggerDayCount = lowerTriggerCountMap.containsKey("triggerdaycount") ? Integer.parseInt(String.valueOf(lowerTriggerCountMap.get("triggerdaycount"))) : 0;
int triggerDayCountRunning = lowerTriggerCountMap.containsKey("triggerdaycountrunning") ? Integer.parseInt(String.valueOf(lowerTriggerCountMap.get("triggerdaycountrunning"))) : 0;
int triggerDayCountSuc = lowerTriggerCountMap.containsKey("triggerdaycountsuc") ? Integer.parseInt(String.valueOf(lowerTriggerCountMap.get("triggerdaycountsuc"))) : 0;
int triggerDayCountFail = triggerDayCount - triggerDayCountRunning - triggerDayCountSuc;
Map<String, Object> triggerCountMap = XxlJobAdminConfig.getAdminConfig() xxlJobLogReport.setRunningCount(triggerDayCountRunning);
.getXxlJobLogDao() xxlJobLogReport.setSucCount(triggerDayCountSuc);
.findLogReport(todayFrom, todayTo); xxlJobLogReport.setFailCount(triggerDayCountFail);
if (triggerCountMap != null && triggerCountMap.size() > 0) { }
int triggerDayCount = triggerCountMap.containsKey("triggerDayCount")
? Integer.valueOf(String.valueOf(triggerCountMap.get("triggerDayCount"))) : 0;
int triggerDayCountRunning = triggerCountMap.containsKey("triggerDayCountRunning")
? Integer.valueOf(String.valueOf(triggerCountMap.get("triggerDayCountRunning")))
: 0;
int triggerDayCountSuc = triggerCountMap.containsKey("triggerDayCountSuc")
? Integer.valueOf(String.valueOf(triggerCountMap.get("triggerDayCountSuc")))
: 0;
int triggerDayCountFail = triggerDayCount - triggerDayCountRunning - triggerDayCountSuc;
xxlJobLogReport.setRunningCount(triggerDayCountRunning); // do refresh
xxlJobLogReport.setSucCount(triggerDayCountSuc); int ret = XxlJobAdminConfig.getAdminConfig().getXxlJobLogReportDao()
xxlJobLogReport.setFailCount(triggerDayCountFail); .update(xxlJobLogReport);
} if (ret < 1) {
XxlJobAdminConfig.getAdminConfig().getXxlJobLogReportDao().save(xxlJobLogReport);
}
}
// do refresh } catch (Exception e) {
int ret = XxlJobAdminConfig.getAdminConfig() if (!toStop) {
.getXxlJobLogReportDao() logger.error(">>>>>>>>>>> xxl-job, job log report thread error:{}", e);
.update(xxlJobLogReport); }
if (ret < 1) { }
XxlJobAdminConfig.getAdminConfig().getXxlJobLogReportDao().save(xxlJobLogReport);
}
}
} // 2、log-clean: switch open & once each day
catch (Exception e) { if (XxlJobAdminConfig.getAdminConfig().getLogretentiondays() > 0
if (!toStop) { && System.currentTimeMillis() - lastCleanLogTime > 24 * 60 * 60 * 1000) {
logger.error(">>>>>>>>>>> xxl-job, job log report thread error:{}", e);
}
}
// 2、log-clean: switch open & once each day // expire-time
if (XxlJobAdminConfig.getAdminConfig().getLogretentiondays() > 0 Calendar expiredDay = Calendar.getInstance();
&& System.currentTimeMillis() - lastCleanLogTime > 24 * 60 * 60 * 1000) { expiredDay.add(Calendar.DAY_OF_MONTH,
-1 * XxlJobAdminConfig.getAdminConfig().getLogretentiondays());
expiredDay.set(Calendar.HOUR_OF_DAY, 0);
expiredDay.set(Calendar.MINUTE, 0);
expiredDay.set(Calendar.SECOND, 0);
expiredDay.set(Calendar.MILLISECOND, 0);
Date clearBeforeTime = expiredDay.getTime();
// expire-time // clean expired log
Calendar expiredDay = Calendar.getInstance(); List<Long> logIds = null;
expiredDay.add(Calendar.DAY_OF_MONTH, do {
-1 * XxlJobAdminConfig.getAdminConfig().getLogretentiondays()); logIds = XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().findClearLogIds(0, 0,
expiredDay.set(Calendar.HOUR_OF_DAY, 0); clearBeforeTime, 0, 1000);
expiredDay.set(Calendar.MINUTE, 0); if (logIds != null && !logIds.isEmpty()) {
expiredDay.set(Calendar.SECOND, 0); XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().clearLog(logIds);
expiredDay.set(Calendar.MILLISECOND, 0); }
Date clearBeforeTime = expiredDay.getTime(); }
while (logIds != null && !logIds.isEmpty());
// clean expired log // update clean time
List<Long> logIds = null; lastCleanLogTime = System.currentTimeMillis();
do { }
logIds = XxlJobAdminConfig.getAdminConfig()
.getXxlJobLogDao()
.findClearLogIds(0, 0, clearBeforeTime, 0, 1000);
if (logIds != null && logIds.size() > 0) {
XxlJobAdminConfig.getAdminConfig().getXxlJobLogDao().clearLog(logIds);
}
}
while (logIds != null && logIds.size() > 0);
// update clean time try {
lastCleanLogTime = System.currentTimeMillis(); TimeUnit.MINUTES.sleep(1);
} } catch (Exception e) {
if (!toStop) {
logger.error(e.getMessage(), e);
}
}
try { }
TimeUnit.MINUTES.sleep(1);
}
catch (Exception e) {
if (!toStop) {
logger.error(e.getMessage(), e);
}
}
} logger.info(">>>>>>>>>>> xxl-job, job log report thread stop");
logger.info(">>>>>>>>>>> xxl-job, job log report thread stop"); }
});
logrThread.setDaemon(true);
logrThread.setName("xxl-job, admin JobLogReportHelper");
logrThread.start();
}
} public void toStop() {
}); toStop = true;
logrThread.setDaemon(true); // interrupt and wait
logrThread.setName("xxl-job, admin JobLogReportHelper"); logrThread.interrupt();
logrThread.start(); try {
} logrThread.join();
} catch (InterruptedException e) {
public void toStop() { logger.error(e.getMessage(), e);
toStop = true; }
// interrupt and wait }
logrThread.interrupt();
try {
logrThread.join();
}
catch (InterruptedException e) {
logger.error(e.getMessage(), e);
}
}
} }
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xxl.job.admin.dao.XxlJobGroupDao"> <mapper namespace="com.xxl.job.admin.dao.XxlJobGroupDao">
<resultMap id="XxlJobGroup" type="com.xxl.job.admin.core.model.XxlJobGroup" > <resultMap id="XxlJobGroup" type="com.xxl.job.admin.core.model.XxlJobGroup" >
<result column="id" property="id" /> <result column="id" property="id" />
<result column="app_name" property="appname" /> <result column="app_name" property="appname" />
<result column="title" property="title" /> <result column="title" property="title" />
<result column="address_type" property="addressType" /> <result column="address_type" property="addressType" />
<result column="address_list" property="addressList" /> <result column="address_list" property="addressList" />
<result column="update_time" property="updateTime" /> <result column="update_time" property="updateTime" />
@@ -35,17 +35,17 @@
</select> </select>
<insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobGroup" useGeneratedKeys="true" keyProperty="id" > <insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobGroup" useGeneratedKeys="true" keyProperty="id" >
INSERT INTO xxl_job_group ( `app_name`, `title`, `address_type`, `address_list`, `update_time`) INSERT INTO xxl_job_group ( app_name, title, address_type, address_list, update_time)
values ( #{appname}, #{title}, #{addressType}, #{addressList}, #{updateTime} ); values ( #{appname}, #{title}, #{addressType}, #{addressList}, #{updateTime} );
</insert> </insert>
<update id="update" parameterType="com.xxl.job.admin.core.model.XxlJobGroup" > <update id="update" parameterType="com.xxl.job.admin.core.model.XxlJobGroup" >
UPDATE xxl_job_group UPDATE xxl_job_group
SET `app_name` = #{appname}, SET app_name = #{appname},
`title` = #{title}, title = #{title},
`address_type` = #{addressType}, address_type = #{addressType},
`address_list` = #{addressList}, address_list = #{addressList},
`update_time` = #{updateTime} update_time = #{updateTime}
WHERE id = #{id} WHERE id = #{id}
</update> </update>
@@ -88,4 +88,4 @@
</trim> </trim>
</select> </select>
</mapper> </mapper>
@@ -1,16 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xxl.job.admin.dao.XxlJobLogGlueDao"> <mapper namespace="com.xxl.job.admin.dao.XxlJobLogGlueDao">
<resultMap id="XxlJobLogGlue" type="com.xxl.job.admin.core.model.XxlJobLogGlue" > <resultMap id="XxlJobLogGlue" type="com.xxl.job.admin.core.model.XxlJobLogGlue" >
<result column="id" property="id" /> <result column="id" property="id" />
<result column="job_id" property="jobId" /> <result column="job_id" property="jobId" />
<result column="glue_type" property="glueType" /> <result column="glue_type" property="glueType" />
<result column="glue_source" property="glueSource" /> <result column="glue_source" property="glueSource" />
<result column="glue_remark" property="glueRemark" /> <result column="glue_remark" property="glueRemark" />
<result column="add_time" property="addTime" /> <result column="add_time" property="addTime" />
<result column="update_time" property="updateTime" /> <result column="update_time" property="updateTime" />
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
@@ -22,50 +22,50 @@
t.add_time, t.add_time,
t.update_time t.update_time
</sql> </sql>
<insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobLogGlue" useGeneratedKeys="true" keyProperty="id" > <insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobLogGlue" useGeneratedKeys="true" keyProperty="id" >
INSERT INTO xxl_job_logglue ( INSERT INTO xxl_job_logglue (
`job_id`, job_id,
`glue_type`, glue_type,
`glue_source`, glue_source,
`glue_remark`, glue_remark,
`add_time`, add_time,
`update_time` update_time
) VALUES ( ) VALUES (
#{jobId}, #{jobId},
#{glueType}, #{glueType},
#{glueSource}, #{glueSource},
#{glueRemark}, #{glueRemark},
#{addTime}, #{addTime},
#{updateTime} #{updateTime}
); );
<!--<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id"> <!--<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
SELECT LAST_INSERT_ID() SELECT LAST_INSERT_ID()
</selectKey>--> </selectKey>-->
</insert> </insert>
<select id="findByJobId" parameterType="java.lang.Integer" resultMap="XxlJobLogGlue"> <select id="findByJobId" parameterType="java.lang.Integer" resultMap="XxlJobLogGlue">
SELECT <include refid="Base_Column_List" /> SELECT <include refid="Base_Column_List" />
FROM xxl_job_logglue AS t FROM xxl_job_logglue AS t
WHERE t.job_id = #{jobId} WHERE t.job_id = #{jobId}
ORDER BY id DESC ORDER BY id DESC
</select> </select>
<delete id="removeOld" > <delete id="removeOld" >
DELETE FROM xxl_job_logglue DELETE FROM xxl_job_logglue
WHERE id NOT in( WHERE id NOT in(
SELECT id FROM( SELECT id FROM(
SELECT id FROM xxl_job_logglue SELECT id FROM xxl_job_logglue
WHERE `job_id` = #{jobId} WHERE job_id = #{jobId}
ORDER BY update_time desc ORDER BY update_time desc
LIMIT 0, #{limit} LIMIT 0, #{limit}
) t1 ) t1
) AND `job_id` = #{jobId} ) AND job_id = #{jobId}
</delete> </delete>
<delete id="deleteByJobId" parameterType="java.lang.Integer" > <delete id="deleteByJobId" parameterType="java.lang.Integer" >
DELETE FROM xxl_job_logglue DELETE FROM xxl_job_logglue
WHERE `job_id` = #{jobId} WHERE job_id = #{jobId}
</delete> </delete>
</mapper> </mapper>
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xxl.job.admin.dao.XxlJobLogDao"> <mapper namespace="com.xxl.job.admin.dao.XxlJobLogDao">
<resultMap id="XxlJobLog" type="com.xxl.job.admin.core.model.XxlJobLog" > <resultMap id="XxlJobLog" type="com.xxl.job.admin.core.model.XxlJobLog" >
<result column="id" property="id" /> <result column="id" property="id" />
@@ -11,17 +11,17 @@
<result column="executor_address" property="executorAddress" /> <result column="executor_address" property="executorAddress" />
<result column="executor_handler" property="executorHandler" /> <result column="executor_handler" property="executorHandler" />
<result column="executor_param" property="executorParam" /> <result column="executor_param" property="executorParam" />
<result column="executor_sharding_param" property="executorShardingParam" /> <result column="executor_sharding_param" property="executorShardingParam" />
<result column="executor_fail_retry_count" property="executorFailRetryCount" /> <result column="executor_fail_retry_count" property="executorFailRetryCount" />
<result column="trigger_time" property="triggerTime" /> <result column="trigger_time" property="triggerTime" />
<result column="trigger_code" property="triggerCode" /> <result column="trigger_code" property="triggerCode" />
<result column="trigger_msg" property="triggerMsg" /> <result column="trigger_msg" property="triggerMsg" />
<result column="handle_time" property="handleTime" /> <result column="handle_time" property="handleTime" />
<result column="handle_code" property="handleCode" /> <result column="handle_code" property="handleCode" />
<result column="handle_msg" property="handleMsg" /> <result column="handle_msg" property="handleMsg" />
<result column="alarm_status" property="alarmStatus" /> <result column="alarm_status" property="alarmStatus" />
</resultMap> </resultMap>
@@ -43,7 +43,7 @@
t.handle_msg, t.handle_msg,
t.alarm_status t.alarm_status
</sql> </sql>
<select id="pageList" resultMap="XxlJobLog"> <select id="pageList" resultMap="XxlJobLog">
SELECT <include refid="Base_Column_List" /> SELECT <include refid="Base_Column_List" />
FROM xxl_job_log AS t FROM xxl_job_log AS t
@@ -65,8 +65,8 @@
</if> </if>
<if test="logStatus == 2" > <if test="logStatus == 2" >
AND ( AND (
t.trigger_code NOT IN (0, 200) OR t.trigger_code NOT IN (0, 200) OR
t.handle_code NOT IN (0, 200) t.handle_code NOT IN (0, 200)
) )
</if> </if>
<if test="logStatus == 3" > <if test="logStatus == 3" >
@@ -77,7 +77,7 @@
ORDER BY t.trigger_time DESC ORDER BY t.trigger_time DESC
LIMIT #{offset}, #{pagesize} LIMIT #{offset}, #{pagesize}
</select> </select>
<select id="pageListCount" resultType="int"> <select id="pageListCount" resultType="int">
SELECT count(1) SELECT count(1)
FROM xxl_job_log AS t FROM xxl_job_log AS t
@@ -99,8 +99,8 @@
</if> </if>
<if test="logStatus == 2" > <if test="logStatus == 2" >
AND ( AND (
t.trigger_code NOT IN (0, 200) OR t.trigger_code NOT IN (0, 200) OR
t.handle_code NOT IN (0, 200) t.handle_code NOT IN (0, 200)
) )
</if> </if>
<if test="logStatus == 3" > <if test="logStatus == 3" >
@@ -109,81 +109,81 @@
</if> </if>
</trim> </trim>
</select> </select>
<select id="load" parameterType="java.lang.Long" resultMap="XxlJobLog"> <select id="load" parameterType="java.lang.Long" resultMap="XxlJobLog">
SELECT <include refid="Base_Column_List" /> SELECT <include refid="Base_Column_List" />
FROM xxl_job_log AS t FROM xxl_job_log AS t
WHERE t.id = #{id} WHERE t.id = #{id}
</select> </select>
<insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobLog" useGeneratedKeys="true" keyProperty="id" > <insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobLog" useGeneratedKeys="true" keyProperty="id" >
INSERT INTO xxl_job_log ( INSERT INTO xxl_job_log (
`job_group`, job_group,
`job_id`, job_id,
`trigger_time`, trigger_time,
`trigger_code`, trigger_code,
`handle_code` handle_code
) VALUES ( ) VALUES (
#{jobGroup}, #{jobGroup},
#{jobId}, #{jobId},
#{triggerTime}, #{triggerTime},
#{triggerCode}, #{triggerCode},
#{handleCode} #{handleCode}
); );
<!--<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id"> <!--<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
SELECT LAST_INSERT_ID() SELECT LAST_INSERT_ID()
</selectKey>--> </selectKey>-->
</insert> </insert>
<update id="updateTriggerInfo" > <update id="updateTriggerInfo" >
UPDATE xxl_job_log UPDATE xxl_job_log
SET SET
`trigger_time`= #{triggerTime}, trigger_time= #{triggerTime},
`trigger_code`= #{triggerCode}, trigger_code= #{triggerCode},
`trigger_msg`= #{triggerMsg}, trigger_msg= #{triggerMsg},
`executor_address`= #{executorAddress}, executor_address= #{executorAddress},
`executor_handler`=#{executorHandler}, executor_handler=#{executorHandler},
`executor_param`= #{executorParam}, executor_param= #{executorParam},
`executor_sharding_param`= #{executorShardingParam}, executor_sharding_param= #{executorShardingParam},
`executor_fail_retry_count`= #{executorFailRetryCount} executor_fail_retry_count= #{executorFailRetryCount}
WHERE `id`= #{id} WHERE id= #{id}
</update> </update>
<update id="updateHandleInfo"> <update id="updateHandleInfo">
UPDATE xxl_job_log UPDATE xxl_job_log
SET SET
`handle_time`= #{handleTime}, handle_time= #{handleTime},
`handle_code`= #{handleCode}, handle_code= #{handleCode},
`handle_msg`= #{handleMsg} handle_msg= #{handleMsg}
WHERE `id`= #{id} WHERE id= #{id}
</update> </update>
<delete id="delete" > <delete id="delete" >
delete from xxl_job_log delete from xxl_job_log
WHERE job_id = #{jobId} WHERE job_id = #{jobId}
</delete> </delete>
<!--<select id="triggerCountByDay" resultType="java.util.Map" > <!--<select id="triggerCountByDay" resultType="java.util.Map" >
SELECT SELECT
DATE_FORMAT(trigger_time,'%Y-%m-%d') triggerDay, DATE_FORMAT(trigger_time,'%Y-%m-%d') triggerDay,
COUNT(handle_code) triggerDayCount, 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 (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 SUM(CASE WHEN handle_code = 200 then 1 else 0 end) as triggerDayCountSuc
FROM xxl_job_log FROM xxl_job_log
WHERE trigger_time BETWEEN #{from} and #{to} WHERE trigger_time BETWEEN #{from} and #{to}
GROUP BY triggerDay GROUP BY triggerDay
ORDER BY triggerDay ORDER BY triggerDay
</select>--> </select>-->
<select id="findLogReport" resultType="java.util.Map" > <select id="findLogReport" resultType="java.util.Map" >
SELECT SELECT
COUNT(handle_code) triggerDayCount, 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 (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 SUM(CASE WHEN handle_code = 200 then 1 else 0 end) as triggerDayCountSuc
FROM xxl_job_log FROM xxl_job_log
WHERE trigger_time BETWEEN #{from} and #{to} WHERE trigger_time BETWEEN #{from} and #{to}
</select> </select>
<select id="findClearLogIds" resultType="long" > <select id="findClearLogIds" resultType="long" >
SELECT id FROM xxl_job_log SELECT id FROM xxl_job_log
@@ -228,13 +228,15 @@
</delete> </delete>
<select id="findFailJobLogIds" resultType="long" > <select id="findFailJobLogIds" resultType="long" >
SELECT id FROM `xxl_job_log` SELECT id
WHERE !( FROM xxl_job_log
(trigger_code in (0, 200) and handle_code = 0) WHERE
OR NOT (
(handle_code = 200) (trigger_code IN (0, 200) AND handle_code = 0)
OR
(handle_code = 200)
) )
AND `alarm_status` = 0 AND alarm_status = 0
ORDER BY id ASC ORDER BY id ASC
LIMIT #{pagesize} LIMIT #{pagesize}
</select> </select>
@@ -242,32 +244,20 @@
<update id="updateAlarmStatus" > <update id="updateAlarmStatus" >
UPDATE xxl_job_log UPDATE xxl_job_log
SET SET
`alarm_status` = #{newAlarmStatus} alarm_status = #{newAlarmStatus}
WHERE `id`= #{logId} AND `alarm_status` = #{oldAlarmStatus} WHERE id= #{logId} AND alarm_status = #{oldAlarmStatus}
</update> </update>
<select id="findLostJobIds" resultType="long" > <select id="findLostJobIds" resultType="long" >
SELECT SELECT
t.id t.id
FROM FROM
xxl_job_log t xxl_job_log t
LEFT JOIN xxl_job_registry t2 ON t.executor_address = t2.registry_value LEFT JOIN xxl_job_registry t2 ON t.executor_address = t2.registry_value
WHERE WHERE
t.trigger_code = 200 t.trigger_code = 200
AND t.handle_code = 0 AND t.handle_code = 0
AND t.trigger_time <![CDATA[ <= ]]> #{losedTime} AND t.trigger_time <![CDATA[ <= ]]> #{losedTime}
AND t2.id IS NULL; AND t2.id IS NULL;
</select> </select>
<!-- </mapper>
SELECT t.id
FROM 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>
@@ -1,14 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xxl.job.admin.dao.XxlJobLogReportDao"> <mapper namespace="com.xxl.job.admin.dao.XxlJobLogReportDao">
<resultMap id="XxlJobLogReport" type="com.xxl.job.admin.core.model.XxlJobLogReport" > <resultMap id="XxlJobLogReport" type="com.xxl.job.admin.core.model.XxlJobLogReport" >
<result column="id" property="id" /> <result column="id" property="id" />
<result column="trigger_day" property="triggerDay" /> <result column="trigger_day" property="triggerDay" />
<result column="running_count" property="runningCount" /> <result column="running_count" property="runningCount" />
<result column="suc_count" property="sucCount" /> <result column="suc_count" property="sucCount" />
<result column="fail_count" property="failCount" /> <result column="fail_count" property="failCount" />
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
@@ -18,31 +18,31 @@
t.suc_count, t.suc_count,
t.fail_count t.fail_count
</sql> </sql>
<insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobLogReport" useGeneratedKeys="true" keyProperty="id" > <insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobLogReport" useGeneratedKeys="true" keyProperty="id" >
INSERT INTO xxl_job_log_report ( INSERT INTO xxl_job_log_report (
`trigger_day`, trigger_day,
`running_count`, running_count,
`suc_count`, suc_count,
`fail_count` fail_count
) VALUES ( ) VALUES (
#{triggerDay}, #{triggerDay},
#{runningCount}, #{runningCount},
#{sucCount}, #{sucCount},
#{failCount} #{failCount}
); );
<!--<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id"> <!--<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
SELECT LAST_INSERT_ID() SELECT LAST_INSERT_ID()
</selectKey>--> </selectKey>-->
</insert> </insert>
<update id="update" > <update id="update" >
UPDATE xxl_job_log_report UPDATE xxl_job_log_report
SET `running_count` = #{runningCount}, SET running_count = #{runningCount},
`suc_count` = #{sucCount}, suc_count = #{sucCount},
`fail_count` = #{failCount} fail_count = #{failCount}
WHERE `trigger_day` = #{triggerDay} WHERE trigger_day = #{triggerDay}
</update> </update>
<select id="queryLogReport" resultMap="XxlJobLogReport"> <select id="queryLogReport" resultMap="XxlJobLogReport">
SELECT <include refid="Base_Column_List" /> SELECT <include refid="Base_Column_List" />
@@ -53,10 +53,10 @@
<select id="queryLogReportTotal" resultMap="XxlJobLogReport"> <select id="queryLogReportTotal" resultMap="XxlJobLogReport">
SELECT SELECT
SUM(running_count) running_count, SUM(running_count) running_count,
SUM(suc_count) suc_count, SUM(suc_count) suc_count,
SUM(fail_count) fail_count SUM(fail_count) fail_count
FROM xxl_job_log_report AS t FROM xxl_job_log_report AS t
</select> </select>
</mapper> </mapper>
@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xxl.job.admin.dao.XxlJobRegistryDao"> <mapper namespace="com.xxl.job.admin.dao.XxlJobRegistryDao">
<resultMap id="XxlJobRegistry" type="com.xxl.job.admin.core.model.XxlJobRegistry" > <resultMap id="XxlJobRegistry" type="com.xxl.job.admin.core.model.XxlJobRegistry" >
<result column="id" property="id" /> <result column="id" property="id" />
<result column="registry_group" property="registryGroup" /> <result column="registry_group" property="registryGroup" />
<result column="registry_key" property="registryKey" /> <result column="registry_key" property="registryKey" />
<result column="registry_value" property="registryValue" /> <result column="registry_value" property="registryValue" />
<result column="update_time" property="updateTime" /> <result column="update_time" property="updateTime" />
</resultMap> </resultMap>
@@ -22,9 +22,10 @@
<select id="findDead" parameterType="java.util.HashMap" resultType="java.lang.Integer" > <select id="findDead" parameterType="java.util.HashMap" resultType="java.lang.Integer" >
SELECT t.id SELECT t.id
FROM xxl_job_registry AS t FROM xxl_job_registry AS t
WHERE t.update_time <![CDATA[ < ]]> DATE_ADD(#{nowTime},INTERVAL -#{timeout} SECOND)
WHERE t.update_time <![CDATA[ < ]]> ( sysdate() -(CONCAT(#{timeout}, '.0')/24/60/60))
</select> </select>
<delete id="removeDead" parameterType="java.lang.Integer" > <delete id="removeDead" parameterType="java.lang.Integer" >
DELETE FROM xxl_job_registry DELETE FROM xxl_job_registry
WHERE id in WHERE id in
@@ -36,27 +37,27 @@
<select id="findAll" parameterType="java.util.HashMap" resultMap="XxlJobRegistry"> <select id="findAll" parameterType="java.util.HashMap" resultMap="XxlJobRegistry">
SELECT <include refid="Base_Column_List" /> SELECT <include refid="Base_Column_List" />
FROM xxl_job_registry AS t FROM xxl_job_registry AS t
WHERE t.update_time <![CDATA[ > ]]> DATE_ADD(#{nowTime},INTERVAL -#{timeout} SECOND) WHERE t.update_time <![CDATA[ > ]]> (sysdate()-(CONCAT(#{timeout}, '.0')/24/60/60))
</select> </select>
<update id="registryUpdate" > <update id="registryUpdate" >
UPDATE xxl_job_registry UPDATE xxl_job_registry
SET `update_time` = #{updateTime} SET update_time = #{updateTime}
WHERE `registry_group` = #{registryGroup} WHERE registry_group = #{registryGroup}
AND `registry_key` = #{registryKey} AND registry_key = #{registryKey}
AND `registry_value` = #{registryValue} AND registry_value = #{registryValue}
</update> </update>
<insert id="registrySave" > <insert id="registrySave" >
INSERT INTO xxl_job_registry( `registry_group` , `registry_key` , `registry_value`, `update_time`) INSERT INTO xxl_job_registry( registry_group , registry_key , registry_value, update_time)
VALUES( #{registryGroup} , #{registryKey} , #{registryValue}, #{updateTime}) VALUES( #{registryGroup} , #{registryKey} , #{registryValue}, #{updateTime})
</insert> </insert>
<delete id="registryDelete" > <delete id="registryDelete" >
DELETE FROM xxl_job_registry DELETE FROM xxl_job_registry
WHERE registry_group = #{registryGroup} WHERE registry_group = #{registryGroup}
AND registry_key = #{registryKey} AND registry_key = #{registryKey}
AND registry_value = #{registryValue} AND registry_value = #{registryValue}
</delete> </delete>
</mapper> </mapper>