From f08408b58e0b06c22e6ef66bb80856ac5eaa9d83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LAPTOP-S9HJSOEB=5C=E6=98=8A=E5=A4=A9?= Date: Tue, 23 Apr 2024 11:12:02 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=A2=9E=E5=8A=A0=E5=B7=B7=E9=81=93=E6=9F=A5?= =?UTF-8?q?=E6=89=BE=202.=E7=90=83=E6=9C=BA=E6=97=B6=E9=97=B4=E6=A0=A1?= =?UTF-8?q?=E5=87=86=203.=E4=B8=8B=E4=B8=80=E4=B8=AA=E5=A6=82=E6=9E=9C?= =?UTF-8?q?=E5=8C=85=E5=90=AB=E9=94=99=E8=AF=AF=204.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/lib/CameraControlModule.java | 1 + .../lib/hik/HikCameraControlModuleImpl.java | 11 +++++ .../JoywareCameraControlModuleImpl.java | 3 ++ .../com/zhehekeji/web/mapper/StockMapper.java | 2 +- .../com/zhehekeji/web/pojo/OrderSearch.java | 1 + .../com/zhehekeji/web/service/CronTab.java | 41 ++++++++++++++++++- .../zhehekeji/web/service/InitService.java | 8 +++- .../com/zhehekeji/web/service/PlcService.java | 5 +-- .../zhehekeji/web/service/StockService.java | 8 +++- .../service/algorithm/AlgorithmService.java | 22 +++++++++- web/src/main/resources/application-prod.yml | 1 + web/src/main/resources/mapper/OrderMapper.xml | 3 ++ 12 files changed, 95 insertions(+), 11 deletions(-) diff --git a/web/src/main/java/com/zhehekeji/web/lib/CameraControlModule.java b/web/src/main/java/com/zhehekeji/web/lib/CameraControlModule.java index 7c124a3..680ffe4 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/CameraControlModule.java +++ b/web/src/main/java/com/zhehekeji/web/lib/CameraControlModule.java @@ -133,4 +133,5 @@ public interface CameraControlModule { void toPtzSlow(Integer cameraId, Integer x); + boolean setCameraTime(Integer id); } diff --git a/web/src/main/java/com/zhehekeji/web/lib/hik/HikCameraControlModuleImpl.java b/web/src/main/java/com/zhehekeji/web/lib/hik/HikCameraControlModuleImpl.java index 0155e3c..3a446b7 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/hik/HikCameraControlModuleImpl.java +++ b/web/src/main/java/com/zhehekeji/web/lib/hik/HikCameraControlModuleImpl.java @@ -20,6 +20,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Timer; +import static com.zhehekeji.web.lib.hik.HCNetSDK.NET_DVR_SET_TIMECFG; + /** * 云台控制接口实现 * 主要有 :八个方向控制、变倍、变焦、光圈功能 @@ -435,4 +437,13 @@ public class HikCameraControlModuleImpl implements CameraControlModule { } } + public boolean setCameraTime(Integer cameraId) { + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + HCNetSDK.NET_DVR_TIME time = new HCNetSDK.NET_DVR_TIME(); + LocalDateTime localDateTime = LocalDateTime.now(); + time.setTime(localDateTime.getYear(),localDateTime.getMonthValue(),localDateTime.getDayOfMonth(),localDateTime.getHour(),localDateTime.getMinute(),localDateTime.getSecond()); + time.write(); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_SetDVRConfig(lUserId, NET_DVR_SET_TIMECFG, 0,time.getPointer(), time.size()); + + } } diff --git a/web/src/main/java/com/zhehekeji/web/lib/joyware/JoywareCameraControlModuleImpl.java b/web/src/main/java/com/zhehekeji/web/lib/joyware/JoywareCameraControlModuleImpl.java index 76c36c9..67236f4 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/joyware/JoywareCameraControlModuleImpl.java +++ b/web/src/main/java/com/zhehekeji/web/lib/joyware/JoywareCameraControlModuleImpl.java @@ -352,6 +352,9 @@ public class JoywareCameraControlModuleImpl implements CameraControlModule { log.error("toPtzSlow cameraId:{},error:{}", cameraId,ToolKits.getErrorCodePrint()); } } + public boolean setCameraTime(Integer cameraId) { + return false; + } /** * 旋转360度 diff --git a/web/src/main/java/com/zhehekeji/web/mapper/StockMapper.java b/web/src/main/java/com/zhehekeji/web/mapper/StockMapper.java index ed54dd1..2526be0 100644 --- a/web/src/main/java/com/zhehekeji/web/mapper/StockMapper.java +++ b/web/src/main/java/com/zhehekeji/web/mapper/StockMapper.java @@ -13,7 +13,7 @@ public interface StockMapper extends BaseMapper { void insertOrUpdate(@Param("req") Stock stock); - @Select("select * from stock where `street_id` = #{streetId} and `direction` = #{direction} and `side` = #{side} and `row` = #{row} and `column` = #{column} limit 1") + @Select("select * from stock where `street_id` = #{streetId} and `direction` = #{direction} and `side` = #{side} and `row` = #{row} and `column` = #{column} order by export_time desc limit 1") Stock getByStreetAndDirectionAndSideAndRowColumn(@Param("streetId") Integer streetId,@Param("direction") Integer direction,@Param("side") Integer side,@Param("row") Integer row,@Param("column") Integer column); void truncate(); diff --git a/web/src/main/java/com/zhehekeji/web/pojo/OrderSearch.java b/web/src/main/java/com/zhehekeji/web/pojo/OrderSearch.java index c70d7e3..d3ad39e 100644 --- a/web/src/main/java/com/zhehekeji/web/pojo/OrderSearch.java +++ b/web/src/main/java/com/zhehekeji/web/pojo/OrderSearch.java @@ -17,6 +17,7 @@ public class OrderSearch { @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") private LocalDateTime endTimestamp; + private Integer streetId; private Integer pageSize; diff --git a/web/src/main/java/com/zhehekeji/web/service/CronTab.java b/web/src/main/java/com/zhehekeji/web/service/CronTab.java index 702d55f..6a0614f 100644 --- a/web/src/main/java/com/zhehekeji/web/service/CronTab.java +++ b/web/src/main/java/com/zhehekeji/web/service/CronTab.java @@ -3,7 +3,13 @@ package com.zhehekeji.web.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.zhehekeji.web.config.ConfigProperties; import com.zhehekeji.web.controller.StreetController; +import com.zhehekeji.web.entity.Camera; import com.zhehekeji.web.entity.LightSource; +import com.zhehekeji.web.lib.CameraConnMap; +import com.zhehekeji.web.lib.CameraControlModule; +import com.zhehekeji.web.lib.hik.HikLoginModuleImpl; +import com.zhehekeji.web.lib.joyware.JoywareLoginModuleImpl; +import com.zhehekeji.web.mapper.CameraMapper; import com.zhehekeji.web.mapper.LightSourceMapper; import com.zhehekeji.web.service.damLightSource.JYDAMEquip; import com.zhehekeji.web.service.damLightSource.JYDamHelper; @@ -73,6 +79,39 @@ public class CronTab { lightTimeMap.put(streetId,System.currentTimeMillis()); } + + @Resource + private CameraMapper cameraMapper; + + @Resource + private CameraService cameraService; + + @Resource + private CameraControlModule cameraControlModule; + + @Scheduled(cron = "${cameraConfig.cameraTimeUpdateCron}") + public void cameraTimeUpdate() { + log.info(" cameraTimeUpdate"); + long timeStamp = System.currentTimeMillis(); + List cameras = cameraMapper.selectList(new QueryWrapper<>()); + for (Camera camera : cameras){ + Boolean ok = false; + if(configProperties.getCameraConfig().getCameraType() == ConfigProperties.HIK_CAMERA){ + ok = HikLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId()).intValue()); + }else { + ok = JoywareLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId())); + } + + if(ok){ + cameraControlModule.setCameraTime(camera.getId()); + }else { + CameraConnMap.disConn(camera.getId()); + camera.setStatus("未连接"); + cameraService.cameraLogin(camera); + } + } + } + @Scheduled(cron = "0 0/1 * * * ?") public void lightStatus() { log.debug(" lightStatus"); @@ -102,7 +141,7 @@ public class CronTab { } - @Scheduled(cron = "0 0 0 * * ? ") + @Scheduled(cron = "0 4 0 * * ? ") public void lightCloseAll() { streetController.closeLightSource(); } 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 3e7d194..f1c66e3 100644 --- a/web/src/main/java/com/zhehekeji/web/service/InitService.java +++ b/web/src/main/java/com/zhehekeji/web/service/InitService.java @@ -66,7 +66,7 @@ public class InitService implements ApplicationRunner { cameraService.setCameraLoginModule(cameraControlLoginModule); return cameraControlLoginModule; } - + CameraControlModule cameraControlModule; @Bean public CameraControlModule cameraControlModule(ConfigProperties configProperties){ CameraControlModule cameraControlModule = null; @@ -77,6 +77,7 @@ public class InitService implements ApplicationRunner { } plcService.setCameraControlModule(cameraControlModule); cameraService.setCameraControlModule(cameraControlModule); + this.cameraControlModule = cameraControlModule; return cameraControlModule; } @@ -84,6 +85,7 @@ public class InitService implements ApplicationRunner { public void run(ApplicationArguments args) throws Exception { //球机登录 List cameras = cameraMapper.selectByMap(new HashMap<>(0)); + cameras.forEach(camera -> { LoginThread loginThread = new LoginThread(camera); loginThread.start(); @@ -121,6 +123,8 @@ public class InitService implements ApplicationRunner { } }else if(configProperties.getServerMode() == 3){} TaskDelayExecutor.runMp4DownloadExecutor(); + + streetController.closeLightSource(); } @@ -134,7 +138,9 @@ public class InitService implements ApplicationRunner { @Override public void run() { + cameraService.cameraLogin(camera); + cameraControlModule.setCameraTime(camera.getId()); } } 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 edaf1b1..34c4330 100644 --- a/web/src/main/java/com/zhehekeji/web/service/PlcService.java +++ b/web/src/main/java/com/zhehekeji/web/service/PlcService.java @@ -204,6 +204,7 @@ public class PlcService { LocalDateTime endTime = LocalDateTime.now(); Order order = orderMapper.getOneByOrderNum(plcCmdInfo.getOrderNum()); + order.setEndTime(endTime); if (order == null) { log.error("订单结束信号,订单不存在,orderNum:{}", plcCmdInfo.getOrderNum()); return; @@ -882,10 +883,6 @@ public class PlcService { } else if (Cmd.B2.name().equals(cmdName)) { - - //B2 C4 一起发的,需要停止等B2 - - orderStop(plcCmdInfo); } } else if (Cmd.C.name().equals(ksecInfo.getType())) { diff --git a/web/src/main/java/com/zhehekeji/web/service/StockService.java b/web/src/main/java/com/zhehekeji/web/service/StockService.java index 9e0dc4c..1abaf48 100644 --- a/web/src/main/java/com/zhehekeji/web/service/StockService.java +++ b/web/src/main/java/com/zhehekeji/web/service/StockService.java @@ -112,7 +112,11 @@ public class StockService { } Map columnTabCorrectCount = new LinkedHashMap<>(); Map rowTabCorrectCount = new LinkedHashMap<>(); - List stocks = stockMapper.selectList(new QueryWrapper().select("status","`row`","`column`").eq("`street_id`",rowColumnStatus.getStreetId()).eq("direction",rowColumnStatus.getDirection()).eq("side",rowColumnStatus.getSide())); + List stocks = stockMapper.selectList(new QueryWrapper() + .select("status","`row`","`column`") + .eq("`street_id`",rowColumnStatus.getStreetId()) + .eq("direction",rowColumnStatus.getDirection()) + .eq("side",rowColumnStatus.getSide())); if(CollectionUtils.isEmpty(stocks)){ stockInit(rowColumnStatus.getRowStart(), rowColumnStatus.getRowEnd(), rowColumnStatus.getColumnStart(), rowColumnStatus.getColumnEnd(), null,stocks); checkStatus.setStocks(stocks); @@ -437,7 +441,7 @@ public class StockService { public Stock nextOne(Long id) { QueryWrapper stockQueryWrapper = new QueryWrapper<>(); - stockQueryWrapper.eq("status","0") + stockQueryWrapper.eq("status","0").or().eq("status","1") .ne(ToolUtil.isNotEmpty(id),"id",id) .orderByDesc("export_time").last("limit 1"); Stock stock =stockMapper.selectOne(stockQueryWrapper); 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 492ab1d..8a12ed9 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 @@ -2,6 +2,7 @@ package com.zhehekeji.web.service.algorithm; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.google.gson.Gson; import com.zhehekeji.web.config.ConfigProperties; import com.zhehekeji.web.entity.AlgorithmPojo; import com.zhehekeji.web.entity.Street; @@ -24,16 +25,33 @@ public class AlgorithmService { @Resource ConfigProperties configProperties; + public static void main(String[] args) { + AlgorithmPojo algorithmPojo= new AlgorithmPojo(); + algorithmPojo.setGoodsTypeResult("qqq"); + algorithmPojo.setIp("12"); + algorithmPojo.setPort(8083); + + AlgorithmService algorithmService = new AlgorithmService(); + algorithmService.getGoodResult(algorithmPojo); + } + public AlgorithmPojo getGoodResult(AlgorithmPojo algorithmPojo) { - String url = "http://"+algorithmPojo.getIp()+":"+algorithmPojo.getPort()+configProperties.getVisualSense().getUrl(); + //String url = "http://"+algorithmPojo.getIp()+":"+algorithmPojo.getPort()+configProperties.getVisualSense().getUrl(); + + RestTemplate restTemplate =new RestTemplate(); - //url = "http://127.0.0.1:8083"+configProperties.getVisualSense().getUrl(); + + + String url = "http://127.0.0.1:8083"+"/visionCompute"; ResponseEntity body = null; try { System.out.println(algorithmPojo); + + Gson gson = new Gson(); + // String jsonString = gson.toJson(algorithmPojo); body = restTemplate.postForEntity(url, algorithmPojo, String.class); algorithmPojo = JSONObject.parseObject(body.getBody(), AlgorithmPojo.class); diff --git a/web/src/main/resources/application-prod.yml b/web/src/main/resources/application-prod.yml index 5bfe0fd..95f5a19 100644 --- a/web/src/main/resources/application-prod.yml +++ b/web/src/main/resources/application-prod.yml @@ -26,6 +26,7 @@ userUrl: http://115.236.65.98:11001 # ----------- # ----默认摄像头的连接信息 cameraConfig: + cameraTimeUpdateCron: 0 0/1 * * * ? # ------------球機選擇--- 0:利珀 1:海康 cameraType: 1 cameraPassword: a1234567 diff --git a/web/src/main/resources/mapper/OrderMapper.xml b/web/src/main/resources/mapper/OrderMapper.xml index e1e103b..1b1b283 100644 --- a/web/src/main/resources/mapper/OrderMapper.xml +++ b/web/src/main/resources/mapper/OrderMapper.xml @@ -12,6 +12,9 @@ and t.start_time >= #{req.startTimestamp} and t.start_time <= #{req.endTimestamp} + + and t.street_id = #{req.streetId} + order by t.id desc