普洱侧面拍照,取出后识别,通信更新

淮阴-烟草
LAPTOP-S9HJSOEB\昊天 1 year ago
parent 5ddc663563
commit d3bc511b70

@ -34,6 +34,11 @@ public class CheckLog {
private Integer count;
private String wmsCategory;
private Integer wmsCount;
@ApiModelProperty("wms托盘码")
private String wmsTrayCode;

@ -24,6 +24,9 @@ public enum Cmd {
D2,
E,
E1,
E2,
E3,
E4,
SC,
SC01,
SC02,

@ -112,7 +112,7 @@ public class InitService implements ApplicationRunner {
log.error("ksec no config");
}
TaskDelayExecutor.runMp4DownloadExecutor();
// TaskDelayExecutor.runMp4DownloadExecutor();
GetPhotoDelayExecutor.runExecutor(streets);
}

@ -679,8 +679,9 @@ public class PlcService {
//默认未盘点
checkLog.setStatus(StockStatus.PENDING.getStatus());
checkLog.setCreateTime(LocalDateTime.now());
checkLog.setCategory(dataInfo.getTypeNum());
checkLog.setCount(dataInfo.getQuantity());
checkLog.setWmsTrayCode(dataInfo.getTypeNum());
checkLog.setWmsCount(dataInfo.getQuantity());
checkLog.setWmsCategory(dataInfo.getTypeNum());
checkLogMapper.insert(checkLog);
//如果存在则清空表
@ -721,7 +722,7 @@ public class PlcService {
}
//取货完成进行拍照
try {
Thread.sleep(50L);
//不为其他状态进入队列
if (lock.tryLock()) {
//队列中没有任务,发送取图指令
@ -740,7 +741,7 @@ public class PlcService {
GetPhotoDelayExecutor.addCameraDelayTask(street.getPlcId(), transmissionPojo.toString(TransmissionType.GPS), configProperties.getQueueSpanTime(),transmissionPojo);
}
} catch (InterruptedException e) {
} catch (Exception e) {
log.error("取图命令 error", e);
} finally {
lock.unlock();
@ -752,24 +753,19 @@ public class PlcService {
}
public void visualCalculationResults(TransmissionPojo transmissionPojo) {
//获取个数
int count = sendHttp(transmissionPojo.getStreetNumber());
CheckLog checkLog = checkLogMapper.selectById(transmissionPojo.getCheckId());
Stock stock = stockMapper.selectOne(new QueryWrapper<Stock>().eq("check_Num", checkLog.getId()));
Street street = streetService.getStreetByPlcId(transmissionPojo.getStreetNumber());
if( stock.getCategory() != null && "20".equals(stock.getCategory())) {
checkLog.setStatus(StockStatus.OTHER.getStatus());
stock.setStatus(StockStatus.OTHER.getStatus());
}else if (!"0".equals(transmissionPojo.getCategory()) && stock.getCount() == count){
checkLog.setStatus(StockStatus.SUCCESS.getStatus());
stock.setStatus(StockStatus.SUCCESS.getStatus());
} else {
checkLog.setStatus(StockStatus.ERROR.getStatus());
stock.setStatus(StockStatus.ERROR.getStatus());
stock.setCount(count);
}
stock.setCategory(transmissionPojo.getCategory());
checkLog.setCategory(transmissionPojo.getCategory());
if (transmissionPojo.getPcd() != null && !"".equals(transmissionPojo.getPcd())) {
stock.setPcd("http://" + street.getPlcIp() + ":8007" + transmissionPojo.getPcd());
}
@ -785,43 +781,47 @@ public class PlcService {
stockMapper.updateById(stock);
}
public int sendHttp(String streetNumber){
public int sendHttp(String streetNumber,PlcCmdInfo plcCmdInfo, KsecDataInfo dataInfo){
Street street = streetService.getStreetByPlcId(streetNumber);
// 创建 RestTemplate 实例
RestTemplate restTemplate = new RestTemplate();
// 定义 URL
String url = "http://"+street.getPlcIp()+":8097/category/getBoxCount";
boolean flag = false;
int count = 0;
try {
// 发起 GET 请求
ResponseEntity<Integer> response = restTemplate.getForEntity(url, Integer.class);
count = response.getBody();
flag = true;
// 输出响应状态码和响应体
System.out.println("Status Code: " + response.getStatusCode());
return response.getBody();
}
public int sendHttp(){
// 创建 RestTemplate 实例
RestTemplate restTemplate = new RestTemplate();
// 定义 URL
String url = "http://"+"127.0.0.1"+":8097/category/getBoxCount";
}catch (Exception e){
// 发起 GET 请求
ResponseEntity<Integer> response = restTemplate.getForEntity(url, Integer.class);
}
// 输出响应状态码和响应体
System.out.println("Status Code: " + response.getStatusCode());
return response.getBody();
CheckLog checkLog = checkLogMapper.selectOne(new QueryWrapper<CheckLog>().eq("task_id",plcCmdInfo.getTaskId()).orderByDesc("create_Time").last("limit 1"));
Stock stock = stockMapper.selectOne(new QueryWrapper<Stock>().eq("check_Num", checkLog.getId()));
checkLog.setCount(count);
stock.setCount(count);
if(flag && checkLog.getWmsCount()==count&& checkLog.getWmsCategory().equals(checkLog.getCategory())){
checkLog.setStatus(2);
stock.setStatus(2);
}else {
checkLog.setStatus(1);
stock.setStatus(1);
}
public static void main(String[] args) {
PlcService plcService = new PlcService();
System.out.println(plcService.sendHttp());
checkLogMapper.updateById(checkLog);
stockMapper.updateById(stock);
return checkLog.getStatus()>2?1:0;
}
public static String join(String[] array, String separator) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < array.length; i++) {

@ -136,6 +136,7 @@ public class Decoder extends DelimiterBasedFrameDecoder {
ksecInfo.getData().setTypeNum(transmissionPojo.getCategory());
//ksecInfo.getData().setQuantity(transmissionPojo.getCount());
ksecInfo.getData().setCheckRlt(transmissionPojo.getResult());
ksecInfo.getData().setCmdName("E2");
KsecNettyClient.write(ksecInfo);
GetPhotoDelayExecutor.removeTask(transmissionPojo.getStreetNumber(), transmissionPojo);

@ -42,7 +42,9 @@ public class GetPhotoDelayExecutor {
}else {
log.info("队列中无数据,未找到通信"+plcId);
return;
}
}
// 创建一个CameraDelayTask对象并将其添加到队列中
CameraDelayTask cameraDelayTask = new CameraDelayTask(plcId, getPhotoCommand, time,transmissionPojo);
@ -190,7 +192,7 @@ public class GetPhotoDelayExecutor {
// 构造传输对象,并将任务命令等信息设置进去
TransmissionPojo transmissionPojo = new TransmissionPojo(cameraDelayTask.getCommand());
// 调用PLC服务模拟发送数据到上位机
KsecInfo ksecInfo = plcService.getKsecDataInfo(transmissionPojo, "E");
KsecInfo ksecInfo = plcService.getKsecDataInfo(transmissionPojo, "E2");
ksecInfo.getData().setTypeNum(transmissionPojo.getCategory());
ksecInfo.getData().setQuantity(transmissionPojo.getCount());
ksecInfo.getData().setCheckRlt(0);

@ -40,11 +40,11 @@ public class TransmissionPojo {
this.row = checkLog.getRow();
this.column = checkLog.getColumn();
this.direction = checkLog.getDirection();
this.count = checkLog.getCount();
if(checkLog.getCategory() != null && checkLog.getCategory().contains("/")) {
this.category = checkLog.getCategory().split("/")[0];
this.count = checkLog.getWmsCount();
if(checkLog.getWmsCategory() != null && checkLog.getWmsCategory().contains("/")) {
this.category = checkLog.getWmsCategory().split("/")[0];
}else {
this.category = checkLog.getCategory();
this.category = checkLog.getWmsCategory();
}
}

@ -180,7 +180,18 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder {
} else if (Cmd.E.name().equals(ksecInfo.getType())) {
//智能盘点
if (Cmd.E1.name().equals(cmdName)){
plcService.check(plcCmdInfo, dataInfo);
}else if (Cmd.E3.name().equals(cmdName)){
//获取个数
int count = plcService.sendHttp(dataInfo.getSRMNumber(),plcCmdInfo,dataInfo);
dataInfo.setCmdName("E4");
dataInfo.setCheckRlt(count);
KsecNettyClient.write(ksecInfo);
}
}else if (Cmd.SC.name().equals(ksecInfo.getType())) {
//站台盘点

@ -59,18 +59,18 @@ savePath:
# ------------服务端类型 0TCP(罗伯泰克) 1:KSEC(JSON)(昆船)
serverMode: 1
ksec:
ip: 127.0.0.1
ip: 192.168.10.211
port: 3000
#断点重连的次数:-1->不断重连
# reconnectNum: -1
# #断点重连的时间间隔(单位ms)
# reconnectInterval: 10000
# 服务端IP
IP: 127.0.0.1
IP: 192.168.10.175
# 服务端TCP端口
serverPort: 8056
# 服务端队列时间间隔(单位ms)
queueSpanTime: 20000
queueSpanTime: 200000
# ------------ 实时视频流 全部页面的格式 行列数量
videoStyleConfig:
videoStyleRow: 4
@ -98,4 +98,4 @@ deleteFileDays: 30
productDoc: "C:\\Users\\昊天\\Desktop\\新建文本文档.txt"
inventorySimulationFollow: true
inventorySimulationFollow: false
Loading…
Cancel
Save