Commit cee572f2 authored by RuoYi's avatar RuoYi
Browse files

若依 3.0

parent 0d341f1a
package com.ruoyi.common.utils.job; package com.ruoyi.quartz.util;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.project.monitor.domain.SysJob; import com.ruoyi.quartz.domain.SysJob;
/** /**
* 任务执行工具 * 任务执行工具
* *
* @author ruoyi * @author ruoyi
*/ */
public class JobInvokeUtil public class JobInvokeUtil
{ {
/** /**
* 执行方法 * 执行方法
* *
* @param sysJob 系统任务 * @param sysJob 系统任务
*/ */
public static void invokeMethod(SysJob sysJob) throws Exception public static void invokeMethod(SysJob sysJob) throws Exception
{ {
String invokeTarget = sysJob.getInvokeTarget(); String invokeTarget = sysJob.getInvokeTarget();
String beanName = getBeanName(invokeTarget); String beanName = getBeanName(invokeTarget);
String methodName = getMethodName(invokeTarget); String methodName = getMethodName(invokeTarget);
List<Object[]> methodParams = getMethodParams(invokeTarget); List<Object[]> methodParams = getMethodParams(invokeTarget);
if (!isValidClassName(beanName)) if (!isValidClassName(beanName))
{ {
Object bean = SpringUtils.getBean(beanName); Object bean = SpringUtils.getBean(beanName);
invokeMethod(bean, methodName, methodParams); invokeMethod(bean, methodName, methodParams);
} }
else else
{ {
Object bean = Class.forName(beanName).newInstance(); Object bean = Class.forName(beanName).newInstance();
invokeMethod(bean, methodName, methodParams); invokeMethod(bean, methodName, methodParams);
} }
} }
/** /**
* 调用任务方法 * 调用任务方法
* *
* @param bean 目标对象 * @param bean 目标对象
* @param methodName 方法名称 * @param methodName 方法名称
* @param methodParams 方法参数 * @param methodParams 方法参数
*/ */
private static void invokeMethod(Object bean, String methodName, List<Object[]> methodParams) private static void invokeMethod(Object bean, String methodName, List<Object[]> methodParams)
throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException,
InvocationTargetException InvocationTargetException
{ {
if (StringUtils.isNotNull(methodParams) && methodParams.size() > 0) if (StringUtils.isNotNull(methodParams) && methodParams.size() > 0)
{ {
Method method = bean.getClass().getDeclaredMethod(methodName, getMethodParamsType(methodParams)); Method method = bean.getClass().getDeclaredMethod(methodName, getMethodParamsType(methodParams));
method.invoke(bean, getMethodParamsValue(methodParams)); method.invoke(bean, getMethodParamsValue(methodParams));
} }
else else
{ {
Method method = bean.getClass().getDeclaredMethod(methodName); Method method = bean.getClass().getDeclaredMethod(methodName);
method.invoke(bean); method.invoke(bean);
} }
} }
/** /**
* 校验是否为为class包名 * 校验是否为为class包名
* *
* @param str 名称 * @param str 名称
* @return true是 false否 * @return true是 false否
*/ */
public static boolean isValidClassName(String invokeTarget) public static boolean isValidClassName(String invokeTarget)
{ {
return StringUtils.countMatches(invokeTarget, ".") > 1; return StringUtils.countMatches(invokeTarget, ".") > 1;
} }
/** /**
* 获取bean名称 * 获取bean名称
* *
* @param invokeTarget 目标字符串 * @param invokeTarget 目标字符串
* @return bean名称 * @return bean名称
*/ */
public static String getBeanName(String invokeTarget) public static String getBeanName(String invokeTarget)
{ {
String beanName = StringUtils.substringBefore(invokeTarget, "("); String beanName = StringUtils.substringBefore(invokeTarget, "(");
return StringUtils.substringBeforeLast(beanName, "."); return StringUtils.substringBeforeLast(beanName, ".");
} }
/** /**
* 获取bean方法 * 获取bean方法
* *
* @param invokeTarget 目标字符串 * @param invokeTarget 目标字符串
* @return method方法 * @return method方法
*/ */
public static String getMethodName(String invokeTarget) public static String getMethodName(String invokeTarget)
{ {
String methodName = StringUtils.substringBefore(invokeTarget, "("); String methodName = StringUtils.substringBefore(invokeTarget, "(");
return StringUtils.substringAfterLast(methodName, "."); return StringUtils.substringAfterLast(methodName, ".");
} }
/** /**
* 获取method方法参数相关列表 * 获取method方法参数相关列表
* *
* @param invokeTarget 目标字符串 * @param invokeTarget 目标字符串
* @return method方法相关参数列表 * @return method方法相关参数列表
*/ */
public static List<Object[]> getMethodParams(String invokeTarget) public static List<Object[]> getMethodParams(String invokeTarget)
{ {
String methodStr = StringUtils.substringBetween(invokeTarget, "(", ")"); String methodStr = StringUtils.substringBetween(invokeTarget, "(", ")");
if (StringUtils.isEmpty(methodStr)) if (StringUtils.isEmpty(methodStr))
{ {
return null; return null;
} }
String[] methodParams = methodStr.split(","); String[] methodParams = methodStr.split(",");
List<Object[]> classs = new LinkedList<>(); List<Object[]> classs = new LinkedList<>();
for (int i = 0; i < methodParams.length; i++) for (int i = 0; i < methodParams.length; i++)
{ {
String str = StringUtils.trimToEmpty(methodParams[i]); String str = StringUtils.trimToEmpty(methodParams[i]);
// String字符串类型,包含' // String字符串类型,包含'
if (StringUtils.contains(str, "'")) if (StringUtils.contains(str, "'"))
{ {
classs.add(new Object[] { StringUtils.replace(str, "'", ""), String.class }); classs.add(new Object[] { StringUtils.replace(str, "'", ""), String.class });
} }
// boolean布尔类型,等于true或者false // boolean布尔类型,等于true或者false
else if (StringUtils.equals(str, "true") || StringUtils.equalsIgnoreCase(str, "false")) else if (StringUtils.equals(str, "true") || StringUtils.equalsIgnoreCase(str, "false"))
{ {
classs.add(new Object[] { Boolean.valueOf(str), Boolean.class }); classs.add(new Object[] { Boolean.valueOf(str), Boolean.class });
} }
// long长整形,包含L // long长整形,包含L
else if (StringUtils.containsIgnoreCase(str, "L")) else if (StringUtils.containsIgnoreCase(str, "L"))
{ {
classs.add(new Object[] { Long.valueOf(StringUtils.replaceIgnoreCase(str, "L", "")), Long.class }); classs.add(new Object[] { Long.valueOf(StringUtils.replaceIgnoreCase(str, "L", "")), Long.class });
} }
// double浮点类型,包含D // double浮点类型,包含D
else if (StringUtils.containsIgnoreCase(str, "D")) else if (StringUtils.containsIgnoreCase(str, "D"))
{ {
classs.add(new Object[] { Double.valueOf(StringUtils.replaceIgnoreCase(str, "D", "")), Double.class }); classs.add(new Object[] { Double.valueOf(StringUtils.replaceIgnoreCase(str, "D", "")), Double.class });
} }
// 其他类型归类为整形 // 其他类型归类为整形
else else
{ {
classs.add(new Object[] { Integer.valueOf(str), Integer.class }); classs.add(new Object[] { Integer.valueOf(str), Integer.class });
} }
} }
return classs; return classs;
} }
/** /**
* 获取参数类型 * 获取参数类型
* *
* @param methodParams 参数相关列表 * @param methodParams 参数相关列表
* @return 参数类型列表 * @return 参数类型列表
*/ */
public static Class<?>[] getMethodParamsType(List<Object[]> methodParams) public static Class<?>[] getMethodParamsType(List<Object[]> methodParams)
{ {
Class<?>[] classs = new Class<?>[methodParams.size()]; Class<?>[] classs = new Class<?>[methodParams.size()];
int index = 0; int index = 0;
for (Object[] os : methodParams) for (Object[] os : methodParams)
{ {
classs[index] = (Class<?>) os[1]; classs[index] = (Class<?>) os[1];
index++; index++;
} }
return classs; return classs;
} }
/** /**
* 获取参数值 * 获取参数值
* *
* @param methodParams 参数相关列表 * @param methodParams 参数相关列表
* @return 参数值列表 * @return 参数值列表
*/ */
public static Object[] getMethodParamsValue(List<Object[]> methodParams) public static Object[] getMethodParamsValue(List<Object[]> methodParams)
{ {
Object[] classs = new Object[methodParams.size()]; Object[] classs = new Object[methodParams.size()];
int index = 0; int index = 0;
for (Object[] os : methodParams) for (Object[] os : methodParams)
{ {
classs[index] = (Object) os[0]; classs[index] = (Object) os[0];
index++; index++;
} }
return classs; return classs;
} }
} }
package com.ruoyi.common.utils.job; package com.ruoyi.quartz.util;
import org.quartz.DisallowConcurrentExecution; import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext; import org.quartz.JobExecutionContext;
import com.ruoyi.project.monitor.domain.SysJob; import com.ruoyi.quartz.domain.SysJob;
/** /**
* 定时任务处理(禁止并发执行) * 定时任务处理(禁止并发执行)
* *
* @author ruoyi * @author ruoyi
* *
*/ */
@DisallowConcurrentExecution @DisallowConcurrentExecution
public class QuartzDisallowConcurrentExecution extends AbstractQuartzJob public class QuartzDisallowConcurrentExecution extends AbstractQuartzJob
{ {
@Override @Override
protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception
{ {
JobInvokeUtil.invokeMethod(sysJob); JobInvokeUtil.invokeMethod(sysJob);
} }
} }
package com.ruoyi.common.utils.job; package com.ruoyi.quartz.util;
import org.quartz.JobExecutionContext; import org.quartz.JobExecutionContext;
import com.ruoyi.project.monitor.domain.SysJob; import com.ruoyi.quartz.domain.SysJob;
/** /**
* 定时任务处理(允许并发执行) * 定时任务处理(允许并发执行)
* *
* @author ruoyi * @author ruoyi
* *
*/ */
public class QuartzJobExecution extends AbstractQuartzJob public class QuartzJobExecution extends AbstractQuartzJob
{ {
@Override @Override
protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception
{ {
JobInvokeUtil.invokeMethod(sysJob); JobInvokeUtil.invokeMethod(sysJob);
} }
} }
package com.ruoyi.common.utils.job; package com.ruoyi.quartz.util;
import org.quartz.CronScheduleBuilder; import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger; import org.quartz.CronTrigger;
import org.quartz.Job; import org.quartz.Job;
import org.quartz.JobBuilder; import org.quartz.JobBuilder;
import org.quartz.JobDetail; import org.quartz.JobDetail;
import org.quartz.JobKey; import org.quartz.JobKey;
import org.quartz.Scheduler; import org.quartz.Scheduler;
import org.quartz.SchedulerException; import org.quartz.SchedulerException;
import org.quartz.TriggerBuilder; import org.quartz.TriggerBuilder;
import org.quartz.TriggerKey; import org.quartz.TriggerKey;
import com.ruoyi.common.constant.ScheduleConstants; import com.ruoyi.common.constant.ScheduleConstants;
import com.ruoyi.common.exception.job.TaskException; import com.ruoyi.common.exception.job.TaskException;
import com.ruoyi.common.exception.job.TaskException.Code; import com.ruoyi.common.exception.job.TaskException.Code;
import com.ruoyi.project.monitor.domain.SysJob; import com.ruoyi.quartz.domain.SysJob;
/** /**
* 定时任务工具类 * 定时任务工具类
* *
* @author ruoyi * @author ruoyi
* *
*/ */
public class ScheduleUtils public class ScheduleUtils
{ {
/** /**
* 得到quartz任务类 * 得到quartz任务类
* *
* @param sysJob 执行计划 * @param sysJob 执行计划
* @return 具体执行任务类 * @return 具体执行任务类
*/ */
private static Class<? extends Job> getQuartzJobClass(SysJob sysJob) private static Class<? extends Job> getQuartzJobClass(SysJob sysJob)
{ {
boolean isConcurrent = "0".equals(sysJob.getConcurrent()); boolean isConcurrent = "0".equals(sysJob.getConcurrent());
return isConcurrent ? QuartzJobExecution.class : QuartzDisallowConcurrentExecution.class; return isConcurrent ? QuartzJobExecution.class : QuartzDisallowConcurrentExecution.class;
} }
/** /**
* 构建任务触发对象 * 构建任务触发对象
*/ */
public static TriggerKey getTriggerKey(Long jobId, String jobGroup) public static TriggerKey getTriggerKey(Long jobId, String jobGroup)
{ {
return TriggerKey.triggerKey(ScheduleConstants.TASK_CLASS_NAME + jobId, jobGroup); return TriggerKey.triggerKey(ScheduleConstants.TASK_CLASS_NAME + jobId, jobGroup);
} }
/** /**
* 构建任务键对象 * 构建任务键对象
*/ */
public static JobKey getJobKey(Long jobId, String jobGroup) public static JobKey getJobKey(Long jobId, String jobGroup)
{ {
return JobKey.jobKey(ScheduleConstants.TASK_CLASS_NAME + jobId, jobGroup); return JobKey.jobKey(ScheduleConstants.TASK_CLASS_NAME + jobId, jobGroup);
} }
/** /**
* 创建定时任务 * 创建定时任务
*/ */
public static void createScheduleJob(Scheduler scheduler, SysJob job) throws SchedulerException, TaskException public static void createScheduleJob(Scheduler scheduler, SysJob job) throws SchedulerException, TaskException
{ {
Class<? extends Job> jobClass = getQuartzJobClass(job); Class<? extends Job> jobClass = getQuartzJobClass(job);
// 构建job信息 // 构建job信息
Long jobId = job.getJobId(); Long jobId = job.getJobId();
String jobGroup = job.getJobGroup(); String jobGroup = job.getJobGroup();
JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(getJobKey(jobId, jobGroup)).build(); JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(getJobKey(jobId, jobGroup)).build();
// 表达式调度构建器 // 表达式调度构建器
CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(job.getCronExpression()); CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(job.getCronExpression());
cronScheduleBuilder = handleCronScheduleMisfirePolicy(job, cronScheduleBuilder); cronScheduleBuilder = handleCronScheduleMisfirePolicy(job, cronScheduleBuilder);
// 按新的cronExpression表达式构建一个新的trigger // 按新的cronExpression表达式构建一个新的trigger
CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(getTriggerKey(jobId, jobGroup)) CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(getTriggerKey(jobId, jobGroup))
.withSchedule(cronScheduleBuilder).build(); .withSchedule(cronScheduleBuilder).build();
// 放入参数,运行时的方法可以获取 // 放入参数,运行时的方法可以获取
jobDetail.getJobDataMap().put(ScheduleConstants.TASK_PROPERTIES, job); jobDetail.getJobDataMap().put(ScheduleConstants.TASK_PROPERTIES, job);
// 判断是否存在 // 判断是否存在
if (scheduler.checkExists(getJobKey(jobId, jobGroup))) if (scheduler.checkExists(getJobKey(jobId, jobGroup)))
{ {
// 防止创建时存在数据问题 先移除,然后在执行创建操作 // 防止创建时存在数据问题 先移除,然后在执行创建操作
scheduler.deleteJob(getJobKey(jobId, jobGroup)); scheduler.deleteJob(getJobKey(jobId, jobGroup));
} }
scheduler.scheduleJob(jobDetail, trigger); scheduler.scheduleJob(jobDetail, trigger);
// 暂停任务 // 暂停任务
if (job.getStatus().equals(ScheduleConstants.Status.PAUSE.getValue())) if (job.getStatus().equals(ScheduleConstants.Status.PAUSE.getValue()))
{ {
scheduler.pauseJob(ScheduleUtils.getJobKey(jobId, jobGroup)); scheduler.pauseJob(ScheduleUtils.getJobKey(jobId, jobGroup));
} }
} }
/** /**
* 设置定时任务策略 * 设置定时任务策略
*/ */
public static CronScheduleBuilder handleCronScheduleMisfirePolicy(SysJob job, CronScheduleBuilder cb) public static CronScheduleBuilder handleCronScheduleMisfirePolicy(SysJob job, CronScheduleBuilder cb)
throws TaskException throws TaskException
{ {
switch (job.getMisfirePolicy()) switch (job.getMisfirePolicy())
{ {
case ScheduleConstants.MISFIRE_DEFAULT: case ScheduleConstants.MISFIRE_DEFAULT:
return cb; return cb;
case ScheduleConstants.MISFIRE_IGNORE_MISFIRES: case ScheduleConstants.MISFIRE_IGNORE_MISFIRES:
return cb.withMisfireHandlingInstructionIgnoreMisfires(); return cb.withMisfireHandlingInstructionIgnoreMisfires();
case ScheduleConstants.MISFIRE_FIRE_AND_PROCEED: case ScheduleConstants.MISFIRE_FIRE_AND_PROCEED:
return cb.withMisfireHandlingInstructionFireAndProceed(); return cb.withMisfireHandlingInstructionFireAndProceed();
case ScheduleConstants.MISFIRE_DO_NOTHING: case ScheduleConstants.MISFIRE_DO_NOTHING:
return cb.withMisfireHandlingInstructionDoNothing(); return cb.withMisfireHandlingInstructionDoNothing();
default: default:
throw new TaskException("The task misfire policy '" + job.getMisfirePolicy() throw new TaskException("The task misfire policy '" + job.getMisfirePolicy()
+ "' cannot be used in cron schedule tasks", Code.CONFIG_ERROR); + "' cannot be used in cron schedule tasks", Code.CONFIG_ERROR);
} }
} }
} }
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper <!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.project.monitor.mapper.SysJobLogMapper"> <mapper namespace="com.ruoyi.quartz.mapper.SysJobLogMapper">
<resultMap type="SysJobLog" id="SysJobLogResult"> <resultMap type="SysJobLog" id="SysJobLogResult">
<id property="jobLogId" column="job_log_id" /> <id property="jobLogId" column="job_log_id" />
<result property="jobName" column="job_name" /> <result property="jobName" column="job_name" />
<result property="jobGroup" column="job_group" /> <result property="jobGroup" column="job_group" />
<result property="invokeTarget" column="invoke_target" /> <result property="invokeTarget" column="invoke_target" />
<result property="jobMessage" column="job_message" /> <result property="jobMessage" column="job_message" />
<result property="status" column="status" /> <result property="status" column="status" />
<result property="exceptionInfo" column="exception_info" /> <result property="exceptionInfo" column="exception_info" />
<result property="createTime" column="create_time" /> <result property="createTime" column="create_time" />
</resultMap> </resultMap>
<sql id="selectJobLogVo"> <sql id="selectJobLogVo">
select job_log_id, job_name, job_group, invoke_target, job_message, status, exception_info, create_time select job_log_id, job_name, job_group, invoke_target, job_message, status, exception_info, create_time
from sys_job_log from sys_job_log
</sql> </sql>
<select id="selectJobLogList" parameterType="SysJobLog" resultMap="SysJobLogResult"> <select id="selectJobLogList" parameterType="SysJobLog" resultMap="SysJobLogResult">
<include refid="selectJobLogVo"/> <include refid="selectJobLogVo"/>
<where> <where>
<if test="jobName != null and jobName != ''"> <if test="jobName != null and jobName != ''">
AND job_name like concat('%', #{jobName}, '%') AND job_name like concat('%', #{jobName}, '%')
</if> </if>
<if test="jobGroup != null and jobGroup != ''"> <if test="jobGroup != null and jobGroup != ''">
AND job_group = #{jobGroup} AND job_group = #{jobGroup}
</if> </if>
<if test="status != null and status != ''"> <if test="status != null and status != ''">
AND status = #{status} AND status = #{status}
</if> </if>
<if test="invokeTarget != null and invokeTarget != ''"> <if test="invokeTarget != null and invokeTarget != ''">
AND invoke_target like concat('%', #{invokeTarget}, '%') AND invoke_target like concat('%', #{invokeTarget}, '%')
</if> </if>
<if test="beginTime != null and beginTime != ''"><!-- 开始时间检索 --> <if test="beginTime != null and beginTime != ''"><!-- 开始时间检索 -->
and date_format(create_time,'%y%m%d') &gt;= date_format(#{beginTime},'%y%m%d') and date_format(create_time,'%y%m%d') &gt;= date_format(#{beginTime},'%y%m%d')
</if> </if>
<if test="endTime != null and endTime != ''"><!-- 结束时间检索 --> <if test="endTime != null and endTime != ''"><!-- 结束时间检索 -->
and date_format(create_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d') and date_format(create_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')
</if> </if>
</where> </where>
</select> </select>
<select id="selectJobLogAll" resultMap="SysJobLogResult"> <select id="selectJobLogAll" resultMap="SysJobLogResult">
<include refid="selectJobLogVo"/> <include refid="selectJobLogVo"/>
</select> </select>
<select id="selectJobLogById" parameterType="Long" resultMap="SysJobLogResult"> <select id="selectJobLogById" parameterType="Long" resultMap="SysJobLogResult">
<include refid="selectJobLogVo"/> <include refid="selectJobLogVo"/>
where job_log_id = #{jobLogId} where job_log_id = #{jobLogId}
</select> </select>
<delete id="deleteJobLogById" parameterType="Long"> <delete id="deleteJobLogById" parameterType="Long">
delete from sys_job_log where job_log_id = #{jobLogId} delete from sys_job_log where job_log_id = #{jobLogId}
</delete> </delete>
<delete id="deleteJobLogByIds" parameterType="Long"> <delete id="deleteJobLogByIds" parameterType="Long">
delete from sys_job_log where job_log_id in delete from sys_job_log where job_log_id in
<foreach collection="array" item="jobLogId" open="(" separator="," close=")"> <foreach collection="array" item="jobLogId" open="(" separator="," close=")">
#{jobLogId} #{jobLogId}
</foreach> </foreach>
</delete> </delete>
<update id="cleanJobLog"> <update id="cleanJobLog">
truncate table sys_job_log truncate table sys_job_log
</update> </update>
<insert id="insertJobLog" parameterType="SysJobLog"> <insert id="insertJobLog" parameterType="SysJobLog">
insert into sys_job_log( insert into sys_job_log(
<if test="jobLogId != null and jobLogId != 0">job_log_id,</if> <if test="jobLogId != null and jobLogId != 0">job_log_id,</if>
<if test="jobName != null and jobName != ''">job_name,</if> <if test="jobName != null and jobName != ''">job_name,</if>
<if test="jobGroup != null and jobGroup != ''">job_group,</if> <if test="jobGroup != null and jobGroup != ''">job_group,</if>
<if test="invokeTarget != null and invokeTarget != ''">invoke_target,</if> <if test="invokeTarget != null and invokeTarget != ''">invoke_target,</if>
<if test="jobMessage != null and jobMessage != ''">job_message,</if> <if test="jobMessage != null and jobMessage != ''">job_message,</if>
<if test="status != null and status != ''">status,</if> <if test="status != null and status != ''">status,</if>
<if test="exceptionInfo != null and exceptionInfo != ''">exception_info,</if> <if test="exceptionInfo != null and exceptionInfo != ''">exception_info,</if>
create_time create_time
)values( )values(
<if test="jobLogId != null and jobLogId != 0">#{jobLogId},</if> <if test="jobLogId != null and jobLogId != 0">#{jobLogId},</if>
<if test="jobName != null and jobName != ''">#{jobName},</if> <if test="jobName != null and jobName != ''">#{jobName},</if>
<if test="jobGroup != null and jobGroup != ''">#{jobGroup},</if> <if test="jobGroup != null and jobGroup != ''">#{jobGroup},</if>
<if test="invokeTarget != null and invokeTarget != ''">#{invokeTarget},</if> <if test="invokeTarget != null and invokeTarget != ''">#{invokeTarget},</if>
<if test="jobMessage != null and jobMessage != ''">#{jobMessage},</if> <if test="jobMessage != null and jobMessage != ''">#{jobMessage},</if>
<if test="status != null and status != ''">#{status},</if> <if test="status != null and status != ''">#{status},</if>
<if test="exceptionInfo != null and exceptionInfo != ''">#{exceptionInfo},</if> <if test="exceptionInfo != null and exceptionInfo != ''">#{exceptionInfo},</if>
sysdate() sysdate()
) )
</insert> </insert>
</mapper> </mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper <!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.project.monitor.mapper.SysJobMapper"> <mapper namespace="com.ruoyi.quartz.mapper.SysJobMapper">
<resultMap type="SysJob" id="SysJobResult"> <resultMap type="SysJob" id="SysJobResult">
<id property="jobId" column="job_id" /> <id property="jobId" column="job_id" />
<result property="jobName" column="job_name" /> <result property="jobName" column="job_name" />
<result property="jobGroup" column="job_group" /> <result property="jobGroup" column="job_group" />
<result property="invokeTarget" column="invoke_target" /> <result property="invokeTarget" column="invoke_target" />
<result property="cronExpression" column="cron_expression" /> <result property="cronExpression" column="cron_expression" />
<result property="misfirePolicy" column="misfire_policy" /> <result property="misfirePolicy" column="misfire_policy" />
<result property="concurrent" column="concurrent" /> <result property="concurrent" column="concurrent" />
<result property="status" column="status" /> <result property="status" column="status" />
<result property="createBy" column="create_by" /> <result property="createBy" column="create_by" />
<result property="createTime" column="create_time" /> <result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" /> <result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" /> <result property="updateTime" column="update_time" />
<result property="remark" column="remark" /> <result property="remark" column="remark" />
</resultMap> </resultMap>
<sql id="selectJobVo"> <sql id="selectJobVo">
select job_id, job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark select job_id, job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark
from sys_job from sys_job
</sql> </sql>
<select id="selectJobList" parameterType="SysJob" resultMap="SysJobResult"> <select id="selectJobList" parameterType="SysJob" resultMap="SysJobResult">
<include refid="selectJobVo"/> <include refid="selectJobVo"/>
<where> <where>
<if test="jobName != null and jobName != ''"> <if test="jobName != null and jobName != ''">
AND job_name like concat('%', #{jobName}, '%') AND job_name like concat('%', #{jobName}, '%')
</if> </if>
<if test="jobGroup != null and jobGroup != ''"> <if test="jobGroup != null and jobGroup != ''">
AND job_group = #{jobGroup} AND job_group = #{jobGroup}
</if> </if>
<if test="status != null and status != ''"> <if test="status != null and status != ''">
AND status = #{status} AND status = #{status}
</if> </if>
<if test="invokeTarget != null and invokeTarget != ''"> <if test="invokeTarget != null and invokeTarget != ''">
AND invoke_target like concat('%', #{invokeTarget}, '%') AND invoke_target like concat('%', #{invokeTarget}, '%')
</if> </if>
</where> </where>
</select> </select>
<select id="selectJobAll" resultMap="SysJobResult"> <select id="selectJobAll" resultMap="SysJobResult">
<include refid="selectJobVo"/> <include refid="selectJobVo"/>
</select> </select>
<select id="selectJobById" parameterType="Long" resultMap="SysJobResult"> <select id="selectJobById" parameterType="Long" resultMap="SysJobResult">
<include refid="selectJobVo"/> <include refid="selectJobVo"/>
where job_id = #{jobId} where job_id = #{jobId}
</select> </select>
<delete id="deleteJobById" parameterType="Long"> <delete id="deleteJobById" parameterType="Long">
delete from sys_job where job_id = #{jobId} delete from sys_job where job_id = #{jobId}
</delete> </delete>
<delete id="deleteJobByIds" parameterType="Long"> <delete id="deleteJobByIds" parameterType="Long">
delete from sys_job where job_id in delete from sys_job where job_id in
<foreach collection="array" item="jobId" open="(" separator="," close=")"> <foreach collection="array" item="jobId" open="(" separator="," close=")">
#{jobId} #{jobId}
</foreach> </foreach>
</delete> </delete>
<update id="updateJob" parameterType="SysJob"> <update id="updateJob" parameterType="SysJob">
update sys_job update sys_job
<set> <set>
<if test="jobName != null and jobName != ''">job_name = #{jobName},</if> <if test="jobName != null and jobName != ''">job_name = #{jobName},</if>
<if test="jobGroup != null and jobGroup != ''">job_group = #{jobGroup},</if> <if test="jobGroup != null and jobGroup != ''">job_group = #{jobGroup},</if>
<if test="invokeTarget != null and invokeTarget != ''">invoke_target = #{invokeTarget},</if> <if test="invokeTarget != null and invokeTarget != ''">invoke_target = #{invokeTarget},</if>
<if test="cronExpression != null and cronExpression != ''">cron_expression = #{cronExpression},</if> <if test="cronExpression != null and cronExpression != ''">cron_expression = #{cronExpression},</if>
<if test="misfirePolicy != null and misfirePolicy != ''">misfire_policy = #{misfirePolicy},</if> <if test="misfirePolicy != null and misfirePolicy != ''">misfire_policy = #{misfirePolicy},</if>
<if test="concurrent != null and concurrent != ''">concurrent = #{concurrent},</if> <if test="concurrent != null and concurrent != ''">concurrent = #{concurrent},</if>
<if test="status !=null">status = #{status},</if> <if test="status !=null">status = #{status},</if>
<if test="remark != null and remark != ''">remark = #{remark},</if> <if test="remark != null and remark != ''">remark = #{remark},</if>
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if> <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
update_time = sysdate() update_time = sysdate()
</set> </set>
where job_id = #{jobId} where job_id = #{jobId}
</update> </update>
<insert id="insertJob" parameterType="SysJob" useGeneratedKeys="true" keyProperty="jobId"> <insert id="insertJob" parameterType="SysJob" useGeneratedKeys="true" keyProperty="jobId">
insert into sys_job( insert into sys_job(
<if test="jobId != null and jobId != 0">job_id,</if> <if test="jobId != null and jobId != 0">job_id,</if>
<if test="jobName != null and jobName != ''">job_name,</if> <if test="jobName != null and jobName != ''">job_name,</if>
<if test="jobGroup != null and jobGroup != ''">job_group,</if> <if test="jobGroup != null and jobGroup != ''">job_group,</if>
<if test="invokeTarget != null and invokeTarget != ''">invoke_target,</if> <if test="invokeTarget != null and invokeTarget != ''">invoke_target,</if>
<if test="cronExpression != null and cronExpression != ''">cron_expression,</if> <if test="cronExpression != null and cronExpression != ''">cron_expression,</if>
<if test="misfirePolicy != null and misfirePolicy != ''">misfire_policy,</if> <if test="misfirePolicy != null and misfirePolicy != ''">misfire_policy,</if>
<if test="concurrent != null and concurrent != ''">concurrent,</if> <if test="concurrent != null and concurrent != ''">concurrent,</if>
<if test="status != null and status != ''">status,</if> <if test="status != null and status != ''">status,</if>
<if test="remark != null and remark != ''">remark,</if> <if test="remark != null and remark != ''">remark,</if>
<if test="createBy != null and createBy != ''">create_by,</if> <if test="createBy != null and createBy != ''">create_by,</if>
create_time create_time
)values( )values(
<if test="jobId != null and jobId != 0">#{jobId},</if> <if test="jobId != null and jobId != 0">#{jobId},</if>
<if test="jobName != null and jobName != ''">#{jobName},</if> <if test="jobName != null and jobName != ''">#{jobName},</if>
<if test="jobGroup != null and jobGroup != ''">#{jobGroup},</if> <if test="jobGroup != null and jobGroup != ''">#{jobGroup},</if>
<if test="invokeTarget != null and invokeTarget != ''">#{invokeTarget},</if> <if test="invokeTarget != null and invokeTarget != ''">#{invokeTarget},</if>
<if test="cronExpression != null and cronExpression != ''">#{cronExpression},</if> <if test="cronExpression != null and cronExpression != ''">#{cronExpression},</if>
<if test="misfirePolicy != null and misfirePolicy != ''">#{misfirePolicy},</if> <if test="misfirePolicy != null and misfirePolicy != ''">#{misfirePolicy},</if>
<if test="concurrent != null and concurrent != ''">#{concurrent},</if> <if test="concurrent != null and concurrent != ''">#{concurrent},</if>
<if test="status != null and status != ''">#{status},</if> <if test="status != null and status != ''">#{status},</if>
<if test="remark != null and remark != ''">#{remark},</if> <if test="remark != null and remark != ''">#{remark},</if>
<if test="createBy != null and createBy != ''">#{createBy},</if> <if test="createBy != null and createBy != ''">#{createBy},</if>
sysdate() sysdate()
) )
</insert> </insert>
</mapper> </mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ruoyi</artifactId>
<groupId>com.ruoyi</groupId>
<version>3.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ruoyi-system</artifactId>
<description>
system系统模块
</description>
<dependencies>
<!-- 通用工具-->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
package com.ruoyi.project.system.domain; package com.ruoyi.system.domain;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size; import javax.validation.constraints.Size;
import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.framework.aspectj.lang.annotation.Excel; import com.ruoyi.common.annotation.Excel;
import com.ruoyi.framework.aspectj.lang.annotation.Excel.ColumnType; import com.ruoyi.common.annotation.Excel.ColumnType;
import com.ruoyi.framework.web.domain.BaseEntity; import com.ruoyi.common.core.domain.BaseEntity;
/** /**
* 参数配置表 sys_config * 参数配置表 sys_config
......
package com.ruoyi.project.monitor.domain; package com.ruoyi.system.domain;
import java.util.Date; import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel; import com.ruoyi.common.annotation.Excel;
import com.ruoyi.framework.aspectj.lang.annotation.Excel.ColumnType; import com.ruoyi.common.annotation.Excel.ColumnType;
import com.ruoyi.framework.web.domain.BaseEntity; import com.ruoyi.common.core.domain.BaseEntity;
/** /**
* 系统访问记录表 sys_logininfor * 系统访问记录表 sys_logininfor
...@@ -141,4 +141,4 @@ public class SysLogininfor extends BaseEntity ...@@ -141,4 +141,4 @@ public class SysLogininfor extends BaseEntity
{ {
this.loginTime = loginTime; this.loginTime = loginTime;
} }
} }
\ No newline at end of file
package com.ruoyi.project.system.domain; package com.ruoyi.system.domain;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size; import javax.validation.constraints.Size;
import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.framework.web.domain.BaseEntity; import com.ruoyi.common.core.domain.BaseEntity;
/** /**
* 通知公告表 sys_notice * 通知公告表 sys_notice
......
package com.ruoyi.project.monitor.domain; package com.ruoyi.system.domain;
import java.util.Date; import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel; import com.ruoyi.common.annotation.Excel;
import com.ruoyi.framework.aspectj.lang.annotation.Excel.ColumnType; import com.ruoyi.common.annotation.Excel.ColumnType;
import com.ruoyi.framework.web.domain.BaseEntity; import com.ruoyi.common.core.domain.BaseEntity;
/** /**
* 操作日志记录表 oper_log * 操作日志记录表 oper_log
......
package com.ruoyi.project.system.domain; package com.ruoyi.system.domain;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size; import javax.validation.constraints.Size;
import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.framework.aspectj.lang.annotation.Excel; import com.ruoyi.common.annotation.Excel;
import com.ruoyi.framework.aspectj.lang.annotation.Excel.ColumnType; import com.ruoyi.common.annotation.Excel.ColumnType;
import com.ruoyi.framework.web.domain.BaseEntity; import com.ruoyi.common.core.domain.BaseEntity;
/** /**
* 岗位表 sys_post * 岗位表 sys_post
......
package com.ruoyi.project.system.domain; package com.ruoyi.system.domain;
import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; import org.apache.commons.lang3.builder.ToStringStyle;
......
package com.ruoyi.project.system.domain; package com.ruoyi.system.domain;
import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; import org.apache.commons.lang3.builder.ToStringStyle;
......
package com.ruoyi.project.monitor.domain; package com.ruoyi.system.domain;
/** /**
* 当前在线会话 * 当前在线会话
......
package com.ruoyi.project.system.domain; package com.ruoyi.system.domain;
import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; import org.apache.commons.lang3.builder.ToStringStyle;
......
package com.ruoyi.project.system.domain; package com.ruoyi.system.domain;
import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; import org.apache.commons.lang3.builder.ToStringStyle;
......
package com.ruoyi.project.system.domain.vo; package com.ruoyi.system.domain.vo;
/** /**
* 路由显示信息 * 路由显示信息
......
package com.ruoyi.project.system.domain.vo; package com.ruoyi.system.domain.vo;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
import java.util.List; import java.util.List;
......
package com.ruoyi.project.system.mapper; package com.ruoyi.system.mapper;
import java.util.List; import java.util.List;
import com.ruoyi.project.system.domain.SysConfig; import com.ruoyi.system.domain.SysConfig;
/** /**
* 参数配置 数据层 * 参数配置 数据层
...@@ -65,4 +65,4 @@ public interface SysConfigMapper ...@@ -65,4 +65,4 @@ public interface SysConfigMapper
* @return 结果 * @return 结果
*/ */
public int deleteConfigByIds(Long[] configIds); public int deleteConfigByIds(Long[] configIds);
} }
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment