下载增加远程下载

(未测试,并且前端要同步修改未完成)
路径修改
减少报错
相机为空不报错
拍照端口修改
bozhou-古井贡酒
LAPTOP-S9HJSOEB\昊天 2 years ago
parent 97826be003
commit bac44e656a

@ -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;

@ -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,10 +315,6 @@ 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();
}
@ -330,6 +328,17 @@ public class CameraControlController {
return Result.success();
}
@PostMapping("/mp4/delay")
@ApiOperation(value = "录像")
public String MP4delay( HttpEntity<CameraDownload> httpEntity) {
CameraDownload cameraDownload = httpEntity.getBody();
//checkLogin(id);
String path = plcService.cameraVideo(cameraDownload.getId(),cameraDownload.getStartTime(),cameraDownload.getEndTime());
return path;
}
@Resource
private CameraService cameraService;

@ -47,7 +47,7 @@ public class StreetController {
@ApiOperation(value = "全部巷道")
//@SessionHandler
public Result<List<StreetVO>> list() {
return new Result(streetService.list());
return new Result(streetService.listVo());
}
@PostMapping("")

@ -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;
}

@ -13,7 +13,9 @@ public class HikExceptionCallBack implements HCNetSDK.FExceptionCallBack {
Integer cameraId =CameraConnMap.getCameraIdByLoginId(new NetSDKLib.LLong(lUserID));
if(dwType == 32768){
if(cameraId != null){
log.error("hik disconnect,cameraId:{}", cameraId);
}
}else if(dwType == 32791){
log.info("hik reconnect,cameraId:{}", CameraConnMap.getCameraIdByLoginId(new NetSDKLib.LLong(lUserID)));

@ -13,7 +13,7 @@ public interface StreetMapper extends BaseMapper<Street> {
@Select("select count(0) from street where camera1_id = #{cameraId} or camera2_id = #{cameraId} limit 1")
Integer checkCamera(Integer cameraId);
List<StreetVO> list();
List<StreetVO> listVo();
@Select("select * from street where plc_id = #{plcId} limit 1")
Street getStreetByPlcId(String plcId);

@ -38,7 +38,7 @@ public class CheckLogService {
wrapper.orderByDesc("create_time");
List<CheckLog> stockChecks = checkLogMapper.selectList(wrapper);
List<StreetVO> streetVOS = streetService.list();
List<StreetVO> streetVOS = streetService.listVo();
for (CheckLog checkLog : stockChecks) {
for (StreetVO streetVO : streetVOS) {
if (streetVO.getId().equals(checkLog.getStreetId())) {

@ -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<String, Set<String>> 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);
if(configProperties.getCameraConfig().getDownloadType() == 1){
String finalPath = path;
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
String realPath = configProperties.getSavePath().getMp4Path() + path;
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<Street>().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<CameraDownload> 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);
}
}
//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);

@ -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<StreetMapper, Street> {
@Resource
private StreetMapper streetMapper;
@ -185,12 +186,12 @@ public class StreetService {
public PageInfo<StreetVO> page(StreetSearch search) {
PageHelper.startPage(search.getPageNum(), search.getPageSize());
List<StreetVO> streetVOS = streetMapper.list();
List<StreetVO> streetVOS = streetMapper.listVo();
return new PageInfo<>(streetVOS);
}
public List<StreetVO> list(){
return streetMapper.list();
public List<StreetVO> listVo(){
return streetMapper.listVo();
}
public void sensorGunConfig(StreetVO streetVO,Integer streetId){

@ -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<String> body = null;
try {

@ -19,8 +19,7 @@ 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){

@ -31,6 +31,7 @@ cameraConfig:
cameraPassword: a1234567
cameraUser: admin
cameraPort: 37777
downloadType: 0 # 0:远程下载 1:本地下载
videoServer: 127.0.0.1:8083
#相机抓图延迟 毫秒,这个延迟是等待球机球机转动到位,然后拍照的
delayCaptureTime: 3500

@ -31,6 +31,7 @@ cameraConfig:
cameraPassword: a1234567
cameraUser: admin
cameraPort: 37777
downloadType: 0 # 0:远程下载 1:本地下载
videoServer: 127.0.0.1:8083
#相机抓图延迟 毫秒,这个延迟是等待球机球机转动到位,然后拍照的
delayCaptureTime: 3500

@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhehekeji.web.mapper.StreetMapper">
<select id="list" parameterType="com.zhehekeji.web.pojo.street.StreetSearch" resultType="com.zhehekeji.web.pojo.street.StreetVO">
<select id="listVo" parameterType="com.zhehekeji.web.pojo.street.StreetSearch" resultType="com.zhehekeji.web.pojo.street.StreetVO">
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,

Loading…
Cancel
Save