diff --git a/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteInspectInstanceService.java b/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteInspectInstanceService.java index a737557..f83031b 100644 --- a/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteInspectInstanceService.java +++ b/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteInspectInstanceService.java @@ -4,6 +4,6 @@ import org.dromara.common.core.domain.R; public interface RemoteInspectInstanceService { - public R insertInspectInstance(String planInspectCode); + public R insertInspectInstance(String planInspectCode, String tenantId, Long userId); } diff --git a/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteLubeInstanceService.java b/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteLubeInstanceService.java index 52ad696..f287b3b 100644 --- a/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteLubeInstanceService.java +++ b/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteLubeInstanceService.java @@ -6,7 +6,7 @@ import org.dromara.common.core.domain.R; public interface RemoteLubeInstanceService { - public R insertLubeInstance(String lubeInstanceCode); + public R insertLubeInstance(String lubeInstanceCode, String tenantId, Long userId); diff --git a/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteMaintInstanceService.java b/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteMaintInstanceService.java index 3fd1c70..66bcf1e 100644 --- a/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteMaintInstanceService.java +++ b/ruoyi-api/hwmom-api-dms/src/main/java/org/dromara/dms/api/RemoteMaintInstanceService.java @@ -4,5 +4,5 @@ import org.dromara.common.core.domain.R; public interface RemoteMaintInstanceService { - public R insertDmsBillsMaintInstance(String planMaintCode); + public R insertDmsBillsMaintInstance(String planMaintCode, String tenantId, Long userId); } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsLubeInstance.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsLubeInstance.java index 6e12bb5..560931b 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsLubeInstance.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/domain/DmsBillsLubeInstance.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.tenant.core.TenantEntity; import org.dromara.dms.domain.vo.DmsBillsLubeDetailVo; import java.io.Serial; @@ -22,7 +23,7 @@ import java.util.List; @Data @EqualsAndHashCode(callSuper = true) @TableName("dms_bills_lube_instance") -public class DmsBillsLubeInstance extends BaseEntity { +public class DmsBillsLubeInstance extends TenantEntity { @Serial private static final long serialVersionUID = 1L; diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteInspectInstanceServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteInspectInstanceServiceImpl.java index 376d05c..61cd8fa 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteInspectInstanceServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteInspectInstanceServiceImpl.java @@ -38,7 +38,7 @@ public class RemoteInspectInstanceServiceImpl implements RemoteInspectInstanceSe @Override @Transactional( rollbackFor = Exception.class ) - public R insertInspectInstance(String planInspectCode){ + public R insertInspectInstance(String planInspectCode, String tenantId, Long userId){ // 使用 replaceAll 方法将双引号替换为空字符串 @@ -71,8 +71,6 @@ public class RemoteInspectInstanceServiceImpl implements RemoteInspectInstanceSe // dmsBillsInspectInstance.setPerformer(dmsPlanInspect.getPerformer());//执行人 - - //写死105,也可根据传入对象的wfprocessid作为传参。 /* Long aLong = dmsRepairInstanceMapper.selectWfProcessActivityId(105l); @@ -85,6 +83,10 @@ public class RemoteInspectInstanceServiceImpl implements RemoteInspectInstanceSe // dmsBillsInspectInstance.setIsFlag("1"); dmsBillsInspectInstance.setInspectStatus(DmsConstants.DMS_BILLS_INSPECT_INSTANCE_INSPECT_STATUS_TO_INSPECT);//待巡检 + + dmsBillsInspectInstance.setCreateBy(userId); +// dmsBillsInspectInstance.setCreateTime(new Date()); + dmsBillsInspectInstance.setTenantId(tenantId); int i = dmsBillsInspectInstanceMapper.insert(dmsBillsInspectInstance); // List dmsBillsInspectInstances = dmsBillsInspectInstanceMapper.selectDmsBillsInspectInstanceList(dmsBillsInspectInstance); @@ -118,6 +120,10 @@ public class RemoteInspectInstanceServiceImpl implements RemoteInspectInstanceSe dmsInspectInstanceDetail.setInspectStatus("0");//TODO:为什么设置为异常? // dmsInspectInstanceDetailMapper.insertDmsInspectInstanceDetail(dmsInspectInstanceDetail); + + dmsInspectInstanceDetail.setTenantId(tenantId); + dmsInspectInstanceDetail.setCreateBy(userId); +// dmsInspectInstanceDetail.setCreateTime(new Date()); dmsInspectInstanceDetailMapper.insert(dmsInspectInstanceDetail); Long projectId = dmsInspectInstanceDetailMapper.selectProjectId(dmsInspectRouteDetail.getInspectStandard()); @@ -138,6 +144,11 @@ public class RemoteInspectInstanceServiceImpl implements RemoteInspectInstanceSe dmsInspectInstanceDetailProject.setInstanceDetailId(dmsInspectInstanceDetail.getInstanceDetailId()); dmsInspectInstanceDetailProject.setInspectProjectId(projectId); // dmsInspectInstanceDetailProjectMapper.insertDmsInspectInstanceDetailProject(dmsInspectInstanceDetailProject); + + dmsInspectInstanceDetailProject.setTenantId(tenantId); + dmsInspectInstanceDetailProject.setCreateBy(userId); +// dmsInspectInstanceDetailProject.setCreateTime(new Date()); + dmsInspectInstanceDetailProjectMapper.insert(dmsInspectInstanceDetailProject); // } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteLubeInstanceServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteLubeInstanceServiceImpl.java index fa6b084..e1d65d7 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteLubeInstanceServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteLubeInstanceServiceImpl.java @@ -52,7 +52,7 @@ public class RemoteLubeInstanceServiceImpl implements RemoteLubeInstanceService @Override @Transactional(rollbackFor = Exception.class) - public R insertLubeInstance(String planLubeCode) { + public R insertLubeInstance(String planLubeCode, String tenantId, Long userId) { // 去除润滑计划编号中的双引号 // String lubeInstanceCodeS = planLubeCode.replaceAll("\"", ""); @@ -76,32 +76,35 @@ public class RemoteLubeInstanceServiceImpl implements RemoteLubeInstanceService } // 创建新的润滑工单实例对象 - DmsBillsLubeInstanceBo dmsBillsLubeInstanceBo = new DmsBillsLubeInstanceBo(); + DmsBillsLubeInstance dmsBillsLubeInstance = new DmsBillsLubeInstance(); // 设置创建人 - dmsBillsLubeInstanceBo.setCreateBy(dmsPlanLube.getCreateBy()); + dmsBillsLubeInstance.setCreateBy(dmsPlanLube.getCreateBy()); // 设置润滑工单的计划ID - dmsBillsLubeInstanceBo.setPlanLubeId(dmsPlanLube.getPlanLubeId()); + dmsBillsLubeInstance.setPlanLubeId(dmsPlanLube.getPlanLubeId()); // 设置计划开始时间为润滑时间 - dmsBillsLubeInstanceBo.setPlanBeginTime(dmsPlanLube.getLubeTime()); + dmsBillsLubeInstance.setPlanBeginTime(dmsPlanLube.getLubeTime()); // 生成并设置润滑工单编码 - dmsBillsLubeInstanceBo.setBillsLubeCode(Seq.getId(Seq.dmsLubeInstanceSeqType, Seq.dmsLubeInstanceCode)); + dmsBillsLubeInstance.setBillsLubeCode(Seq.getId(Seq.dmsLubeInstanceSeqType, Seq.dmsLubeInstanceCode)); // 设置润滑状态为待润滑 - dmsBillsLubeInstanceBo.setLubeStatus(DmsConstants.DMS_BILLS_LUBE_INSTANCE_STATUS_TO_LUBE); + dmsBillsLubeInstance.setLubeStatus(DmsConstants.DMS_BILLS_LUBE_INSTANCE_STATUS_TO_LUBE); // 设置润滑组 - dmsBillsLubeInstanceBo.setLubeGroup(dmsPlanLube.getLubeGroup()); + dmsBillsLubeInstance.setLubeGroup(dmsPlanLube.getLubeGroup()); // 设置润滑监督人 - dmsBillsLubeInstanceBo.setLubeSupervisor(dmsPlanLube.getLubeSupervisor()); + dmsBillsLubeInstance.setLubeSupervisor(dmsPlanLube.getLubeSupervisor()); // 设置润滑级别 - dmsBillsLubeInstanceBo.setLubeLevel(dmsPlanLube.getLubeLevel()); + dmsBillsLubeInstance.setLubeLevel(dmsPlanLube.getLubeLevel()); // 获取时间限制 Long timeLimit = dmsPlanLube.getTimeLimit(); // 计算并设置计划结束时间 Date planEndTime = new Date(dmsPlanLube.getLubeTime().getTime() + timeLimit * 1000L); - dmsBillsLubeInstanceBo.setPlanEndTime(planEndTime); + dmsBillsLubeInstance.setPlanEndTime(planEndTime); + + dmsBillsLubeInstance.setCreateBy(userId); +// dmsBillsLubeInstance.setCreateTime(new Date()); + dmsBillsLubeInstance.setTenantId(tenantId); // 插入润滑工单实例到数据库 - DmsBillsLubeInstanceVo BillsLubeInstance = dmsBillsLubeInstanceService.insertByBo(dmsBillsLubeInstanceBo); - + int i = dmsBillsLubeInstanceMapper.insert(dmsBillsLubeInstance); DmsPlanLubeBo dmsPlanLubeBo = MapstructUtils.convert(dmsPlanLube, DmsPlanLubeBo.class); @@ -110,25 +113,19 @@ public class RemoteLubeInstanceServiceImpl implements RemoteLubeInstanceService List billsLubeDetails = new ArrayList<>(); for (DmsPlanLubeDetailVo planLubeDetail : lubeDetails) { DmsBillsLubeDetail dmsBillsLubeDetail = new DmsBillsLubeDetail(); - dmsBillsLubeDetail.setLubeInstanceId(dmsBillsLubeInstanceBo.getLubeInstanceId()); + dmsBillsLubeDetail.setLubeInstanceId(dmsBillsLubeInstance.getLubeInstanceId()); dmsBillsLubeDetail.setMachineId(planLubeDetail.getDeviceId()); dmsBillsLubeDetail.setLubeStationId(planLubeDetail.getLubeStationId()); dmsBillsLubeDetail.setLubeStandardId(planLubeDetail.getLubeStandardId()); //dmsBillsLubeDetail.setActiveFlag("Y"); // 假设是否标记字段对应activeFlag - billsLubeDetails.add(dmsBillsLubeDetail); + + dmsBillsLubeDetail.setTenantId(tenantId); + dmsBillsLubeDetail.setCreateBy(userId); +// dmsBillsLubeDetail.setCreateTime(new Date()); + + dmsBillsLubeDetailMapper.insert(dmsBillsLubeDetail); } - -/* // 使用mybatis-plus批量保存 - return dmsBillsLubeDetailMapper.insertBatch(billsLubeDetails);*/ - // 修改批量插入方式,避免SQL Server批量插入时获取自动生成主键的问题 - boolean result = true; - for (DmsBillsLubeDetail detail : billsLubeDetails) { - result = result && dmsBillsLubeDetailMapper.insert(detail) > 0; - if (!result) { - break; - } - } return R.ok(); } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteMaintInstanceServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteMaintInstanceServiceImpl.java index 9b25bc7..2d25377 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteMaintInstanceServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/dubbo/RemoteMaintInstanceServiceImpl.java @@ -37,12 +37,6 @@ public class RemoteMaintInstanceServiceImpl implements RemoteMaintInstanceServic - // 预定义系统用户相关常量,实际项目中建议从配置读取或定义在公共常量类中 - private static final Long SYSTEM_USER_ID = 1L; // 假设的系统管理员用户ID - private static final Long SYSTEM_DEPT_ID = 103L; // 假设的系统默认部门ID - private static final String DEFAULT_TENANT_ID_FOR_JOBS = "000000"; // 定时任务使用的默认租户ID - - /** * 新增保养工单 * @@ -51,7 +45,7 @@ public class RemoteMaintInstanceServiceImpl implements RemoteMaintInstanceServic */ @Override @Transactional( rollbackFor = Exception.class ) - public R insertDmsBillsMaintInstance(String planMaintCode) { + public R insertDmsBillsMaintInstance(String planMaintCode , String tenantId, Long userId) { String planMaintCodeS = planMaintCode.replaceAll("\"", ""); DmsPlanMaint dmsPlanMaint = dmsPlanMaintMapper.selectDmsPlanMaintJoinByPlanMaintCode(planMaintCodeS); List planMaintDetails = dmsPlanMaint.getDmsPlanMaintDetailList(); @@ -76,21 +70,8 @@ public class RemoteMaintInstanceServiceImpl implements RemoteMaintInstanceServic dmsBillsMaintInstance.setPlanEndTime(new Date(lubeTime.getTime() + timeLimit * 1000l)); //字段没有自动填充,只能代码手动填充 - - // 获取用户信息 -/* SaSession session = StpUtil.getTokenSession(); - if (ObjectUtil.isNull(session)) { - return R.fail("用户会话不存在"); - } - LoginUser loginUser = (LoginUser) session.get("loginUser");*/ - LoginUser loginUser = new LoginUser();//暂时默认系统用户 - loginUser.setTenantId(DEFAULT_TENANT_ID_FOR_JOBS);//暂时默认系统用户 - loginUser.setUserId(SYSTEM_USER_ID);//暂时默认系统用户 - loginUser.setDeptId(SYSTEM_DEPT_ID);//暂时默认系统用户 - - dmsBillsMaintInstance.setCreateBy(SYSTEM_USER_ID);//暂时默认系统用户 - dmsBillsMaintInstance.setCreateDept(SYSTEM_DEPT_ID);//暂时默认系统用户 - dmsBillsMaintInstance.setTenantId(DEFAULT_TENANT_ID_FOR_JOBS);//暂时默认系统用户 + dmsBillsMaintInstance.setCreateBy(userId);//暂时默认系统用户 + dmsBillsMaintInstance.setTenantId(tenantId);//暂时默认系统用户 int i = dmsBillsMaintInstanceMapper.insert(dmsBillsMaintInstance); @@ -99,18 +80,15 @@ public class RemoteMaintInstanceServiceImpl implements RemoteMaintInstanceServic // dmsMaintInstanceActivity.setProcessStepOrder(1L); // int i1 = dmsMaintInstanceActivityMapper.insertDmsMaintInstanceActivity(dmsMaintInstanceActivity); - batchInsertDmsBillsMaintDetail(dmsPlanMaint, dmsBillsMaintInstance.getMaintInstanceId(), loginUser); + batchInsertDmsBillsMaintDetail(dmsPlanMaint, dmsBillsMaintInstance.getMaintInstanceId(), tenantId, userId); return R.ok(i); } @Transactional( rollbackFor = Exception.class ) - public void batchInsertDmsBillsMaintDetail(DmsPlanMaint dmsPlanMaint, Long maintInstanceId, LoginUser loginUser) { + public void batchInsertDmsBillsMaintDetail(DmsPlanMaint dmsPlanMaint, Long maintInstanceId, String tenantId, Long userId) { - Long userId = loginUser.getUserId(); - Long deptId = loginUser.getDeptId(); - String tenantId = loginUser.getTenantId(); List planMaintDetails = dmsPlanMaint.getDmsPlanMaintDetailList(); List billsMaintDetails = new ArrayList<>(); @@ -125,7 +103,6 @@ public class RemoteMaintInstanceServiceImpl implements RemoteMaintInstanceServic //字段没有自动填充,只能代码手动填充 dmsBillsMaintDetail.setCreateBy(userId); - dmsBillsMaintDetail.setCreateDept(deptId); dmsBillsMaintDetail.setTenantId(tenantId); dmsBillsMaintDetailMapper.insert(dmsBillsMaintDetail); @@ -147,7 +124,6 @@ public class RemoteMaintInstanceServiceImpl implements RemoteMaintInstanceServic //字段没有自动填充,只能代码手动填充 billsMaintDetailProject.setCreateBy(userId); - billsMaintDetailProject.setCreateDept(deptId); billsMaintDetailProject.setTenantId(tenantId); dmsBillsMaintDetailProjectMapper.insert(billsMaintDetailProject); diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanInspectServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanInspectServiceImpl.java index ca13ca2..3ddf8f0 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanInspectServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanInspectServiceImpl.java @@ -15,10 +15,12 @@ import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.uuid.Seq; 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.DmsBaseInspectRoute; import org.dromara.dms.domain.DmsPlanInspect; import org.dromara.dms.domain.bo.DmsPlanInspectBo; import org.dromara.dms.domain.vo.DmsPlanInspectVo; +import org.dromara.dms.domain.vo.DmsPlanMaintVo; import org.dromara.dms.mapper.DmsBaseInspectRouteMapper; import org.dromara.dms.mapper.DmsPlanInspectMapper; import org.dromara.dms.service.IDmsPlanInspectService; @@ -204,17 +206,17 @@ public class DmsPlanInspectServiceImpl implements IDmsPlanInspectService { .setTriggerInterval(bo.getCronExpression())//间隔时长: cron表达式 .setRetryInterval(3)//重试间隔时长 .setArgsStr("planInspectCode") - .setExtAttrs(planInspectCode); + .setExtAttrs(planInspectCode) + .setUserId(LoginHelper.getUserId().toString()) + .setTenantId(LoginHelper.getTenantId()); R longR = remoteJobService.addClusterJob(dmsJobEntity); - Long jobId = longR.getData(); - - - String time = cron; + Long newJobId = longR.getData(); //通过cron表达式获取下一次执行时间 + String time = cron; Date nextExecution = CronUtils.getNextExecution(time); add.setPlanTime(nextExecution); add.setPlanInspectCode(planInspectCode); - add.setJobId(jobId); + add.setJobId(newJobId); } Long timeLimitDays = add.getTimeLimitDays()==null ? 0L:add.getTimeLimitDays(); @@ -241,9 +243,83 @@ public class DmsPlanInspectServiceImpl implements IDmsPlanInspectService { * @return 是否修改成功 */ @Override + @GlobalTransactional(rollbackFor = Exception.class) public Boolean updateByBo(DmsPlanInspectBo bo) { DmsPlanInspect update = MapstructUtils.convert(bo, DmsPlanInspect.class); + String day = "*"; + String month = "*"; + String week = "*"; + String year = "*"; + String cron = ""; + if (update.getDay()!=null){ + day = update.getDay().toString(); + } + if (update.getMonth()!=null){ + month = update.getMonth().toString(); + } + if (update.getWeek()!=null){ + Long weekDay = update.getWeek() + 1; + week = weekDay.toString(); + } + if (update.getYear()!=null){ + year = update.getYear().toString(); + } + if (update.getInspectLevel().equals(1l)){ + cron = "0 0 "+update.getHour()+" "+day+" "+month+" ?"; + } + if (update.getInspectLevel().equals(2l)){ + cron = "0 0 "+update.getHour()+" ?"+" "+month+" "+week; + } + if (update.getInspectLevel().equals(3l)){ + cron = "0 0 "+update.getHour()+" "+day+" "+ month+" ? "+year; + } + String time = cron; + //通过cron表达式获取下一次执行时间 + Date nextExecution = CronUtils.getNextExecution(time); + update.setPlanTime(nextExecution); + //获取设备总数 + Long aLong = dmsBaseInspectRouteMapper.selectAmountByInspectRouteId(update.getInspectRouteId()); + update.setDeviceAmount(aLong); validEntityBeforeSave(update); + + Long jobId = bo.getJobId(); + String planInspectCode = bo.getPlanInspectCode(); +// String cronExpression = bo.getCronExpression(); + if (bo.getActiveFlag().equals("1")) {//激活标识(1是 0否) + if (StringUtils.isNull(jobId)){//之前没激活创建定时任务,创建定时任务 + DmsJobEntity dmsJobEntity = new DmsJobEntity(); + dmsJobEntity.setRouteKey(AllocationAlgorithmEnum.ROUND)//路由策略:轮询 + .setJobName("点巡检计划编号" + planInspectCode + "工单任务") + .setExecutorInfo("stanceInspect")//执行器名称 + .setExecutorTimeout(30)//执行超时时间 + .setBlockStrategy(JobBlockStrategyEnum.CONCURRENCY)//阻塞策略:并发 + .setMaxRetryTimes(2)//最大重试次数 + .setTriggerType(TriggerTypeEnum.CRON)//触发器类型:cron + .setTriggerInterval(bo.getCronExpression())//间隔时长: cron表达式 + .setRetryInterval(3)//重试间隔时长 + .setArgsStr("planInspectCode") + .setExtAttrs(planInspectCode) + .setUserId(LoginHelper.getUserId().toString()) + .setTenantId(LoginHelper.getTenantId()); + R longR = remoteJobService.addClusterJob(dmsJobEntity); + Long newJobId = longR.getData(); + update.setJobId(newJobId); + }else{//之前激活了,修改定时任务 + DmsJobEntity dmsJobEntity = new DmsJobEntity(); + dmsJobEntity + .setId(jobId) + .setTriggerInterval(bo.getCronExpression())//间隔时长: cron表达式 + .setUserId(LoginHelper.getUserId().toString()) + .setTenantId(LoginHelper.getTenantId()); + R updateClusterJob = remoteJobService.updateClusterJob(dmsJobEntity); + } + }else{//如果激活状态为0(1是 0否) + if (StringUtils.isNotNull(jobId)) {//之前激活过,创建并关联了任务 + //则任务状态为关闭 + R voidR = remoteJobService.updateJobStatus(jobId, 0L);//任务状态(0:关闭;1:开启) + } + } + return baseMapper.updateById(update) > 0; } @@ -262,10 +338,19 @@ public class DmsPlanInspectServiceImpl implements IDmsPlanInspectService { * @return 是否删除成功 */ @Override + @GlobalTransactional(rollbackFor = Exception.class) public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { if(isValid){ //TODO 做一些业务上的校验,判断是否需要校验 } + for (Long id : ids){ + DmsPlanInspectVo dmsPlanInspectVo = baseMapper.selectVoById(id); + Long jobId = dmsPlanInspectVo.getJobId(); + if (StringUtils.isNotNull(jobId)){ + //则任务状态为关闭 + R voidR = remoteJobService.updateJobStatus(jobId, 0L);//任务状态(0:关闭;1:开启) + } + } return baseMapper.deleteByIds(ids) > 0; } } 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 582e64e..86d3cc8 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 @@ -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 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 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 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 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 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 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 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 voidR = remoteJobService.updateJobStatus(jobId, 0L);//任务状态(0:关闭;1:开启) } - }*/ - } + } return baseMapper.deleteByIds(ids) > 0; } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanMaintServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanMaintServiceImpl.java index f8706be..eda8e49 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanMaintServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsPlanMaintServiceImpl.java @@ -15,6 +15,7 @@ import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.uuid.Seq; 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.DmsPlanMaint; import org.dromara.dms.domain.bo.DmsPlanMaintBo; import org.dromara.dms.domain.vo.DmsPlanMaintVo; @@ -217,7 +218,9 @@ public class DmsPlanMaintServiceImpl implements IDmsPlanMaintService { .setTriggerInterval(bo.getCronExpression())//间隔时长: cron表达式 .setRetryInterval(3)//重试间隔时长 .setArgsStr("planMaintCode") - .setExtAttrs(planMaintCode); + .setExtAttrs(planMaintCode) + .setUserId(LoginHelper.getUserId().toString()) + .setTenantId(LoginHelper.getTenantId()); R longR = remoteJobService.addClusterJob(dmsJobEntity); Long jobId = longR.getData(); String time = cron; @@ -248,9 +251,93 @@ public class DmsPlanMaintServiceImpl implements IDmsPlanMaintService { * @return 是否修改成功 */ @Override + @GlobalTransactional(rollbackFor = Exception.class) public Boolean updateByBo(DmsPlanMaintBo bo) { DmsPlanMaint update = MapstructUtils.convert(bo, DmsPlanMaint.class); + String day = "*"; + String month = "*"; + String week = "*"; + String year = "*"; + String cron = ""; + if (update.getDay()!=null){ + day = update.getDay().toString(); + } + if (update.getMonth()!=null){ + month = update.getMonth().toString(); + } + if (update.getWeek()!=null){ + Long weekDay = update.getWeek() + 1; + week = weekDay.toString(); + } + if (update.getYear()!=null){ + year = update.getYear().toString(); + } + if (update.getMaintLevel().equals(1l)){ + cron = "0 0 "+update.getHour()+" "+day+" "+month+" ?"; + } + if (update.getMaintLevel().equals(2l)){ + cron = "0 0 "+update.getHour()+" ?"+" "+month+" "+week; + } + if (update.getMaintLevel().equals(3l)){ + cron = "0 0 "+update.getHour()+" "+day+" "+ month+" ? "+year; + } + + Long timeLimitDays = update.getTimeLimitDays()==null?0L:update.getTimeLimitDays(); + Long timeLimitHours = update.getTimeLimitHours() == null?0L:update.getTimeLimitHours(); + update.setTimeLimit((timeLimitDays * SECONDS_PER_DAY) + + (timeLimitHours * SECONDS_PER_HOUR)); + String time = cron; + //通过cron表达式获取下一次执行时间 + Date nextExecution = CronUtils.getNextExecution(time); + update.setMaintTime(nextExecution); validEntityBeforeSave(update); + + Long jobId = bo.getJobId(); + String planMaintCode = bo.getPlanMaintCode(); + if (bo.getActiveFlag().equals("1")){ + if (StringUtils.isNull(jobId)){//之前没激活创建定时任务,创建定时任务 + DmsJobEntity dmsJobEntity = new DmsJobEntity(); + dmsJobEntity.setRouteKey(AllocationAlgorithmEnum.ROUND)//路由策略:轮询 + .setJobName("保养计划编号" + planMaintCode + "工单任务") + .setExecutorInfo("stanceMaint")//执行器名称 + .setExecutorTimeout(30)//执行超时时间 + .setBlockStrategy(JobBlockStrategyEnum.CONCURRENCY)//阻塞策略:并发 + .setMaxRetryTimes(2)//最大重试次数 + .setTriggerType(TriggerTypeEnum.CRON)//触发器类型:cron + .setTriggerInterval(bo.getCronExpression())//间隔时长: cron表达式 + .setRetryInterval(3)//重试间隔时长 + .setArgsStr("planMaintCode") + .setExtAttrs(planMaintCode) + .setUserId(LoginHelper.getUserId().toString()) + .setTenantId(LoginHelper.getTenantId()); + R longR = remoteJobService.addClusterJob(dmsJobEntity); + Long newJobId = longR.getData(); + update.setMaintTime(nextExecution); + update.setJobId(newJobId); + }else{//之前激活了,修改定时任务 + DmsJobEntity dmsJobEntity = new DmsJobEntity(); + dmsJobEntity.setId(jobId); + dmsJobEntity.setRouteKey(AllocationAlgorithmEnum.ROUND)//路由策略:轮询 + .setJobName("保养计划编号" + planMaintCode + "工单任务") + .setExecutorInfo("stanceMaint")//执行器名称 + .setExecutorTimeout(30)//执行超时时间 + .setBlockStrategy(JobBlockStrategyEnum.CONCURRENCY)//阻塞策略:并发 + .setMaxRetryTimes(2)//最大重试次数 + .setTriggerType(TriggerTypeEnum.CRON)//触发器类型:cron + .setTriggerInterval(bo.getCronExpression())//间隔时长: cron表达式 + .setRetryInterval(3)//重试间隔时长 + .setArgsStr("planMaintCode") + .setExtAttrs(planMaintCode) + .setUserId(LoginHelper.getUserId().toString()) + .setTenantId(LoginHelper.getTenantId()); + R updateClusterJob = remoteJobService.updateClusterJob(dmsJobEntity); + } + }else{//如果激活状态为0(1是 0否) + if (StringUtils.isNotNull(jobId)){//之前激活过,创建并关联了任务 + //则任务状态为关闭 + R voidR = remoteJobService.updateJobStatus(jobId, 0L);//任务状态(0:关闭;1:开启) + } + } return baseMapper.updateById(update) > 0; } @@ -269,10 +356,19 @@ public class DmsPlanMaintServiceImpl implements IDmsPlanMaintService { * @return 是否删除成功 */ @Override + @GlobalTransactional(rollbackFor = Exception.class) public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { if(isValid){ //TODO 做一些业务上的校验,判断是否需要校验 } + for (Long id : ids){ + DmsPlanMaintVo dmsPlanMaintVo = baseMapper.selectVoById(id); + Long jobId = dmsPlanMaintVo.getJobId(); + if (StringUtils.isNotNull(jobId)){ + //则任务状态为关闭 + R voidR = remoteJobService.updateJobStatus(jobId, 0L);//任务状态(0:关闭;1:开启) + } + } return baseMapper.deleteByIds(ids) > 0; } } diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/service/RemoteJobServiceImpl.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/service/RemoteJobServiceImpl.java index bc120a7..a182e1a 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/service/RemoteJobServiceImpl.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/service/RemoteJobServiceImpl.java @@ -23,6 +23,10 @@ public class RemoteJobServiceImpl implements RemoteJobService { // private final JobMapper jobMapper; + //常量 + private static final String tenant = "tenantId"; + private static final String user = "userId"; + /** * 新增集群模式的任务 * @@ -43,6 +47,8 @@ public class RemoteJobServiceImpl implements RemoteJobService { .setTriggerType(dmsJobEntity.getTriggerType())//触发类型:2. 固定时间 3.CRON 表达式 99.工作流 .setTriggerInterval(dmsJobEntity.getTriggerInterval())//触发间隔 .addArgsStr(dmsJobEntity.getArgsStr(), dmsJobEntity.getExtAttrs())//执行任务参数 + .addArgsStr(tenant, dmsJobEntity.getTenantId())//租户ID,执行任务参数手动传参 + .addArgsStr(user, dmsJobEntity.getUserId())//用户ID,执行任务参数手动传参 .setRetryInterval(dmsJobEntity.getRetryInterval())//重试间隔时长(秒) .execute(); if (jobId != null) { @@ -75,6 +81,8 @@ public class RemoteJobServiceImpl implements RemoteJobService { .setTriggerType(dmsJobEntity.getTriggerType())//触发类型:2. 固定时间 3.CRON 表达式 99.工作流 .setTriggerInterval(dmsJobEntity.getTriggerInterval())//触发间隔 .addArgsStr(dmsJobEntity.getArgsStr(), dmsJobEntity.getExtAttrs())//执行任务参数 + .addArgsStr(tenant, dmsJobEntity.getTenantId())//租户ID,执行任务参数手动传参 + .addArgsStr(user, dmsJobEntity.getUserId())//用户ID,执行任务参数手动传参 .setRetryInterval(dmsJobEntity.getRetryInterval())//重试间隔时长(秒) .execute(); return success ? R.ok() : R.fail("修改集群任务失败");