update 更新 SysJob 导入导出 补全 SysUser 试图对象

This commit is contained in:
疯狂的狮子li 2021-08-04 18:52:09 +08:00
parent 9cf4794146
commit 5ca4478540
9 changed files with 365 additions and 219 deletions

View File

@ -1,6 +1,5 @@
package com.ruoyi.quartz.controller; package com.ruoyi.quartz.controller;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
@ -9,7 +8,8 @@ import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.exception.job.TaskException; import com.ruoyi.common.exception.job.TaskException;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtils;
import com.ruoyi.quartz.domain.SysJob; import com.ruoyi.quartz.domain.SysJob;
import com.ruoyi.quartz.service.ISysJobService; import com.ruoyi.quartz.service.ISysJobService;
import com.ruoyi.quartz.util.CronUtils; import com.ruoyi.quartz.util.CronUtils;
@ -18,6 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List; import java.util.List;
/** /**
@ -48,11 +49,10 @@ public class SysJobController extends BaseController
@PreAuthorize("@ss.hasPermi('monitor:job:export')") @PreAuthorize("@ss.hasPermi('monitor:job:export')")
@Log(title = "定时任务", businessType = BusinessType.EXPORT) @Log(title = "定时任务", businessType = BusinessType.EXPORT)
@GetMapping("/export") @GetMapping("/export")
public AjaxResult export(SysJob sysJob) public void export(SysJob sysJob, HttpServletResponse response)
{ {
List<SysJob> list = jobService.selectJobList(sysJob); List<SysJob> list = jobService.selectJobList(sysJob);
ExcelUtil<SysJob> util = new ExcelUtil<SysJob>(SysJob.class); ExcelUtils.exportExcel(list, "定时任务", SysJob.class, response);
return util.exportExcel(list, "定时任务");
} }
/** /**

View File

@ -1,85 +1,85 @@
package com.ruoyi.quartz.controller; package com.ruoyi.quartz.controller;
import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.poi.ExcelUtils;
import com.ruoyi.quartz.domain.SysJobLog; import com.ruoyi.quartz.domain.SysJobLog;
import com.ruoyi.quartz.service.ISysJobLogService; import com.ruoyi.quartz.service.ISysJobLogService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* 调度日志操作处理 /**
* * 调度日志操作处理
* @author ruoyi *
*/ * @author ruoyi
@RestController */
@RequestMapping("/monitor/jobLog") @RestController
public class SysJobLogController extends BaseController @RequestMapping("/monitor/jobLog")
{ public class SysJobLogController extends BaseController
@Autowired {
private ISysJobLogService jobLogService; @Autowired
private ISysJobLogService jobLogService;
/**
* 查询定时任务调度日志列表 /**
*/ * 查询定时任务调度日志列表
@PreAuthorize("@ss.hasPermi('monitor:job:list')") */
@GetMapping("/list") @PreAuthorize("@ss.hasPermi('monitor:job:list')")
public TableDataInfo list(SysJobLog sysJobLog) @GetMapping("/list")
{ public TableDataInfo list(SysJobLog sysJobLog)
return jobLogService.selectPageJobLogList(sysJobLog); {
} return jobLogService.selectPageJobLogList(sysJobLog);
}
/**
* 导出定时任务调度日志列表 /**
*/ * 导出定时任务调度日志列表
@PreAuthorize("@ss.hasPermi('monitor:job:export')") */
@Log(title = "任务调度日志", businessType = BusinessType.EXPORT) @PreAuthorize("@ss.hasPermi('monitor:job:export')")
@GetMapping("/export") @Log(title = "任务调度日志", businessType = BusinessType.EXPORT)
public AjaxResult export(SysJobLog sysJobLog) @GetMapping("/export")
{ public void export(SysJobLog sysJobLog, HttpServletResponse response)
List<SysJobLog> list = jobLogService.selectJobLogList(sysJobLog); {
ExcelUtil<SysJobLog> util = new ExcelUtil<SysJobLog>(SysJobLog.class); List<SysJobLog> list = jobLogService.selectJobLogList(sysJobLog);
return util.exportExcel(list, "调度日志"); ExcelUtils.exportExcel(list, "调度日志", SysJobLog.class, response);
} }
/** /**
* 根据调度编号获取详细信息 * 根据调度编号获取详细信息
*/ */
@PreAuthorize("@ss.hasPermi('monitor:job:query')") @PreAuthorize("@ss.hasPermi('monitor:job:query')")
@GetMapping(value = "/{configId}") @GetMapping(value = "/{configId}")
public AjaxResult getInfo(@PathVariable Long jobLogId) public AjaxResult getInfo(@PathVariable Long jobLogId)
{ {
return AjaxResult.success(jobLogService.selectJobLogById(jobLogId)); return AjaxResult.success(jobLogService.selectJobLogById(jobLogId));
} }
/** /**
* 删除定时任务调度日志 * 删除定时任务调度日志
*/ */
@PreAuthorize("@ss.hasPermi('monitor:job:remove')") @PreAuthorize("@ss.hasPermi('monitor:job:remove')")
@Log(title = "定时任务调度日志", businessType = BusinessType.DELETE) @Log(title = "定时任务调度日志", businessType = BusinessType.DELETE)
@DeleteMapping("/{jobLogIds}") @DeleteMapping("/{jobLogIds}")
public AjaxResult remove(@PathVariable Long[] jobLogIds) public AjaxResult remove(@PathVariable Long[] jobLogIds)
{ {
return toAjax(jobLogService.deleteJobLogByIds(jobLogIds)); return toAjax(jobLogService.deleteJobLogByIds(jobLogIds));
} }
/** /**
* 清空定时任务调度日志 * 清空定时任务调度日志
*/ */
@PreAuthorize("@ss.hasPermi('monitor:job:remove')") @PreAuthorize("@ss.hasPermi('monitor:job:remove')")
@Log(title = "调度日志", businessType = BusinessType.CLEAN) @Log(title = "调度日志", businessType = BusinessType.CLEAN)
@DeleteMapping("/clean") @DeleteMapping("/clean")
public AjaxResult clean() public AjaxResult clean()
{ {
jobLogService.cleanJobLog(); jobLogService.cleanJobLog();
return AjaxResult.success(); return AjaxResult.success();
} }
} }

