package com.nanjing.water.service.quartz; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.nanjing.water.common.ConstantFactory; import com.nanjing.water.common.ExecutedResult; import com.nanjing.water.common.util.LocalDateTimeUtil; import com.nanjing.water.common.util.NumericUtil; import com.nanjing.water.common.util.StringUtil; import com.nanjing.water.repository.impl.QuartzTaskErrorMapperImpl; import com.nanjing.water.repository.impl.QuartzTaskRecordMapperImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.lang.reflect.Method; import java.time.LocalDateTime; import java.util.Objects; @Service public class QuartzExecutor { private static Logger logger = LoggerFactory.getLogger(QuartzExecutor.class); @Autowired private QuartzTaskRecordMapperImpl taskRecordsDao; @Autowired private QuartzTaskErrorMapperImpl taskErrorsDao; /** * 执行job * @param executorName 执行器åç§°(方法å) * @param jobParameter æ‰§è¡Œå‚æ•° */ public ExecutedResult<String> execute(String executorName, String jobParameter) { try { // æ ¹æ®æ‰§è¡Œå™¨key,查找执行器的方法(入å‚:String jobParameter,返å‚:ExecutedResult<String>) Method method = QuartzExecutor.class.getMethod(executorName, String.class); return (ExecutedResult<String>)method.invoke(this, jobParameter); } catch (Exception e) { return ExecutedResult.failed(e.toString()); } } /*** * job执行器-清ç†ä»»åŠ¡è°ƒåº¦æ—¥å¿— * @param jobParameter æ‰§è¡Œå‚æ•° */ public ExecutedResult<String> clearQuartzLog(String jobParameter) { try { int keepDays = ConstantFactory.NUM15; if (StringUtil.isNotNullOrEmpty(jobParameter)) { JsonElement element = new JsonParser().parse(jobParameter); if (Objects.nonNull(element) && !element.isJsonNull()) { JsonObject data = element.getAsJsonObject(); if (data.has("keepDays") && !data.get("keepDays").isJsonNull()) { keepDays = NumericUtil.tryParseInt(data.get("keepDays").getAsString(), ConstantFactory.NUM15); } } } LocalDateTime today = LocalDateTimeUtil.todayFirst(); LocalDateTime limitDate = LocalDateTimeUtil.dateTimeAddDay(today, -1L * keepDays); taskRecordsDao.clear4DateTime(LocalDateTimeUtil.getTimeStamp(limitDate).getTime()); taskErrorsDao.clear4DateTime(LocalDateTimeUtil.getTimeStamp(limitDate).getTime()); return ExecutedResult.success(); } catch (Exception e) { return ExecutedResult.failed(e.toString()); } } }