提交 841200e7 编写于 作者: sq3536's avatar sq3536

jobs 实现

上级 006d14b4
...@@ -3,6 +3,8 @@ package cn.ibizlab.core.extensions.service; ...@@ -3,6 +3,8 @@ package cn.ibizlab.core.extensions.service;
import cn.ibizlab.core.task.service.impl.JobsInfoServiceImpl; import cn.ibizlab.core.task.service.impl.JobsInfoServiceImpl;
import cn.ibizlab.util.errors.BadRequestAlertException; import cn.ibizlab.util.errors.BadRequestAlertException;
import com.baomidou.jobs.service.JobsHelper; import com.baomidou.jobs.service.JobsHelper;
import com.baomidou.jobs.trigger.JobsTrigger;
import com.baomidou.jobs.trigger.TriggerTypeEnum;
import com.baomidou.mybatisplus.extension.api.Assert; import com.baomidou.mybatisplus.extension.api.Assert;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import cn.ibizlab.core.task.domain.JobsInfo; import cn.ibizlab.core.task.domain.JobsInfo;
...@@ -33,6 +35,13 @@ public class JobsInfoServiceEx extends JobsInfoServiceImpl { ...@@ -33,6 +35,13 @@ public class JobsInfoServiceEx extends JobsInfoServiceImpl {
@Override @Override
@Transactional @Transactional
public JobsInfo execute(JobsInfo et) { public JobsInfo execute(JobsInfo et) {
if(et.getId()==null)
throw new BadRequestAlertException("未找到任务","JobsInfo","");
JobsInfo dbJobInfo = getById(et.getId());
if (null == dbJobInfo) {
throw new BadRequestAlertException("未找到任务","JobsInfo","");
}
JobsTrigger.trigger(et.getId().longValue(), TriggerTypeEnum.MANUAL, -1, dbJobInfo.getParam());
return super.execute(et); return super.execute(et);
} }
......
...@@ -9,6 +9,7 @@ import java.util.HashMap; ...@@ -9,6 +9,7 @@ import java.util.HashMap;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import com.alibaba.fastjson.annotation.JSONField; import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
...@@ -267,6 +268,13 @@ public class JobsInfo extends EntityMP implements Serializable { ...@@ -267,6 +268,13 @@ public class JobsInfo extends EntityMP implements Serializable {
this.modify("create_time",createTime); this.modify("create_time",createTime);
} }
public BigInteger getId()
{
if(id==null)
id= BigInteger.valueOf(IdWorker.getId());
return id;
}
} }
......
...@@ -9,6 +9,7 @@ import java.util.HashMap; ...@@ -9,6 +9,7 @@ import java.util.HashMap;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import com.alibaba.fastjson.annotation.JSONField; import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
...@@ -96,7 +97,12 @@ public class JobsLock extends EntityMP implements Serializable { ...@@ -96,7 +97,12 @@ public class JobsLock extends EntityMP implements Serializable {
this.modify("create_time",createTime); this.modify("create_time",createTime);
} }
public BigInteger getId()
{
if(id==null)
id= BigInteger.valueOf(IdWorker.getId());
return id;
}
} }
...@@ -9,6 +9,7 @@ import java.util.HashMap; ...@@ -9,6 +9,7 @@ import java.util.HashMap;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import com.alibaba.fastjson.annotation.JSONField; import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
...@@ -191,7 +192,12 @@ public class JobsLog extends EntityMP implements Serializable { ...@@ -191,7 +192,12 @@ public class JobsLog extends EntityMP implements Serializable {
this.modify("create_time",createTime); this.modify("create_time",createTime);
} }
public BigInteger getId()
{
if(id==null)
id= BigInteger.valueOf(IdWorker.getId());
return id;
}
} }
...@@ -9,6 +9,7 @@ import java.util.HashMap; ...@@ -9,6 +9,7 @@ import java.util.HashMap;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import com.alibaba.fastjson.annotation.JSONField; import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
...@@ -111,7 +112,12 @@ public class JobsRegistry extends EntityMP implements Serializable { ...@@ -111,7 +112,12 @@ public class JobsRegistry extends EntityMP implements Serializable {
this.modify("update_time",updateTime); this.modify("update_time",updateTime);
} }
public BigInteger getId()
{
if(id==null)
id= BigInteger.valueOf(IdWorker.getId());
return id;
}
} }
package cn.ibizlab.core.task.service.impl;
import cn.ibizlab.core.task.domain.JobsLock;
import cn.ibizlab.core.task.domain.JobsRegistry;
import cn.ibizlab.core.task.service.IJobsInfoService;
import cn.ibizlab.core.task.service.IJobsLockService;
import cn.ibizlab.core.task.service.IJobsLogService;
import cn.ibizlab.core.task.service.IJobsRegistryService;
import cn.ibizlab.util.helper.CachedBeanCopier;
import com.baomidou.jobs.JobsClock;
import com.baomidou.jobs.model.JobsInfo;
import com.baomidou.jobs.model.JobsLog;
import com.baomidou.jobs.model.param.RegistryParam;
import com.baomidou.jobs.service.IJobsService;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* Jobs Admin Impl
*
* @author jobob
* @since 2019-07-12
*/
@Slf4j
@Service
public class JobsServiceImpl implements IJobsService {
@Autowired
private IJobsRegistryService jobsRegistryService;
@Autowired
private IJobsLockService jobsLockService;
@Autowired
private IJobsInfoService jobsInfoService;
@Autowired
public IJobsLogService jobsLogService;
@Override
public boolean registry(RegistryParam registryParam) {
JobsRegistry jobsRegistry = jobsRegistryService.getOne(Wrappers.<JobsRegistry>lambdaQuery().eq(JobsRegistry::getApp, registryParam.getApp())
.eq(JobsRegistry::getAddress, registryParam.getAddress()),false);
if(jobsRegistry==null)
jobsRegistry=new JobsRegistry();
jobsRegistry.setApp(registryParam.getApp());
jobsRegistry.setAddress(registryParam.getAddress());
jobsRegistry.setStatus(registryParam.getRegisterStatusEnum().getValue());
return jobsRegistryService.save(jobsRegistry);
}
@Override
public List<JobsInfo> getJobsInfoList(long nextTime) {
List<cn.ibizlab.core.task.domain.JobsInfo> list = jobsInfoService.list(Wrappers.<cn.ibizlab.core.task.domain.JobsInfo>lambdaQuery()
.eq(cn.ibizlab.core.task.domain.JobsInfo::getStatus, 0)
.le(cn.ibizlab.core.task.domain.JobsInfo::getNextTime, BigInteger.valueOf(nextTime)));
List<JobsInfo> ret = new ArrayList<>();
list.forEach(obj->ret.add(change(obj)));
return ret;
}
@Override
public JobsInfo getJobsInfoById(Long id) {
return change(jobsInfoService.getById(id));
}
@Override
public boolean updateJobsInfoById(JobsInfo jobsInfo) {
return jobsInfoService.updateById(change(jobsInfo));
}
@Override
public boolean tryLock(String name, String owner) {
JobsLock lock = new JobsLock();
lock.setName(name);
lock.setOwner(owner);
lock.setCreateTime(BigInteger.valueOf(JobsClock.currentTimeMillis()));
return jobsLockService.getBaseMapper().insert(lock)>0;
}
@Override
public boolean unlock(String name, String owner) {
return jobsLockService.remove(Wrappers.<JobsLock>lambdaQuery().eq(JobsLock::getName, name)
.eq(null != owner, JobsLock::getOwner, owner));
}
@Override
public int removeTimeOutApp(int timeout) {
JobsRegistry jobsRegistry = new JobsRegistry();
jobsRegistry.setStatus(1);
if(jobsRegistryService.update(jobsRegistry, Wrappers.<JobsRegistry>lambdaQuery()
.eq(JobsRegistry::getStatus, 0).le(JobsRegistry::getUpdateTime, BigInteger.valueOf(JobsClock.currentTimeMillis() - timeout))))
return 1;
return 0;
}
@Override
public boolean removeApp(RegistryParam registryParam) {
JobsRegistry jobsRegistry = jobsRegistryService.getOne(Wrappers.<JobsRegistry>lambdaQuery().eq(JobsRegistry::getApp, registryParam.getApp())
.eq(JobsRegistry::getAddress, registryParam.getAddress()),false);
if(jobsRegistry==null)
jobsRegistry=new JobsRegistry();
jobsRegistry.setApp(registryParam.getApp());
jobsRegistry.setAddress(registryParam.getAddress());
jobsRegistry.setStatus(registryParam.getRegisterStatusEnum().getValue());
return jobsRegistryService.getBaseMapper().updateById(jobsRegistry)>0;
}
@Override
public List<String> getAppAddressList(String app) {
List<JobsRegistry> jobsRegistryList = jobsRegistryService.list(Wrappers.<JobsRegistry>lambdaQuery()
.eq(JobsRegistry::getApp, app).eq(JobsRegistry::getStatus, 0));
return CollectionUtils.isEmpty(jobsRegistryList) ? null : jobsRegistryList.stream()
.map(j -> j.getAddress()).collect(Collectors.toList());
}
@Override
public boolean saveOrUpdateLogById(JobsLog jobsLog) {
if (null == jobsLog) {
return false;
}
if(jobsLog.getId()==null)
return jobsLogService.getBaseMapper().insert(change(jobsLog))>0;
else
return jobsLogService.getBaseMapper().updateById(change(jobsLog))>0;
}
private JobsInfo change(cn.ibizlab.core.task.domain.JobsInfo et)
{
if(et == null)
return null;
JobsInfo jobsInfo = new JobsInfo();
CachedBeanCopier.copy(et,jobsInfo);
if(et.getId()!=null)
jobsInfo.setId(et.getId().longValue());
if(et.getLastTime()!=null)
jobsInfo.setLastTime(et.getLastTime().longValue());
if(et.getNextTime()!=null)
jobsInfo.setNextTime(et.getNextTime().longValue());
if(et.getCreateTime()!=null)
jobsInfo.setCreateTime(et.getCreateTime().longValue());
if(et.getUpdateTime()!=null)
jobsInfo.setUpdateTime(et.getUpdateTime().longValue());
return jobsInfo;
}
private cn.ibizlab.core.task.domain.JobsInfo change(JobsInfo et)
{
if(et == null)
return null;
cn.ibizlab.core.task.domain.JobsInfo jobsInfo = new cn.ibizlab.core.task.domain.JobsInfo();
CachedBeanCopier.copy(et,jobsInfo);
if(et.getId()!=null)
jobsInfo.setId(BigInteger.valueOf(et.getId()));
if(et.getLastTime()!=null)
jobsInfo.setLastTime(BigInteger.valueOf(et.getLastTime()));
if(et.getNextTime()!=null)
jobsInfo.setNextTime(BigInteger.valueOf(et.getNextTime()));
if(et.getCreateTime()!=null)
jobsInfo.setCreateTime(BigInteger.valueOf(et.getCreateTime()));
if(et.getUpdateTime()!=null)
jobsInfo.setUpdateTime(BigInteger.valueOf(et.getUpdateTime()));
return jobsInfo;
}
private cn.ibizlab.core.task.domain.JobsLog change(JobsLog et)
{
if(et == null)
return null;
cn.ibizlab.core.task.domain.JobsLog jobsLog = new cn.ibizlab.core.task.domain.JobsLog();
CachedBeanCopier.copy(et,jobsLog);
if(et.getId()!=null)
jobsLog.setId(BigInteger.valueOf(et.getId()));
if(et.getCreateTime()!=null)
jobsLog.setCreateTime(BigInteger.valueOf(et.getCreateTime()));
if(et.getJobId()!=null)
jobsLog.setJobId(BigInteger.valueOf(et.getJobId()));
return jobsLog;
}
}
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册