View File

@ -1,11 +1,13 @@
package com.ruoyi.quartz.domain; package com.ruoyi.quartz.domain;
import com.ruoyi.common.utils.StringUtils; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.annotation.ExcelDictFormat;
import com.ruoyi.common.annotation.Excel.ColumnType;
import com.ruoyi.common.constant.ScheduleConstants; import com.ruoyi.common.constant.ScheduleConstants;
import com.ruoyi.common.convert.ExcelDictConvert;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.quartz.util.CronUtils; import com.ruoyi.quartz.util.CronUtils;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
@ -28,13 +30,14 @@ import java.util.Map;
@NoArgsConstructor @NoArgsConstructor
@Accessors(chain = true) @Accessors(chain = true)
@TableName("sys_job") @TableName("sys_job")
@ExcelIgnoreUnannotated
public class SysJob implements Serializable { public class SysJob implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* 任务ID * 任务ID
*/ */
@Excel(name = "任务序号", cellType = ColumnType.NUMERIC) @ExcelProperty(value = "任务序号")
@TableId(value = "job_id", type = IdType.AUTO) @TableId(value = "job_id", type = IdType.AUTO)
private Long jobId; private Long jobId;
@ -43,13 +46,14 @@ public class SysJob implements Serializable {
*/ */
@NotBlank(message = "任务名称不能为空") @NotBlank(message = "任务名称不能为空")
@Size(min = 0, max = 64, message = "任务名称不能超过64个字符") @Size(min = 0, max = 64, message = "任务名称不能超过64个字符")
@Excel(name = "任务名称") @ExcelProperty(value = "任务名称")
private String jobName; private String jobName;
/** /**
* 任务组名 * 任务组名
*/ */
@Excel(name = "任务组名") @ExcelProperty(value = "任务组名", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "sys_job_group")
private String jobGroup; private String jobGroup;
/** /**
@ -57,7 +61,7 @@ public class SysJob implements Serializable {
*/ */
@NotBlank(message = "调用目标字符串不能为空") @NotBlank(message = "调用目标字符串不能为空")
@Size(min = 0, max = 500, message = "调用目标字符串长度不能超过500个字符") @Size(min = 0, max = 500, message = "调用目标字符串长度不能超过500个字符")
@Excel(name = "调用目标字符串") @ExcelProperty(value = "调用目标字符串")
private String invokeTarget; private String invokeTarget;
/** /**
@ -65,25 +69,28 @@ public class SysJob implements Serializable {
*/ */
@NotBlank(message = "Cron执行表达式不能为空") @NotBlank(message = "Cron执行表达式不能为空")
@Size(min = 0, max = 255, message = "Cron执行表达式不能超过255个字符") @Size(min = 0, max = 255, message = "Cron执行表达式不能超过255个字符")
@Excel(name = "执行表达式 ") @ExcelProperty(value = "执行表达式")
private String cronExpression; private String cronExpression;
/** /**
* cron计划策略 * cron计划策略
*/ */
@Excel(name = "计划策略 ", readConverterExp = "0=默认,1=立即触发执行,2=触发一次执行,3=不触发立即执行") @ExcelProperty(value = "计划策略 ", converter = ExcelDictConvert.class)
private String misfirePolicy = ScheduleConstants.MISFIRE_DEFAULT; @ExcelDictFormat(readConverterExp = "0=默认,1=立即触发执行,2=触发一次执行,3=不触发立即执行")
private String misfirePolicy = ScheduleConstants.MISFIRE_DEFAULT;
/** /**
* 是否并发执行0允许 1禁止 * 是否并发执行0允许 1禁止
*/ */
@Excel(name = "并发执行", readConverterExp = "0=允许,1=禁止") @ExcelProperty(value = "并发执行", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=允许,1=禁止")
private String concurrent; private String concurrent;
/** /**
* 任务状态0正常 1暂停 * 任务状态0正常 1暂停
*/ */
@Excel(name = "任务状态", readConverterExp = "0=正常,1=暂停") @ExcelProperty(value = "任务状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "sys_job_status")
private String status; private String status;
/** /**
@ -96,7 +103,6 @@ public class SysJob implements Serializable {
* 创建时间 * 创建时间
*/ */
@TableField(fill = FieldFill.INSERT) @TableField(fill = FieldFill.INSERT)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime; private Date createTime;
/** /**
@ -109,7 +115,6 @@ public class SysJob implements Serializable {
* 更新时间 * 更新时间
*/ */
@TableField(fill = FieldFill.INSERT_UPDATE) @TableField(fill = FieldFill.INSERT_UPDATE)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime; private Date updateTime;
/** /**

View File

@ -1,78 +1,82 @@
package com.ruoyi.quartz.domain; package com.ruoyi.quartz.domain;
import com.baomidou.mybatisplus.annotation.*; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.fasterxml.jackson.annotation.JsonFormat; import com.alibaba.excel.annotation.ExcelProperty;
import com.ruoyi.common.annotation.Excel; import com.baomidou.mybatisplus.annotation.*;
import lombok.Data; import com.ruoyi.common.annotation.ExcelDictFormat;
import lombok.NoArgsConstructor; import com.ruoyi.common.convert.ExcelDictConvert;
import lombok.experimental.Accessors; import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date; import lombok.experimental.Accessors;
import java.util.HashMap;
import java.util.Map; import java.util.Date;
import java.util.HashMap;
/** import java.util.Map;
* 定时任务调度日志表 sys_job_log
* /**
* @author ruoyi * 定时任务调度日志表 sys_job_log
*/ *
* @author ruoyi
@Data */
@NoArgsConstructor
@Accessors(chain = true) @Data
@TableName("sys_job_log") @NoArgsConstructor
public class SysJobLog @Accessors(chain = true)
{ @TableName("sys_job_log")
private static final long serialVersionUID = 1L; @ExcelIgnoreUnannotated
public class SysJobLog
/** ID */ {
@Excel(name = "日志序号") private static final long serialVersionUID = 1L;
@TableId(value = "job_log_id", type = IdType.AUTO)
private Long jobLogId; /** ID */
@ExcelProperty(value = "日志序号")
/** 任务名称 */ @TableId(value = "job_log_id", type = IdType.AUTO)
@Excel(name = "任务名称") private Long jobLogId;
private String jobName;
/** 任务名称 */
/** 任务组名 */ @ExcelProperty(value = "任务名称")
@Excel(name = "任务组名") private String jobName;
private String jobGroup;
/** 任务组名 */
/** 调用目标字符串 */ @ExcelProperty(value = "任务组名", converter = ExcelDictConvert.class)
@Excel(name = "调用目标字符串") @ExcelDictFormat(dictType = "sys_job_group")
private String invokeTarget; private String jobGroup;
/** 日志信息 */ /** 调用目标字符串 */
@Excel(name = "日志信息") @ExcelProperty(value = "调用目标字符串")
private String jobMessage; private String invokeTarget;
/** 执行状态0正常 1失败 */ /** 日志信息 */
@Excel(name = "执行状态", readConverterExp = "0=正常,1=失败") @ExcelProperty(value = "日志信息")
private String status; private String jobMessage;
/** 异常信息 */ /** 执行状态0正常 1失败 */
@Excel(name = "异常信息") @ExcelProperty(value = "执行状态", converter = ExcelDictConvert.class)
private String exceptionInfo; @ExcelDictFormat(dictType = "sys_common_status")
private String status;
/**
* 创建时间 /** 异常信息 */
*/ @ExcelProperty(value = "异常信息")
@TableField(fill = FieldFill.INSERT) private String exceptionInfo;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime; /**
* 创建时间
/** */
* 请求参数 @TableField(fill = FieldFill.INSERT)
*/ private Date createTime;
@TableField(exist = false)
private Map<String, Object> params = new HashMap<>(); /**
* 请求参数
/** 开始时间 */ */
@TableField(exist = false) @TableField(exist = false)
private Date startTime; private Map<String, Object> params = new HashMap<>();
/** 停止时间 */ /** 开始时间 */
@TableField(exist = false) @TableField(exist = false)
private Date stopTime; private Date startTime;
} /** 停止时间 */
@TableField(exist = false)
private Date stopTime;
}

View File

@ -0,0 +1,93 @@
package com.ruoyi.system.domain.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.ruoyi.common.annotation.ExcelDictFormat;
import com.ruoyi.common.convert.ExcelDictConvert;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* 用户对象导出VO
*
* @author Lion Li
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
public class SysUserExportVo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 用户ID
*/
@ExcelProperty(value = "用户序号")
private Long userId;
/**
* 用户账号
*/
@ExcelProperty(value = "登录名称")
private String userName;
/**
* 用户昵称
*/
@ExcelProperty(value = "用户名称")
private String nickName;
/**
* 用户邮箱
*/
@ExcelProperty(value = "用户邮箱")
private String email;
/**
* 手机号码
*/
@ExcelProperty(value = "手机号码")
private String phonenumber;
/**
* 用户性别
*/
@ExcelProperty(value = "用户性别", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "sys_user_sex")
private String sex;
/**
* 帐号状态0正常 1停用
*/
@ExcelProperty(value = "帐号状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "sys_common_status")
private String status;
/**
* 最后登录IP
*/
@ExcelProperty(value = "最后登录IP")
private String loginIp;
/**
* 最后登录时间
*/
@ExcelProperty(value = "最后登录时间")
private Date loginDate;
/**
* 部门名称
*/
@ExcelProperty(value = "部门名称")
private String deptName;
/**
* 负责人
*/
@ExcelProperty(value = "部门负责人")
private String leader;
}

View File

@ -0,0 +1,73 @@
package com.ruoyi.system.domain.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.ruoyi.common.annotation.ExcelDictFormat;
import com.ruoyi.common.convert.ExcelDictConvert;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 用户对象导入VO
*
* @author Lion Li
*/
@Data
@NoArgsConstructor
// @Accessors(chain = true) // 导入不允许使用 会找不到set方法
public class SysUserImportVo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 用户ID
*/
@ExcelProperty(value = "用户序号")
private Long userId;
/**
* 部门ID
*/
@ExcelProperty(value = "部门编号")
private Long deptId;
/**
* 用户账号
*/
@ExcelProperty(value = "登录名称")
private String userName;
/**
* 用户昵称
*/
@ExcelProperty(value = "用户名称")
private String nickName;
/**
* 用户邮箱
*/
@ExcelProperty(value = "用户邮箱")
private String email;
/**
* 手机号码
*/
@ExcelProperty(value = "手机号码")
private String phonenumber;
/**
* 用户性别
*/
@ExcelProperty(value = "用户性别", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "sys_user_sex")
private String sex;
/**
* 帐号状态0正常 1停用
*/
@ExcelProperty(value = "帐号状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "sys_common_status")
private String status;
}

View File

@ -24,12 +24,3 @@ export function cleanJobLog() {
method: 'delete' method: 'delete'
}) })
} }
// 导出调度日志
export function exportJobLog(query) {
return request({
url: '/monitor/jobLog/export',
method: 'get',
params: query
})
}

