Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
X
XXL-JOB
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
靳帅
XXL-JOB
Commits
ee501408
提交
ee501408
authored
1月 16, 2016
作者:
xueli.xue
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
日志重构
上级
1748bae3
隐藏空白字符变更
内嵌
并排
正在显示
17 个修改的文件
包含
348 行增加
和
198 行删除
+348
-198
README.md
README.md
+2
-0
tables_xxl_log.sql
doc/db/tables_xxl_log.sql
+29
-11
pom.xml
xxl-job-admin/pom.xml
+1
-1
IndexController.java
...src/main/java/com/xxl/job/controller/IndexController.java
+1
-1
JobInfoController.java
...c/main/java/com/xxl/job/controller/JobInfoController.java
+5
-5
JobLogController.java
...rc/main/java/com/xxl/job/controller/JobLogController.java
+26
-37
XxlJobInfo.java
...dmin/src/main/java/com/xxl/job/core/model/XxlJobInfo.java
+72
-16
XxlJobLog.java
...admin/src/main/java/com/xxl/job/core/model/XxlJobLog.java
+12
-4
IXxlJobLogDao.java
...ob-admin/src/main/java/com/xxl/job/dao/IXxlJobLogDao.java
+4
-7
XxlJobLogDaoImpl.java
.../src/main/java/com/xxl/job/dao/impl/XxlJobLogDaoImpl.java
+39
-27
XxlJobLogMapper.xml
...min/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml
+61
-45
springmvc-context.xml
xxl-job-admin/src/main/resources/springmvc-context.xml
+2
-0
common.macro.ftl
.../src/main/webapp/WEB-INF/template/common/common.macro.ftl
+1
-1
index.ftl
...-admin/src/main/webapp/WEB-INF/template/jobinfo/index.ftl
+23
-5
index.ftl
...b-admin/src/main/webapp/WEB-INF/template/joblog/index.ftl
+32
-21
jobinfo.index.1.js
xxl-job-admin/src/main/webapp/static/js/jobinfo.index.1.js
+1
-1
joblog.index.1.js
xxl-job-admin/src/main/webapp/static/js/joblog.index.1.js
+37
-16
没有找到文件。
README.md
浏览文件 @
ee501408
...
@@ -4,6 +4,8 @@ github地址:https://github.com/xuxueli/xxl-job
...
@@ -4,6 +4,8 @@ github地址:https://github.com/xuxueli/xxl-job
git.osc地址:http://git.oschina.net/xuxueli0323/xxl-job
git.osc地址:http://git.oschina.net/xuxueli0323/xxl-job
博客地址(内附使用教程):http://www.cnblogs.com/xuxueli/p/5021979.html
博客地址(内附使用教程):http://www.cnblogs.com/xuxueli/p/5021979.html
技术交流群(仅作技术交流):367260654
# 特点:基于quartz封装实现的的集群任务调度管理平台
# 特点:基于quartz封装实现的的集群任务调度管理平台
1、简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手;
1、简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手;
...
...
doc/db/tables_xxl_log.sql
浏览文件 @
ee501408
...
@@ -10,6 +10,7 @@
...
@@ -10,6 +10,7 @@
#
DROP
TABLE
IF
EXISTS
XXL_JOB_QRTZ_JOB_DETAILS
;
#
DROP
TABLE
IF
EXISTS
XXL_JOB_QRTZ_JOB_DETAILS
;
#
DROP
TABLE
IF
EXISTS
XXL_JOB_QRTZ_CALENDARS
;
#
DROP
TABLE
IF
EXISTS
XXL_JOB_QRTZ_CALENDARS
;
#
DROP
TABLE
IF
EXISTS
`xxl_job_qrtz_trigger_log`
;
#
DROP
TABLE
IF
EXISTS
`xxl_job_qrtz_trigger_log`
;
#
DROP
TABLE
IF
EXISTS
`xxl_job_qrtz_trigger_info`
;
CREATE
TABLE
XXL_JOB_QRTZ_JOB_DETAILS
CREATE
TABLE
XXL_JOB_QRTZ_JOB_DETAILS
(
(
...
@@ -158,18 +159,35 @@ CREATE TABLE XXL_JOB_QRTZ_LOCKS
...
@@ -158,18 +159,35 @@ CREATE TABLE XXL_JOB_QRTZ_LOCKS
CREATE
TABLE
`xxl_job_qrtz_trigger_log`
(
CREATE
TABLE
`xxl_job_qrtz_trigger_log`
(
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`job_name`
varchar
(
255
)
NOT
NULL
,
`job_group`
varchar
(
255
)
NOT
NULL
COMMENT
'任务组'
,
`job_cron`
varchar
(
128
)
DEFAULT
NULL
,
`job_name`
varchar
(
255
)
NOT
NULL
COMMENT
'任务名'
,
`job_class`
varchar
(
255
)
DEFAULT
NULL
,
`job_cron`
varchar
(
128
)
NOT
NULL
COMMENT
'任务执行CORN表达式'
,
`job_data`
varchar
(
2048
)
DEFAULT
NULL
,
`job_class`
varchar
(
255
)
NOT
NULL
COMMENT
'任务执行JobBean'
,
`trigger_time`
datetime
DEFAULT
NULL
,
`job_data`
varchar
(
2048
)
DEFAULT
NULL
COMMENT
'任务执行数据'
,
`trigger_status`
varchar
(
255
)
DEFAULT
NULL
,
`trigger_time`
datetime
DEFAULT
NULL
COMMENT
'调度-时间'
,
`trigger_msg`
varchar
(
2048
)
DEFAULT
NULL
,
`trigger_status`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'调度-结果'
,
`handle_time`
datetime
DEFAULT
NULL
,
`trigger_msg`
varchar
(
2048
)
DEFAULT
NULL
COMMENT
'调度-日志'
,
`handle_status`
varchar
(
255
)
DEFAULT
NULL
,
`handle_time`
datetime
DEFAULT
NULL
COMMENT
'执行-时间'
,
`handle_msg`
varchar
(
2048
)
DEFAULT
NULL
,
`handle_status`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'执行-状态'
,
`handle_msg`
varchar
(
2048
)
DEFAULT
NULL
COMMENT
'执行-日志'
,
PRIMARY
KEY
(
`id`
)
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
127
DEFAULT
CHARSET
=
utf8
;
);
CREATE
TABLE
`xxl_job_qrtz_trigger_log`
(
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`job_group`
varchar
(
255
)
NOT
NULL
COMMENT
'任务组'
,
`job_name`
varchar
(
255
)
NOT
NULL
COMMENT
'任务名'
,
`job_cron`
varchar
(
128
)
NOT
NULL
COMMENT
'任务执行CORN表达式'
,
`job_class`
varchar
(
255
)
NOT
NULL
COMMENT
'任务执行JobBean'
,
`job_data`
varchar
(
2048
)
DEFAULT
NULL
COMMENT
'任务执行数据'
,
`trigger_time`
datetime
DEFAULT
NULL
COMMENT
'调度-时间'
,
`trigger_status`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'调度-结果'
,
`trigger_msg`
varchar
(
2048
)
DEFAULT
NULL
COMMENT
'调度-日志'
,
`handle_time`
datetime
DEFAULT
NULL
COMMENT
'执行-时间'
,
`handle_status`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'执行-状态'
,
`handle_msg`
varchar
(
2048
)
DEFAULT
NULL
COMMENT
'执行-日志'
,
PRIMARY
KEY
(
`id`
)
);
commit
;
commit
;
xxl-job-admin/pom.xml
浏览文件 @
ee501408
...
@@ -127,7 +127,7 @@
...
@@ -127,7 +127,7 @@
<dependency>
<dependency>
<groupId>
org.quartz-scheduler
</groupId>
<groupId>
org.quartz-scheduler
</groupId>
<artifactId>
quartz
</artifactId>
<artifactId>
quartz
</artifactId>
<version>
2.2.
1
</version>
<version>
2.2.
2
</version>
</dependency>
</dependency>
<!-- httpclient -->
<!-- httpclient -->
...
...
xxl-job-admin/src/main/java/com/xxl/job/controller/IndexController.java
浏览文件 @
ee501408
...
@@ -13,7 +13,7 @@ public class IndexController {
...
@@ -13,7 +13,7 @@ public class IndexController {
@RequestMapping
(
"/"
)
@RequestMapping
(
"/"
)
public
String
index
(
Model
model
)
{
public
String
index
(
Model
model
)
{
return
"redirect:job"
;
return
"redirect:job
info
"
;
}
}
@RequestMapping
(
"/help"
)
@RequestMapping
(
"/help"
)
...
...
xxl-job-admin/src/main/java/com/xxl/job/controller/JobController.java
→
xxl-job-admin/src/main/java/com/xxl/job/controller/Job
Info
Controller.java
浏览文件 @
ee501408
...
@@ -22,6 +22,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
...
@@ -22,6 +22,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
import
com.xxl.job.client.handler.HandlerRepository
;
import
com.xxl.job.client.handler.HandlerRepository
;
import
com.xxl.job.client.util.JacksonUtil
;
import
com.xxl.job.client.util.JacksonUtil
;
import
com.xxl.job.core.constant.Constants.JobGroupEnum
;
import
com.xxl.job.core.model.ReturnT
;
import
com.xxl.job.core.model.ReturnT
;
import
com.xxl.job.core.model.XxlJobInfo
;
import
com.xxl.job.core.model.XxlJobInfo
;
import
com.xxl.job.core.util.DynamicSchedulerUtil
;
import
com.xxl.job.core.util.DynamicSchedulerUtil
;
...
@@ -33,17 +34,16 @@ import com.xxl.job.service.job.HttpJobBean;
...
@@ -33,17 +34,16 @@ import com.xxl.job.service.job.HttpJobBean;
* @author xuxueli 2015-12-19 16:13:16
* @author xuxueli 2015-12-19 16:13:16
*/
*/
@Controller
@Controller
@RequestMapping
(
"/job"
)
@RequestMapping
(
"/job
info
"
)
public
class
JobController
{
public
class
Job
Info
Controller
{
@Resource
@Resource
private
IXxlJobInfoDao
xxlJobInfoDao
;
private
IXxlJobInfoDao
xxlJobInfoDao
;
@RequestMapping
@RequestMapping
public
String
index
(
Model
model
)
{
public
String
index
(
Model
model
)
{
//List<Map<String, Object>> jobList = DynamicSchedulerUtil.getJobList();
model
.
addAttribute
(
"JobGroupList"
,
JobGroupEnum
.
values
());
//model.addAttribute("jobList", jobList);
return
"jobinfo/index"
;
return
"job/index"
;
}
}
@RequestMapping
(
"/pageList"
)
@RequestMapping
(
"/pageList"
)
...
...
xxl-job-admin/src/main/java/com/xxl/job/controller/JobLogController.java
浏览文件 @
ee501408
package
com
.
xxl
.
job
.
controller
;
package
com
.
xxl
.
job
.
controller
;
import
java.text.ParseException
;
import
java.text.ParseException
;
import
java.util.Calendar
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
...
@@ -17,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
...
@@ -17,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
com.xxl.job.core.constant.Constants.JobGroupEnum
;
import
com.xxl.job.core.model.ReturnT
;
import
com.xxl.job.core.model.ReturnT
;
import
com.xxl.job.core.model.XxlJobLog
;
import
com.xxl.job.core.model.XxlJobLog
;
import
com.xxl.job.dao.IXxlJobLogDao
;
import
com.xxl.job.dao.IXxlJobLogDao
;
...
@@ -32,33 +32,9 @@ public class JobLogController {
...
@@ -32,33 +32,9 @@ public class JobLogController {
@Resource
@Resource
public
IXxlJobLogDao
xxlJobLogDao
;
public
IXxlJobLogDao
xxlJobLogDao
;
@RequestMapping
(
"/save"
)
@ResponseBody
public
ReturnT
<
String
>
triggerLog
(
int
triggerLogId
,
String
status
,
String
msg
)
{
XxlJobLog
log
=
xxlJobLogDao
.
load
(
triggerLogId
);
if
(
log
!=
null
)
{
log
.
setHandleTime
(
new
Date
());
log
.
setHandleStatus
(
status
);
log
.
setHandleMsg
(
msg
);
xxlJobLogDao
.
updateHandleInfo
(
log
);
return
ReturnT
.
SUCCESS
;
}
return
ReturnT
.
FAIL
;
}
@RequestMapping
@RequestMapping
public
String
index
(
Model
model
,
String
jobName
,
String
filterTime
)
{
public
String
index
(
Model
model
)
{
model
.
addAttribute
(
"JobGroupList"
,
JobGroupEnum
.
values
());
// 默认filterTime
Calendar
todayz
=
Calendar
.
getInstance
();
todayz
.
set
(
Calendar
.
HOUR_OF_DAY
,
0
);
todayz
.
set
(
Calendar
.
MINUTE
,
0
);
todayz
.
set
(
Calendar
.
SECOND
,
0
);
model
.
addAttribute
(
"triggerTimeStart"
,
todayz
.
getTime
());
model
.
addAttribute
(
"triggerTimeEnd"
,
Calendar
.
getInstance
().
getTime
());
model
.
addAttribute
(
"jobName"
,
jobName
);
model
.
addAttribute
(
"filterTime"
,
filterTime
);
return
"joblog/index"
;
return
"joblog/index"
;
}
}
...
@@ -66,7 +42,8 @@ public class JobLogController {
...
@@ -66,7 +42,8 @@ public class JobLogController {
@ResponseBody
@ResponseBody
public
Map
<
String
,
Object
>
pageList
(
@RequestParam
(
required
=
false
,
defaultValue
=
"0"
)
int
start
,
public
Map
<
String
,
Object
>
pageList
(
@RequestParam
(
required
=
false
,
defaultValue
=
"0"
)
int
start
,
@RequestParam
(
required
=
false
,
defaultValue
=
"10"
)
int
length
,
@RequestParam
(
required
=
false
,
defaultValue
=
"10"
)
int
length
,
String
jobName
,
String
filterTime
)
{
String
jobGroup
,
String
jobName
,
String
filterTime
)
{
// parse param
// parse param
Date
triggerTimeStart
=
null
;
Date
triggerTimeStart
=
null
;
Date
triggerTimeEnd
=
null
;
Date
triggerTimeEnd
=
null
;
...
@@ -74,24 +51,36 @@ public class JobLogController {
...
@@ -74,24 +51,36 @@ public class JobLogController {
String
[]
temp
=
filterTime
.
split
(
" - "
);
String
[]
temp
=
filterTime
.
split
(
" - "
);
if
(
temp
!=
null
&&
temp
.
length
==
2
)
{
if
(
temp
!=
null
&&
temp
.
length
==
2
)
{
try
{
try
{
triggerTime
End
=
DateUtils
.
parseDate
(
temp
[
0
],
new
String
[]{
"yyyy-MM-dd HH:mm:ss"
});
triggerTime
Start
=
DateUtils
.
parseDate
(
temp
[
0
],
new
String
[]{
"yyyy-MM-dd HH:mm:ss"
});
triggerTimeEnd
=
DateUtils
.
parseDate
(
temp
[
1
],
new
String
[]{
"yyyy-MM-dd HH:mm:ss"
});
triggerTimeEnd
=
DateUtils
.
parseDate
(
temp
[
1
],
new
String
[]{
"yyyy-MM-dd HH:mm:ss"
});
}
catch
(
ParseException
e
)
{
}
catch
(
ParseException
e
)
{
}
e
.
printStackTrace
();
}
}
}
}
}
// page query
// page query
List
<
XxlJobLog
>
list
=
xxlJobLogDao
.
pageList
(
start
,
length
,
jobName
,
triggerTimeStart
,
triggerTimeEnd
);
List
<
XxlJobLog
>
list
=
xxlJobLogDao
.
pageList
(
start
,
length
,
job
Group
,
job
Name
,
triggerTimeStart
,
triggerTimeEnd
);
int
list_count
=
xxlJobLogDao
.
pageListCount
(
start
,
length
,
jobName
,
triggerTimeStart
,
triggerTimeEnd
);
int
list_count
=
xxlJobLogDao
.
pageListCount
(
start
,
length
,
job
Group
,
job
Name
,
triggerTimeStart
,
triggerTimeEnd
);
// package result
// package result
Map
<
String
,
Object
>
maps
=
new
HashMap
<
String
,
Object
>();
Map
<
String
,
Object
>
maps
=
new
HashMap
<
String
,
Object
>();
maps
.
put
(
"recordsTotal"
,
list_count
);
// 总记录数
maps
.
put
(
"recordsTotal"
,
list_count
);
// 总记录数
maps
.
put
(
"recordsFiltered"
,
list_count
);
// 过滤后的总记录数
maps
.
put
(
"recordsFiltered"
,
list_count
);
// 过滤后的总记录数
maps
.
put
(
"data"
,
list
);
// 分页列表
maps
.
put
(
"data"
,
list
);
// 分页列表
return
maps
;
return
maps
;
}
}
@RequestMapping
(
"/save"
)
@ResponseBody
public
ReturnT
<
String
>
triggerLog
(
int
triggerLogId
,
String
status
,
String
msg
)
{
XxlJobLog
log
=
xxlJobLogDao
.
load
(
triggerLogId
);
if
(
log
!=
null
)
{
log
.
setHandleTime
(
new
Date
());
log
.
setHandleStatus
(
status
);
log
.
setHandleMsg
(
msg
);
xxlJobLogDao
.
updateHandleInfo
(
log
);
return
ReturnT
.
SUCCESS
;
}
return
ReturnT
.
FAIL
;
}
}
}
xxl-job-admin/src/main/java/com/xxl/job/core/model/XxlJobInfo.java
浏览文件 @
ee501408
...
@@ -9,69 +9,125 @@ import java.util.Date;
...
@@ -9,69 +9,125 @@ import java.util.Date;
public
class
XxlJobInfo
{
public
class
XxlJobInfo
{
private
int
id
;
private
int
id
;
// job info
private
String
jobName
;
private
String
jobGroup
;
// base on quartz 任务组
private
String
jobCron
;
// base on quartz
private
String
jobName
;
// base on quartz 任务名
private
String
jobClass
;
// base on quartz
private
String
jobCron
;
// base on quartz 任务执行CRON表达式
private
String
jobStatus
;
// base on quartz
private
String
jobClass
;
// base on quartz 任务执行JobBean
private
String
jobData
;
// base on db, Map-JSON-String
private
String
jobData
;
// base on db, Map-JSON-String 任务执行数据
private
Date
addTime
;
private
Date
addTime
;
private
Date
updateTime
;
private
Date
updateTime
;
private
String
author
;
// 作者
private
String
alarmEmail
;
// 报警邮件
private
int
alarmThreshold
;
// 报警阀值
// copy from quartz
private
String
jobStatus
;
// 任务状态
public
int
getId
()
{
public
int
getId
()
{
return
id
;
return
id
;
}
}
public
void
setId
(
int
id
)
{
public
void
setId
(
int
id
)
{
this
.
id
=
id
;
this
.
id
=
id
;
}
}
public
String
getJobGroup
()
{
return
jobGroup
;
}
public
void
setJobGroup
(
String
jobGroup
)
{
this
.
jobGroup
=
jobGroup
;
}
public
String
getJobName
()
{
public
String
getJobName
()
{
return
jobName
;
return
jobName
;
}
}
public
void
setJobName
(
String
jobName
)
{
public
void
setJobName
(
String
jobName
)
{
this
.
jobName
=
jobName
;
this
.
jobName
=
jobName
;
}
}
public
String
getJobCron
()
{
public
String
getJobCron
()
{
return
jobCron
;
return
jobCron
;
}
}
public
void
setJobCron
(
String
jobCron
)
{
public
void
setJobCron
(
String
jobCron
)
{
this
.
jobCron
=
jobCron
;
this
.
jobCron
=
jobCron
;
}
}
public
String
getJobClass
()
{
public
String
getJobClass
()
{
return
jobClass
;
return
jobClass
;
}
}
public
void
setJobClass
(
String
jobClass
)
{
public
void
setJobClass
(
String
jobClass
)
{
this
.
jobClass
=
jobClass
;
this
.
jobClass
=
jobClass
;
}
}
public
String
getJobStatus
()
{
return
jobStatus
;
}
public
void
setJobStatus
(
String
jobStatus
)
{
this
.
jobStatus
=
jobStatus
;
}
public
String
getJobData
()
{
public
String
getJobData
()
{
return
jobData
;
return
jobData
;
}
}
public
void
setJobData
(
String
jobData
)
{
public
void
setJobData
(
String
jobData
)
{
this
.
jobData
=
jobData
;
this
.
jobData
=
jobData
;
}
}
public
Date
getAddTime
()
{
public
Date
getAddTime
()
{
return
addTime
;
return
addTime
;
}
}
public
void
setAddTime
(
Date
addTime
)
{
public
void
setAddTime
(
Date
addTime
)
{
this
.
addTime
=
addTime
;
this
.
addTime
=
addTime
;
}
}
public
Date
getUpdateTime
()
{
public
Date
getUpdateTime
()
{
return
updateTime
;
return
updateTime
;
}
}
public
void
setUpdateTime
(
Date
updateTime
)
{
public
void
setUpdateTime
(
Date
updateTime
)
{
this
.
updateTime
=
updateTime
;
this
.
updateTime
=
updateTime
;
}
}
public
String
getAuthor
()
{
return
author
;
}
public
void
setAuthor
(
String
author
)
{
this
.
author
=
author
;
}
public
String
getAlarmEmail
()
{
return
alarmEmail
;
}
public
void
setAlarmEmail
(
String
alarmEmail
)
{
this
.
alarmEmail
=
alarmEmail
;
}
public
int
getAlarmThreshold
()
{
return
alarmThreshold
;
}
public
void
setAlarmThreshold
(
int
alarmThreshold
)
{
this
.
alarmThreshold
=
alarmThreshold
;
}
public
String
getJobStatus
()
{
return
jobStatus
;
}
public
void
setJobStatus
(
String
jobStatus
)
{
this
.
jobStatus
=
jobStatus
;
}
@Override
@Override
public
String
toString
()
{
public
String
toString
()
{
return
"XxlJobInfo [id="
+
id
+
", jobName="
+
jobName
+
", jobCron="
+
jobCron
+
", jobClass="
+
jobClass
return
"XxlJobInfo [id="
+
id
+
", jobGroup="
+
jobGroup
+
", jobName="
+
jobName
+
", jobCron="
+
jobCron
+
", jobStatus="
+
jobStatus
+
", jobData="
+
jobData
+
", addTime="
+
addTime
+
", updateTime="
+
", jobClass="
+
jobClass
+
", jobData="
+
jobData
+
", addTime="
+
addTime
+
", updateTime="
+
updateTime
+
"]"
;
+
updateTime
+
", author="
+
author
+
", alarmEmail="
+
alarmEmail
+
", alarmThreshold="
+
alarmThreshold
+
", jobStatus="
+
jobStatus
+
"]"
;
}
}
}
}
xxl-job-admin/src/main/java/com/xxl/job/core/model/XxlJobLog.java
浏览文件 @
ee501408
...
@@ -9,7 +9,9 @@ import java.util.Date;
...
@@ -9,7 +9,9 @@ import java.util.Date;
public
class
XxlJobLog
{
public
class
XxlJobLog
{
private
int
id
;
private
int
id
;
// job info
// job info
private
String
jobGroup
;
private
String
jobName
;
private
String
jobName
;
private
String
jobCron
;
private
String
jobCron
;
private
String
jobClass
;
private
String
jobClass
;
...
@@ -31,6 +33,12 @@ public class XxlJobLog {
...
@@ -31,6 +33,12 @@ public class XxlJobLog {
public
void
setId
(
int
id
)
{
public
void
setId
(
int
id
)
{
this
.
id
=
id
;
this
.
id
=
id
;
}
}
public
String
getJobGroup
()
{
return
jobGroup
;
}
public
void
setJobGroup
(
String
jobGroup
)
{
this
.
jobGroup
=
jobGroup
;
}
public
String
getJobName
()
{
public
String
getJobName
()
{
return
jobName
;
return
jobName
;
}
}
...
@@ -94,10 +102,10 @@ public class XxlJobLog {
...
@@ -94,10 +102,10 @@ public class XxlJobLog {
@Override
@Override
public
String
toString
()
{
public
String
toString
()
{
return
"XxlJobLog [id="
+
id
+
", job
Name="
+
jobName
+
", jobCron="
+
jobCron
+
", jobClass="
+
jobClass
return
"XxlJobLog [id="
+
id
+
", job
Group="
+
jobGroup
+
", jobName="
+
jobName
+
", jobCron="
+
jobCron
+
", job
Data="
+
jobData
+
", triggerTime="
+
triggerTime
+
", triggerStatus="
+
triggerStatus
+
", job
Class="
+
jobClass
+
", jobData="
+
jobData
+
", triggerTime="
+
triggerTime
+
", trigger
Msg="
+
triggerMsg
+
", handleTime="
+
handleTime
+
", handleStatus="
+
handleStatus
+
", trigger
Status="
+
triggerStatus
+
", triggerMsg="
+
triggerMsg
+
", handleTime="
+
handleTime
+
", handleMsg="
+
handleMsg
+
"]"
;
+
", handle
Status="
+
handleStatus
+
", handle
Msg="
+
handleMsg
+
"]"
;
}
}
}
}
xxl-job-admin/src/main/java/com/xxl/job/dao/IXxlJobLogDao.java
浏览文件 @
ee501408
package
com
.
xxl
.
job
.
dao
;
package
com
.
xxl
.
job
.
dao
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
...
@@ -12,16 +11,14 @@ import com.xxl.job.core.model.XxlJobLog;
...
@@ -12,16 +11,14 @@ import com.xxl.job.core.model.XxlJobLog;
*/
*/
public
interface
IXxlJobLogDao
{
public
interface
IXxlJobLogDao
{
public
int
save
(
XxlJobLog
xxlJobLog
);
public
List
<
XxlJobLog
>
pageList
(
int
offset
,
int
pagesize
,
String
jobGroup
,
String
jobName
,
Date
triggerTimeStart
,
Date
triggerTimeEnd
);
public
int
pageListCount
(
int
offset
,
int
pagesize
,
String
jobGroup
,
String
jobName
,
Date
triggerTimeStart
,
Date
triggerTimeEnd
);
public
XxlJobLog
load
(
int
id
);
public
XxlJobLog
load
(
int
id
);
public
XxlJobLog
loadByGroupAndName
(
String
jobGroup
,
String
jobName
);
public
int
save
(
XxlJobLog
xxlJobLog
);
public
int
updateTriggerInfo
(
XxlJobLog
xxlJobLog
);
public
int
updateTriggerInfo
(
XxlJobLog
xxlJobLog
);
public
int
updateHandleInfo
(
XxlJobLog
xxlJobLog
);
public
int
updateHandleInfo
(
XxlJobLog
xxlJobLog
);
public
List
<
XxlJobLog
>
pageList
(
int
offset
,
int
pagesize
,
String
jobName
,
Date
triggerTimeStart
,
Date
triggerTimeEnd
);
public
int
pageListCount
(
int
offset
,
int
pagesize
,
String
jobName
,
Date
triggerTimeStart
,
Date
triggerTimeEnd
);
}
}
xxl-job-admin/src/main/java/com/xxl/job/dao/impl/XxlJobLogDaoImpl.java
浏览文件 @
ee501408
...
@@ -23,18 +23,52 @@ public class XxlJobLogDaoImpl implements IXxlJobLogDao {
...
@@ -23,18 +23,52 @@ public class XxlJobLogDaoImpl implements IXxlJobLogDao {
public
SqlSessionTemplate
sqlSessionTemplate
;
public
SqlSessionTemplate
sqlSessionTemplate
;
@Override
@Override
public
int
save
(
XxlJobLog
xxlJobLog
)
{
public
List
<
XxlJobLog
>
pageList
(
int
offset
,
int
pagesize
,
String
jobGroup
,
String
jobName
,
Date
triggerTimeStart
,
Date
triggerTimeEnd
)
{
if
(
xxlJobLog
!=
null
&&
xxlJobLog
.
getJobData
().
length
()>
2000
)
{
HashMap
<
String
,
Object
>
params
=
new
HashMap
<
String
,
Object
>();
xxlJobLog
.
setJobData
(
xxlJobLog
.
getJobData
().
substring
(
0
,
2000
));
params
.
put
(
"offset"
,
offset
);
}
params
.
put
(
"pagesize"
,
pagesize
);
return
sqlSessionTemplate
.
insert
(
"XxlJobLogMapper.save"
,
xxlJobLog
);
params
.
put
(
"jobGroup"
,
jobGroup
);
params
.
put
(
"jobName"
,
jobName
);
params
.
put
(
"triggerTimeStart"
,
triggerTimeStart
);
params
.
put
(
"triggerTimeEnd"
,
triggerTimeEnd
);
return
sqlSessionTemplate
.
selectList
(
"XxlJobLogMapper.pageList"
,
params
);
}
@Override
public
int
pageListCount
(
int
offset
,
int
pagesize
,
String
jobGroup
,
String
jobName
,
Date
triggerTimeStart
,
Date
triggerTimeEnd
)
{
HashMap
<
String
,
Object
>
params
=
new
HashMap
<
String
,
Object
>();
params
.
put
(
"offset"
,
offset
);
params
.
put
(
"pagesize"
,
pagesize
);
params
.
put
(
"jobGroup"
,
jobGroup
);
params
.
put
(
"jobName"
,
jobName
);
params
.
put
(
"triggerTimeStart"
,
triggerTimeStart
);
params
.
put
(
"triggerTimeEnd"
,
triggerTimeEnd
);
return
sqlSessionTemplate
.
selectOne
(
"XxlJobLogMapper.pageListCount"
,
params
);
}
}
@Override
@Override
public
XxlJobLog
load
(
int
id
)
{
public
XxlJobLog
load
(
int
id
)
{
return
sqlSessionTemplate
.
selectOne
(
"XxlJobLogMapper.load"
,
id
);
return
sqlSessionTemplate
.
selectOne
(
"XxlJobLogMapper.load"
,
id
);
}
}
@Override
public
XxlJobLog
loadByGroupAndName
(
String
jobGroup
,
String
jobName
)
{
HashMap
<
String
,
Object
>
params
=
new
HashMap
<
String
,
Object
>();
params
.
put
(
"jobGroup"
,
jobGroup
);
params
.
put
(
"jobName"
,
jobName
);
return
sqlSessionTemplate
.
selectOne
(
"XxlJobLogMapper.loadByGroupAndName"
,
params
);
}
@Override
public
int
save
(
XxlJobLog
xxlJobLog
)
{
if
(
xxlJobLog
!=
null
&&
xxlJobLog
.
getJobData
().
length
()>
2000
)
{
xxlJobLog
.
setJobData
(
xxlJobLog
.
getJobData
().
substring
(
0
,
2000
));
}
return
sqlSessionTemplate
.
insert
(
"XxlJobLogMapper.save"
,
xxlJobLog
);
}
@Override
@Override
public
int
updateTriggerInfo
(
XxlJobLog
xxlJobLog
)
{
public
int
updateTriggerInfo
(
XxlJobLog
xxlJobLog
)
{
if
(
xxlJobLog
!=
null
&&
xxlJobLog
.
getTriggerMsg
().
length
()>
2000
)
{
if
(
xxlJobLog
!=
null
&&
xxlJobLog
.
getTriggerMsg
().
length
()>
2000
)
{
...
@@ -50,27 +84,5 @@ public class XxlJobLogDaoImpl implements IXxlJobLogDao {
...
@@ -50,27 +84,5 @@ public class XxlJobLogDaoImpl implements IXxlJobLogDao {
}
}
return
sqlSessionTemplate
.
update
(
"XxlJobLogMapper.updateHandleInfo"
,
xxlJobLog
);
return
sqlSessionTemplate
.
update
(
"XxlJobLogMapper.updateHandleInfo"
,
xxlJobLog
);
}
}
@Override
public
List
<
XxlJobLog
>
pageList
(
int
offset
,
int
pagesize
,
String
jobName
,
Date
triggerTimeStart
,
Date
triggerTimeEnd
)
{
HashMap
<
String
,
Object
>
params
=
new
HashMap
<
String
,
Object
>();
params
.
put
(
"offset"
,
offset
);
params
.
put
(
"pagesize"
,
pagesize
);
params
.
put
(
"jobName"
,
jobName
);
params
.
put
(
"triggerTimeStart"
,
triggerTimeStart
);
params
.
put
(
"triggerTimeEnd"
,
triggerTimeEnd
);
return
sqlSessionTemplate
.
selectList
(
"XxlJobLogMapper.pageList"
,
params
);
}
@Override
public
int
pageListCount
(
int
offset
,
int
pagesize
,
String
jobName
,
Date
triggerTimeStart
,
Date
triggerTimeEnd
)
{
HashMap
<
String
,
Object
>
params
=
new
HashMap
<
String
,
Object
>();
params
.
put
(
"offset"
,
offset
);
params
.
put
(
"pagesize"
,
pagesize
);
params
.
put
(
"jobName"
,
jobName
);
params
.
put
(
"triggerTimeStart"
,
triggerTimeStart
);
params
.
put
(
"triggerTimeEnd"
,
triggerTimeEnd
);
return
sqlSessionTemplate
.
selectOne
(
"XxlJobLogMapper.pageListCount"
,
params
);
}
}
}
xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml
浏览文件 @
ee501408
...
@@ -6,6 +6,7 @@
...
@@ -6,6 +6,7 @@
<resultMap
id=
"XxlJobLog"
type=
"com.xxl.job.core.model.XxlJobLog"
>
<resultMap
id=
"XxlJobLog"
type=
"com.xxl.job.core.model.XxlJobLog"
>
<result
column=
"id"
property=
"id"
/>
<result
column=
"id"
property=
"id"
/>
<result
column=
"job_group"
property=
"jobGroup"
/>
<result
column=
"job_name"
property=
"jobName"
/>
<result
column=
"job_name"
property=
"jobName"
/>
<result
column=
"job_cron"
property=
"jobCron"
/>
<result
column=
"job_cron"
property=
"jobCron"
/>
<result
column=
"job_class"
property=
"jobClass"
/>
<result
column=
"job_class"
property=
"jobClass"
/>
...
@@ -22,6 +23,7 @@
...
@@ -22,6 +23,7 @@
<sql
id=
"Base_Column_List"
>
<sql
id=
"Base_Column_List"
>
t.id,
t.id,
t.job_group,
t.job_name,
t.job_name,
t.job_cron,
t.job_cron,
t.job_class,
t.job_class,
...
@@ -34,16 +36,71 @@
...
@@ -34,16 +36,71 @@
t.handle_msg
t.handle_msg
</sql>
</sql>
<select
id=
"pageList"
parameterType=
"java.util.HashMap"
resultMap=
"XxlJobLog"
>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM xxl_job_qrtz_trigger_log AS t
<trim
prefix=
"WHERE"
prefixOverrides=
"AND | OR"
>
<if
test=
"jobGroup != null and jobGroup != ''"
>
AND t.job_group = #{jobGroup}
</if>
<if
test=
"jobName != null and jobName != ''"
>
AND t.job_name = #{jobName}
</if>
<if
test=
"triggerTimeStart != null"
>
AND t.trigger_time
<![CDATA[ >= ]]>
#{triggerTimeStart}
</if>
<if
test=
"triggerTimeEnd != null"
>
AND t.trigger_time
<![CDATA[ <= ]]>
#{triggerTimeEnd}
</if>
</trim>
ORDER BY id DESC
LIMIT #{offset}, #{pagesize}
</select>
<select
id=
"pageListCount"
parameterType=
"java.util.HashMap"
resultType=
"int"
>
SELECT count(1)
FROM xxl_job_qrtz_trigger_log AS t
<trim
prefix=
"WHERE"
prefixOverrides=
"AND | OR"
>
<if
test=
"jobGroup != null and jobGroup != ''"
>
AND t.job_group = #{jobGroup}
</if>
<if
test=
"jobName != null and jobName != ''"
>
AND t.job_name = #{jobName}
</if>
<if
test=
"triggerTimeStart != null"
>
AND t.trigger_time
<![CDATA[ >= ]]>
#{triggerTimeStart}
</if>
<if
test=
"triggerTimeEnd != null"
>
AND t.trigger_time
<![CDATA[ <= ]]>
#{triggerTimeEnd}
</if>
</trim>
</select>
<select
id=
"load"
parameterType=
"java.lang.Integer"
resultMap=
"XxlJobLog"
>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM xxl_job_qrtz_trigger_log AS t
WHERE t.id = #{id}
</select>
<select
id=
"loadByGroupAndName"
parameterType=
"java.util.HashMap"
resultMap=
"XxlJobLog"
>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM xxl_job_qrtz_trigger_log AS t
WHERE t.job_group = #{jobGroup}
AND t.job_name = #{jobName}
</select>
<insert
id=
"save"
parameterType=
"com.xxl.job.core.model.XxlJobLog"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
<insert
id=
"save"
parameterType=
"com.xxl.job.core.model.XxlJobLog"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
INSERT INTO `xxl_job_qrtz_trigger_log` (
INSERT INTO `xxl_job_qrtz_trigger_log` (
`job_name`,
`job_group`,
`job_name`,
`job_cron`,
`job_cron`,
`job_class`,
`job_class`,
`job_data`
`job_data`
) VALUES (
) VALUES (
#{jobName},
#{jobGroup},
#{jobCron},
#{jobName},
#{jobClass},
#{jobCron},
#{jobClass},
#{jobData}
#{jobData}
);
);
<selectKey
resultType=
"java.lang.Integer"
order=
"AFTER"
keyProperty=
"id"
>
<selectKey
resultType=
"java.lang.Integer"
order=
"AFTER"
keyProperty=
"id"
>
...
@@ -51,12 +108,6 @@
...
@@ -51,12 +108,6 @@
</selectKey>
</selectKey>
</insert>
</insert>
<select
id=
"load"
parameterType=
"java.lang.Integer"
resultMap=
"XxlJobLog"
>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM xxl_job_qrtz_trigger_log AS t
WHERE t.id = #{id}
</select>
<update
id=
"updateTriggerInfo"
>
<update
id=
"updateTriggerInfo"
>
UPDATE `xxl_job_qrtz_trigger_log`
UPDATE `xxl_job_qrtz_trigger_log`
SET
SET
...
@@ -75,38 +126,4 @@
...
@@ -75,38 +126,4 @@
WHERE `id`= #{id}
WHERE `id`= #{id}
</update>
</update>
<select
id=
"pageList"
parameterType=
"java.util.HashMap"
resultMap=
"XxlJobLog"
>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM xxl_job_qrtz_trigger_log AS t
<trim
prefix=
"WHERE"
prefixOverrides=
"AND | OR"
>
<if
test=
"jobName != null and jobName!=''"
>
AND t.job_name = #{jobName}
</if>
<if
test=
"triggerTimeStart != null"
>
AND t.trigger_time
<![CDATA[ > ]]>
#{triggerTimeStart}
</if>
<if
test=
"triggerTimeEnd != null"
>
AND t.trigger_time
<![CDATA[ < ]]>
#{triggerTimeEnd}
</if>
</trim>
ORDER BY id DESC
LIMIT #{offset}, #{pagesize}
</select>
<select
id=
"pageListCount"
parameterType=
"java.util.HashMap"
resultType=
"int"
>
SELECT count(1)
FROM xxl_job_qrtz_trigger_log AS t
<trim
prefix=
"WHERE"
prefixOverrides=
"AND | OR"
>
<if
test=
"jobName != null and jobName!=''"
>
AND t.job_name = #{jobName}
</if>
<if
test=
"triggerTimeStart != null"
>
AND t.trigger_time
<![CDATA[ > ]]>
#{triggerTimeStart}
</if>
<if
test=
"triggerTimeEnd != null"
>
AND t.trigger_time
<![CDATA[ < ]]>
#{triggerTimeEnd}
</if>
</trim>
</select>
</mapper>
</mapper>
\ No newline at end of file
xxl-job-admin/src/main/resources/springmvc-context.xml
浏览文件 @
ee501408
...
@@ -38,6 +38,8 @@
...
@@ -38,6 +38,8 @@
<property
name=
"order"
value=
"0"
/>
<property
name=
"order"
value=
"0"
/>
</bean>
</bean>
<bean
id=
"exceptionResolver"
class=
"com.xxl.job.core.resolver.WebExceptionResolver"
/>
<!--
<!--
// 自定义拦截器,支持SSO登陆拦截
// 自定义拦截器,支持SSO登陆拦截
<mvc:interceptors>
<mvc:interceptors>
...
...
xxl-job-admin/src/main/webapp/WEB-INF/template/common/common.macro.ftl
浏览文件 @
ee501408
...
@@ -64,7 +64,7 @@
...
@@ -64,7 +64,7 @@
<!-- sidebar menu: : style can be found in sidebar.less -->
<!-- sidebar menu: : style can be found in sidebar.less -->
<ul class="sidebar-menu">
<ul class="sidebar-menu">
<li class="header">常用模块</li>
<li class="header">常用模块</li>
<li class="nav-click" ><a href="${request.contextPath}/job
/
"><i class="fa fa-circle-o text-red"></i> <span>调度管理</span></a></li>
<li class="nav-click" ><a href="${request.contextPath}/job
info
"><i class="fa fa-circle-o text-red"></i> <span>调度管理</span></a></li>
<li class="nav-click" ><a href="${request.contextPath}/joblog"><i class="fa fa-circle-o text-yellow"></i><span>调度日志</span></a></li>
<li class="nav-click" ><a href="${request.contextPath}/joblog"><i class="fa fa-circle-o text-yellow"></i><span>调度日志</span></a></li>
<li class="nav-click" ><a href="${request.contextPath}/help"><i class="fa fa-circle-o text-yellow"></i><span>使用教程</span></a></li>
<li class="nav-click" ><a href="${request.contextPath}/help"><i class="fa fa-circle-o text-yellow"></i><span>使用教程</span></a></li>
</ul>
</ul>
...
...
xxl-job-admin/src/main/webapp/WEB-INF/template/job/index.ftl
→
xxl-job-admin/src/main/webapp/WEB-INF/template/job
info
/index.ftl
浏览文件 @
ee501408
...
@@ -30,6 +30,16 @@
...
@@ -30,6 +30,16 @@
<section
class=
"content"
>
<section
class=
"content"
>
<div
class=
"row"
>
<div
class=
"row"
>
<div
class=
"col-xs-4"
>
<div
class=
"input-group"
>
<span
class=
"input-group-addon"
>
任务组
</span>
<select
class=
"form-control"
id=
"jobGroup"
>
<
#
list
JobGroupList
as
group
>
<option
value=
"${group}"
>
${group.desc}
</option>
</
#
list>
</select>
</div>
</div>
<div
class=
"col-xs-4"
>
<div
class=
"col-xs-4"
>
<div
class=
"input-group"
>
<div
class=
"input-group"
>
<span
class=
"input-group-addon"
>
<span
class=
"input-group-addon"
>
...
@@ -128,16 +138,24 @@
...
@@ -128,16 +138,24 @@
<!-- job新增.模态框 -->
<!-- job新增.模态框 -->
<div
class=
"modal fade"
id=
"addModal"
tabindex=
"-1"
role=
"dialog"
aria-hidden=
"true"
>
<div
class=
"modal fade"
id=
"addModal"
tabindex=
"-1"
role=
"dialog"
aria-hidden=
"true"
>
<div
class=
"modal-dialog"
>
<div
class=
"modal-dialog
modal-lg
"
>
<div
class=
"modal-content"
>
<div
class=
"modal-content"
>
<div
class=
"modal-header"
>
<div
class=
"modal-header"
>
<h4
class=
"modal-title"
>
新增调度信息
</h4>
<h4
class=
"modal-title"
>
新增
任务
调度信息
</h4>
</div>
</div>
<div
class=
"modal-body"
>
<div
class=
"modal-body"
>
<form
class=
"form-horizontal form"
role=
"form"
>
<form
class=
"form-horizontal form"
role=
"form"
>
<div
class=
"form-group"
>
<div
class=
"form-group"
>
<label
for=
"firstname"
class=
"col-sm-3 control-label"
>
任务Key
</label>
<label
for=
"firstname"
class=
"col-sm-2 control-label"
>
任务组
</label>
<div
class=
"col-sm-9"
><input
type=
"text"
class=
"form-control"
name=
"triggerKeyName"
placeholder=
"请输入任务Key"
minlength=
"4"
maxlength=
"100"
></div>
<div
class=
"col-sm-4"
>
<select
class=
"form-control"
name=
"jobGroup"
>
<
#
list
JobGroupList
as
group
>
<option
value=
"${group}"
>
${group.desc}
</option>
</
#
list>
</select>
</div>
<label
for=
"firstname"
class=
"col-sm-2 control-label"
>
任务名
</label>
<div
class=
"col-sm-4"
><input
type=
"text"
class=
"form-control"
name=
"triggerKeyName"
placeholder=
"请输入任务Key"
minlength=
"4"
maxlength=
"100"
></div>
</div>
</div>
<div
class=
"form-group"
>
<div
class=
"form-group"
>
<label
for=
"lastname"
class=
"col-sm-3 control-label"
>
任务Corn
</label>
<label
for=
"lastname"
class=
"col-sm-3 control-label"
>
任务Corn
</label>
...
@@ -219,6 +237,6 @@
...
@@ -219,6 +237,6 @@
<script
src=
"${request.contextPath}/static/adminlte/plugins/daterangepicker/moment.min.js"
></script>
<script
src=
"${request.contextPath}/static/adminlte/plugins/daterangepicker/moment.min.js"
></script>
<script
src=
"${request.contextPath}/static/adminlte/plugins/daterangepicker/daterangepicker.js"
></script>
<script
src=
"${request.contextPath}/static/adminlte/plugins/daterangepicker/daterangepicker.js"
></script>
<script>
var
base_url
=
'${request.contextPath}'
;
</script>
<script>
var
base_url
=
'${request.contextPath}'
;
</script>
<script
src=
"${request.contextPath}/static/js/job.index.1.js"
></script>
<script
src=
"${request.contextPath}/static/js/job
info
.index.1.js"
></script>
</body>
</body>
</html>
</html>
xxl-job-admin/src/main/webapp/WEB-INF/template/joblog/index.ftl
浏览文件 @
ee501408
...
@@ -30,23 +30,33 @@
...
@@ -30,23 +30,33 @@
<!-- Main content -->
<!-- Main content -->
<section
class=
"content"
>
<section
class=
"content"
>
<div
class=
"row"
>
<div
class=
"row"
>
<div
class=
"col-xs-5"
>
<div
class=
"col-xs-3"
>
<div
class=
"input-group"
>
<span
class=
"input-group-addon"
>
任务组
</span>
<select
class=
"form-control"
id=
"jobGroup"
>
<
#
list
JobGroupList
as
group
>
<option
value=
"${group}"
<#
if
jobInfo
?
exists
&&
group =
=
jobInfo
.
jobGroup
>
selected
</
#
if>
>${group.desc}
</option>
</
#
list>
</select>
</div>
</div>
<div
class=
"col-xs-3"
>
<div
class=
"input-group"
>
<span
class=
"input-group-addon"
>
任务名
</span>
<input
type=
"text"
class=
"form-control"
id=
"jobName"
value=
"${jobName}"
autocomplete=
"on"
>
</div>
</div>
<div
class=
"col-xs-4"
>
<div
class=
"input-group"
>
<div
class=
"input-group"
>
<span
class=
"input-group-addon"
>
<span
class=
"input-group-addon"
>
调度时间
调度时间
</span>
</span>
<input
type=
"text"
class=
"form-control"
id=
"filterTime"
readonly
<input
type=
"text"
class=
"form-control"
id=
"filterTime"
readonly
value=
"<#if triggerTimeStart?exists && triggerTimeEnd?exists >${triggerTimeStart?if_exists?string('yyyy-MM-dd HH:mm:ss')} - ${triggerTimeEnd?if_exists?string('yyyy-MM-dd HH:mm:ss')}</#if>"
>
value2=
"<#if triggerTimeStart?exists && triggerTimeEnd?exists >${triggerTimeStart?if_exists?string('yyyy-MM-dd HH:mm:ss')} - ${triggerTimeEnd?if_exists?string('yyyy-MM-dd HH:mm:ss')}</#if>"
>
</div>
</div>
<div
class=
"col-xs-5"
>
<div
class=
"input-group"
>
<span
class=
"input-group-addon"
>
jobName
</span>
<input
type=
"text"
class=
"form-control"
id=
"jobName"
value=
"${jobName}"
autocomplete=
"on"
>
</div>
</div>
</div>
</div>
<div
class=
"col-xs-2"
>
<div
class=
"col-xs-2"
>
<button
class=
"btn btn-block btn-info"
id=
"searchBtn"
>
搜索
</button>
<button
class=
"btn btn-block btn-info"
id=
"searchBtn"
>
搜索
</button>
</div>
</div>
...
@@ -60,17 +70,18 @@
...
@@ -60,17 +70,18 @@
<table
id=
"joblog_list"
class=
"table table-bordered table-striped display"
width=
"100%"
>
<table
id=
"joblog_list"
class=
"table table-bordered table-striped display"
width=
"100%"
>
<thead>
<thead>
<tr>
<tr>
<th>
id
</th>
<th
name=
"id"
>
id
</th>
<th>
jobName
</th>
<th
name=
"jobGroup"
>
任务组
</th>
<th>
jobCron
</th>
<th
name=
"jobName"
>
任务名
</th>
<th>
jobClass
</th>
<th
name=
"jobCron"
>
Cron
</th>
<th>
jobData
</th>
<th
name=
"jobClass"
>
JobBean
</th>
<th>
triggerTime
</th>
<th
name=
"jobData"
>
任务数据
</th>
<th>
triggerStatus
</th>
<th
name=
"triggerTime"
>
调度时间
</th>
<th>
triggerMsg
</th>
<th
name=
"triggerStatus"
>
调度结果
</th>
<th>
handleTime
</th>
<th
name=
"triggerMsg"
>
调度日志
</th>
<th>
handleStatus
</th>
<th
name=
"handleTime"
>
执行时间
</th>
<th>
handleMsg
</th>
<th
name=
"handleStatus"
>
执行结果
</th>
<th
name=
"handleMsg"
>
执行日志
</th>
</tr>
</tr>
</thead>
</thead>
<tbody></tbody>
<tbody></tbody>
...
...
xxl-job-admin/src/main/webapp/static/js/job.index.1.js
→
xxl-job-admin/src/main/webapp/static/js/job
info
.index.1.js
浏览文件 @
ee501408
...
@@ -5,7 +5,7 @@ $(function() {
...
@@ -5,7 +5,7 @@ $(function() {
"processing"
:
true
,
"processing"
:
true
,
"serverSide"
:
true
,
"serverSide"
:
true
,
"ajax"
:
{
"ajax"
:
{
url
:
base_url
+
"/job/pageList"
,
url
:
base_url
+
"/job
info
/pageList"
,
data
:
function
(
d
)
{
data
:
function
(
d
)
{
d
.
jobName
=
$
(
'#jobName'
).
val
()
d
.
jobName
=
$
(
'#jobName'
).
val
()
}
}
...
...
xxl-job-admin/src/main/webapp/static/js/joblog.index.1.js
浏览文件 @
ee501408
...
@@ -8,46 +8,66 @@ $(function() {
...
@@ -8,46 +8,66 @@ $(function() {
"ajax"
:
{
"ajax"
:
{
url
:
base_url
+
"/joblog/pageList"
,
url
:
base_url
+
"/joblog/pageList"
,
data
:
function
(
d
)
{
data
:
function
(
d
)
{
d
.
jobGroup
=
$
(
'#jobGroup'
).
val
();
d
.
jobName
=
$
(
'#jobName'
).
val
();
d
.
filterTime
=
$
(
'#filterTime'
).
val
();
d
.
filterTime
=
$
(
'#filterTime'
).
val
();
d
.
jobName
=
$
(
'#jobName'
).
val
()
}
}
},
},
//"scrollX": true, // X轴滚动条,取消自适应
"searching"
:
false
,
"ordering"
:
false
,
//"scrollX": false,
"columns"
:
[
"columns"
:
[
{
"data"
:
'id'
,
"bSortable"
:
false
,
"visible"
:
false
},
{
"data"
:
'id'
,
"bSortable"
:
false
,
"visible"
:
false
},
{
"data"
:
'jobName'
,
"bSortable"
:
false
},
{
"data"
:
'jobCron'
,
"bSortable"
:
false
,
"visible"
:
false
},
{
"data"
:
'jobClass'
,
"bSortable"
:
false
,
"visible"
:
false
},
{
"data"
:
'jobData'
,
"bSortable"
:
false
,
"visible"
:
false
},
{
{
"data"
:
'
triggerTime
'
,
"data"
:
'
jobGroup
'
,
"bSortable"
:
false
,
"bSortable"
:
false
,
"render"
:
function
(
data
,
type
,
row
)
{
var
groupMenu
=
$
(
"#jobGroup"
).
find
(
"option"
);
for
(
var
index
in
$
(
"#jobGroup"
).
find
(
"option"
))
{
if
(
$
(
groupMenu
[
index
]).
attr
(
'value'
)
==
data
)
{
return
$
(
groupMenu
[
index
]).
html
();
}
}
return
data
;
}
},
{
"data"
:
'jobName'
},
{
"data"
:
'jobCron'
,
"visible"
:
false
},
{
"data"
:
'jobClass'
,
"visible"
:
false
},
{
"data"
:
'jobData'
,
"visible"
:
false
,
"render"
:
function
(
data
,
type
,
row
)
{
return
data
?
'<a class="logTips" href="javascript:;" >查看<span style="display:none;">'
+
data
+
'</span></a>'
:
"无"
;
}
},
{
"data"
:
'triggerTime'
,
"render"
:
function
(
data
,
type
,
row
)
{
"render"
:
function
(
data
,
type
,
row
)
{
return
data
?
moment
(
new
Date
(
data
)).
format
(
"YYYY-MM-DD HH:mm:ss"
):
""
;
return
data
?
moment
(
new
Date
(
data
)).
format
(
"YYYY-MM-DD HH:mm:ss"
):
""
;
}
}
},
},
{
"data"
:
'triggerStatus'
,
"bSortable"
:
false
},
{
"data"
:
'triggerStatus'
},
{
"data"
:
'triggerMsg'
,
"bSortable"
:
false
,
{
"data"
:
'triggerMsg'
,
"render"
:
function
(
data
,
type
,
row
)
{
"render"
:
function
(
data
,
type
,
row
)
{
return
data
?
'<a class="logTips" href="javascript:;" >
调度日志
<span style="display:none;">'
+
data
+
'</span></a>'
:
"无"
;
return
data
?
'<a class="logTips" href="javascript:;" >
查看
<span style="display:none;">'
+
data
+
'</span></a>'
:
"无"
;
}
}
},
},
{
{
"data"
:
'handleTime'
,
"data"
:
'handleTime'
,
"bSortable"
:
false
,
"render"
:
function
(
data
,
type
,
row
)
{
"render"
:
function
(
data
,
type
,
row
)
{
return
data
?
moment
(
new
Date
(
data
)).
format
(
"YYYY-MM-DD HH:mm:ss"
):
""
;
return
data
?
moment
(
new
Date
(
data
)).
format
(
"YYYY-MM-DD HH:mm:ss"
):
""
;
}
}
},
},
{
"data"
:
'handleStatus'
,
"bSortable"
:
false
},
{
"data"
:
'handleStatus'
,
"bSortable"
:
false
},
{
"data"
:
'handleMsg'
,
"bSortable"
:
false
,
{
"data"
:
'handleMsg'
,
"render"
:
function
(
data
,
type
,
row
)
{
"render"
:
function
(
data
,
type
,
row
)
{
return
data
?
'<a class="logTips" href="javascript:;" >
执行日志
<span style="display:none;">'
+
data
+
'</span></a>'
:
"无"
;
return
data
?
'<a class="logTips" href="javascript:;" >
查看
<span style="display:none;">'
+
data
+
'</span></a>'
:
"无"
;
}
}
}
}
],
],
"searching"
:
false
,
"ordering"
:
true
,
"language"
:
{
"language"
:
{
"sProcessing"
:
"处理中..."
,
"sProcessing"
:
"处理中..."
,
"sLengthMenu"
:
"每页 _MENU_ 条记录"
,
"sLengthMenu"
:
"每页 _MENU_ 条记录"
,
...
@@ -94,7 +114,7 @@ $(function() {
...
@@ -94,7 +114,7 @@ $(function() {
'最近7日'
:
[
moment
().
subtract
(
'days'
,
6
),
moment
()],
'最近7日'
:
[
moment
().
subtract
(
'days'
,
6
),
moment
()],
'最近30日'
:
[
moment
().
subtract
(
'days'
,
29
),
moment
()]
'最近30日'
:
[
moment
().
subtract
(
'days'
,
29
),
moment
()]
},
},
opens
:
'
righ
t'
,
//日期选择框的弹出位置
opens
:
'
lef
t'
,
//日期选择框的弹出位置
locale
:
{
locale
:
{
customRangeLabel
:
'自定义'
,
customRangeLabel
:
'自定义'
,
applyLabel
:
'确定'
,
applyLabel
:
'确定'
,
...
@@ -106,6 +126,7 @@ $(function() {
...
@@ -106,6 +126,7 @@ $(function() {
firstDay
:
1
firstDay
:
1
}
}
});
});
$
(
'#filterTime'
).
val
(
moment
(
new
Date
()).
format
(
"YYYY-MM-DD 00:00:00"
)
+
' - '
+
moment
(
new
Date
()).
format
(
"YYYY-MM-DD HH:mm:ss"
)
);
// 搜索按钮
// 搜索按钮
$
(
'#searchBtn'
).
on
(
'click'
,
function
(){
$
(
'#searchBtn'
).
on
(
'click'
,
function
(){
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论