|
|
|
|
@ -29,28 +29,29 @@ public class GetPhotoDelayExecutor {
|
|
|
|
|
/**
|
|
|
|
|
* 向延时队列中添加一个拍照延时任务。
|
|
|
|
|
*
|
|
|
|
|
* @param cameraPlcId 相机的PLC编号
|
|
|
|
|
* @param plcId 相机的PLC编号
|
|
|
|
|
* @param getPhotoCommand 获取照片的命令
|
|
|
|
|
* @param time 任务延时时间
|
|
|
|
|
*/
|
|
|
|
|
public static void addCameraDelayTask(String cameraPlcId, String getPhotoCommand, long time,TransmissionPojo transmissionPojo) {
|
|
|
|
|
|
|
|
|
|
if(cameraDelayTaskMap.get(cameraPlcId)==null || cameraDelayTaskMap.get(cameraPlcId).size() == 0) {
|
|
|
|
|
if( ClientChanel.get(cameraPlcId) != null){
|
|
|
|
|
public static void addCameraDelayTask(String plcId, String getPhotoCommand, long time,TransmissionPojo transmissionPojo) {
|
|
|
|
|
// 如果队列为空,则直接发送命令
|
|
|
|
|
if(cameraDelayTaskMap.get(plcId)==null || cameraDelayTaskMap.get(plcId).size() == 0) {
|
|
|
|
|
if( ClientChanel.get(plcId) != null){
|
|
|
|
|
log.info("队列中无数据,输出"+getPhotoCommand);
|
|
|
|
|
ClientChanel.get(cameraPlcId).writeAndFlush(getPhotoCommand);
|
|
|
|
|
ClientChanel.get(plcId).writeAndFlush(getPhotoCommand);
|
|
|
|
|
}else {
|
|
|
|
|
|
|
|
|
|
log.info("队列中无数据,未找到通信"+cameraPlcId);
|
|
|
|
|
log.info("队列中无数据,未找到通信"+plcId);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
CameraDelayTask cameraDelayTask = new CameraDelayTask(cameraPlcId, getPhotoCommand, time,transmissionPojo);
|
|
|
|
|
if(cameraDelayTaskMap.get(cameraPlcId)!=null){
|
|
|
|
|
// 创建一个CameraDelayTask对象,并将其添加到队列中
|
|
|
|
|
CameraDelayTask cameraDelayTask = new CameraDelayTask(plcId, getPhotoCommand, time,transmissionPojo);
|
|
|
|
|
if(cameraDelayTaskMap.get(plcId)!=null){
|
|
|
|
|
|
|
|
|
|
cameraDelayTaskMap.get(cameraPlcId).add(cameraDelayTask);
|
|
|
|
|
cameraDelayTaskMap.get(plcId).add(cameraDelayTask);
|
|
|
|
|
}else {
|
|
|
|
|
cameraDelayTaskMap.put(cameraPlcId,new DelayQueue<>());
|
|
|
|
|
cameraDelayTaskMap.get(cameraPlcId).add(cameraDelayTask);
|
|
|
|
|
cameraDelayTaskMap.put(plcId,new DelayQueue<>());
|
|
|
|
|
cameraDelayTaskMap.get(plcId).add(cameraDelayTask);
|
|
|
|
|
}
|
|
|
|
|
delayTasks.add(cameraDelayTask);
|
|
|
|
|
}
|
|
|
|
|
@ -58,12 +59,12 @@ public class GetPhotoDelayExecutor {
|
|
|
|
|
/**
|
|
|
|
|
* 根据命令和相机PLC编号从延时队列中移除任务。
|
|
|
|
|
*
|
|
|
|
|
* @param cameraPlcId 命令行
|
|
|
|
|
* @param plcId 命令行
|
|
|
|
|
*/
|
|
|
|
|
public static CameraDelayTask remove(String cameraPlcId, TransmissionPojo transmissionPojo) {
|
|
|
|
|
synchronized (cameraPlcId) {
|
|
|
|
|
public static CameraDelayTask remove(String plcId, TransmissionPojo transmissionPojo) {
|
|
|
|
|
synchronized (plcId) {
|
|
|
|
|
// 将延时队列中的任务转换为数组,便于遍历和移除
|
|
|
|
|
Object[] objects = cameraDelayTaskMap.get(cameraPlcId).toArray();
|
|
|
|
|
Object[] objects = cameraDelayTaskMap.get(plcId).toArray();
|
|
|
|
|
if(objects.length > 0) {
|
|
|
|
|
for(Object object : objects){
|
|
|
|
|
|
|
|
|
|
@ -72,7 +73,7 @@ public class GetPhotoDelayExecutor {
|
|
|
|
|
&& cameraDelayTask.getTransmissionPojo().getTaskId().equals(transmissionPojo.getTaskId())
|
|
|
|
|
&& cameraDelayTask.getTransmissionPojo().getCheckId().equals(transmissionPojo.getCheckId())
|
|
|
|
|
&& cameraDelayTask.getTransmissionPojo().getDirection().equals(transmissionPojo.getDirection())) {
|
|
|
|
|
cameraDelayTaskMap.get(cameraPlcId).remove(cameraDelayTask);
|
|
|
|
|
cameraDelayTaskMap.get(plcId).remove(cameraDelayTask);
|
|
|
|
|
return cameraDelayTask;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
@ -83,8 +84,8 @@ public class GetPhotoDelayExecutor {
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
public static CameraDelayTask removeTask(String cameraPlcId, TransmissionPojo transmissionPojo) {
|
|
|
|
|
synchronized (cameraPlcId){
|
|
|
|
|
public static CameraDelayTask removeTask(String plcId, TransmissionPojo transmissionPojo) {
|
|
|
|
|
synchronized (plcId){
|
|
|
|
|
// 将延时队列中的任务转换为数组,便于遍历和移除
|
|
|
|
|
Object[] objects = delayTasks.toArray();
|
|
|
|
|
if(objects.length > 0) {
|
|
|
|
|
@ -107,11 +108,11 @@ public class GetPhotoDelayExecutor {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static CameraDelayTask nextOne(String cameraPlcId, String getPhotoCommand) {
|
|
|
|
|
cameraPlcId = cameraPlcId.intern();
|
|
|
|
|
synchronized (cameraPlcId) {
|
|
|
|
|
public static CameraDelayTask nextOne(String plcId, String getPhotoCommand) {
|
|
|
|
|
plcId = plcId.intern();
|
|
|
|
|
synchronized (plcId) {
|
|
|
|
|
// 将延时队列中的任务转换为数组,便于遍历和移除
|
|
|
|
|
Object[] objects = cameraDelayTaskMap.get(cameraPlcId).toArray();
|
|
|
|
|
Object[] objects = cameraDelayTaskMap.get(plcId).toArray();
|
|
|
|
|
if(objects.length > 0) {
|
|
|
|
|
CameraDelayTask cameraDelayTask = (CameraDelayTask)objects[0];
|
|
|
|
|
if (cameraDelayTask != null) {
|
|
|
|
|
|