diff --git a/web/src/main/java/com/zhehekeji/web/entity/CheckLog.java b/web/src/main/java/com/zhehekeji/web/entity/CheckLog.java index 248c4d9..55a1ea6 100644 --- a/web/src/main/java/com/zhehekeji/web/entity/CheckLog.java +++ b/web/src/main/java/com/zhehekeji/web/entity/CheckLog.java @@ -34,6 +34,11 @@ public class CheckLog { private Integer count; + private String wmsCategory; + + private Integer wmsCount; + + @ApiModelProperty("wms托盘码") private String wmsTrayCode; diff --git a/web/src/main/java/com/zhehekeji/web/pojo/Cmd.java b/web/src/main/java/com/zhehekeji/web/pojo/Cmd.java index c47736b..35997a9 100644 --- a/web/src/main/java/com/zhehekeji/web/pojo/Cmd.java +++ b/web/src/main/java/com/zhehekeji/web/pojo/Cmd.java @@ -24,6 +24,9 @@ public enum Cmd { D2, E, E1, + E2, + E3, + E4, SC, SC01, SC02, diff --git a/web/src/main/java/com/zhehekeji/web/service/InitService.java b/web/src/main/java/com/zhehekeji/web/service/InitService.java index 8d05a11..6268bab 100644 --- a/web/src/main/java/com/zhehekeji/web/service/InitService.java +++ b/web/src/main/java/com/zhehekeji/web/service/InitService.java @@ -112,7 +112,7 @@ public class InitService implements ApplicationRunner { log.error("ksec no config"); } - TaskDelayExecutor.runMp4DownloadExecutor(); + // TaskDelayExecutor.runMp4DownloadExecutor(); GetPhotoDelayExecutor.runExecutor(streets); } diff --git a/web/src/main/java/com/zhehekeji/web/service/PlcService.java b/web/src/main/java/com/zhehekeji/web/service/PlcService.java index f9c5ef0..9b0c679 100644 --- a/web/src/main/java/com/zhehekeji/web/service/PlcService.java +++ b/web/src/main/java/com/zhehekeji/web/service/PlcService.java @@ -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().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,42 +781,46 @@ 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 response = restTemplate.getForEntity(url, Integer.class); - - // 输出响应状态码和响应体 - System.out.println("Status Code: " + response.getStatusCode()); - return response.getBody(); - } + // 发起 GET 请求 + ResponseEntity response = restTemplate.getForEntity(url, Integer.class); + count = response.getBody(); + flag = true; - public int sendHttp(){ + // 输出响应状态码和响应体 + System.out.println("Status Code: " + response.getStatusCode()); + }catch (Exception e){ - // 创建 RestTemplate 实例 - RestTemplate restTemplate = new RestTemplate(); - - // 定义 URL - String url = "http://"+"127.0.0.1"+":8097/category/getBoxCount"; + } - // 发起 GET 请求 - ResponseEntity response = restTemplate.getForEntity(url, Integer.class); + CheckLog checkLog = checkLogMapper.selectOne(new QueryWrapper().eq("task_id",plcCmdInfo.getTaskId()).orderByDesc("create_Time").last("limit 1")); + Stock stock = stockMapper.selectOne(new QueryWrapper().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); + } - // 输出响应状态码和响应体 - System.out.println("Status Code: " + response.getStatusCode()); - return response.getBody(); + checkLogMapper.updateById(checkLog); + stockMapper.updateById(stock); + return checkLog.getStatus()>2?1:0; } - public static void main(String[] args) { - PlcService plcService = new PlcService(); - System.out.println(plcService.sendHttp()); - } + public static String join(String[] array, String separator) { StringBuilder sb = new StringBuilder(); diff --git a/web/src/main/java/com/zhehekeji/web/service/client/Decoder.java b/web/src/main/java/com/zhehekeji/web/service/client/Decoder.java index 5b63aca..d30486a 100644 --- a/web/src/main/java/com/zhehekeji/web/service/client/Decoder.java +++ b/web/src/main/java/com/zhehekeji/web/service/client/Decoder.java @@ -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); diff --git a/web/src/main/java/com/zhehekeji/web/service/client/GetPhotoDelayExecutor.java b/web/src/main/java/com/zhehekeji/web/service/client/GetPhotoDelayExecutor.java index 03307ef..f789e4c 100644 --- a/web/src/main/java/com/zhehekeji/web/service/client/GetPhotoDelayExecutor.java +++ b/web/src/main/java/com/zhehekeji/web/service/client/GetPhotoDelayExecutor.java @@ -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); diff --git a/web/src/main/java/com/zhehekeji/web/service/client/TransmissionPojo.java b/web/src/main/java/com/zhehekeji/web/service/client/TransmissionPojo.java index 1f25b7e..a6c7346 100644 --- a/web/src/main/java/com/zhehekeji/web/service/client/TransmissionPojo.java +++ b/web/src/main/java/com/zhehekeji/web/service/client/TransmissionPojo.java @@ -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(); } } diff --git a/web/src/main/java/com/zhehekeji/web/service/ksec/KsecDecoder.java b/web/src/main/java/com/zhehekeji/web/service/ksec/KsecDecoder.java index 7018634..8a1f3fd 100644 --- a/web/src/main/java/com/zhehekeji/web/service/ksec/KsecDecoder.java +++ b/web/src/main/java/com/zhehekeji/web/service/ksec/KsecDecoder.java @@ -180,7 +180,18 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder { } else if (Cmd.E.name().equals(ksecInfo.getType())) { //智能盘点 - plcService.check(plcCmdInfo, dataInfo); + + 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())) { //站台盘点 diff --git a/web/src/main/resources/application-prod.yml b/web/src/main/resources/application-prod.yml index cf32aad..19cccae 100644 --- a/web/src/main/resources/application-prod.yml +++ b/web/src/main/resources/application-prod.yml @@ -59,18 +59,18 @@ savePath: # ------------服务端类型 0:TCP(罗伯泰克) 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 \ No newline at end of file +inventorySimulationFollow: false \ No newline at end of file