Commit d22727dd authored by wanghao's avatar wanghao

1 指令指令完成,但是 没有检测到机械臂完成。

parent e61c0379
package com.zehong.system.task.DeviceCommJob;
import com.zehong.system.task.BaseDeviceCommJob;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
/**
* @author lenovo
* @date 2025/9/25
* @description TODO
*/
@Component
public class DeviceComm501Device1Job extends BaseDeviceCommJob {
@Override
protected int getFixedPort() {
return 501; // 固定端口501
}
@Override
protected List<Integer> getDeviceIds() {
// 端口501对应的设备ID列表
return Collections.singletonList(1);
}
}
package com.zehong.system.task.DeviceCommJob;
import com.zehong.system.task.BaseDeviceCommJob;
import org.springframework.stereotype.Component;
import java.util.Collections;
import java.util.List;
/**
* @author lenovo
* @date 2025/9/25
* @description TODO
*/
@Component
public class DeviceComm501Device2Job extends BaseDeviceCommJob {
@Override
protected int getFixedPort() {
return 501; // 固定端口501
}
@Override
protected List<Integer> getDeviceIds() {
// 端口501对应的设备ID列表
return Collections.singletonList(2);
}
}
package com.zehong.system.task.DeviceCommJob;
import com.zehong.system.task.BaseDeviceCommJob;
import org.springframework.stereotype.Component;
import java.util.Collections;
import java.util.List;
/**
* @author lenovo
* @date 2025/9/25
* @description TODO
*/
@Component
public class DeviceComm501Device3Job extends BaseDeviceCommJob {
@Override
protected int getFixedPort() {
return 501; // 固定端口501
}
@Override
protected List<Integer> getDeviceIds() {
// 端口501对应的设备ID列表
return Collections.singletonList(3);
}
}
package com.zehong.system.task;
package com.zehong.system.task.DeviceCommJob;
import com.zehong.system.task.BaseDeviceCommJob;
import org.springframework.stereotype.Component;
import java.util.Arrays;
......
package com.zehong.system.task;
package com.zehong.system.task.DeviceCommJob;
import com.zehong.system.task.BaseDeviceCommJob;
import org.springframework.stereotype.Component;
import java.util.Arrays;
......
package com.zehong.system.task;
package com.zehong.system.task.DeviceCommJob;
import com.zehong.system.task.BaseDeviceCommJob;
import org.springframework.stereotype.Component;
import java.util.Arrays;
......@@ -11,7 +12,7 @@ import java.util.List;
* @description TODO
*/
@Component
public class DeviceComm503Job extends BaseDeviceCommJob{
public class DeviceComm503Job extends BaseDeviceCommJob {
@Override
protected int getFixedPort() {
return 503; // 固定端口503
......
package com.zehong.system.task;
import com.zehong.system.task.DeviceCommJob.*;
import org.quartz.*;
import org.quartz.impl.matchers.GroupMatcher;
import org.slf4j.Logger;
......@@ -73,11 +74,58 @@ public class DeviceTaskScheduler {
*/
private void createPortSpecificCommJobs(Long fStoreyId) throws SchedulerException {
// 1. 端口501:5分钟后执行
createPortCommJob(fStoreyId, 501, DeviceComm501Job.class, 2);
createPortCommJob(fStoreyId, 501, 1,DeviceComm501Device1Job.class, 2);
// 2. 端口502:10分钟后执行
createPortCommJob(fStoreyId, 502, DeviceComm502Job.class, 4);
createPortCommJob(fStoreyId, 501, 2,DeviceComm501Device2Job.class, 4);
// 3. 端口503:15分钟后执行
createPortCommJob(fStoreyId, 503, DeviceComm503Job.class, 6);
createPortCommJob(fStoreyId, 501, 3,DeviceComm501Device3Job.class, 6);
}
/**
* 单个端口Job和Trigger创建(通用方法)
* @param fStoreyId 设备ID
* @param port 端口号
* @param jobClass Job类
* @param delayMin 延迟执行时间(分钟)
*/
private void createPortCommJob(Long fStoreyId, int port, int deviceId,Class<? extends Job> jobClass, int delayMin) throws SchedulerException {
String jobId = "COMM_" + port + deviceId + "_" + fStoreyId; // JobID:COMM_501_123(端口+设备ID,确保唯一)
String triggerId = "TRIGGER_" + port + deviceId + "_" + fStoreyId; // TriggerID:TRIGGER_501_123
JobKey jobKey = new JobKey(jobId, JOB_GROUP);
TriggerKey triggerKey = new TriggerKey(triggerId, TRIGGER_GROUP);
// 1. 去重:先删除旧任务/触发器
if (scheduler.checkExists(triggerKey)) {
scheduler.unscheduleJob(triggerKey);
log.info("端口[{}]旧触发器已删除:{}", port, triggerId);
}
if (scheduler.checkExists(jobKey)) {
scheduler.deleteJob(jobKey);
log.info("端口[{}]旧任务已删除:{}", port, jobId);
}
// 2. 创建JobDetail
JobDetail job = JobBuilder.newJob(jobClass)
.withIdentity(jobKey)
.usingJobData("fStoreyId", fStoreyId.toString()) // 传递设备ID
.storeDurably(false)
.build();
// 3. 创建一次性SimpleTrigger(延迟delayMin分钟,仅执行1次)
Date triggerTime = Date.from(Instant.now().plus(delayMin, ChronoUnit.MINUTES));
SimpleTrigger trigger = TriggerBuilder.newTrigger()
.withIdentity(triggerKey)
.forJob(jobKey)
.startAt(triggerTime) // 延迟执行时间
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withRepeatCount(0) // 仅执行1次
.withMisfireHandlingInstructionFireNow()) // 错过则立即执行
.build();
// 4. 提交调度
Date nextFireTime = scheduler.scheduleJob(job, trigger);
log.info("端口[{}]任务创建成功:jobId={},延迟{}分钟,下次执行:{}",
port, jobId, delayMin, nextFireTime);
}
/**
* 单个端口Job和Trigger创建(通用方法)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment