From 404655c7c6cb5676da78b298eb7333315c66fa96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LAPTOP-S9HJSOEB=5C=E6=98=8A=E5=A4=A9?= Date: Tue, 21 Nov 2023 14:09:20 +0800 Subject: [PATCH] =?UTF-8?q?=E7=90=83=E6=9C=BA=E8=A7=86=E9=A2=91=E5=A4=9A?= =?UTF-8?q?=E4=B8=80=E7=82=B9=20rtc=E4=B8=8D=E6=8A=A5=E9=94=99=20=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E4=BF=AE=E6=94=B9=E7=9B=98=E7=82=B9=E5=90=8C=E6=97=B6?= =?UTF-8?q?=E5=8F=91=E9=80=81http=E4=BF=A1=E6=81=AF=EF=BC=8C=E5=90=8E?= =?UTF-8?q?=E6=9C=9F=E8=87=AA=E6=88=91=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/CameraController.java | 26 ++++++++++++++ .../web/controller/RealTimeController.java | 20 +++++++++-- .../web/controller/VideoccController.java | 36 ++++++------------- .../com/zhehekeji/web/entity/Videocc.java | 2 ++ .../zhehekeji/web/service/CameraService.java | 17 ++++++++- .../com/zhehekeji/web/service/PlcService.java | 15 ++++++-- .../web/service/ksec/KsecDecoder.java | 24 ------------- 7 files changed, 84 insertions(+), 56 deletions(-) diff --git a/web/src/main/java/com/zhehekeji/web/controller/CameraController.java b/web/src/main/java/com/zhehekeji/web/controller/CameraController.java index 340f29a..e9dc9f9 100644 --- a/web/src/main/java/com/zhehekeji/web/controller/CameraController.java +++ b/web/src/main/java/com/zhehekeji/web/controller/CameraController.java @@ -197,4 +197,30 @@ public class CameraController { return Result.success(); } + + @GetMapping("/rtcConfig") + @ApiOperation(value = "获取rtcConfig") + public Result rtcConfig(String rtcServer) { + List cameraList = cameraService.getCamerasByRtcServer(rtcServer); + JSONObject jsonObject = new JSONObject(); + JSONObject server = new JSONObject(); + server.put("http_port",":8083"); + String [] strings = new String[1]; + strings[0] = "stun:stun.l.google.com:19302"; + server.put("ice_servers",strings); + server.put("ice_username",""); + server.put("ice_credential",""); + jsonObject.put("server",server); + JSONObject streams = new JSONObject(); + cameraList.forEach(camera -> { + JSONObject obj = new JSONObject(); + obj.put("on_demand",true); + obj.put("disable_audio",true); + obj.put("url",camera.getRtsp()); + streams.put("camera"+camera.getId(),obj); + }); + jsonObject.put("streams",streams); + + return Result.success(jsonObject.toJSONString()); + } } diff --git a/web/src/main/java/com/zhehekeji/web/controller/RealTimeController.java b/web/src/main/java/com/zhehekeji/web/controller/RealTimeController.java index 5fd8d84..5a55cb3 100644 --- a/web/src/main/java/com/zhehekeji/web/controller/RealTimeController.java +++ b/web/src/main/java/com/zhehekeji/web/controller/RealTimeController.java @@ -33,11 +33,25 @@ public class RealTimeController { return Result.success(realTimeService.realTimes()); } - @GetMapping("/allCameras") + @GetMapping("/allCameras1") @ApiOperation(value = "全部球机") //@SessionHandler - public Result> allCameras() { - return Result.success(cameraService.allCameras()); + public Result> allCameras1() { + return Result.success(cameraService.allCameras(0)); + } + + @GetMapping("/allCameras2") + @ApiOperation(value = "全部球机") + //@SessionHandler + public Result> allCameras2() { + return Result.success(cameraService.allCameras(1)); + } + + @GetMapping("/allCameras3") + @ApiOperation(value = "全部球机") + //@SessionHandler + public Result> allCameras3() { + return Result.success(cameraService.allCameras(2)); } @GetMapping("/wallStyle") diff --git a/web/src/main/java/com/zhehekeji/web/controller/VideoccController.java b/web/src/main/java/com/zhehekeji/web/controller/VideoccController.java index 6ff590e..be1c38d 100644 --- a/web/src/main/java/com/zhehekeji/web/controller/VideoccController.java +++ b/web/src/main/java/com/zhehekeji/web/controller/VideoccController.java @@ -6,6 +6,7 @@ import com.zhehekeji.web.mapper.CheckLogMapper; import com.zhehekeji.web.mapper.RFIDMapper; import com.zhehekeji.web.mapper.StreetMapper; import com.zhehekeji.web.service.CheckLogService; +import com.zhehekeji.web.service.PlcService; import com.zhehekeji.web.service.interfaces.RfidLogService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -27,10 +28,12 @@ public class VideoccController { private CheckLogMapper checkLogMapper; @Resource private StreetMapper streetMapper; + @Resource + PlcService plcService; @PostMapping("/xiddata") @ApiOperation(value = "库存信息") - public VideoccResponse xiddata(@RequestBody Videocc videocc ){ - + public VideoccResponse xiddata1(@RequestBody Videocc videocc ){ + String orderNum = videocc.getLoc().substring(0,3)+ "_"+videocc.getJobNum(); Set list = new HashSet<>(); if(videocc.getDetails()!=null && videocc.getDetails().size()>0){ for(String detail:videocc.getDetails().keySet()){ @@ -38,33 +41,14 @@ public class VideoccController { list.addAll(videocc.getDetails().get(detail)); } } + plcService.wmsTrayCodeMapByTask.put(orderNum,list); VideoccResponse videoccResponse = new VideoccResponse(); - videoccResponse.setMsg("失败"); - videoccResponse.setIsSuccess(0);RfidLog rfidLog = rfidLogService.getOne(new QueryWrapper().eq("task_id",videocc.getJobNum()).orderByDesc("create_time")); - - Street street = streetMapper.selectById(rfidLog.getStreet_id()); - - CheckLog checkLog = checkLogMapper.selectOne(new QueryWrapper().eq("check_Num",street.getPlcId()+"_"+videocc.getJobNum()).orderByDesc("create_time")); - - if(rfidLog!=null){ - Set codes = rfidLog.getRfidTrayCode().split(",").length>0?new HashSet<>(Arrays.asList(rfidLog.getRfidTrayCode().split(","))):new HashSet<>(); - if(codes.containsAll(list)){ - checkLog.setStatus(2); - videoccResponse.setMsg("成功"); - videoccResponse.setIsSuccess(1); - }else { - - checkLog.setStatus(1); - videoccResponse.setMsg("扫码错误,请检查货物"); - videoccResponse.setIsSuccess(0); - } - checkLogMapper.updateById(checkLog); - }else { - videoccResponse.setMsg("rfid扫码未完成,请稍后重试"); - videoccResponse.setIsSuccess(0); - } + videoccResponse.setMsg("成功"); + videoccResponse.setIsSuccess(1); return videoccResponse; } + + } diff --git a/web/src/main/java/com/zhehekeji/web/entity/Videocc.java b/web/src/main/java/com/zhehekeji/web/entity/Videocc.java index e109d0e..08a809b 100644 --- a/web/src/main/java/com/zhehekeji/web/entity/Videocc.java +++ b/web/src/main/java/com/zhehekeji/web/entity/Videocc.java @@ -13,6 +13,8 @@ public class Videocc { private String taskKey; @JsonProperty(value = "JOBNUM") private String jobNum; + @JsonProperty(value = "SRMNumber") + private String SRMNumber; @JsonProperty(value = "PLTNUM") private String pltNum; @JsonProperty(value = "LOC") diff --git a/web/src/main/java/com/zhehekeji/web/service/CameraService.java b/web/src/main/java/com/zhehekeji/web/service/CameraService.java index 982e811..1b9b78d 100644 --- a/web/src/main/java/com/zhehekeji/web/service/CameraService.java +++ b/web/src/main/java/com/zhehekeji/web/service/CameraService.java @@ -1,6 +1,7 @@ package com.zhehekeji.web.service; import com.alibaba.excel.EasyExcel; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.zhehekeji.core.util.Assert; @@ -124,6 +125,14 @@ public class CameraService { return new PageInfo<>(cameras); } + + public List getCamerasByRtcServer(String rtcServer){ + if(StringUtils.isEmpty(rtcServer)){ + rtcServer = "127.0.0.1"; + } + return cameraMapper.selectList(new QueryWrapper().eq("rtc_server",rtcServer)); + } + public class StatusThread extends Thread{ private Camera camera; private CountDownLatch latch; @@ -159,8 +168,14 @@ public class CameraService { return cameraMapper.selectById(id); } + public List allCameras(int i){ + int count = (configProperties.getVideoStyleConfig().getVideoStyleColumn()) * (configProperties.getVideoStyleConfig().getVideoStyleRow()); + int i1 = count * i; + return cameraMapper.selectList(new QueryWrapper().last("limit "+i1+" ,"+count)); + } + public List allCameras(){ - return cameraMapper.selectByMap(new HashMap<>()); + return cameraMapper.selectList(new QueryWrapper()); } /** 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 5b42882..92163f3 100644 --- a/web/src/main/java/com/zhehekeji/web/service/PlcService.java +++ b/web/src/main/java/com/zhehekeji/web/service/PlcService.java @@ -98,6 +98,8 @@ public class PlcService { @Resource private RfidLiveService rfidLiveService; + public static Map> wmsTrayCodeMapByTask = new HashMap<>(); + private static ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 8, 200, TimeUnit.MINUTES, new ArrayBlockingQueue<>(100000)); public void setCameraControlModule(CameraControlModule cameraControlModule) { @@ -714,9 +716,17 @@ public class PlcService { } if (tags != null && tags.size() > 0 ) { + if(tags.containsAll(wmsTrayCodeMapByTask.get(plcCmdInfo.getOrderNum()))) { + - trayCode = "未盘点"; - trayCheck = Boolean.TRUE; + trayCode = "盘点正常"; + trayCheck = Boolean.TRUE; + }else { + + trayCode = "盘点失败"; + trayCheck = Boolean.FALSE; + } + wmsTrayCodeMapByTask.remove(plcCmdInfo.getOrderNum()); RFID rfid = rfidMapper.selectOne(new QueryWrapper().eq("street_id", street.getId())); if(! rfidLiveService.getRfidLive(plcCmdInfo,street,wmsTrayCode)){ rfidLiveService.rfidRemoveLive(plcCmdInfo,street,rfid); @@ -816,6 +826,7 @@ public class PlcService { } + public void checkLog(Stock stock) { CheckLog checkLog = new CheckLog(); checkLog.setCheckNum(stock.getCheckNum()); 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 19f69dd..98f532e 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 @@ -198,36 +198,12 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder { // } } else if (Cmd.E.name().equals(ksecInfo.getType()) ) { - //盘点 - //转球机到盘点位 然后拍照 - -// if(!StringUtils.isEmpty(lotnum) && !lotnum.equals(lastLotnum)){ -// //需要把stock表truncate -// FileUtil.save(lotnum,"lastLotnum"); -// tcpLogger.info("truncate table ,last lotnum:{},new lotnum:{}",lastLotnum,lotnum); -// plcService.truncateStock(); -// lastLotnum = lotnum; -// } -// plcCmdInfo.setTimes(1); -// Boolean ok = plcService.check(plcCmdInfo,ksecInfo.getData().getCmdName(), dataInfo.getCode(), dataInfo.getTrayCode()); -// if(ok){ -// ksecInfo.getData().setAckStatus(1); -// }else { -// ksecInfo.getData().setAckStatus(0); -// } -// ctx.channel().writeAndFlush(ksecInfo); //rfid的逻辑 String code = dataInfo.getCmdName(); log.info("盘点指令:{}", ksecInfo); plcService.check(plcCmdInfo,ksecInfo.getType(),dataInfo.getCode(),dataInfo.getTrayCode()); ksecInfo.getData().setAckStatus(1); - /* - if("E1".equals(code)){ - plcService.RFIDCheck(plcCmdInfo); - }else { - plcService.RFIDStop(plcCmdInfo); - }*/ ctx.channel().writeAndFlush(ksecInfo); log.info("盘点完成"); }