|
|
|
@ -13,6 +13,7 @@ import org.dromara.common.core.utils.uuid.Seq;
|
|
|
|
|
import org.dromara.common.mybatis.Utils.UniqueCodeUtils;
|
|
|
|
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
|
|
|
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|
|
|
|
import org.dromara.common.satoken.utils.LoginHelper;
|
|
|
|
|
import org.dromara.dms.domain.DmsBillsLubeInstance;
|
|
|
|
|
import org.dromara.dms.domain.DmsPlanLube;
|
|
|
|
|
import org.dromara.dms.domain.bo.DmsPlanLubeBo;
|
|
|
|
@ -179,19 +180,6 @@ public class DmsPlanLubeServiceImpl implements IDmsPlanLubeService {
|
|
|
|
|
// 生成新的润滑计划编号
|
|
|
|
|
String planLubeCode = Seq.getId(Seq.dmsPlanLubeSeqType, Seq.dmsPlanLubeCode);
|
|
|
|
|
bo.setPlanLubeCode(planLubeCode);
|
|
|
|
|
/*
|
|
|
|
|
// 创建系统任务对象
|
|
|
|
|
SysJob job = new SysJob();
|
|
|
|
|
job.setJobName("润滑计划编号" + planLubeCode + "工单任务");
|
|
|
|
|
job.setJobGroup("DEFAULT");
|
|
|
|
|
job.setInvokeTarget("ryTask.getDmsBillsLube(\"" + planLubeCode + "\")");
|
|
|
|
|
job.setCronExpression(bo.getCronExpression());
|
|
|
|
|
job.setMisfirePolicy("1");
|
|
|
|
|
job.setConcurrent("1");
|
|
|
|
|
job.setStatus("1");
|
|
|
|
|
|
|
|
|
|
// 添加任务到远程服务并获取任务ID
|
|
|
|
|
R<Integer> jobIdR = remoteJobService.add(SecurityConstants.INNER, job);*/
|
|
|
|
|
|
|
|
|
|
if(bo.getActiveFlag().equals("1")){//激活标识(1是 0否)
|
|
|
|
|
DmsJobEntity dmsJobEntity = new DmsJobEntity();
|
|
|
|
@ -205,23 +193,22 @@ public class DmsPlanLubeServiceImpl implements IDmsPlanLubeService {
|
|
|
|
|
.setTriggerInterval(bo.getCronExpression())//间隔时长: cron表达式
|
|
|
|
|
.setRetryInterval(3)//重试间隔时长
|
|
|
|
|
.setArgsStr("planLubeCode")
|
|
|
|
|
.setExtAttrs(planLubeCode);
|
|
|
|
|
.setExtAttrs(planLubeCode)
|
|
|
|
|
.setUserId(LoginHelper.getUserId().toString())
|
|
|
|
|
.setTenantId(LoginHelper.getTenantId());
|
|
|
|
|
R<Long> longR = remoteJobService.addClusterJob(dmsJobEntity);
|
|
|
|
|
Long jobId = longR.getData();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 通过cron表达式获取下一次执行时间
|
|
|
|
|
String cronExpression = bo.getCronExpression();
|
|
|
|
|
if (StringUtils.isNotEmpty(cronExpression)) {
|
|
|
|
|
Date nextExecution = CronUtils.getNextExecution(cronExpression);
|
|
|
|
|
bo.setLubeTime(nextExecution);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 设置润滑计划的任务ID
|
|
|
|
|
bo.setJobId(jobId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 计算润滑计划的时间限制(天和小时)
|
|
|
|
|
Long timeLimitDays = bo.getTimeLimitDays() == null ? 0L : bo.getTimeLimitDays();
|
|
|
|
|
Long timeLimitHours = bo.getTimeLimitHours() == null ? 0L : bo.getTimeLimitHours();
|
|
|
|
@ -245,82 +232,65 @@ public class DmsPlanLubeServiceImpl implements IDmsPlanLubeService {
|
|
|
|
|
* @return 是否修改成功
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
@GlobalTransactional(rollbackFor = Exception.class)
|
|
|
|
|
public Boolean updateByBo(DmsPlanLubeBo bo) {
|
|
|
|
|
Long jobId = bo.getJobId();
|
|
|
|
|
String cronExpression = bo.getCronExpression();
|
|
|
|
|
|
|
|
|
|
if (StringUtils.isNotEmpty(cronExpression)) {
|
|
|
|
|
// 通过cron表达式获取下一次执行时间
|
|
|
|
|
Date nextExecution = CronUtils.getNextExecution(cronExpression);
|
|
|
|
|
bo.setLubeTime(nextExecution);
|
|
|
|
|
|
|
|
|
|
if (bo.getActiveFlag().equals("1")){//激活标识(1是 0否)
|
|
|
|
|
if (jobId == null ) {// 如果没有关联任务,创建新任务
|
|
|
|
|
/* String planLubeCode = bo.getPlanLubeCode();
|
|
|
|
|
SysJob job = new SysJob();
|
|
|
|
|
job.setJobName("润滑计划编号" + planLubeCode + "工单任务");
|
|
|
|
|
job.setJobGroup("DEFAULT");
|
|
|
|
|
job.setInvokeTarget("ryTask.getDmsBillsLube(\"" + planLubeCode + "\")");
|
|
|
|
|
job.setCronExpression(bo.getCronExpression());
|
|
|
|
|
job.setMisfirePolicy("1");
|
|
|
|
|
job.setConcurrent("1");
|
|
|
|
|
job.setStatus("1");
|
|
|
|
|
R<Integer> jobIdR = remoteJobService.add(SecurityConstants.INNER, job);
|
|
|
|
|
bo.setJobId(jobIdR.getData().longValue());*/
|
|
|
|
|
|
|
|
|
|
// 通过cron表达式获取下一次执行时间
|
|
|
|
|
Date nextExecution = CronUtils.getNextExecution(cronExpression);
|
|
|
|
|
bo.setLubeTime(nextExecution);
|
|
|
|
|
|
|
|
|
|
if (StringUtils.isNull(jobId)) {// 如果没有关联任务,创建新任务
|
|
|
|
|
String planLubeCode = bo.getPlanLubeCode();
|
|
|
|
|
Long newJobId = SnailJobOpenApi.addClusterJob()
|
|
|
|
|
.setRouteKey(AllocationAlgorithmEnum.ROUND)//路由策略:轮询
|
|
|
|
|
DmsJobEntity dmsJobEntity = new DmsJobEntity();
|
|
|
|
|
dmsJobEntity.setRouteKey(AllocationAlgorithmEnum.ROUND)//路由策略:轮询
|
|
|
|
|
.setJobName("润滑计划编号" + planLubeCode + "工单任务")
|
|
|
|
|
.setExecutorInfo("stanceLube")//执行器名称
|
|
|
|
|
.addArgsStr("planLubeCode", planLubeCode)//执行任务参数
|
|
|
|
|
.setExecutorTimeout(30)//执行超时时间
|
|
|
|
|
.setBlockStrategy(JobBlockStrategyEnum.CONCURRENCY)//阻塞策略:并发
|
|
|
|
|
.setMaxRetryTimes(2)//最大重试次数
|
|
|
|
|
.setTriggerType(TriggerTypeEnum.CRON)//触发器类型:cron
|
|
|
|
|
.setTriggerInterval(bo.getCronExpression())//间隔时长: cron表达式
|
|
|
|
|
.setRetryInterval(3)//重试间隔时长
|
|
|
|
|
.execute();
|
|
|
|
|
.setArgsStr("planLubeCode")
|
|
|
|
|
.setExtAttrs(planLubeCode)
|
|
|
|
|
.setUserId(LoginHelper.getUserId().toString())
|
|
|
|
|
.setTenantId(LoginHelper.getTenantId());
|
|
|
|
|
|
|
|
|
|
R<Long> longR = remoteJobService.addClusterJob(dmsJobEntity);
|
|
|
|
|
Long newJobId = longR.getData();
|
|
|
|
|
bo.setJobId(newJobId);
|
|
|
|
|
|
|
|
|
|
} else {// 如果有关联任务,更新状态
|
|
|
|
|
/* // 更新现有任务
|
|
|
|
|
SysJob sysJob = remoteJobService.getJobInfo(jobId, SecurityConstants.INNER);
|
|
|
|
|
if (sysJob != null) {
|
|
|
|
|
sysJob.setCronExpression(bo.getCronExpression());
|
|
|
|
|
remoteJobService.update(SecurityConstants.INNER, sysJob);
|
|
|
|
|
}*/
|
|
|
|
|
// 更新现有任务
|
|
|
|
|
String planLubeCode = bo.getPlanLubeCode();
|
|
|
|
|
JobResponseVO execute = SnailJobOpenApi.getJobDetail(jobId).execute();
|
|
|
|
|
if (execute != null) {
|
|
|
|
|
SnailJobOpenApi
|
|
|
|
|
.updateJobStatus(jobId)
|
|
|
|
|
.setStatus(StatusEnum.YES)
|
|
|
|
|
.execute();
|
|
|
|
|
SnailJobOpenApi.updateClusterJob(jobId)
|
|
|
|
|
.setRouteKey(AllocationAlgorithmEnum.ROUND)//路由策略:轮询
|
|
|
|
|
DmsJobEntity dmsJobEntity = new DmsJobEntity();
|
|
|
|
|
dmsJobEntity.setId(jobId);//任务ID
|
|
|
|
|
dmsJobEntity.setRouteKey(AllocationAlgorithmEnum.ROUND)//路由策略:轮询
|
|
|
|
|
.setJobName("润滑计划编号" + planLubeCode + "工单任务")
|
|
|
|
|
.setExecutorInfo("stanceLube")//执行器名称
|
|
|
|
|
.addArgsStr("planLubeCode", planLubeCode)//执行任务参数
|
|
|
|
|
.setExecutorTimeout(30)//执行超时时间
|
|
|
|
|
.setBlockStrategy(JobBlockStrategyEnum.CONCURRENCY)//阻塞策略:并发
|
|
|
|
|
.setMaxRetryTimes(2)//最大重试次数
|
|
|
|
|
.setTriggerType(TriggerTypeEnum.CRON)//触发器类型:cron
|
|
|
|
|
.setTriggerInterval(bo.getCronExpression())//间隔时长: cron表达式
|
|
|
|
|
.setRetryInterval(3)//重试间隔时长
|
|
|
|
|
.execute();
|
|
|
|
|
}
|
|
|
|
|
.setArgsStr("planLubeCode")
|
|
|
|
|
.setExtAttrs(planLubeCode)
|
|
|
|
|
.setUserId(LoginHelper.getUserId().toString())
|
|
|
|
|
.setTenantId(LoginHelper.getTenantId());
|
|
|
|
|
R<Void> longR = remoteJobService.updateClusterJob(dmsJobEntity);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}else{//如果激活状态为0(1是 0否)
|
|
|
|
|
if (jobId != null) {//如果关联了任务,则任务状态为关闭
|
|
|
|
|
SnailJobOpenApi
|
|
|
|
|
.updateJobStatus(jobId)
|
|
|
|
|
.setStatus(StatusEnum.NO)//任务状态(0:关闭;1:开启)
|
|
|
|
|
.execute();
|
|
|
|
|
if (StringUtils.isNotNull(jobId)) {//如果关联了任务,则任务状态为关闭
|
|
|
|
|
R<Void> voidR = remoteJobService.updateJobStatus(jobId, 0L);//任务状态(0:关闭;1:开启)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 计算润滑计划的时间限制(天和小时)
|
|
|
|
|
Long timeLimitDays = bo.getTimeLimitDays() == null ? 0L : bo.getTimeLimitDays();
|
|
|
|
@ -357,18 +327,21 @@ public class DmsPlanLubeServiceImpl implements IDmsPlanLubeService {
|
|
|
|
|
* @return 是否删除成功
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
@GlobalTransactional(rollbackFor = Exception.class)
|
|
|
|
|
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
|
|
|
|
if(isValid){
|
|
|
|
|
// 删除前检查是否可以删除
|
|
|
|
|
/* for (Long id : ids) {
|
|
|
|
|
//TODO 做一些业务上的校验,判断是否需要校验
|
|
|
|
|
}
|
|
|
|
|
// 删除前检查是否可以删除
|
|
|
|
|
for (Long id : ids) {
|
|
|
|
|
// 查询关联的任务ID
|
|
|
|
|
DmsPlanLubeVo dmsPlanLube = baseMapper.selectVoById(id);
|
|
|
|
|
if (dmsPlanLube != null && dmsPlanLube.getJobId() != null) {
|
|
|
|
|
// 删除关联的定时任务
|
|
|
|
|
remoteJobService.remove(dmsPlanLube.getJobId(), SecurityConstants.INNER);
|
|
|
|
|
Long jobId = dmsPlanLube.getJobId();
|
|
|
|
|
if (StringUtils.isNotNull(jobId)) {
|
|
|
|
|
//则任务状态为关闭
|
|
|
|
|
R<Void> voidR = remoteJobService.updateJobStatus(jobId, 0L);//任务状态(0:关闭;1:开启)
|
|
|
|
|
}
|
|
|
|
|
}*/
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return baseMapper.deleteByIds(ids) > 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|