Commit 6096393127ed4ac762c9cfac74d75c85e0e036a6

Authored by xp.Huang
1 parent 19f82181

fix: 修复任务中心立即执行bug,设置只有任务中心是启用状态才可以立即执行

@@ -96,6 +96,8 @@ public enum ErrorMessage { @@ -96,6 +96,8 @@ public enum ErrorMessage {
96 EXECUTE_COMMAND_IS_NULL(400072,"执行命令不能为空"), 96 EXECUTE_COMMAND_IS_NULL(400072,"执行命令不能为空"),
97 DEVICE_NAME_ALREADY_EXISTS(400073,"别名或设备名称已被使用"), 97 DEVICE_NAME_ALREADY_EXISTS(400073,"别名或设备名称已被使用"),
98 TENANT_USED_THIS_TENANT_PROFILE_ID(400074,"【%s】正在使用该租户配置"), 98 TENANT_USED_THIS_TENANT_PROFILE_ID(400074,"【%s】正在使用该租户配置"),
  99 + DEVICE_PROFILE_USED_BY_DEVICE(400075,"有设备使用待删除配置,请先删除设备或者修改设备配置"),
  100 + TASK_CENTER_IS_DISABLED(400076,"【%s】任务是禁用状态,不能执行"),
99 HAVE_NO_PERMISSION(500002,"没有修改权限"); 101 HAVE_NO_PERMISSION(500002,"没有修改权限");
100 private final int code; 102 private final int code;
101 private String message; 103 private String message;
@@ -310,24 +310,22 @@ public class TkTaskCenterServiceImpl @@ -310,24 +310,22 @@ public class TkTaskCenterServiceImpl
310 @Override 310 @Override
311 public boolean immediateExecute(TaskImmediateExecuteDTO immediateExecuteDTO, String tenantId) 311 public boolean immediateExecute(TaskImmediateExecuteDTO immediateExecuteDTO, String tenantId)
312 throws SchedulerException { 312 throws SchedulerException {
313 - // 放入缓存  
314 String taskCenterId = immediateExecuteDTO.getId(); 313 String taskCenterId = immediateExecuteDTO.getId();
315 - String key = FastIotConstants.CacheConfigKey.TASK_IMMEDIATE_EXECUTE + "_" + taskCenterId;  
316 - cacheUtils.put(cacheName, key, immediateExecuteDTO); 314 + boolean result = false;
317 // 直接调用任务中心任务执行 315 // 直接调用任务中心任务执行
318 SysJobDTO sysJobDTO = tkSysJobService.findSysJobBySourceId(taskCenterId); 316 SysJobDTO sysJobDTO = tkSysJobService.findSysJobBySourceId(taskCenterId);
319 - if (null == sysJobDTO) {  
320 - sysJobDTO = new SysJobDTO();  
321 - sysJobDTO.setSourceId(taskCenterId);  
322 - sysJobDTO.setInvokeTarget("rpcCommandTask.process('" + taskCenterId + "')");  
323 - sysJobDTO.setJobGroup(JobGroupEnum.TASK_CENTER.name());  
324 - sysJobDTO.setTenantId(tenantId);  
325 - sysJobDTO.setCronExpression(immediateExecuteDTO.getCronExpression());  
326 - sysJobDTO.setJobName(immediateExecuteDTO.getName());  
327 - sysJobDTO.setStatus(StatusEnum.DISABLE.getIndex());  
328 - tkSysJobService.saveOrUpdateJob(sysJobDTO); 317 + if (null != sysJobDTO) {
  318 + if (Objects.equals(sysJobDTO.getStatus(), StatusEnum.DISABLE.getIndex())) {
  319 + throw new TkDataValidationException(
  320 + String.format(
  321 + ErrorMessage.TASK_CENTER_IS_DISABLED.getMessage(), sysJobDTO.getJobName()));
  322 + }
  323 + result = tkSysJobService.run(sysJobDTO);
  324 + // 放入缓存
  325 + String key = FastIotConstants.CacheConfigKey.TASK_IMMEDIATE_EXECUTE + "_" + taskCenterId;
  326 + cacheUtils.put(cacheName, key, immediateExecuteDTO);
329 } 327 }
330 - return tkSysJobService.run(sysJobDTO); 328 + return result;
331 } 329 }
332 330
333 private void updateTaskCenterCache(TkTaskCenterEntity entity) { 331 private void updateTaskCenterCache(TkTaskCenterEntity entity) {