调度报表新增"运行中"中状态项,数据加载SQL优化
This commit is contained in:
parent
8f80395ac1
commit
0169d537ef
|
@ -1144,6 +1144,8 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
|
|||
- 1、修复打包部署时资源文件乱码问题;
|
||||
- 2、修复新版本chrome滚动到顶部失效问题;
|
||||
- 3、国际化:调度中心实现国际化,支持中文、英文两种语言,默认为中文。
|
||||
- 4、调度报表新增"运行中"中状态项,数据加载SQL优化;
|
||||
- 5、调度报表缓存优化,修复大数据量执行日志加载缓慢的问题;
|
||||
|
||||
### TODO LIST
|
||||
- 1、任务权限管理:执行器为粒度分配权限,核心操作校验权限;
|
||||
|
@ -1161,7 +1163,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
|
|||
- 13、任务依赖增强,新增任务类型 "流程任务",流程节点可挂载普通类型任务,承担任务依赖功能。现有子任务模型取消;需要考虑任务依赖死循环问题;
|
||||
- 14、分片任务某一分片失败,支持分片转移;
|
||||
- 15、调度中心触发任务后,先推送触发队列,异步触发,然后立即返回。降低quartz线程占用时长。
|
||||
- 16、调度报表加载速度慢问题;
|
||||
|
||||
|
||||
## 七、其他
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ public class I18nUtil {
|
|||
|
||||
public static Properties loadI18nProp(){
|
||||
if (prop != null && (System.currentTimeMillis()-lastCacheTim)<60*1000) {
|
||||
return prop;
|
||||
//return prop;
|
||||
}
|
||||
try {
|
||||
// bild i18n prop
|
||||
|
|
|
@ -41,8 +41,7 @@ public interface XxlJobLogDao {
|
|||
public int triggerCountByHandleCode(@Param("handleCode") int handleCode);
|
||||
|
||||
public List<Map<String, Object>> triggerCountByDay(@Param("from") Date from,
|
||||
@Param("to") Date to,
|
||||
@Param("handleCode") int handleCode);
|
||||
@Param("to") Date to);
|
||||
|
||||
public int clearLog(@Param("jobGroup") int jobGroup,
|
||||
@Param("jobId") int jobId,
|
||||
|
|
|
@ -323,35 +323,30 @@ public class XxlJobServiceImpl implements XxlJobService {
|
|||
@Override
|
||||
public ReturnT<Map<String, Object>> triggerChartDate(Date startDate, Date endDate) {
|
||||
List<String> triggerDayList = new ArrayList<String>();
|
||||
List<Integer> triggerDayCountRunningList = new ArrayList<Integer>();
|
||||
List<Integer> triggerDayCountSucList = new ArrayList<Integer>();
|
||||
List<Integer> triggerDayCountFailList = new ArrayList<Integer>();
|
||||
int triggerCountRunningTotal = 0;
|
||||
int triggerCountSucTotal = 0;
|
||||
int triggerCountFailTotal = 0;
|
||||
|
||||
List<Map<String, Object>> triggerCountMapAll = xxlJobLogDao.triggerCountByDay(startDate, endDate, -1);
|
||||
List<Map<String, Object>> triggerCountMapSuc = xxlJobLogDao.triggerCountByDay(startDate, endDate, ReturnT.SUCCESS_CODE);
|
||||
List<Map<String, Object>> triggerCountMapAll = xxlJobLogDao.triggerCountByDay(startDate, endDate);
|
||||
if (CollectionUtils.isNotEmpty(triggerCountMapAll)) {
|
||||
for (Map<String, Object> item: triggerCountMapAll) {
|
||||
String day = String.valueOf(item.get("triggerDay"));
|
||||
int dayAllCount = Integer.valueOf(String.valueOf(item.get("triggerCount")));
|
||||
int daySucCount = 0;
|
||||
int dayFailCount = dayAllCount - daySucCount;
|
||||
|
||||
if (CollectionUtils.isNotEmpty(triggerCountMapSuc)) {
|
||||
for (Map<String, Object> sucItem: triggerCountMapSuc) {
|
||||
String daySuc = String.valueOf(sucItem.get("triggerDay"));
|
||||
if (day.equals(daySuc)) {
|
||||
daySucCount = Integer.valueOf(String.valueOf(sucItem.get("triggerCount")));
|
||||
dayFailCount = dayAllCount - daySucCount;
|
||||
}
|
||||
}
|
||||
}
|
||||
int triggerDayCount = Integer.valueOf(String.valueOf(item.get("triggerDayCount")));
|
||||
int triggerDayCountRunning = Integer.valueOf(String.valueOf(item.get("triggerDayCountRunning")));
|
||||
int triggerDayCountSuc = Integer.valueOf(String.valueOf(item.get("triggerDayCountSuc")));
|
||||
int triggerDayCountFail = triggerDayCount - triggerDayCountRunning - triggerDayCountSuc;
|
||||
|
||||
triggerDayList.add(day);
|
||||
triggerDayCountSucList.add(daySucCount);
|
||||
triggerDayCountFailList.add(dayFailCount);
|
||||
triggerCountSucTotal += daySucCount;
|
||||
triggerCountFailTotal += dayFailCount;
|
||||
triggerDayCountRunningList.add(triggerDayCountRunning);
|
||||
triggerDayCountSucList.add(triggerDayCountSuc);
|
||||
triggerDayCountFailList.add(triggerDayCountFail);
|
||||
|
||||
triggerCountRunningTotal += triggerDayCountRunning;
|
||||
triggerCountSucTotal += triggerDayCountSuc;
|
||||
triggerCountFailTotal += triggerDayCountFail;
|
||||
}
|
||||
} else {
|
||||
for (int i = 4; i > -1; i--) {
|
||||
|
@ -363,8 +358,11 @@ public class XxlJobServiceImpl implements XxlJobService {
|
|||
|
||||
Map<String, Object> result = new HashMap<String, Object>();
|
||||
result.put("triggerDayList", triggerDayList);
|
||||
result.put("triggerDayCountRunningList", triggerDayCountRunningList);
|
||||
result.put("triggerDayCountSucList", triggerDayCountSucList);
|
||||
result.put("triggerDayCountFailList", triggerDayCountFailList);
|
||||
|
||||
result.put("triggerCountRunningTotal", triggerCountRunningTotal);
|
||||
result.put("triggerCountSucTotal", triggerCountSucTotal);
|
||||
result.put("triggerCountFailTotal", triggerCountFailTotal);
|
||||
return new ReturnT<Map<String, Object>>(result);
|
||||
|
|
|
@ -93,11 +93,7 @@ job_dashboard_jobgroup_num_tip=调度中心在线的执行器机器数量
|
|||
job_dashboard_report=调度报表
|
||||
job_dashboard_report_loaddata_fail=调度报表数据加载异常
|
||||
job_dashboard_date_report=日期分布图
|
||||
job_dashboard_date_report_suc_count=成功调度次数
|
||||
job_dashboard_date_report_fail_count=失败调度次数
|
||||
job_dashboard_rate_report=成功比例图
|
||||
job_dashboard_rate_report_suc_count=成功调度次数
|
||||
job_dashboard_rate_report_fail_count=失败调度次数
|
||||
|
||||
## job info
|
||||
jobinfo_name=任务管理
|
||||
|
|
|
@ -93,11 +93,7 @@ job_dashboard_jobgroup_num_tip=The number of online executor machines perceived
|
|||
job_dashboard_report=Scheduling report
|
||||
job_dashboard_report_loaddata_fail=Scheduling report load data error
|
||||
job_dashboard_date_report=Date distribution
|
||||
job_dashboard_date_report_suc_count=Successful scheduling number
|
||||
job_dashboard_date_report_fail_count=Fail scheduling number
|
||||
job_dashboard_rate_report=Percentage distribution
|
||||
job_dashboard_rate_report_suc_count=Successful scheduling percentage
|
||||
job_dashboard_rate_report_fail_count=Fail scheduling percentage
|
||||
|
||||
## job info
|
||||
jobinfo_name=Job Manage
|
||||
|
|
|
@ -163,13 +163,14 @@
|
|||
</select>
|
||||
|
||||
<select id="triggerCountByDay" resultType="java.util.Map" >
|
||||
SELECT DATE_FORMAT(trigger_time,'%Y-%m-%d') triggerDay, COUNT(id) triggerCount
|
||||
FROM XXL_JOB_QRTZ_TRIGGER_LOG
|
||||
WHERE trigger_time BETWEEN #{from} and #{to}
|
||||
<if test="handleCode gt 0">
|
||||
AND handle_code = #{handleCode}
|
||||
</if>
|
||||
GROUP BY triggerDay;
|
||||
SELECT
|
||||
DATE_FORMAT(trigger_time,'%Y-%m-%d') triggerDay,
|
||||
COUNT(handle_code) triggerDayCount,
|
||||
SUM(CASE WHEN handle_code = 0 then 1 else 0 end) as triggerDayCountRunning,
|
||||
SUM(CASE WHEN handle_code = 200 then 1 else 0 end) as triggerDayCountSuc
|
||||
FROM XXL_JOB_QRTZ_TRIGGER_LOG
|
||||
WHERE trigger_time BETWEEN #{from} and #{to}
|
||||
GROUP BY triggerDay;
|
||||
</select>
|
||||
|
||||
<delete id="clearLog" >
|
||||
|
|
|
@ -89,7 +89,7 @@ $(function () {
|
|||
}
|
||||
},
|
||||
legend: {
|
||||
data:[I18n.job_dashboard_date_report_suc_count, I18n.job_dashboard_date_report_fail_count]
|
||||
data:[I18n.joblog_status_suc, I18n.joblog_status_fail, I18n.joblog_status_running]
|
||||
},
|
||||
toolbox: {
|
||||
feature: {
|
||||
|
@ -116,14 +116,14 @@ $(function () {
|
|||
],
|
||||
series : [
|
||||
{
|
||||
name:I18n.job_dashboard_date_report_suc_count,
|
||||
name:I18n.joblog_status_suc,
|
||||
type:'line',
|
||||
stack: 'Total',
|
||||
areaStyle: {normal: {}},
|
||||
data: data.content.triggerDayCountSucList
|
||||
},
|
||||
{
|
||||
name:I18n.job_dashboard_date_report_fail_count,
|
||||
name:I18n.joblog_status_fail,
|
||||
type:'line',
|
||||
stack: 'Total',
|
||||
label: {
|
||||
|
@ -134,9 +134,16 @@ $(function () {
|
|||
},
|
||||
areaStyle: {normal: {}},
|
||||
data: data.content.triggerDayCountFailList
|
||||
},
|
||||
{
|
||||
name:I18n.joblog_status_running,
|
||||
type:'line',
|
||||
stack: 'Total',
|
||||
areaStyle: {normal: {}},
|
||||
data: data.content.triggerDayCountRunningList
|
||||
}
|
||||
],
|
||||
color:['#00A65A', '#F39C12']
|
||||
color:['#00A65A', '#c23632', '#F39C12']
|
||||
};
|
||||
|
||||
var lineChart = echarts.init(document.getElementById('lineChart'));
|
||||
|
@ -155,27 +162,31 @@ $(function () {
|
|||
},
|
||||
tooltip : {
|
||||
trigger: 'item',
|
||||
formatter: "{a} <br/>{b} : {c} ({d}%)"
|
||||
formatter: "{b} : {c} ({d}%)"
|
||||
},
|
||||
legend: {
|
||||
orient: 'vertical',
|
||||
left: 'left',
|
||||
data: [I18n.job_dashboard_rate_report_suc_count, I18n.job_dashboard_rate_report_fail_count ]
|
||||
data: [I18n.joblog_status_suc, I18n.joblog_status_fail, I18n.joblog_status_running ]
|
||||
},
|
||||
series : [
|
||||
{
|
||||
name: '分布比例',
|
||||
//name: '分布比例',
|
||||
type: 'pie',
|
||||
radius : '55%',
|
||||
center: ['50%', '60%'],
|
||||
data:[
|
||||
{
|
||||
value:data.content.triggerCountSucTotal,
|
||||
name:I18n.job_dashboard_rate_report_suc_count
|
||||
name:I18n.joblog_status_suc,
|
||||
value:data.content.triggerCountSucTotal
|
||||
},
|
||||
{
|
||||
value:data.content.triggerCountFailTotal,
|
||||
name:I18n.job_dashboard_rate_report_fail_count
|
||||
name:I18n.joblog_status_fail,
|
||||
value:data.content.triggerCountFailTotal
|
||||
},
|
||||
{
|
||||
name:I18n.joblog_status_running,
|
||||
value:data.content.triggerCountRunningTotal
|
||||
}
|
||||
],
|
||||
itemStyle: {
|
||||
|
@ -187,7 +198,7 @@ $(function () {
|
|||
}
|
||||
}
|
||||
],
|
||||
color:['#00A65A', '#F39C12']
|
||||
color:['#00A65A', '#c23632', '#F39C12']
|
||||
};
|
||||
var pieChart = echarts.init(document.getElementById('pieChart'));
|
||||
pieChart.setOption(option);
|
||||
|
|
|
@ -50,7 +50,7 @@ public class XxlJobLogDaoTest {
|
|||
dto = xxlJobLogDao.load(log.getId());
|
||||
|
||||
|
||||
List<Map<String, Object>> list2 = xxlJobLogDao.triggerCountByDay(DateUtils.addDays(new Date(), 30), new Date(), 200);
|
||||
List<Map<String, Object>> list2 = xxlJobLogDao.triggerCountByDay(DateUtils.addDays(new Date(), 30), new Date());
|
||||
|
||||
int ret4 = xxlJobLogDao.clearLog(1, 1, new Date(), 100);
|
||||
|
||||
|
|
Loading…
Reference in New Issue