Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
xxl-job
提交
3f7b4d4a
X
xxl-job
项目概览
OpenDocCN
/
xxl-job
通知
9
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
X
xxl-job
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
3f7b4d4a
编写于
4月 24, 2017
作者:
X
xueli.xue
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
调度报表
上级
6e3e24a9
变更
9
显示空白变更内容
内联
并排
Showing
9 changed file
with
267 addition
and
13 deletion
+267
-13
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/IndexController.java
...in/java/com/xxl/job/admin/controller/IndexController.java
+6
-0
xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobLogDao.java
...in/src/main/java/com/xxl/job/admin/dao/IXxlJobLogDao.java
+4
-1
xxl-job-admin/src/main/java/com/xxl/job/admin/dao/impl/XxlJobLogDaoImpl.java
...ain/java/com/xxl/job/admin/dao/impl/XxlJobLogDaoImpl.java
+11
-2
xxl-job-admin/src/main/java/com/xxl/job/admin/service/IXxlJobService.java
...c/main/java/com/xxl/job/admin/service/IXxlJobService.java
+4
-1
xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java
...ava/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java
+13
-2
xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml
...min/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml
+9
-2
xxl-job-admin/src/main/webapp/WEB-INF/template/index.ftl
xxl-job-admin/src/main/webapp/WEB-INF/template/index.ftl
+34
-5
xxl-job-admin/src/main/webapp/static/js/index.js
xxl-job-admin/src/main/webapp/static/js/index.js
+157
-0
xxl-job-admin/src/main/webapp/static/plugins/echarts/echarts.common.min.js
.../main/webapp/static/plugins/echarts/echarts.common.min.js
+29
-0
未找到文件。
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/IndexController.java
浏览文件 @
3f7b4d4a
...
...
@@ -36,6 +36,12 @@ public class IndexController {
return
"index"
;
}
@RequestMapping
(
"/triggerChartDate"
)
public
ReturnT
<
Map
<
String
,
Object
>>
triggerChartDate
()
{
ReturnT
<
Map
<
String
,
Object
>>
triggerChartDate
=
xxlJobService
.
triggerChartDate
();
return
triggerChartDate
;
}
@RequestMapping
(
"/toLogin"
)
@PermessionLimit
(
limit
=
false
)
public
String
toLogin
(
Model
model
,
HttpServletRequest
request
)
{
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobLogDao.java
浏览文件 @
3f7b4d4a
...
...
@@ -4,6 +4,7 @@ import com.xxl.job.admin.core.model.XxlJobLog;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
/**
* job log
...
...
@@ -24,6 +25,8 @@ public interface IXxlJobLogDao {
public
int
delete
(
int
jobId
);
public
int
findByHandleCodeCount
(
int
handleCode
);
public
int
triggerCountByHandleCode
(
int
handleCode
);
Map
<
String
,
Integer
>
triggerCountByDay
(
Date
from
,
Date
to
);
}
xxl-job-admin/src/main/java/com/xxl/job/admin/dao/impl/XxlJobLogDaoImpl.java
浏览文件 @
3f7b4d4a
...
...
@@ -9,6 +9,7 @@ import javax.annotation.Resource;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* job log
...
...
@@ -78,8 +79,16 @@ public class XxlJobLogDaoImpl implements IXxlJobLogDao {
}
@Override
public
int
findByHandleCodeCount
(
int
handleCode
)
{
return
sqlSessionTemplate
.
selectOne
(
"XxlJobLogMapper.findByHandleCodeCount"
,
handleCode
);
public
int
triggerCountByHandleCode
(
int
handleCode
)
{
return
sqlSessionTemplate
.
selectOne
(
"XxlJobLogMapper.triggerCountByHandleCode"
,
handleCode
);
}
@Override
public
Map
<
String
,
Integer
>
triggerCountByDay
(
Date
from
,
Date
to
)
{
Map
<
String
,
Object
>
params
=
new
HashMap
<
String
,
Object
>();
params
.
put
(
"from"
,
from
);
params
.
put
(
"to"
,
to
);
return
sqlSessionTemplate
.
selectOne
(
"XxlJobLogMapper.triggerCountByDay"
,
params
);
}
}
xxl-job-admin/src/main/java/com/xxl/job/admin/service/IXxlJobService.java
浏览文件 @
3f7b4d4a
...
...
@@ -27,5 +27,8 @@ public interface IXxlJobService {
public
ReturnT
<
String
>
triggerJob
(
int
id
);
Map
<
String
,
Object
>
dashboardInfo
();
public
Map
<
String
,
Object
>
dashboardInfo
();
public
ReturnT
<
Map
<
String
,
Object
>>
triggerChartDate
();
}
xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java
浏览文件 @
3f7b4d4a
...
...
@@ -11,6 +11,7 @@ import com.xxl.job.core.biz.model.ReturnT;
import
com.xxl.job.core.registry.RegistHelper
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.commons.lang.time.DateUtils
;
import
org.quartz.CronExpression
;
import
org.quartz.SchedulerException
;
import
org.slf4j.Logger
;
...
...
@@ -260,8 +261,8 @@ public class XxlJobServiceImpl implements IXxlJobService {
public
Map
<
String
,
Object
>
dashboardInfo
()
{
int
jobInfoCount
=
xxlJobInfoDao
.
findAllCount
();
int
jobLogCount
=
xxlJobLogDao
.
findByHandleCodeCount
(-
1
);
int
jobLogSuccessCount
=
xxlJobLogDao
.
findByHandleCodeCount
(
ReturnT
.
SUCCESS_CODE
);
int
jobLogCount
=
xxlJobLogDao
.
triggerCountByHandleCode
(-
1
);
int
jobLogSuccessCount
=
xxlJobLogDao
.
triggerCountByHandleCode
(
ReturnT
.
SUCCESS_CODE
);
// executor count
Set
<
String
>
executerAddressSet
=
new
HashSet
<
String
>();
...
...
@@ -291,4 +292,14 @@ public class XxlJobServiceImpl implements IXxlJobService {
return
dashboardMap
;
}
@Override
public
ReturnT
<
Map
<
String
,
Object
>>
triggerChartDate
()
{
Date
from
=
DateUtils
.
addDays
(
new
Date
(),
-
30
);
Date
to
=
new
Date
();
Map
<
String
,
Integer
>
triggerCountMap
=
xxlJobLogDao
.
triggerCountByDay
(
from
,
to
);
return
null
;
}
}
xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml
浏览文件 @
3f7b4d4a
...
...
@@ -124,14 +124,21 @@
WHERE job_id = #{jobId}
</delete>
<select
id=
"
findByHandleCodeCount
"
parameterType=
"java.lang.Integer"
resultType=
"java.lang.Integer"
>
<select
id=
"
triggerCountByHandleCode
"
parameterType=
"java.lang.Integer"
resultType=
"java.lang.Integer"
>
SELECT count(1)
FROM XXL_JOB_QRTZ_TRIGGER_LOG AS t
<trim
prefix=
"WHERE"
prefixOverrides=
"AND | OR"
>
<if
test=
"_parameter gt 0"
>
<if
test=
"_parameter
gt 0"
>
AND t.handle_code = #{handleCode}
</if>
</trim>
</select>
<select
id=
"triggerCountByDay"
parameterType=
"java.util.Map"
resultType=
"java.util.Map"
>
SELECT DATE_FORMAT(trigger_time,'%Y-%m-%d') triggerDay, COUNT(id) triggerCount
FROM XXL_JOB_QRTZ_TRIGGER_LOG
GROUP BY triggerDay;
</select>
</mapper>
\ No newline at end of file
xxl-job-admin/src/main/webapp/WEB-INF/template/index.ftl
浏览文件 @
3f7b4d4a
...
...
@@ -16,7 +16,7 @@
<div
class=
"content-wrapper"
>
<!-- Content Header (Page header) -->
<section
class=
"content-header"
>
<h1>
仪表盘
<small>
任务调度中心
</small></h1>
<h1>
运行报表
<small>
任务调度中心
</small></h1>
<!--
<ol class="breadcrumb">
<li><a><i class="fa fa-dashboard"></i>调度中心</a></li>
...
...
@@ -28,7 +28,7 @@
<!-- Main content -->
<section
class=
"content"
>
<!--
简要报表
-->
<!--
任务信息
-->
<div
class=
"row"
>
<
#--
任务信息
--
>
...
...
@@ -49,7 +49,7 @@
</div>
<
#--
调度信息
--
>
<div
class=
"col-md-4 col-sm-6 col-xs-12"
>
<div
class=
"col-md-4 col-sm-6 col-xs-12"
style=
"display: none;"
>
<div
class=
"info-box bg-yellow"
>
<span
class=
"info-box-icon"
><i
class=
"fa fa-calendar"
></i></span>
...
...
@@ -70,7 +70,7 @@
<
#--
执行器
--
>
<div
class=
"col-md-4 col-sm-6 col-xs-12"
>
<div
class=
"info-box bg-green"
>
<span
class=
"info-box-icon"
><i
class=
"fa
fa-thumbs-o-up
"
></i></span>
<span
class=
"info-box-icon"
><i
class=
"fa
ion-ios-settings-strong
"
></i></span>
<div
class=
"info-box-content"
>
<span
class=
"info-box-text"
>
执行器数量
</span>
...
...
@@ -85,7 +85,31 @@
</div>
</div>
<!-- /.row -->
<
#--
调度报表
:
时间区间筛选
,
左侧折线图
+
右侧饼图
--
>
<div
class=
"row"
>
<div
class=
"col-md-12"
>
<div
class=
"box"
>
<div
class=
"box-header with-border"
>
<h3
class=
"box-title"
>
调度报表
</h3>
<
#--
<
input
type=
"text"
class=
"form-control"
id=
"filterTime"
readonly
>
-->
</div>
<div
class=
"box-body"
>
<div
class=
"row"
>
<
#--
左侧折线图
--
>
<div
class=
"col-md-8"
>
<div
id=
"lineChart"
style=
"height: 350px;"
></div>
</div>
<
#--
右侧饼图
--
>
<div
class=
"col-md-4"
>
<div
id=
"pieChart"
style=
"height: 350px;"
></div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- /.content -->
...
...
@@ -96,5 +120,10 @@
<
@
netCommon.commonFooter
/>
</div>
<
@
netCommon.commonScript
/>
<
#--
<
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/plugins/echarts/echarts.common.min.js"
></script>
<script
src=
"${request.contextPath}/static/js/index.js"
></script>
</body>
</html>
xxl-job-admin/src/main/webapp/static/js/index.js
0 → 100644
浏览文件 @
3f7b4d4a
/**
* Created by xuxueli on 17/4/24.
*/
$
(
function
()
{
// lineChart
var
lineChart
=
echarts
.
init
(
document
.
getElementById
(
'
lineChart
'
));
lineChart
.
setOption
(
lineChartDate
());
function
lineChartDate
()
{
var
option
=
{
title
:
{
text
:
'
日期分布图
'
},
tooltip
:
{
trigger
:
'
axis
'
,
axisPointer
:
{
type
:
'
cross
'
,
label
:
{
backgroundColor
:
'
#6a7985
'
}
}
},
legend
:
{
data
:[
'
成功调度次数
'
,
'
失败调度次数
'
]
},
toolbox
:
{
feature
:
{
saveAsImage
:
{}
}
},
grid
:
{
left
:
'
3%
'
,
right
:
'
4%
'
,
bottom
:
'
3%
'
,
containLabel
:
true
},
xAxis
:
[
{
type
:
'
category
'
,
boundaryGap
:
false
,
data
:
[
'
2017-10-01
'
,
'
2017-10-02
'
,
'
2017-10-03
'
,
'
2017-10-04
'
,
'
2017-10-05
'
,
'
2017-10-06
'
,
'
2017-10-07
'
]
}
],
yAxis
:
[
{
type
:
'
value
'
}
],
series
:
[
{
name
:
'
成功调度次数
'
,
type
:
'
line
'
,
stack
:
'
总量
'
,
areaStyle
:
{
normal
:
{}},
data
:[
820
,
932
,
901
,
934
,
1290
,
1330
,
1320
]
},
{
name
:
'
失败调度次数
'
,
type
:
'
line
'
,
stack
:
'
总量
'
,
label
:
{
normal
:
{
show
:
true
,
position
:
'
top
'
}
},
areaStyle
:
{
normal
:
{}},
data
:[
120
,
132
,
101
,
134
,
90
,
230
,
210
]
}
],
color
:[
'
#00A65A
'
,
'
#F39C12
'
]
};
return
option
;
}
// pie chart
var
pieChart
=
echarts
.
init
(
document
.
getElementById
(
'
pieChart
'
));
pieChart
.
setOption
(
pieChartDate
());
function
pieChartDate
()
{
option
=
{
title
:
{
text
:
'
调度总次数
'
,
/*subtext: 'subtext',*/
x
:
'
center
'
},
tooltip
:
{
trigger
:
'
item
'
,
formatter
:
"
{a} <br/>{b} : {c} ({d}%)
"
},
legend
:
{
orient
:
'
vertical
'
,
left
:
'
left
'
,
data
:
[
'
成功调度次数
'
,
'
失败调度次数
'
]
},
series
:
[
{
name
:
'
访问来源
'
,
type
:
'
pie
'
,
radius
:
'
55%
'
,
center
:
[
'
50%
'
,
'
60%
'
],
data
:[
{
value
:
800
,
name
:
'
成功调度次数
'
},
{
value
:
200
,
name
:
'
失败调度次数
'
}
],
itemStyle
:
{
emphasis
:
{
shadowBlur
:
10
,
shadowOffsetX
:
0
,
shadowColor
:
'
rgba(0, 0, 0, 0.5)
'
}
}
}
],
color
:[
'
#00A65A
'
,
'
#F39C12
'
]
};
return
option
;
}
// 过滤时间
/*$('#filterTime').daterangepicker({
autoApply:false,
singleDatePicker:false,
showDropdowns:false, // 是否显示年月选择条件
timePicker: true, // 是否显示小时和分钟选择条件
timePickerIncrement: 10, // 时间的增量,单位为分钟
timePicker24Hour : true,
opens : 'left', //日期选择框的弹出位置
ranges: {
'最近1小时': [moment().subtract(1, 'hours'), moment()],
'今日': [moment().startOf('day'), moment().endOf('day')],
'昨日': [moment().subtract(1, 'days').startOf('day'), moment().subtract(1, 'days').endOf('day')],
'最近7日': [moment().subtract(6, 'days'), moment()],
'最近30日': [moment().subtract(29, 'days'), moment()],
'本月': [moment().startOf('month'), moment().endOf('month')],
'上个月': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
},
locale : {
format: 'YYYY-MM-DD HH:mm:ss',
separator : ' - ',
customRangeLabel : '自定义',
applyLabel : '确定',
cancelLabel : '取消',
fromLabel : '起始时间',
toLabel : '结束时间',
daysOfWeek : [ '日', '一', '二', '三', '四', '五', '六' ],
monthNames : [ '一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月' ],
firstDay : 1,
startDate: moment().startOf('day'),
endDate: moment().endOf('day')
}
});*/
});
xxl-job-admin/src/main/webapp/static/plugins/echarts/echarts.common.min.js
0 → 100644
浏览文件 @
3f7b4d4a
因为 它太大了无法显示 source diff 。你可以改为
查看blob
。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录