View File

@ -280,7 +280,8 @@
</template> </template>
<script> <script>
import { listJob, getJob, delJob, addJob, updateJob, exportJob, runJob, changeJobStatus } from "@/api/monitor/job"; import { listJob, getJob, delJob, addJob, updateJob, runJob, changeJobStatus } from "@/api/monitor/job";
import { downLoadExcel } from "@/utils/download";
export default { export default {
name: "Job", name: "Job",
@ -505,18 +506,7 @@ export default {
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
const queryParams = this.queryParams; downLoadExcel('/monitor/job/export', this.queryParams);
this.$confirm("是否确认导出所有定时任务数据项?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.exportLoading = true;
return exportJob(queryParams);
}).then(response => {
this.download(response.msg);
this.exportLoading = false;
}).catch(() => {});
} }
} }
}; };

View File

@ -177,8 +177,9 @@
</template> </template>
<script> <script>
import { getJob} from "@/api/monitor/job"; import { getJob } from "@/api/monitor/job";
import { listJobLog, delJobLog, exportJobLog, cleanJobLog } from "@/api/monitor/jobLog"; import { listJobLog, delJobLog, cleanJobLog } from "@/api/monitor/jobLog";
import { downLoadExcel } from "@/utils/download";
export default { export default {
name: "JobLog", name: "JobLog",
@ -310,19 +311,8 @@ export default {
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
const queryParams = this.queryParams; downLoadExcel('/monitor/jobLog/export', this.queryParams);
this.$confirm("是否确认导出所有调度日志数据项?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.exportLoading = true;
return exportJobLog(queryParams);
}).then(response => {
this.download(response.msg);
this.exportLoading = false;
}).catch(() => {});
} }
} }
}; };
</script> </script>