新增调度日志接口

This commit is contained in:
zCans
2022-09-25 23:51:34 +08:00
parent ed7e4ae849
commit a83f06339b
9 changed files with 250 additions and 12 deletions
+1 -1
View File
@@ -2,7 +2,7 @@ import request from '@/utils/request'
export function fetchList(query) { export function fetchList(query) {
return request({ return request({
url: '/job-Log/page', url: '/job-log/page',
method: 'get', method: 'get',
params: query params: query
}) })
+2 -2
View File
@@ -25,8 +25,8 @@ service.interceptors.request.use(config => {
// respone interceptor // respone interceptor
service.interceptors.response.use( service.interceptors.response.use(
response => { response => {
console.log('response', response) // console.log('response', response)
console.log('router', this.router) // console.log('router', this.router)
const res = response.data const res = response.data
if (res.code !== 0) { if (res.code !== 0) {
Message({ Message({
@@ -20,9 +20,9 @@
<span>{{scope.row.param}}</span> <span>{{scope.row.param}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" :label="$t('table.jobLogCode')" width="200"> <el-table-column align="center" :label="$t('table.jobLogCode')" width="120">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{scope.row.code}}</span> <el-tag :type="scope.row.code | statusFilter">{{scope.row.code | statusName}}</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" :label="$t('table.jobLogMsg')" width="400"> <el-table-column align="center" :label="$t('table.jobLogMsg')" width="400">
@@ -30,12 +30,12 @@
<span>{{scope.row.msg}}</span> <span>{{scope.row.msg}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" :label="$t('table.alarmStatus')" width="200"> <el-table-column align="center" :label="$t('table.alarmStatus')" width="120">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{scope.row.alarmStatus}}</span> <span>{{scope.row.alarmStatus}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column width="150px" align="center" :label="$t('table.createTime')"> <el-table-column align="center" :label="$t('table.createTime')" width="150">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{scope.row.createTime | parseTime('{y}-{m}-{d} {h}:{i}')}}</span> <span>{{scope.row.createTime | parseTime('{y}-{m}-{d} {h}:{i}')}}</span>
</template> </template>
@@ -77,20 +77,30 @@ export default {
} }
}, },
filters: { filters: {
statusName(status) {
const statusMap = {
0: '成功',
1: '失败'
}
return statusMap[status]
},
statusFilter(status) { statusFilter(status) {
const statusMap = { const statusMap = {
1: 'success', 0: 'success',
2: 'danger' 1: 'danger'
} }
return statusMap[status] return statusMap[status]
} }
}, },
created() { created() {
// this.getList() this.getList()
}, },
activated() { activated() {
this.listQuery.jobId = this.$route.query.jobId if (this.$route.query.jobId) {
// this.getList() this.listQuery.jobId = this.$route.query.jobId
console.log(this.listQuery.jobId, this.$route.query.jobId)
this.getList()
}
}, },
methods: { methods: {
getList() { getList() {
@@ -0,0 +1,41 @@
/**
* Copyright (c) 2022 aoshiguchen
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package fun.asgc.neutrino.proxy.server.constant;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 启用状态枚举
* @author: zCans
* @date: 2022/9/25
*/
@Getter
@AllArgsConstructor
public enum AlarmStatusEnum {
WAIT(1, "待发送"),
SUCCESS(2, "发送成功"),
ERROR(3, "发送失败");
private Integer status;
private String desc;
}
@@ -0,0 +1,54 @@
/**
* Copyright (c) 2022 aoshiguchen
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package fun.asgc.neutrino.proxy.server.controller;
import fun.asgc.neutrino.core.annotation.Autowired;
import fun.asgc.neutrino.core.annotation.NonIntercept;
import fun.asgc.neutrino.core.db.page.Page;
import fun.asgc.neutrino.core.db.page.PageQuery;
import fun.asgc.neutrino.core.web.annotation.*;
import fun.asgc.neutrino.proxy.server.controller.req.*;
import fun.asgc.neutrino.proxy.server.controller.res.*;
import fun.asgc.neutrino.proxy.server.service.JobLogService;
import fun.asgc.neutrino.proxy.server.util.ParamCheckUtil;
import lombok.extern.slf4j.Slf4j;
/**
*
* @author: zCans
* @date: 2022/9/25
*/
@Slf4j
@NonIntercept
@RequestMapping("job-log")
@RestController
public class JobLogController {
@Autowired
private JobLogService jobLogService;
@GetMapping("page")
public Page<JobLogListRes> page(PageQuery pageQuery, JobLogListReq req) {
ParamCheckUtil.checkNotNull(pageQuery, "pageQuery");
return jobLogService.page(pageQuery, req);
}
}
@@ -0,0 +1,34 @@
/**
* Copyright (c) 2022 aoshiguchen
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package fun.asgc.neutrino.proxy.server.controller.req;
import lombok.Data;
/**
* 端口映射列表请求
* @author: zCans
* @date: 2022/9/12
*/
@Data
public class JobLogListReq {
public Integer jobId;
}
@@ -0,0 +1,65 @@
/**
* Copyright (c) 2022 aoshiguchen
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package fun.asgc.neutrino.proxy.server.controller.res;
import lombok.Data;
import java.util.Date;
/**
* 调度日志列表响应
* @author: zCans
* @date: 2022/9/12
*/
@Data
public class JobLogListRes {
private Integer id;
/**
* job_id
*/
private Integer jobId;
/**
* 处理器
*/
private String handler;
/**
* 任务参数
*/
private String param;
/**
* code
*/
private Integer code;
/**
* msg
*/
private String msg;
/**
* 报警状态
* {@link fun.asgc.neutrino.proxy.server.constant.AlarmStatusEnum}
*/
private Integer alarmStatus;
/**
* 创建时间
*/
private Date createTime;
}
@@ -22,9 +22,17 @@
package fun.asgc.neutrino.proxy.server.dal; package fun.asgc.neutrino.proxy.server.dal;
import fun.asgc.neutrino.core.annotation.Component; import fun.asgc.neutrino.core.annotation.Component;
import fun.asgc.neutrino.core.annotation.Param;
import fun.asgc.neutrino.core.aop.Intercept; import fun.asgc.neutrino.core.aop.Intercept;
import fun.asgc.neutrino.core.db.annotation.Insert; import fun.asgc.neutrino.core.db.annotation.Insert;
import fun.asgc.neutrino.core.db.annotation.ResultType;
import fun.asgc.neutrino.core.db.annotation.Select;
import fun.asgc.neutrino.core.db.mapper.SqlMapper; import fun.asgc.neutrino.core.db.mapper.SqlMapper;
import fun.asgc.neutrino.core.db.page.Page;
import fun.asgc.neutrino.proxy.server.controller.req.JobInfoListReq;
import fun.asgc.neutrino.proxy.server.controller.req.JobLogListReq;
import fun.asgc.neutrino.proxy.server.controller.res.JobInfoListRes;
import fun.asgc.neutrino.proxy.server.controller.res.JobLogListRes;
import fun.asgc.neutrino.proxy.server.dal.entity.JobInfoDO; import fun.asgc.neutrino.proxy.server.dal.entity.JobInfoDO;
import fun.asgc.neutrino.proxy.server.dal.entity.JobLogDO; import fun.asgc.neutrino.proxy.server.dal.entity.JobLogDO;
@@ -39,4 +47,13 @@ public interface JobLogMapper extends SqlMapper {
@Insert("insert into job_log(`job_id`,`handler`,`param`,`code`,`msg`,`alarm_status`,`create_time`) values(:jobId,:handler,:param,:code,:msg,:alarmStatus,:createTime)") @Insert("insert into job_log(`job_id`,`handler`,`param`,`code`,`msg`,`alarm_status`,`create_time`) values(:jobId,:handler,:param,:code,:msg,:alarmStatus,:createTime)")
void add(JobLogDO jobLog); void add(JobLogDO jobLog);
@ResultType(JobLogListRes.class)
@Select("select * from job_log order by create_time desc")
void page(Page page, JobLogListReq req);
@ResultType(JobLogListRes.class)
@Select("select * from job_log where job_id = :jobId order by create_time desc")
void pageByJobId(Page page, JobLogListReq req);
} }
@@ -24,8 +24,14 @@ package fun.asgc.neutrino.proxy.server.service;
import fun.asgc.neutrino.core.annotation.Autowired; import fun.asgc.neutrino.core.annotation.Autowired;
import fun.asgc.neutrino.core.annotation.Component; import fun.asgc.neutrino.core.annotation.Component;
import fun.asgc.neutrino.core.annotation.NonIntercept; import fun.asgc.neutrino.core.annotation.NonIntercept;
import fun.asgc.neutrino.core.db.page.Page;
import fun.asgc.neutrino.core.db.page.PageQuery;
import fun.asgc.neutrino.core.quartz.IJobCallback; import fun.asgc.neutrino.core.quartz.IJobCallback;
import fun.asgc.neutrino.core.quartz.JobInfo; import fun.asgc.neutrino.core.quartz.JobInfo;
import fun.asgc.neutrino.proxy.server.controller.req.JobInfoListReq;
import fun.asgc.neutrino.proxy.server.controller.req.JobLogListReq;
import fun.asgc.neutrino.proxy.server.controller.res.JobInfoListRes;
import fun.asgc.neutrino.proxy.server.controller.res.JobLogListRes;
import fun.asgc.neutrino.proxy.server.dal.JobLogMapper; import fun.asgc.neutrino.proxy.server.dal.JobLogMapper;
import fun.asgc.neutrino.proxy.server.dal.entity.JobLogDO; import fun.asgc.neutrino.proxy.server.dal.entity.JobLogDO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -68,4 +74,15 @@ public class JobLogService implements IJobCallback {
); );
} }
public Page<JobLogListRes> page(PageQuery pageQuery, JobLogListReq req) {
Page<JobLogListRes> page = Page.create(pageQuery);
if(req.getJobId() != null){
jobLogMapper.pageByJobId(page, req);
} else {
jobLogMapper.page(page, req);
}
return page;
}
} }