diff --git a/src/main/java/neatlogic/module/process/thread/ProcessTaskSlaThread.java b/src/main/java/neatlogic/module/process/thread/ProcessTaskSlaThread.java index 6920f515ca6291dd8834e013414419e1f7b2f207..13141df601292d5b0c8e6b34eb196e7ee1d4cbdf 100644 --- a/src/main/java/neatlogic/module/process/thread/ProcessTaskSlaThread.java +++ b/src/main/java/neatlogic/module/process/thread/ProcessTaskSlaThread.java @@ -62,6 +62,8 @@ public class ProcessTaskSlaThread extends NeatLogicThread { private static ProcessTaskMapper processTaskMapper; private static ProcessTaskSlaMapper processTaskSlaMapper; private static TransactionUtil transactionUtil; + + private static SchedulerManager schedulerManager; // private static ProcessTaskService processTaskService; // @Resource @@ -84,6 +86,11 @@ public class ProcessTaskSlaThread extends NeatLogicThread { transactionUtil = _transactionUtil; } + @Resource + public void setSchedulerManager(SchedulerManager _schedulerManager) { + schedulerManager = _schedulerManager; + } + private ProcessTaskStepVo currentProcessTaskStepVo; private ProcessTaskVo currentProcessTaskVo; @@ -219,30 +226,57 @@ public class ProcessTaskSlaThread extends NeatLogicThread { private void adjustJob(ProcessTaskSlaTimeVo slaTimeVo, JSONObject slaConfigObj, boolean expireTimeHasChanged) { Long slaId = slaTimeVo.getSlaId(); /* 作业是否已启动 **/ - boolean jobStarted = false; List processTaskSlaNotifyList = processTaskSlaMapper.getProcessTaskSlaNotifyBySlaId(slaId); List processTaskSlaTransferList = processTaskSlaMapper.getProcessTaskSlaTransferBySlaId(slaId); - if (CollectionUtils.isNotEmpty(processTaskSlaNotifyList) || CollectionUtils.isNotEmpty(processTaskSlaTransferList)) { - jobStarted = true; - } String status = slaTimeVo.getStatus(); if (SlaStatus.DOING.toString().toLowerCase().equals(status)) { - if (jobStarted) { - if (expireTimeHasChanged) { + if (expireTimeHasChanged) { // System.out.println("删除时效id=" + slaId + "的job,因为超时时间点变了"); + if (CollectionUtils.isNotEmpty(processTaskSlaTransferList)) { processTaskSlaMapper.deleteProcessTaskSlaTransferBySlaId(slaId); + } + if (CollectionUtils.isNotEmpty(processTaskSlaNotifyList)) { processTaskSlaMapper.deleteProcessTaskSlaNotifyBySlaId(slaId); - loadJobNotifyAndtransfer(slaId, slaConfigObj); } - } else { - loadJobNotifyAndtransfer(slaId, slaConfigObj); } + loadJobNotifyAndtransfer(slaId, slaConfigObj); } else { - if (jobStarted) { // System.out.println("删除时效id=" + slaId + "的job,因为status=" + status); - processTaskSlaMapper.deleteProcessTaskSlaTransferBySlaId(slaId); + if (CollectionUtils.isNotEmpty(processTaskSlaNotifyList)) { + IJob jobHandler = SchedulerManager.getHandler(ProcessTaskSlaNotifyJob.class.getName()); + if (jobHandler != null) { + for (ProcessTaskSlaNotifyVo processTaskSlaNotifyVo : processTaskSlaNotifyList) { + JobObject.Builder jobObjectBuilder = + new JobObject.Builder( + processTaskSlaNotifyVo.getId().toString(), + jobHandler.getGroupName(), + jobHandler.getClassName(), + TenantContext.get().getTenantUuid() + ); + JobObject jobObject = jobObjectBuilder.build(); + schedulerManager.unloadJob(jobObject); + } + } + processTaskSlaMapper.deleteProcessTaskSlaNotifyBySlaId(slaId); } + if (CollectionUtils.isNotEmpty(processTaskSlaTransferList)) { + IJob jobHandler = SchedulerManager.getHandler(ProcessTaskSlaTransferJob.class.getName()); + if (jobHandler != null) { + for (ProcessTaskSlaTransferVo processTaskSlaTransferVo : processTaskSlaTransferList) { + JobObject.Builder jobObjectBuilder = + new JobObject.Builder( + processTaskSlaTransferVo.getId().toString(), + jobHandler.getGroupName(), + jobHandler.getClassName(), + TenantContext.get().getTenantUuid() + ); + JobObject jobObject = jobObjectBuilder.build(); + schedulerManager.unloadJob(jobObject); + } + } + processTaskSlaMapper.deleteProcessTaskSlaTransferBySlaId(slaId); + } } } @@ -352,9 +386,44 @@ public class ProcessTaskSlaThread extends NeatLogicThread { } private void deleteSlaById(Long slaId) { + List processTaskSlaNotifyList = processTaskSlaMapper.getProcessTaskSlaNotifyBySlaId(slaId); + List processTaskSlaTransferList = processTaskSlaMapper.getProcessTaskSlaTransferBySlaId(slaId); + if (CollectionUtils.isNotEmpty(processTaskSlaNotifyList)) { + IJob jobHandler = SchedulerManager.getHandler(ProcessTaskSlaNotifyJob.class.getName()); + if (jobHandler != null) { + for (ProcessTaskSlaNotifyVo processTaskSlaNotifyVo : processTaskSlaNotifyList) { + JobObject.Builder jobObjectBuilder = + new JobObject.Builder( + processTaskSlaNotifyVo.getId().toString(), + jobHandler.getGroupName(), + jobHandler.getClassName(), + TenantContext.get().getTenantUuid() + ); + JobObject jobObject = jobObjectBuilder.build(); + schedulerManager.unloadJob(jobObject); + } + } + + processTaskSlaMapper.deleteProcessTaskSlaNotifyBySlaId(slaId); + } + if (CollectionUtils.isNotEmpty(processTaskSlaTransferList)) { + IJob jobHandler = SchedulerManager.getHandler(ProcessTaskSlaTransferJob.class.getName()); + if (jobHandler != null) { + for (ProcessTaskSlaTransferVo processTaskSlaTransferVo : processTaskSlaTransferList) { + JobObject.Builder jobObjectBuilder = + new JobObject.Builder( + processTaskSlaTransferVo.getId().toString(), + jobHandler.getGroupName(), + jobHandler.getClassName(), + TenantContext.get().getTenantUuid() + ); + JobObject jobObject = jobObjectBuilder.build(); + schedulerManager.unloadJob(jobObject); + } + } + processTaskSlaMapper.deleteProcessTaskSlaTransferBySlaId(slaId); + } processTaskSlaMapper.deleteProcessTaskSlaTimeBySlaId(slaId); - processTaskSlaMapper.deleteProcessTaskSlaTransferBySlaId(slaId); - processTaskSlaMapper.deleteProcessTaskSlaNotifyBySlaId(slaId); } /**