|
|
|
|
@ -9,7 +9,10 @@ import jakarta.annotation.PostConstruct;
|
|
|
|
|
import jakarta.annotation.Resource;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.web.client.RestTemplate;
|
|
|
|
|
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.concurrent.DelayQueue;
|
|
|
|
|
import java.util.concurrent.ExecutorService;
|
|
|
|
|
import java.util.concurrent.Executors;
|
|
|
|
|
@ -22,12 +25,42 @@ import java.util.concurrent.Executors;
|
|
|
|
|
public class GetPhotoDelayExecutor {
|
|
|
|
|
@Resource
|
|
|
|
|
private PLCService plcService;
|
|
|
|
|
@Resource
|
|
|
|
|
private RestTemplate restTemplate;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 发送GET请求获取照片路径
|
|
|
|
|
* @param baseUrl 基础URL
|
|
|
|
|
* @param aisle 巷道号
|
|
|
|
|
* @param side 左右方向
|
|
|
|
|
* @return 包含up和down照片路径的Map
|
|
|
|
|
*/
|
|
|
|
|
public Map<String, String> getPhotos(String baseUrl, String aisle, String side,String taskId) {
|
|
|
|
|
String url = String.format("%s?aisle=%s&side=%s&taskId=%s", baseUrl, aisle, side,taskId);
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
// 发送GET请求并直接转换为Map
|
|
|
|
|
Map<String, String> response = restTemplate.getForObject(url, Map.class);
|
|
|
|
|
return response;
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
// 处理异常
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
return new HashMap<>();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 线程池,用于执行延时任务
|
|
|
|
|
public static DelayQueue<AlgorithmDelayTask> delayTasks = new DelayQueue<>();
|
|
|
|
|
private static ExecutorService exec = Executors.newFixedThreadPool(15);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//先放入队列,再进行拍照,这里进行超时判断,超时后发送信息,并且删除任务
|
|
|
|
|
public void communicationFactory(AlgorithmDelayTask cameraDelayTask){
|
|
|
|
|
//放置到队列中,等待取图返回后删除
|
|
|
|
|
@ -64,6 +97,42 @@ public class GetPhotoDelayExecutor {
|
|
|
|
|
//如果队列中没有,则只记录
|
|
|
|
|
plcService.stockSave(cameraDelayTask);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
public void communicationNoSetHttpFactory(AlgorithmDelayTask cameraDelayTask){
|
|
|
|
|
//放置到队列中,等待取图返回后删除
|
|
|
|
|
// delayTasks.add(cameraDelayTask);
|
|
|
|
|
// if(getCommand(cameraDelayTask.getTaskId())!=null){
|
|
|
|
|
//
|
|
|
|
|
// }
|
|
|
|
|
String cameraType = cameraDelayTask.getSRMNumber()+"-"+cameraDelayTask.getCmdName()+"-"+cameraDelayTask.getDirection()+"-"+"up";
|
|
|
|
|
String type = cameraDelayTask.getSRMNumber()+"-"+cameraDelayTask.getDirection()+"-"+"up";
|
|
|
|
|
//拍照顶部
|
|
|
|
|
CheckIntellBlinkChanel.pictures(cameraDelayTask.getSRMNumber(),cameraDelayTask.getTaskId(),cameraType
|
|
|
|
|
, dictDataService.parseDictData("camera_position", type).getValue());
|
|
|
|
|
try {
|
|
|
|
|
Thread.sleep(200);
|
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
|
throw new RuntimeException(e);
|
|
|
|
|
}
|
|
|
|
|
//拍照底部
|
|
|
|
|
String cameraTypeDown = cameraDelayTask.getSRMNumber()+"-"+cameraDelayTask.getCmdName()+"-"+cameraDelayTask.getDirection()+"-"+"down";
|
|
|
|
|
String typeDown = cameraDelayTask.getSRMNumber()+"-"+cameraDelayTask.getDirection()+"-"+"down";
|
|
|
|
|
CheckIntellBlinkChanel.pictures(cameraDelayTask.getSRMNumber(),cameraDelayTask.getTaskId(),cameraTypeDown
|
|
|
|
|
, dictDataService.parseDictData("camera_position", typeDown).getValue());
|
|
|
|
|
//码位为库 货架号 层 列
|
|
|
|
|
|
|
|
|
|
// CheckIntellBlinkDecoder.setHttp(cameraDelayTask, dictDataService.parseDictData("camera_conf", "storageUrl").getValue());
|
|
|
|
|
String storageCode = "F"
|
|
|
|
|
+ dictDataService.parseDictData("base_conf", "library_code").getValue()
|
|
|
|
|
+formatNumber((Integer.parseInt(cameraDelayTask.getSRMNumber())-1)*2+cameraDelayTask.getDirection(),2)
|
|
|
|
|
+formatNumber(cameraDelayTask.getRow(),2)
|
|
|
|
|
+formatNumber(cameraDelayTask.getColumn(),2);
|
|
|
|
|
if (cameraDelayTask.getRow()!=0 && cameraDelayTask.getColumn()!=0) {
|
|
|
|
|
cameraDelayTask.setStorageCode(storageCode);
|
|
|
|
|
}
|
|
|
|
|
//如果队列中没有,则只记录
|
|
|
|
|
// plcService.stockSave(cameraDelayTask);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 将数字转换为指定长度的字符串,不足部分前面补0。
|
|
|
|
|
|