
org.openea.eap.module.infra.service.job.JobLogServiceImpl Maven / Gradle / Ivy
package org.openea.eap.module.infra.service.job;
import org.openea.eap.framework.common.pojo.PageResult;
import org.openea.eap.module.infra.controller.admin.job.vo.log.JobLogPageReqVO;
import org.openea.eap.module.infra.dal.dataobject.job.JobLogDO;
import org.openea.eap.module.infra.dal.mysql.job.JobLogMapper;
import org.openea.eap.module.infra.enums.job.JobLogStatusEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.time.LocalDateTime;
/**
* Job 日志 Service 实现类
*
*/
@Service
@Validated
@Slf4j
public class JobLogServiceImpl implements JobLogService {
@Resource
private JobLogMapper jobLogMapper;
@Override
public Long createJobLog(Long jobId, LocalDateTime beginTime,
String jobHandlerName, String jobHandlerParam, Integer executeIndex) {
JobLogDO log = JobLogDO.builder().jobId(jobId).handlerName(jobHandlerName)
.handlerParam(jobHandlerParam).executeIndex(executeIndex)
.beginTime(beginTime).status(JobLogStatusEnum.RUNNING.getStatus()).build();
jobLogMapper.insert(log);
return log.getId();
}
@Override
@Async
public void updateJobLogResultAsync(Long logId, LocalDateTime endTime, Integer duration, boolean success, String result) {
try {
JobLogDO updateObj = JobLogDO.builder().id(logId).endTime(endTime).duration(duration)
.status(success ? JobLogStatusEnum.SUCCESS.getStatus() : JobLogStatusEnum.FAILURE.getStatus())
.result(result).build();
jobLogMapper.updateById(updateObj);
} catch (Exception ex) {
log.error("[updateJobLogResultAsync][logId({}) endTime({}) duration({}) success({}) result({})]",
logId, endTime, duration, success, result);
}
}
@Override
@SuppressWarnings("DuplicatedCode")
public Integer cleanJobLog(Integer exceedDay, Integer deleteLimit) {
int count = 0;
LocalDateTime expireDate = LocalDateTime.now().minusDays(exceedDay);
// 循环删除,直到没有满足条件的数据
for (int i = 0; i < Short.MAX_VALUE; i++) {
int deleteCount = jobLogMapper.deleteByCreateTimeLt(expireDate, deleteLimit);
count += deleteCount;
// 达到删除预期条数,说明到底了
if (deleteCount < deleteLimit) {
break;
}
}
return count;
}
@Override
public JobLogDO getJobLog(Long id) {
return jobLogMapper.selectById(id);
}
@Override
public PageResult getJobLogPage(JobLogPageReqVO pageReqVO) {
return jobLogMapper.selectPage(pageReqVO);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy