diff --git a/web/src/main/java/com/zhehekeji/web/lib/PtzControlModule.java b/web/src/main/java/com/zhehekeji/web/lib/PtzControlModule.java index 11b4aea..05a90a1 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/PtzControlModule.java +++ b/web/src/main/java/com/zhehekeji/web/lib/PtzControlModule.java @@ -227,6 +227,8 @@ public class PtzControlModule { } public static void downloadMp4(Integer cameraId,String path,String orderNum,LocalDateTime start,LocalDateTime end){ + //视频结束时间加上5s + end = end.plusSeconds(5); PathUtil.checkDirc(path); NetSDKLib.NET_TIME startTime = new NetSDKLib.NET_TIME(); startTime.setTime(start.getYear(),start.getMonthValue(),start.getDayOfMonth(),start.getHour(),start.getMinute(),start.getSecond()); @@ -244,7 +246,7 @@ public class PtzControlModule { NetSDKLib.NET_OUT_DOWNLOAD_BY_DATA_TYPE net_out_download_by_data_type = new NetSDKLib.NET_OUT_DOWNLOAD_BY_DATA_TYPE(); net_out_download_by_data_type.write(); log.info("start download mp4 path:{},startTime:{} ,endTime:{},now:{}",path,startTime.toString(),endTime.toString(),LocalDateTime.now()); - NetSDKLib.LLong l = LoginModule.netsdk.CLIENT_DownloadByDataType(CameraConnMap.getConnId(cameraId),download_by_data_type.getPointer(),net_out_download_by_data_type.getPointer(),5000); + NetSDKLib.LLong l = LoginModule.netsdk.CLIENT_DownloadByDataType(CameraConnMap.getConnId(cameraId),download_by_data_type.getPointer(),net_out_download_by_data_type.getPointer(),8000); if(l.longValue() == 0){ log.error("download error :{}",ToolKits.getErrorCodePrint()); }else { diff --git a/web/src/main/java/com/zhehekeji/web/service/HeartNettyClientFilter.java b/web/src/main/java/com/zhehekeji/web/service/HeartNettyClientFilter.java index da68aa3..e33311f 100644 --- a/web/src/main/java/com/zhehekeji/web/service/HeartNettyClientFilter.java +++ b/web/src/main/java/com/zhehekeji/web/service/HeartNettyClientFilter.java @@ -23,10 +23,14 @@ public class HeartNettyClientFilter extends ChannelInitializer { private PlcService plcService; - public HeartNettyClientFilter(Integer streetId,SendHeart sendHeart,PlcService plcService){ + private NettyClient nettyClient; + + public HeartNettyClientFilter(Integer streetId,SendHeart sendHeart,PlcService plcService,NettyClient nettyClient){ this.streetId = streetId; this.sendHeart = sendHeart; this.plcService = plcService; + this.nettyClient = nettyClient; + } @Override @@ -36,6 +40,6 @@ public class HeartNettyClientFilter extends ChannelInitializer { ph.addLast(new IdleStateHandler(0, 4, 0, TimeUnit.SECONDS)); ph.addLast(new MyProtocolDecoder(plcService)); ph.addLast(new MyProtocolEncoder()); - ph.addLast(new HeartNettyClientHandler(streetId,sendHeart)); + ph.addLast(new HeartNettyClientHandler(streetId,sendHeart,nettyClient)); } } diff --git a/web/src/main/java/com/zhehekeji/web/service/MyProtocolDecoder.java b/web/src/main/java/com/zhehekeji/web/service/MyProtocolDecoder.java index 7512f80..aaf55d2 100644 --- a/web/src/main/java/com/zhehekeji/web/service/MyProtocolDecoder.java +++ b/web/src/main/java/com/zhehekeji/web/service/MyProtocolDecoder.java @@ -19,6 +19,11 @@ public class MyProtocolDecoder extends FixedLengthFrameDecoder { this.plcService = plcService; } + private static String HEART = "0A"; + private static String ORDER = "0B"; + private static String ACTION = "0C"; + private static String WARN = "0D"; + /** * 解析TCP数据包 * @@ -73,11 +78,10 @@ public class MyProtocolDecoder extends FixedLengthFrameDecoder { byte[] bytes = new byte[]{b1, b2, b3, b4, b5, b6, b7, b8}; String signal = "pl43"+plcId+type+String.valueOf(taskId)+short1+short2+short3+short4+short5+short6+short7+short8+":"+code+b1+b2+b3+b4+b5+b6+b7+b8; log.info("plcId:{},原始信号:{}", plcId, signal); - if (type.equals("0A")) { + if (type.equals(HEART)) { //心跳 log.debug("receive heart plcId:{}", plcId); - } else if (type.equals("0B")) { - + } else if (type.equals(ORDER)) { if ("B1".equals(code)) { log.info("order start ,plcId:{},orderInfo:{}", plcId, plcOrderInfo.toString()); plcService.orderStart(plcOrderInfo, plcId); @@ -85,10 +89,8 @@ public class MyProtocolDecoder extends FixedLengthFrameDecoder { log.info("order end, plcId:{},orderInfo:{}", plcId, plcOrderInfo.toString()); plcService.orderStop(plcId, plcOrderInfo.getOrderNum()); } - - } else if (type.equals("0C")) { + } else if (type.equals(ACTION)) { log.info("action code,{} plcId:{},orderInfo:{}", code, plcId, plcOrderInfo.toString()); - if(!code.equals("C6")){ Integer times = OrderAction.put(plcOrderInfo.getOrderNum()); //执行动作 @@ -96,7 +98,7 @@ public class MyProtocolDecoder extends FixedLengthFrameDecoder { }else { plcService.action(plcOrderInfo, plcId, 1, code); } - } else if (type.equals("0D")) { + } else if (type.equals(WARN)) { log.info(" warn code:{}", code); if ("D0".equals(code)) { log.info("warn start ,plcId:{},warnInfo:b1:{},b2:{},b3:{},b4:{},b5:{},b6:{},b7:{},b8:{}", plcId, b1, b2, b3, b4, b5, b6, b7, b8); diff --git a/web/src/main/java/com/zhehekeji/web/service/NettyClient.java b/web/src/main/java/com/zhehekeji/web/service/NettyClient.java index f0e8e88..be2c4bb 100644 --- a/web/src/main/java/com/zhehekeji/web/service/NettyClient.java +++ b/web/src/main/java/com/zhehekeji/web/service/NettyClient.java @@ -39,7 +39,7 @@ public class NettyClient { client.group(group); client.channel(NioSocketChannel.class); SendHeart sendHeart = new SendHeart(street.getPlcId()); - client.handler(new HeartNettyClientFilter(street.getId(), sendHeart, plcService)); + client.handler(new HeartNettyClientFilter(street.getId(), sendHeart, plcService,this)); // 连接服务端 client.connect(street.getPlcIp(), street.getPlcPort()).sync().channel(); } diff --git a/web/src/main/java/com/zhehekeji/web/service/OrderService.java b/web/src/main/java/com/zhehekeji/web/service/OrderService.java index d708b39..c1c599d 100644 --- a/web/src/main/java/com/zhehekeji/web/service/OrderService.java +++ b/web/src/main/java/com/zhehekeji/web/service/OrderService.java @@ -107,12 +107,12 @@ public class OrderService { if (street.getCamera1Id() != null) { String path = PathUtil.createFileName("mp4"); - PtzControlModule.downloadMp4(street.getCamera1Id(), mp4Path + path, orderNum, order.getStartTime(), order.getEndTime().plusSeconds(5)); + PtzControlModule.downloadMp4(street.getCamera1Id(), mp4Path + path, orderNum, order.getStartTime(), order.getEndTime()); update.setVideoPath1(path); } if (street.getCamera2Id() != null) { String path = PathUtil.createFileName("mp4"); - PtzControlModule.downloadMp4(street.getCamera2Id(), mp4Path + path, orderNum, order.getStartTime(), order.getEndTime().plusSeconds(5)); + PtzControlModule.downloadMp4(street.getCamera2Id(), mp4Path + path, orderNum, order.getStartTime(), order.getEndTime()); update.setVideoPath2(path); } orderMapper.updateById(update); 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 4edfcb0..d573404 100644 --- a/web/src/main/java/com/zhehekeji/web/service/PlcService.java +++ b/web/src/main/java/com/zhehekeji/web/service/PlcService.java @@ -69,6 +69,7 @@ public class PlcService { public void orderStart(PlcOrderInfo plcOrderInfo,String plcId) { Order order = new Order(); order.setOrderNum(plcOrderInfo.getOrderNum()); + order.setStatus(0); order.setStartTime(LocalDateTime.now()); Street street = streetService.getStreetByPlcId(plcId); if(street != null){