From bac44e656a65b5cf80d695ab5997f3394788b685 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LAPTOP-S9HJSOEB=5C=E6=98=8A=E5=A4=A9?= Date: Tue, 2 Apr 2024 09:10:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E5=A2=9E=E5=8A=A0=E8=BF=9C?= =?UTF-8?q?=E7=A8=8B=E4=B8=8B=E8=BD=BD=20=EF=BC=88=E6=9C=AA=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=EF=BC=8C=E5=B9=B6=E4=B8=94=E5=89=8D=E7=AB=AF=E8=A6=81?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E4=BF=AE=E6=94=B9=E6=9C=AA=E5=AE=8C=E6=88=90?= =?UTF-8?q?=EF=BC=89=20=E8=B7=AF=E5=BE=84=E4=BF=AE=E6=94=B9=20=E5=87=8F?= =?UTF-8?q?=E5=B0=91=E6=8A=A5=E9=94=99=20=E7=9B=B8=E6=9C=BA=E4=B8=BA?= =?UTF-8?q?=E7=A9=BA=E4=B8=8D=E6=8A=A5=E9=94=99=20=E6=8B=8D=E7=85=A7?= =?UTF-8?q?=E7=AB=AF=E5=8F=A3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/config/ConfigProperties.java | 9 +++ .../controller/CameraControlController.java | 19 +++-- .../web/controller/StreetController.java | 2 +- .../zhehekeji/web/entity/CameraDownload.java | 15 ++++ .../web/lib/hik/HikExceptionCallBack.java | 4 +- .../zhehekeji/web/mapper/StreetMapper.java | 2 +- .../web/service/CheckLogService.java | 2 +- .../com/zhehekeji/web/service/PlcService.java | 72 ++++++++++++++++--- .../zhehekeji/web/service/StreetService.java | 9 +-- .../service/algorithm/AlgorithmService.java | 2 +- .../hikLightSource/HikControlSocket.java | 5 +- web/src/main/resources/application-dev.yml | 1 + web/src/main/resources/application-prod.yml | 1 + .../main/resources/mapper/StreetMapper.xml | 2 +- 14 files changed, 116 insertions(+), 29 deletions(-) create mode 100644 web/src/main/java/com/zhehekeji/web/entity/CameraDownload.java diff --git a/web/src/main/java/com/zhehekeji/web/config/ConfigProperties.java b/web/src/main/java/com/zhehekeji/web/config/ConfigProperties.java index 6c5c908..bc75730 100644 --- a/web/src/main/java/com/zhehekeji/web/config/ConfigProperties.java +++ b/web/src/main/java/com/zhehekeji/web/config/ConfigProperties.java @@ -80,12 +80,21 @@ public class ConfigProperties { private Long scanTime = 5L; } + @Data + public class DownloadMp4{ + private Integer type;//1.本地下载2.远程下载 + private String path; + private String ip; + + } + @Data public static class CameraConfig{ private Integer cameraType; + private Integer downloadType; private String cameraPassword; diff --git a/web/src/main/java/com/zhehekeji/web/controller/CameraControlController.java b/web/src/main/java/com/zhehekeji/web/controller/CameraControlController.java index 03cc858..51b165e 100644 --- a/web/src/main/java/com/zhehekeji/web/controller/CameraControlController.java +++ b/web/src/main/java/com/zhehekeji/web/controller/CameraControlController.java @@ -5,6 +5,7 @@ import com.zhehekeji.core.pojo.Result; import com.zhehekeji.core.util.Assert; import com.zhehekeji.web.config.ConfigProperties; import com.zhehekeji.web.entity.Camera; +import com.zhehekeji.web.entity.CameraDownload; import com.zhehekeji.web.lib.*; import com.zhehekeji.web.lib.hik.HCNetSDK; import com.zhehekeji.web.lib.joyware.NetSDKLib; @@ -14,6 +15,7 @@ import com.zhehekeji.web.service.PlcService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpEntity; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -313,11 +315,7 @@ public class CameraControlController { //checkLogin(id); plcService.cameraVideo(1,LocalDateTime.now().minusSeconds(id),LocalDateTime.now().plusSeconds(3)); plcService.cameraVideo(2,LocalDateTime.now().minusSeconds(id),LocalDateTime.now().plusSeconds(3)); - /*String path = PathUtil.createFileName("mp4",id); - String realPath = configProperties.getSavePath().getMp4Path() + path; - TaskDelayExecutor.addMp4DelayTask(id,realPath,LocalDateTime.now().minusMinutes(2),LocalDateTime.now().minusSeconds(7),12000L);*/ - //cameraControlModule.downloadMp4(id,"D:\\work\\"+LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))+".mp4", LocalDateTime.now().minusMinutes(10),LocalDateTime.now().minusMinutes(8)); - return Result.success(); + return Result.success(); } @@ -330,6 +328,17 @@ public class CameraControlController { return Result.success(); } + @PostMapping("/mp4/delay") + @ApiOperation(value = "录像") + public String MP4delay( HttpEntity httpEntity) { + CameraDownload cameraDownload = httpEntity.getBody(); + //checkLogin(id); + String path = plcService.cameraVideo(cameraDownload.getId(),cameraDownload.getStartTime(),cameraDownload.getEndTime()); + + return path; + } + + @Resource private CameraService cameraService; diff --git a/web/src/main/java/com/zhehekeji/web/controller/StreetController.java b/web/src/main/java/com/zhehekeji/web/controller/StreetController.java index 042b03c..9d3d66a 100644 --- a/web/src/main/java/com/zhehekeji/web/controller/StreetController.java +++ b/web/src/main/java/com/zhehekeji/web/controller/StreetController.java @@ -47,7 +47,7 @@ public class StreetController { @ApiOperation(value = "全部巷道") //@SessionHandler public Result> list() { - return new Result(streetService.list()); + return new Result(streetService.listVo()); } @PostMapping("") diff --git a/web/src/main/java/com/zhehekeji/web/entity/CameraDownload.java b/web/src/main/java/com/zhehekeji/web/entity/CameraDownload.java new file mode 100644 index 0000000..37a4bf9 --- /dev/null +++ b/web/src/main/java/com/zhehekeji/web/entity/CameraDownload.java @@ -0,0 +1,15 @@ +package com.zhehekeji.web.entity; + +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class CameraDownload { + private Integer id; + private String ip; + private String port; + LocalDateTime startTime; + LocalDateTime endTime; + +} diff --git a/web/src/main/java/com/zhehekeji/web/lib/hik/HikExceptionCallBack.java b/web/src/main/java/com/zhehekeji/web/lib/hik/HikExceptionCallBack.java index aec408c..12742d5 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/hik/HikExceptionCallBack.java +++ b/web/src/main/java/com/zhehekeji/web/lib/hik/HikExceptionCallBack.java @@ -13,7 +13,9 @@ public class HikExceptionCallBack implements HCNetSDK.FExceptionCallBack { Integer cameraId =CameraConnMap.getCameraIdByLoginId(new NetSDKLib.LLong(lUserID)); if(dwType == 32768){ - log.error("hik disconnect,cameraId:{}", cameraId); + if(cameraId != null){ + log.error("hik disconnect,cameraId:{}", cameraId); + } }else if(dwType == 32791){ log.info("hik reconnect,cameraId:{}", CameraConnMap.getCameraIdByLoginId(new NetSDKLib.LLong(lUserID))); diff --git a/web/src/main/java/com/zhehekeji/web/mapper/StreetMapper.java b/web/src/main/java/com/zhehekeji/web/mapper/StreetMapper.java index 786fb1a..5c240c0 100644 --- a/web/src/main/java/com/zhehekeji/web/mapper/StreetMapper.java +++ b/web/src/main/java/com/zhehekeji/web/mapper/StreetMapper.java @@ -13,7 +13,7 @@ public interface StreetMapper extends BaseMapper { @Select("select count(0) from street where camera1_id = #{cameraId} or camera2_id = #{cameraId} limit 1") Integer checkCamera(Integer cameraId); - List list(); + List listVo(); @Select("select * from street where plc_id = #{plcId} limit 1") Street getStreetByPlcId(String plcId); diff --git a/web/src/main/java/com/zhehekeji/web/service/CheckLogService.java b/web/src/main/java/com/zhehekeji/web/service/CheckLogService.java index abf01ed..374b539 100644 --- a/web/src/main/java/com/zhehekeji/web/service/CheckLogService.java +++ b/web/src/main/java/com/zhehekeji/web/service/CheckLogService.java @@ -38,7 +38,7 @@ public class CheckLogService { wrapper.orderByDesc("create_time"); List stockChecks = checkLogMapper.selectList(wrapper); - List streetVOS = streetService.list(); + List streetVOS = streetService.listVo(); for (CheckLog checkLog : stockChecks) { for (StreetVO streetVO : streetVOS) { if (streetVO.getId().equals(checkLog.getStreetId())) { 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 48c4fae..edaf1b1 100644 --- a/web/src/main/java/com/zhehekeji/web/service/PlcService.java +++ b/web/src/main/java/com/zhehekeji/web/service/PlcService.java @@ -32,14 +32,21 @@ import org.apache.commons.collections4.SetUtils; import org.apache.commons.lang3.ArrayUtils; import org.apache.poi.util.ArrayUtil; import org.springframework.beans.BeanUtils; +import org.springframework.core.env.Environment; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.converter.StringHttpMessageConverter; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; import java.io.*; import java.net.InetSocketAddress; import java.net.Socket; +import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.time.Duration; import java.time.LocalDateTime; @@ -108,6 +115,15 @@ public class PlcService { @Resource private RfidLiveService rfidLiveService; + @Resource + private RestTemplate restTemplate ; + + + + @Resource + private Environment environment; + + public static Map> wmsTrayCodeMapByTask = new HashMap<>(); private static ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 8, 200, TimeUnit.MINUTES, new ArrayBlockingQueue<>(100000)); @@ -251,14 +267,48 @@ public class PlcService { public String cameraVideo(Integer cameraId, LocalDateTime startTime, LocalDateTime endTime) { String path = PathUtil.createFileName("mp4", cameraId); - Thread thread = new Thread(new Runnable() { - @Override - public void run() { - String realPath = configProperties.getSavePath().getMp4Path() + path; - TaskDelayExecutor.addMp4DelayTask(cameraId, realPath, startTime, endTime, configProperties.getCameraConfig().getDelayDownloadMp4()); + if(configProperties.getCameraConfig().getDownloadType() == 1){ + String finalPath = path; + Thread thread = new Thread(new Runnable() { + @Override + public void run() { + String realPath = configProperties.getSavePath().getMp4Path() + finalPath; + TaskDelayExecutor.addMp4DelayTask(cameraId, realPath, startTime, endTime, configProperties.getCameraConfig().getDelayDownloadMp4()); + } + }); + thread.start(); + }else if(configProperties.getCameraConfig().getDownloadType() == 0){ + Street street = streetService.getOne(new QueryWrapper().eq("camera1_Id",cameraId).or().eq("camera2_Id",cameraId)); + if(street != null){ + // 设置请求URL + String url = "http://"+street.getPlcIp()+":"+environment.getProperty("server.port")+"/api/camera/control/mp4/delay"; + + // 设置请求头 + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + + + // 设置请求体 + CameraDownload cameraDownload = new CameraDownload(); + cameraDownload.setId(cameraId); + cameraDownload.setStartTime(startTime); + cameraDownload.setIp(street.getPlcIp()); + cameraDownload.setPort(environment.getProperty("server.port")); + cameraDownload.setEndTime(endTime); + // 创建HttpEntity对象 + HttpEntity requestEntity = new HttpEntity<>(cameraDownload, headers); + restTemplate.getMessageConverters().add(new StringHttpMessageConverter(Charset.forName("utf-8"))); + // 发起POST请求,获取响应数据 + path = restTemplate.postForObject(url, requestEntity, String.class); + path = "http://"+street.getPlcIp()+":9007/api/mp4/"+path; + // 输出响应数据 + System.out.println(path); + + }else { + log.error("camera:{}未绑定巷道,无法远程下载",cameraId); } - }); - thread.start(); + } + //cameraControlModule.downloadMp4(cameraId,realPath,startTime,endTime); return path; } @@ -651,9 +701,9 @@ public class PlcService { //核对异常 Integer status = 1; //托盘和货物都正确 - if (algorithmPojo.getResult() == 1 - && algorithmPojo.getGoodsNumber().equals(algorithmPojo.getGoodsNumberResult()) - && algorithmPojo.getGoodsType().equals(algorithmPojo.getGoodsTypeResult())) { + if (algorithmPojo != null && algorithmPojo.getResult() != null && algorithmPojo.getResult() == 1 + && algorithmPojo.getGoodsNumber() != null && algorithmPojo.getGoodsNumber().equals(algorithmPojo.getGoodsNumberResult()) + && algorithmPojo.getGoodsType() != null && algorithmPojo.getGoodsType().equals(algorithmPojo.getGoodsTypeResult())) { status = 2; } if (stock == null) { @@ -889,7 +939,7 @@ public class PlcService { OutputStream os = null; InputStream is = null; try { - socket.connect(new InetSocketAddress(street.getPlcIp(), street.getPlcPort()), 3000); + socket.connect(new InetSocketAddress(street.getPlcIp(), 9040), 3000); //socket.setSoTimeout(10000); os = socket.getOutputStream(); Thread.sleep(100); diff --git a/web/src/main/java/com/zhehekeji/web/service/StreetService.java b/web/src/main/java/com/zhehekeji/web/service/StreetService.java index c02779f..5c1b503 100644 --- a/web/src/main/java/com/zhehekeji/web/service/StreetService.java +++ b/web/src/main/java/com/zhehekeji/web/service/StreetService.java @@ -2,6 +2,7 @@ package com.zhehekeji.web.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.zhehekeji.core.util.Assert; @@ -37,7 +38,7 @@ import java.util.Map; @Service @Slf4j -public class StreetService { +public class StreetService extends ServiceImpl { @Resource private StreetMapper streetMapper; @@ -185,12 +186,12 @@ public class StreetService { public PageInfo page(StreetSearch search) { PageHelper.startPage(search.getPageNum(), search.getPageSize()); - List streetVOS = streetMapper.list(); + List streetVOS = streetMapper.listVo(); return new PageInfo<>(streetVOS); } - public List list(){ - return streetMapper.list(); + public List listVo(){ + return streetMapper.listVo(); } public void sensorGunConfig(StreetVO streetVO,Integer streetId){ diff --git a/web/src/main/java/com/zhehekeji/web/service/algorithm/AlgorithmService.java b/web/src/main/java/com/zhehekeji/web/service/algorithm/AlgorithmService.java index 2aa1fee..492ab1d 100644 --- a/web/src/main/java/com/zhehekeji/web/service/algorithm/AlgorithmService.java +++ b/web/src/main/java/com/zhehekeji/web/service/algorithm/AlgorithmService.java @@ -29,7 +29,7 @@ public class AlgorithmService { String url = "http://"+algorithmPojo.getIp()+":"+algorithmPojo.getPort()+configProperties.getVisualSense().getUrl(); - url = "http://127.0.0.1:8083"+configProperties.getVisualSense().getUrl(); + //url = "http://127.0.0.1:8083"+configProperties.getVisualSense().getUrl(); ResponseEntity body = null; try { diff --git a/web/src/main/java/com/zhehekeji/web/service/hikLightSource/HikControlSocket.java b/web/src/main/java/com/zhehekeji/web/service/hikLightSource/HikControlSocket.java index 17c3313..4f86d2a 100644 --- a/web/src/main/java/com/zhehekeji/web/service/hikLightSource/HikControlSocket.java +++ b/web/src/main/java/com/zhehekeji/web/service/hikLightSource/HikControlSocket.java @@ -19,9 +19,8 @@ public class HikControlSocket { * <${端口号},${开关状态(0:关 1:开)},${get\post}> */ public static void main(String[] args) { - int code = openLight("172.16.0.72", 9000,2,0); - - } + int code = openLight("127.0.0.2", 9000,2,0); + } public static int openLight(String ip,int port,int index,int bool){ Socket socket = new Socket(); diff --git a/web/src/main/resources/application-dev.yml b/web/src/main/resources/application-dev.yml index 5381737..07f6da0 100644 --- a/web/src/main/resources/application-dev.yml +++ b/web/src/main/resources/application-dev.yml @@ -31,6 +31,7 @@ cameraConfig: cameraPassword: a1234567 cameraUser: admin cameraPort: 37777 + downloadType: 0 # 0:远程下载 1:本地下载 videoServer: 127.0.0.1:8083 #相机抓图延迟 毫秒,这个延迟是等待球机球机转动到位,然后拍照的 delayCaptureTime: 3500 diff --git a/web/src/main/resources/application-prod.yml b/web/src/main/resources/application-prod.yml index a6ad567..5bfe0fd 100644 --- a/web/src/main/resources/application-prod.yml +++ b/web/src/main/resources/application-prod.yml @@ -31,6 +31,7 @@ cameraConfig: cameraPassword: a1234567 cameraUser: admin cameraPort: 37777 + downloadType: 0 # 0:远程下载 1:本地下载 videoServer: 127.0.0.1:8083 #相机抓图延迟 毫秒,这个延迟是等待球机球机转动到位,然后拍照的 delayCaptureTime: 3500 diff --git a/web/src/main/resources/mapper/StreetMapper.xml b/web/src/main/resources/mapper/StreetMapper.xml index 8c73b87..89045ae 100644 --- a/web/src/main/resources/mapper/StreetMapper.xml +++ b/web/src/main/resources/mapper/StreetMapper.xml @@ -2,7 +2,7 @@ - select t.*,c1.name as camera1Name,c2.name as camera2Name,l.ip as lightSourceIp,l.port as lightSourcePort, s1.ip as leftSensorGunIp ,s1.port as leftSensorGunPort, s2.ip as rightSensorGunIp ,s2.port as rightSensorGunPort,