Commit 6096393127ed4ac762c9cfac74d75c85e0e036a6

Authored by xp.Huang
1 parent 19f82181

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

... ... @@ -96,6 +96,8 @@ public enum ErrorMessage {
96 96 EXECUTE_COMMAND_IS_NULL(400072,"执行命令不能为空"),
97 97 DEVICE_NAME_ALREADY_EXISTS(400073,"别名或设备名称已被使用"),
98 98 TENANT_USED_THIS_TENANT_PROFILE_ID(400074,"【%s】正在使用该租户配置"),
  99 + DEVICE_PROFILE_USED_BY_DEVICE(400075,"有设备使用待删除配置,请先删除设备或者修改设备配置"),
  100 + TASK_CENTER_IS_DISABLED(400076,"【%s】任务是禁用状态,不能执行"),
99 101 HAVE_NO_PERMISSION(500002,"没有修改权限");
100 102 private final int code;
101 103 private String message;
... ...
... ... @@ -310,24 +310,22 @@ public class TkTaskCenterServiceImpl
310 310 @Override
311 311 public boolean immediateExecute(TaskImmediateExecuteDTO immediateExecuteDTO, String tenantId)
312 312 throws SchedulerException {
313   - // 放入缓存
314 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 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 331 private void updateTaskCenterCache(TkTaskCenterEntity entity) {
... ...