diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsPlanLube.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsPlanLube.java index f7008318..6b3be283 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsPlanLube.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsPlanLube.java @@ -99,8 +99,6 @@ public class DmsPlanLube extends TenantEntity { private String cronExpression; - - /** * 润滑计划明细列表 */ diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsPlanLubeDetail.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsPlanLubeDetail.java index b1b526a9..c9181b04 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsPlanLubeDetail.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsPlanLubeDetail.java @@ -35,7 +35,7 @@ public class DmsPlanLubeDetail extends TenantEntity { /** * 设备ID,关联prod_base_machine_info的device_id */ - private Long machineId; + private Long deviceId; /** * 润滑部位,关联润滑部位主键 diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsPlanLubeBo.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsPlanLubeBo.java index 942f8f3b..b85233e3 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsPlanLubeBo.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/bo/DmsPlanLubeBo.java @@ -22,7 +22,7 @@ import java.util.List; */ @Data @EqualsAndHashCode(callSuper = true) -@AutoMapper(target = DmsPlanLube.class, reverseConvertGenerate = false) +@AutoMapper(target = DmsPlanLube.class) public class DmsPlanLubeBo extends BaseEntity { /** diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanLubeDetailServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanLubeDetailServiceImpl.java index e3fe697c..3d7a4300 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanLubeDetailServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanLubeDetailServiceImpl.java @@ -81,14 +81,14 @@ public class DmsPlanLubeDetailServiceImpl implements IDmsPlanLubeDetailService { .leftJoin(DmsBaseLubeStation.class,DmsBaseLubeStation::getLubeStationId,DmsPlanLubeDetail::getLubeStationId) //关联查询设备 .select(DmsBaseMachineInfo::getMachineName) - .leftJoin(DmsBaseMachineInfo.class,DmsBaseMachineInfo::getMachineId,DmsPlanLubeDetail::getMachineId) + .leftJoin(DmsBaseMachineInfo.class,DmsBaseMachineInfo::getMachineId,DmsPlanLubeDetail::getDeviceId) //关联查询润滑标准 .select(DmsBaseLubeStandard::getLubeStandardCode) .leftJoin(DmsBaseLubeStandard.class,DmsBaseLubeStandard::getLubeStandardId,DmsPlanLubeDetail::getLubeStandardId) .eq(bo.getPlanLubeDetailId() != null, DmsPlanLubeDetail::getPlanLubeDetailId, bo.getPlanLubeDetailId()) .eq(bo.getPlanLubeId() != null, DmsPlanLubeDetail::getPlanLubeId, bo.getPlanLubeId()) - .eq(bo.getDeviceId() != null, DmsPlanLubeDetail::getMachineId, bo.getDeviceId()) + .eq(bo.getDeviceId() != null, DmsPlanLubeDetail::getDeviceId, bo.getDeviceId()) .eq(bo.getLubeStationId() != null, DmsPlanLubeDetail::getLubeStationId, bo.getLubeStationId()) .eq(bo.getLubeStandardId() != null, DmsPlanLubeDetail::getLubeStandardId, bo.getLubeStandardId()) .eq(StringUtils.isNotBlank(bo.getOperationDescription()), DmsPlanLubeDetail::getOperationDescription, bo.getOperationDescription()) @@ -160,14 +160,14 @@ public class DmsPlanLubeDetailServiceImpl implements IDmsPlanLubeDetailService { MPJLambdaWrapper wrapper = JoinWrappers.lambda(DmsPlanLubeDetail.class) .selectAs(DmsPlanLubeDetail::getPlanLubeDetailId, DmsPlanLubeDetail::getPlanLubeDetailId) .selectAs(DmsPlanLubeDetail::getPlanLubeId, DmsPlanLubeDetail::getPlanLubeId) - .selectAs(DmsPlanLubeDetail::getMachineId, DmsPlanLubeDetail::getMachineId) + .selectAs(DmsPlanLubeDetail::getDeviceId, DmsPlanLubeDetail::getDeviceId) .selectAs(DmsPlanLubeDetail::getLubeStationId, DmsPlanLubeDetail::getLubeStationId) .selectAs(DmsPlanLubeDetail::getLubeStandardId, DmsPlanLubeDetail::getLubeStandardId) .selectAs(DmsPlanLubeDetail::getOperationDescription, DmsPlanLubeDetail::getOperationDescription) .selectAs(DmsBaseMachineInfo::getMachineName, DmsPlanLubeDetail::getMachineName) .selectAs(DmsBaseLubeStation::getLubeStationName, DmsPlanLubeDetail::getLubeStationName) .selectAs(DmsBaseLubeStandard::getLubeStandardCode, DmsPlanLubeDetail::getLubeStandardCode) - .leftJoin(DmsBaseMachineInfo.class, DmsBaseMachineInfo::getMachineId, DmsPlanLubeDetail::getMachineId) + .leftJoin(DmsBaseMachineInfo.class, DmsBaseMachineInfo::getMachineId, DmsPlanLubeDetail::getDeviceId) .leftJoin(DmsBaseLubeStation.class, DmsBaseLubeStation::getDeviceTypeId, DmsBaseMachineInfo::getMachineId) .leftJoin(DmsBaseLubeStandard.class, DmsBaseLubeStandard::getLubeStandardId, DmsPlanLubeDetail::getLubeStandardId) .eq(DmsPlanLubeDetail::getPlanLubeId, planLubeId); diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanLubeServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanLubeServiceImpl.java index 23095e83..582e64eb 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanLubeServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanLubeServiceImpl.java @@ -3,7 +3,10 @@ package org.dromara.dms.service.impl; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; +import io.seata.spring.annotation.GlobalTransactional; import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboReference; +import org.dromara.common.core.domain.R; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.uuid.Seq; @@ -21,12 +24,20 @@ import org.dromara.dms.utils.CronUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; - import java.util.Collection; import java.util.Date; import java.util.List; import java.util.Map; +import com.aizuda.snailjob.client.job.core.enums.AllocationAlgorithmEnum; +import com.aizuda.snailjob.client.job.core.enums.TriggerTypeEnum; +import com.aizuda.snailjob.client.job.core.openapi.SnailJobOpenApi; +import com.aizuda.snailjob.common.core.enums.JobBlockStrategyEnum; +import com.aizuda.snailjob.client.job.core.dto.JobResponseVO; +import com.aizuda.snailjob.common.core.enums.StatusEnum; +import org.dromara.job.api.model.DmsJobEntity; +import org.dromara.job.api.RemoteJobService; + /** * 润滑计划Service业务层处理 * @@ -41,6 +52,9 @@ public class DmsPlanLubeServiceImpl implements IDmsPlanLubeService { private final DmsBillsLubeInstanceMapper dmsBillsLubeInstanceMapper; + @DubboReference + private final RemoteJobService remoteJobService; + private static final Long SECONDS_PER_DAY = 24 * 60 * 60L; private static final Long SECONDS_PER_HOUR = 60 * 60L; @@ -160,7 +174,7 @@ public class DmsPlanLubeServiceImpl implements IDmsPlanLubeService { * @return 是否新增成功 */ @Override - @Transactional(rollbackFor = Exception.class) + @GlobalTransactional(rollbackFor = Exception.class) public Boolean insertByBo(DmsPlanLubeBo bo) { // 生成新的润滑计划编号 String planLubeCode = Seq.getId(Seq.dmsPlanLubeSeqType, Seq.dmsPlanLubeCode); @@ -179,15 +193,34 @@ public class DmsPlanLubeServiceImpl implements IDmsPlanLubeService { // 添加任务到远程服务并获取任务ID R jobIdR = remoteJobService.add(SecurityConstants.INNER, job);*/ - // 通过cron表达式获取下一次执行时间 - String cronExpression = bo.getCronExpression(); - if (StringUtils.isNotEmpty(cronExpression)) { - Date nextExecution = CronUtils.getNextExecution(cronExpression); - bo.setLubeTime(nextExecution); + if(bo.getActiveFlag().equals("1")){//激活标识(1是 0否) + DmsJobEntity dmsJobEntity = new DmsJobEntity(); + dmsJobEntity.setRouteKey(AllocationAlgorithmEnum.ROUND)//路由策略:轮询 + .setJobName("润滑计划编号" + planLubeCode + "工单任务") + .setExecutorInfo("stanceLube")//执行器名称 + .setExecutorTimeout(30)//执行超时时间 + .setBlockStrategy(JobBlockStrategyEnum.CONCURRENCY)//阻塞策略:并发 + .setMaxRetryTimes(2)//最大重试次数 + .setTriggerType(TriggerTypeEnum.CRON)//触发器类型:cron + .setTriggerInterval(bo.getCronExpression())//间隔时长: cron表达式 + .setRetryInterval(3)//重试间隔时长 + .setArgsStr("planLubeCode") + .setExtAttrs(planLubeCode); + R 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); } - // 设置润滑计划的任务ID -/* bo.setJobId(jobIdR.getData().longValue());*/ // 计算润滑计划的时间限制(天和小时) Long timeLimitDays = bo.getTimeLimitDays() == null ? 0L : bo.getTimeLimitDays(); @@ -214,7 +247,7 @@ public class DmsPlanLubeServiceImpl implements IDmsPlanLubeService { @Override @Transactional(rollbackFor = Exception.class) public Boolean updateByBo(DmsPlanLubeBo bo) { -/* Long jobId = bo.getJobId();*/ + Long jobId = bo.getJobId(); String cronExpression = bo.getCronExpression(); if (StringUtils.isNotEmpty(cronExpression)) { @@ -222,9 +255,9 @@ public class DmsPlanLubeServiceImpl implements IDmsPlanLubeService { Date nextExecution = CronUtils.getNextExecution(cronExpression); bo.setLubeTime(nextExecution); -/* if (jobId == null) { - // 如果没有关联任务,创建新任务 - String planLubeCode = bo.getPlanLubeCode(); + if (bo.getActiveFlag().equals("1")){//激活标识(1是 0否) + if (jobId == null ) {// 如果没有关联任务,创建新任务 +/* String planLubeCode = bo.getPlanLubeCode(); SysJob job = new SysJob(); job.setJobName("润滑计划编号" + planLubeCode + "工单任务"); job.setJobGroup("DEFAULT"); @@ -234,15 +267,59 @@ public class DmsPlanLubeServiceImpl implements IDmsPlanLubeService { job.setConcurrent("1"); job.setStatus("1"); R jobIdR = remoteJobService.add(SecurityConstants.INNER, job); - bo.setJobId(jobIdR.getData().longValue()); - } else { - // 更新现有任务 + bo.setJobId(jobIdR.getData().longValue());*/ + String planLubeCode = bo.getPlanLubeCode(); + Long newJobId = SnailJobOpenApi.addClusterJob() + .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(); + 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)//路由策略:轮询 + .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(); + } + } - }*/ + }else{//如果激活状态为0(1是 0否) + if (jobId != null) {//如果关联了任务,则任务状态为关闭 + SnailJobOpenApi + .updateJobStatus(jobId) + .setStatus(StatusEnum.NO)//任务状态(0:关闭;1:开启) + .execute(); + } + } + } // 计算润滑计划的时间限制(天和小时) diff --git a/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsPlanLubeMapper.xml b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsPlanLubeMapper.xml index f53d52f0..4039037b 100644 --- a/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsPlanLubeMapper.xml +++ b/ruoyi-modules/hwmom-dms/src/main/resources/mapper/dms/DmsPlanLubeMapper.xml @@ -33,7 +33,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + @@ -47,9 +47,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"