From a9be2e0bfbd8e716207fc467e2699d9caec76a7c Mon Sep 17 00:00:00 2001
From: wl <173@qq.com>
Date: 星期三, 07 十二月 2022 17:44:38 +0800
Subject: [PATCH] feat: 实时视频Api fix: 事件Api 视频点位api 视频巡查api

---
 ycl-platform/src/main/java/com/ycl/controller/cockpit/enforcementEvents/EnforcementEventsController.java |   22 +-
 ycl-platform/src/main/java/com/ycl/vo/casePool/BaseCaseVO.java                                           |    1 
 ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/AIIotVO.java                                         |   21 --
 ycl-platform/src/main/java/com/ycl/service/caseHandler/IBaseCaseService.java                             |   18 +
 ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/VideoVO.java                                         |   26 ++
 ycl-platform/src/main/resources/mapper/caseHandler/BaseCaseMapper.xml                                    |   78 ++++++-
 ycl-platform/src/main/java/com/ycl/util/VideoUtil.java                                                   |   99 +++++++++++
 ycl-platform/src/main/java/com/ycl/controller/platformApi/AlarmController.java                           |   96 +---------
 ycl-platform/src/main/java/com/ycl/vo/cockpit/enforcementEvents/EnforcementEventsVO.java                 |   21 --
 ycl-platform/src/main/java/com/ycl/controller/cockpit/aiIot/AIIotController.java                         |   42 ++--
 ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java                     |   31 +++
 ycl-platform/src/main/java/com/ycl/mapper/caseHandler/BaseCaseMapper.java                                |   12 +
 ycl-platform/src/main/java/com/ycl/vo/cockpit/enforcementEvents/EventVO.java                             |   20 ++
 13 files changed, 309 insertions(+), 178 deletions(-)

diff --git a/ycl-platform/src/main/java/com/ycl/controller/cockpit/aiIot/AIIotController.java b/ycl-platform/src/main/java/com/ycl/controller/cockpit/aiIot/AIIotController.java
index 1393455..05d97ea 100644
--- a/ycl-platform/src/main/java/com/ycl/controller/cockpit/aiIot/AIIotController.java
+++ b/ycl-platform/src/main/java/com/ycl/controller/cockpit/aiIot/AIIotController.java
@@ -1,16 +1,18 @@
 package com.ycl.controller.cockpit.aiIot;
 
 import com.ycl.api.CommonResult;
+import com.ycl.service.video.impl.IVideoPointService;
 import com.ycl.util.CheckApiUtil;
+import com.ycl.util.VideoUtil;
 import com.ycl.vo.cockpit.CockpitVO;
 import com.ycl.vo.cockpit.aiIot.AIIotVO;
+import com.ycl.vo.cockpit.aiIot.VideoVO;
 import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
@@ -18,6 +20,7 @@
 import java.math.RoundingMode;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author Lyq
@@ -31,6 +34,11 @@
 
     @Resource
     private CheckApiUtil checkApiUtil;
+
+    @Autowired
+    private IVideoPointService iVideoPointService;
+    @Autowired
+    private VideoUtil videoUtil;
 
     @ApiOperation(value = "鐩戞祴鏁版嵁")
     @GetMapping("/detection")
@@ -47,23 +55,19 @@
 
     @ApiOperation(value = "瀹炴椂瑙嗛鐩戞帶")
     @GetMapping("/video")
-    public CommonResult<List<AIIotVO.VideoVO>> video(@Validated CockpitVO params) {
-        checkApiUtil.cockpit(params);
-        List<AIIotVO.VideoVO> videoVOS = new ArrayList<>();
-        AIIotVO.VideoVO a = null;
-        for (int i = 0; i < 4; i++) {
-            a = new AIIotVO.VideoVO();
-            a.setLongitude("32.11");
-            a.setLatitude("106.111");
-            a.setName("璁惧涓�");
-            a.setResourceId("012");
-            a.setBrand("澶у崕");
-            a.setModel("鐞冩満");
-            a.setIp("10.23.14.2");
-            a.setUrl("http://10.23.14.2:12001");
-            videoVOS.add(a);
-        }
-        return CommonResult.success(videoVOS);
+    public CommonResult video(@Validated CockpitVO params) {
+        //checkApiUtil.cockpit(params);
+        return CommonResult.success(iVideoPointService.list().stream().map(item -> {
+            VideoVO videoVO = new VideoVO();
+            videoVO.setName(item.getName());
+            videoVO.setBrand(item.getEquipmentBrand());
+            videoVO.setModel(item.getEquipmentModel());
+            videoVO.setIp(item.getEquipmentIp());
+            videoVO.setLatitude(item.getLatitude().toString());
+            videoVO.setLongitude(item.getLongitude().toString());
+            videoVO.setUrl(videoUtil.getVideo(item.getPlatResourceId(), "HLS", 0));
+            return videoVO;
+        }).collect(Collectors.toList()));
     }
 
     @ApiOperation(value = "AI绠楁硶鏁堣兘")
diff --git a/ycl-platform/src/main/java/com/ycl/controller/cockpit/enforcementEvents/EnforcementEventsController.java b/ycl-platform/src/main/java/com/ycl/controller/cockpit/enforcementEvents/EnforcementEventsController.java
index dd28236..4d17945 100644
--- a/ycl-platform/src/main/java/com/ycl/controller/cockpit/enforcementEvents/EnforcementEventsController.java
+++ b/ycl-platform/src/main/java/com/ycl/controller/cockpit/enforcementEvents/EnforcementEventsController.java
@@ -1,11 +1,13 @@
 package com.ycl.controller.cockpit.enforcementEvents;
 
 import com.ycl.api.CommonResult;
+import com.ycl.service.caseHandler.IBaseCaseService;
 import com.ycl.util.CheckApiUtil;
 import com.ycl.vo.cockpit.CockpitVO;
 import com.ycl.vo.cockpit.enforcementEvents.EnforcementEventsVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -30,6 +32,9 @@
 public class EnforcementEventsController {
     @Resource
     private CheckApiUtil checkApiUtil;
+
+    @Autowired
+    IBaseCaseService iBaseCaseService;
 
     @ApiOperation(value = "鎵ф硶浜嬩欢缁熻")
     @GetMapping("/statistics")
@@ -137,18 +142,11 @@
     public CommonResult<EnforcementEventsVO.InfoVO> info(@Validated CockpitVO params) {
         checkApiUtil.cockpit(params);
         EnforcementEventsVO.InfoVO infoVO = new EnforcementEventsVO.InfoVO();
-        EnforcementEventsVO.EventVO eventVO = new EnforcementEventsVO.EventVO();
-        infoVO.setToday(5);
-        infoVO.setWeek(10);
-        infoVO.setDispatch(20);
-        infoVO.setIdentification(20);
-        eventVO.setDescription("浜嬩欢鎻忚堪");
-        eventVO.setAddress("浜嬪彂鍦板潃");
-        eventVO.setAlarmTime("2022-10-15 16:12:13");
-        eventVO.setPoint("1鍙风偣浣�");
-        eventVO.setPicture("http://12.2.23.4/xx.png");
-        eventVO.setSource("AI璇嗗埆");
-        infoVO.setEvent(eventVO);
+        infoVO.setToday(iBaseCaseService.dayCount());
+        infoVO.setWeek(iBaseCaseService.weekCount());
+        infoVO.setDispatch(iBaseCaseService.dispatchCount());
+        infoVO.setIdentification(iBaseCaseService.alCount());
+        infoVO.setEvent(iBaseCaseService.selectEventList(params.getBeginTime(),params.getEndTime()));
         return CommonResult.success(infoVO);
     }
 
diff --git a/ycl-platform/src/main/java/com/ycl/controller/platformApi/AlarmController.java b/ycl-platform/src/main/java/com/ycl/controller/platformApi/AlarmController.java
index a583190..dadc1fb 100644
--- a/ycl-platform/src/main/java/com/ycl/controller/platformApi/AlarmController.java
+++ b/ycl-platform/src/main/java/com/ycl/controller/platformApi/AlarmController.java
@@ -1,29 +1,17 @@
 package com.ycl.controller.platformApi;
 
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
-import com.fasterxml.jackson.databind.ObjectMapper;
 import com.ycl.api.CommonResult;
-import com.ycl.dto.v1.Req.FirstReq;
-import com.ycl.dto.v1.Req.SecondReq;
-import com.ycl.dto.v1.Res.FirstRes;
 import com.ycl.dto.video.AlarmParam;
 import com.ycl.enums.common.ResultCode;
 import com.ycl.service.video.IVideoAlarmReportService;
-import com.ycl.utils.MD5Util;
+import com.ycl.util.VideoUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.SneakyThrows;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.http.*;
-import org.springframework.http.client.ClientHttpResponse;
-import org.springframework.http.client.SimpleClientHttpRequestFactory;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
-import org.springframework.web.client.DefaultResponseErrorHandler;
-import org.springframework.web.client.RestTemplate;
-
-import java.net.URI;
 
 /**
  * @author admin
@@ -33,19 +21,11 @@
 @RequestMapping("/API")
 public class AlarmController {
 
-    @Value("${videoPoint.url}")
-    private String url;
-
-    @Value("${videoPoint.userName}")
-    private String userName;
-
-    @Value("${videoPoint.passWord}")
-    private String passWord;
-
-    @Value("${videoPoint.ip}")
-    private String ip;
 
     private IVideoAlarmReportService videoAlarmReportService;
+
+    @Autowired
+    private VideoUtil videoUtil;
 
     @Autowired
     public void setVideoAlarmReportService(IVideoAlarmReportService videoAlarmReportService) {
@@ -59,77 +39,19 @@
         return new CommonResult(ResultCode.SUCCESS.getCode(), ResultCode.SUCCESS.getMessage());
     }
 
-    @GetMapping("/Video/{code}/{subType}")
+    @GetMapping("/video")
     @ApiOperation(value = "璁惧鑾峰彇鐩戞帶鍦板潃")
     @SneakyThrows
-    public CommonResult getMonitorAddress(@PathVariable String code, @PathVariable Integer subType,
+    public CommonResult getMonitorAddress(@RequestParam String code,
+                                          @RequestParam(required = false) Integer subType,
                                           @RequestParam(required = false) String scheme) {
 
-        String clientType = "winpc";
-        String reqUrl = "/videoService/accounts/authorize";
-        String deviceUrl = "/videoService/devicesManager/devices";
         if (subType == null) {
             subType = 1;
         }
-        if (!StringUtils.isNotBlank(scheme)) {
+        if (StringUtils.isBlank(scheme)) {
             scheme = "RTSP";
         }
-        String monitorUrl = "/videoService/realmonitor/uri?subType=" + subType + "&scheme=" + scheme + "&channelId=";
-
-        RestTemplate restTemplate = new RestTemplate();
-        restTemplate.setErrorHandler(new DefaultResponseErrorHandler() {
-            @Override
-            public boolean hasError(HttpStatus status) {
-                return super.hasError(status);
-            }
-
-            @Override
-            public void handleError(URI url, HttpMethod method, ClientHttpResponse response) {
-
-            }
-        });
-        SimpleClientHttpRequestFactory simpleClientHttpRequestFactory = new SimpleClientHttpRequestFactory();
-        simpleClientHttpRequestFactory.setOutputStreaming(false);
-        restTemplate.setRequestFactory(simpleClientHttpRequestFactory);
-
-        //璇锋眰澶�
-        HttpHeaders httpHeaders = new HttpHeaders();
-        httpHeaders.setContentType(MediaType.APPLICATION_JSON);
-
-        //绗竴娆℃潈闄愯姹備綋
-        FirstReq firstReq = new FirstReq();
-        firstReq.setIpAddress(ip);
-        firstReq.setUserName(userName);
-        firstReq.setClientType(clientType);
-        ObjectMapper objectMapper = new ObjectMapper();
-
-        HttpEntity<String> firstEntity = new HttpEntity<>(objectMapper.writeValueAsString(firstReq), httpHeaders);
-        ResponseEntity<String> responseEntity = restTemplate.postForEntity(url + reqUrl, firstEntity, String.class);
-
-        FirstRes firstRes = objectMapper.readValue(responseEntity.getBody(), FirstRes.class);
-
-        String signature = MD5Util.md5Encrypt(passWord);
-        signature = MD5Util.md5Encrypt(userName + signature);
-        signature = MD5Util.md5Encrypt(signature);
-        signature = MD5Util.md5Encrypt(userName + ":" + firstRes.getRealm() + ":" + signature);
-        signature = MD5Util.md5Encrypt(signature + ":" + firstRes.getRandomKey());
-
-        SecondReq secondReq = new SecondReq();
-        secondReq.setIpAddress(ip);
-        secondReq.setEncryptType(firstRes.getEncryptType());
-        secondReq.setSignature(signature);
-        secondReq.setRandomKey(firstRes.getRandomKey());
-        secondReq.setClientType(clientType);
-        secondReq.setUserName(userName);
-
-        HttpEntity<String> secondEntity = new HttpEntity<>(objectMapper.writeValueAsString(secondReq), httpHeaders);
-        ResponseEntity<String> secondResEntity = restTemplate.postForEntity(url + reqUrl, secondEntity, String.class);
-        HttpHeaders deviceHeaders = new HttpHeaders();
-        deviceHeaders.add("X-Subject-Token", objectMapper.readTree(secondResEntity.getBody()).get("token").textValue());
-        HttpEntity<Object> deviceEntity = new HttpEntity<>(deviceHeaders);
-        ResponseEntity<String> exchange = restTemplate.exchange(url + deviceUrl + "/" + code, HttpMethod.GET, deviceEntity, String.class);
-        String channelId = objectMapper.readTree(objectMapper.readTree(objectMapper.readTree(exchange.getBody()).get("encoderUnit").toString()).get("channels").get(0).toString()).get("channelId").textValue();
-        ResponseEntity<String> monitorReq = restTemplate.exchange(url + monitorUrl + channelId, HttpMethod.GET, deviceEntity, String.class);
-        return CommonResult.successApi(objectMapper.readTree(monitorReq.getBody()).get("url"));
+        return CommonResult.successApi(videoUtil.getVideo(code, scheme, subType));
     }
 }
\ No newline at end of file
diff --git a/ycl-platform/src/main/java/com/ycl/mapper/caseHandler/BaseCaseMapper.java b/ycl-platform/src/main/java/com/ycl/mapper/caseHandler/BaseCaseMapper.java
index b632ddc..55d88db 100644
--- a/ycl-platform/src/main/java/com/ycl/mapper/caseHandler/BaseCaseMapper.java
+++ b/ycl-platform/src/main/java/com/ycl/mapper/caseHandler/BaseCaseMapper.java
@@ -10,6 +10,8 @@
 import com.ycl.vo.casePool.CasePoolIllegalBuildingVO;
 import com.ycl.vo.casePool.CasePoolViolationVO;
 import com.ycl.vo.casePool.QueryForViolationVO;
+import com.ycl.vo.cockpit.enforcementEvents.EnforcementEventsVO;
+import com.ycl.vo.cockpit.enforcementEvents.EventVO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -37,4 +39,14 @@
     List<QueryForViolationVO> selectViolationPage(QueryForViolationParam queryForViolationParam);
 
     Page<BaseCaseVO> selectVideoInspection(Page<Object> objectPage);
+
+    Integer dayCount();
+
+    Integer weekCount();
+
+    Integer dispatchCount();
+
+    List<EventVO> selectEventList(String beginTime, String endTime);
+
+    Integer alCount();
 }
diff --git a/ycl-platform/src/main/java/com/ycl/service/caseHandler/IBaseCaseService.java b/ycl-platform/src/main/java/com/ycl/service/caseHandler/IBaseCaseService.java
index eabbc0d..027167c 100644
--- a/ycl-platform/src/main/java/com/ycl/service/caseHandler/IBaseCaseService.java
+++ b/ycl-platform/src/main/java/com/ycl/service/caseHandler/IBaseCaseService.java
@@ -9,6 +9,7 @@
 import com.ycl.entity.caseHandler.BaseCaseDetail;
 import com.ycl.vo.casePool.BaseCaseVO;
 import com.ycl.vo.casePool.QueryForViolationVO;
+import com.ycl.vo.cockpit.enforcementEvents.EventVO;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -37,9 +38,10 @@
 
     Page listIllegalBuilding(Page page, Integer state, Integer resource);
 
-    Boolean saveViolationCase(ViolationParam violationParam,Long id);
+    Boolean saveViolationCase(ViolationParam violationParam, Long id);
 
     Boolean saveIllegalBuildingCase(IllegalBuildingParam illegalBuildingParam, Long id);
+
     /**
      * 鍚屾妗堜欢杩涘害
      *
@@ -54,7 +56,7 @@
 
     ArrayList<String> listCaseImages(Integer id, Integer type);
 
-    void endCase(Long caseId, String result,String opinion);
+    void endCase(Long caseId, String result, String opinion);
 
     Page<BaseCase> selectPage(Page<BaseCase> setSize, String number, Integer streetId, Integer categories, String startTime, String endTime, String site);
 
@@ -64,7 +66,17 @@
 
     Page<BaseCaseVO> selectVideoInspection(Integer current);
 
-    Map<String,Object> selectCount();
+    Map<String, Object> selectCount();
 
     Boolean updateCase(ViolationParam violationParam);
+
+    Integer dayCount();
+
+    Integer weekCount();
+
+    Integer dispatchCount();
+
+    Integer alCount();
+
+    List<EventVO> selectEventList(String beginTime, String endTime);
 }
diff --git a/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java b/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java
index d52648f..24cce4a 100644
--- a/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java
+++ b/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/BaseCaseServiceImpl.java
@@ -31,6 +31,8 @@
 import com.ycl.service.caseHandler.IViolationsService;
 import com.ycl.service.video.IVideoAlarmReportService;
 import com.ycl.vo.casePool.*;
+import com.ycl.vo.cockpit.enforcementEvents.EnforcementEventsVO;
+import com.ycl.vo.cockpit.enforcementEvents.EventVO;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -414,7 +416,11 @@
     public Map<String, Object> selectCount() {
         HashMap<String, Object> map = new HashMap<>();
         Long review = baseCaseMapper.selectCount(new LambdaQueryWrapper<BaseCase>().eq(BaseCase::getState, 1));
+        Long register = baseCaseMapper.selectCount(new LambdaQueryWrapper<BaseCase>().in(BaseCase::getState, 2,6));
+        Long study = baseCaseMapper.selectCount(new LambdaQueryWrapper<BaseCase>().eq(BaseCase::getState, 3));
         map.put("review", review);
+        map.put("register",register);
+        map.put("study",study);
         return map;
     }
 
@@ -442,4 +448,29 @@
         }
         return violationsMapper.insert(violations) == 1 ? true : false;
     }
+
+    @Override
+    public Integer dayCount() {
+        return baseCaseMapper.dayCount();
+    }
+
+    @Override
+    public Integer weekCount() {
+        return baseCaseMapper.weekCount();
+    }
+
+    @Override
+    public Integer dispatchCount() {
+        return baseCaseMapper.dispatchCount();
+    }
+
+    @Override
+    public Integer alCount() {
+        return baseCaseMapper.alCount();
+    }
+
+    @Override
+    public List<EventVO> selectEventList(String beginTime, String endTime) {
+        return baseCaseMapper.selectEventList(beginTime,endTime);
+    }
 }
\ No newline at end of file
diff --git a/ycl-platform/src/main/java/com/ycl/util/VideoUtil.java b/ycl-platform/src/main/java/com/ycl/util/VideoUtil.java
new file mode 100644
index 0000000..00fdbb1
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/util/VideoUtil.java
@@ -0,0 +1,99 @@
+package com.ycl.util;
+
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.ycl.api.CommonResult;
+import com.ycl.dto.v1.Req.FirstReq;
+import com.ycl.dto.v1.Req.SecondReq;
+import com.ycl.dto.v1.Res.FirstRes;
+import com.ycl.utils.MD5Util;
+import lombok.SneakyThrows;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.*;
+import org.springframework.http.client.ClientHttpResponse;
+import org.springframework.http.client.SimpleClientHttpRequestFactory;
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.DefaultResponseErrorHandler;
+import org.springframework.web.client.RestTemplate;
+
+import java.net.URI;
+
+@Component
+public class VideoUtil {
+
+    @Value("${videoPoint.url}")
+    private  String url;
+
+    @Value("${videoPoint.userName}")
+    private  String userName;
+
+    @Value("${videoPoint.passWord}")
+    private  String passWord;
+
+    @Value("${videoPoint.ip}")
+    private  String ip;
+
+    @SneakyThrows
+    public  String getVideo(String code, String scheme,Integer subType) {
+        String clientType = "winpc";
+        String reqUrl = "/videoService/accounts/authorize";
+        String deviceUrl = "/videoService/devicesManager/devices";
+        String monitorUrl = "/videoService/realmonitor/uri?subType=" + subType + "&scheme=" + scheme + "&channelId=";
+
+        RestTemplate restTemplate = new RestTemplate();
+        restTemplate.setErrorHandler(new DefaultResponseErrorHandler() {
+            @Override
+            public boolean hasError(HttpStatus status) {
+                return super.hasError(status);
+            }
+
+            @Override
+            public void handleError(URI url, HttpMethod method, ClientHttpResponse response) {
+
+            }
+        });
+        SimpleClientHttpRequestFactory simpleClientHttpRequestFactory = new SimpleClientHttpRequestFactory();
+        simpleClientHttpRequestFactory.setOutputStreaming(false);
+        restTemplate.setRequestFactory(simpleClientHttpRequestFactory);
+
+        //璇锋眰澶�
+        HttpHeaders httpHeaders = new HttpHeaders();
+        httpHeaders.setContentType(MediaType.APPLICATION_JSON);
+
+        //绗竴娆℃潈闄愯姹備綋
+        FirstReq firstReq = new FirstReq();
+        firstReq.setIpAddress(ip);
+        firstReq.setUserName(userName);
+        firstReq.setClientType(clientType);
+        ObjectMapper objectMapper = new ObjectMapper();
+
+        HttpEntity<String> firstEntity = new HttpEntity<>(objectMapper.writeValueAsString(firstReq), httpHeaders);
+        ResponseEntity<String> responseEntity = restTemplate.postForEntity(url + reqUrl, firstEntity, String.class);
+
+        FirstRes firstRes = objectMapper.readValue(responseEntity.getBody(), FirstRes.class);
+
+        String signature = MD5Util.md5Encrypt(passWord);
+        signature = MD5Util.md5Encrypt(userName + signature);
+        signature = MD5Util.md5Encrypt(signature);
+        signature = MD5Util.md5Encrypt(userName + ":" + firstRes.getRealm() + ":" + signature);
+        signature = MD5Util.md5Encrypt(signature + ":" + firstRes.getRandomKey());
+
+        SecondReq secondReq = new SecondReq();
+        secondReq.setIpAddress(ip);
+        secondReq.setEncryptType(firstRes.getEncryptType());
+        secondReq.setSignature(signature);
+        secondReq.setRandomKey(firstRes.getRandomKey());
+        secondReq.setClientType(clientType);
+        secondReq.setUserName(userName);
+
+        HttpEntity<String> secondEntity = new HttpEntity<>(objectMapper.writeValueAsString(secondReq), httpHeaders);
+        ResponseEntity<String> secondResEntity = restTemplate.postForEntity(url + reqUrl, secondEntity, String.class);
+        HttpHeaders deviceHeaders = new HttpHeaders();
+        deviceHeaders.add("X-Subject-Token", objectMapper.readTree(secondResEntity.getBody()).get("token").textValue());
+        HttpEntity<Object> deviceEntity = new HttpEntity<>(deviceHeaders);
+        ResponseEntity<String> exchange = restTemplate.exchange(url + deviceUrl + "/" + code, HttpMethod.GET, deviceEntity, String.class);
+        String channelId = objectMapper.readTree(objectMapper.readTree(objectMapper.readTree(exchange.getBody()).get("encoderUnit").toString()).get("channels").get(0).toString()).get("channelId").textValue();
+        ResponseEntity<String> monitorReq = restTemplate.exchange(url + monitorUrl + channelId, HttpMethod.GET, deviceEntity, String.class);
+        return objectMapper.readTree(monitorReq.getBody()).get("url").textValue();
+    }
+}
diff --git a/ycl-platform/src/main/java/com/ycl/vo/casePool/BaseCaseVO.java b/ycl-platform/src/main/java/com/ycl/vo/casePool/BaseCaseVO.java
index fac6560..bab317b 100644
--- a/ycl-platform/src/main/java/com/ycl/vo/casePool/BaseCaseVO.java
+++ b/ycl-platform/src/main/java/com/ycl/vo/casePool/BaseCaseVO.java
@@ -7,6 +7,7 @@
 
 @Data
 public class BaseCaseVO {
+    private Integer baseId;
     private String code;
     private String name;
     private String urlAddress;
diff --git a/ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/AIIotVO.java b/ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/AIIotVO.java
index c4fb549..38ff11f 100644
--- a/ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/AIIotVO.java
+++ b/ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/AIIotVO.java
@@ -30,26 +30,7 @@
         private Integer slagCar;
     }
 
-    @ApiModel(description = "瀹炴椂鐩戞帶")
-    @Data
-    public static class VideoVO {
-        @ApiModelProperty(value = "鐐逛綅缁忓害")
-        private String longitude;
-        @ApiModelProperty(value = "鐐逛綅绾害")
-        private String latitude;
-        @ApiModelProperty(value = "鐐逛綅鍚嶇О")
-        private String name;
-        @ApiModelProperty(value = "璁惧鍞竴缂栫爜")
-        private String resourceId;
-        @ApiModelProperty(value = "璁惧鍝佺墝")
-        private String brand;
-        @ApiModelProperty(value = "璁惧鍨嬪彿")
-        private String model;
-        @ApiModelProperty(value = "璁惧IP鍦板潃")
-        private String ip;
-        @ApiModelProperty(value = "URL鍦板潃")
-        private String url;
-    }
+
 
     @ApiModel(description = "AI绠楁硶鏁堣兘")
     @Data
diff --git a/ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/VideoVO.java b/ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/VideoVO.java
new file mode 100644
index 0000000..f6b15e7
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/VideoVO.java
@@ -0,0 +1,26 @@
+package com.ycl.vo.cockpit.aiIot;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "瀹炴椂鐩戞帶")
+public class VideoVO {
+    @ApiModelProperty(value = "鐐逛綅缁忓害")
+    private String longitude;
+    @ApiModelProperty(value = "鐐逛綅绾害")
+    private String latitude;
+    @ApiModelProperty(value = "鐐逛綅鍚嶇О")
+    private String name;
+    @ApiModelProperty(value = "璁惧鍞竴缂栫爜")
+    private String resourceId;
+    @ApiModelProperty(value = "璁惧鍝佺墝")
+    private String brand;
+    @ApiModelProperty(value = "璁惧鍨嬪彿")
+    private String model;
+    @ApiModelProperty(value = "璁惧IP鍦板潃")
+    private String ip;
+    @ApiModelProperty(value = "URL鍦板潃")
+    private String url;
+}
diff --git a/ycl-platform/src/main/java/com/ycl/vo/cockpit/enforcementEvents/EnforcementEventsVO.java b/ycl-platform/src/main/java/com/ycl/vo/cockpit/enforcementEvents/EnforcementEventsVO.java
index 314d9b4..12198c3 100644
--- a/ycl-platform/src/main/java/com/ycl/vo/cockpit/enforcementEvents/EnforcementEventsVO.java
+++ b/ycl-platform/src/main/java/com/ycl/vo/cockpit/enforcementEvents/EnforcementEventsVO.java
@@ -83,25 +83,6 @@
         @ApiModelProperty(value = "AI璇嗗埆鐨勪簨浠舵�绘暟")
         private Integer identification;
         @ApiModelProperty(value = "鍏蜂綋浜嬩欢鐨勬暟鎹俊鎭�")
-        private EnforcementEventsVO.EventVO event;
+        private List<EventVO> event;
     }
-
-    @Data
-    @ApiModel(description = "鍏蜂綋浜嬩欢鐨勬暟鎹俊鎭�")
-    public static class EventVO {
-        @ApiModelProperty(value = "浜嬩欢鎻忚堪")
-        private String description;
-        @ApiModelProperty(value = "浜嬪彂鍦扮偣")
-        private String address;
-        @ApiModelProperty(value = "鍙戠敓鏃堕棿")
-        private String alarmTime;
-        @ApiModelProperty(value = "鍏宠仈鎽勫儚鐐逛綅")
-        private String point;
-        @ApiModelProperty(value = "鐩戞帶鐢婚潰")
-        private String picture;
-        @ApiModelProperty(value = "鏉ユ簮")
-        private String source;
-    }
-
-
 }
diff --git a/ycl-platform/src/main/java/com/ycl/vo/cockpit/enforcementEvents/EventVO.java b/ycl-platform/src/main/java/com/ycl/vo/cockpit/enforcementEvents/EventVO.java
new file mode 100644
index 0000000..e474676
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/vo/cockpit/enforcementEvents/EventVO.java
@@ -0,0 +1,20 @@
+package com.ycl.vo.cockpit.enforcementEvents;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class EventVO {
+    @ApiModelProperty(value = "浜嬩欢鎻忚堪")
+    private String description;
+    @ApiModelProperty(value = "浜嬪彂鍦扮偣")
+    private String address;
+    @ApiModelProperty(value = "鍙戠敓鏃堕棿")
+    private String alarmTime;
+    @ApiModelProperty(value = "鍏宠仈鎽勫儚鐐逛綅")
+    private String point;
+    @ApiModelProperty(value = "鐩戞帶鐢婚潰")
+    private String picture;
+    @ApiModelProperty(value = "鏉ユ簮")
+    private String source;
+}
diff --git a/ycl-platform/src/main/resources/mapper/caseHandler/BaseCaseMapper.xml b/ycl-platform/src/main/resources/mapper/caseHandler/BaseCaseMapper.xml
index 66c00ae..bfe9750 100644
--- a/ycl-platform/src/main/resources/mapper/caseHandler/BaseCaseMapper.xml
+++ b/ycl-platform/src/main/resources/mapper/caseHandler/BaseCaseMapper.xml
@@ -229,26 +229,70 @@
     </select>
 
     <select id="selectVideoInspection" resultType="com.ycl.vo.casePool.BaseCaseVO">
+        SELECT t1.id         as baseId,
+               t1.`code`,
+               t3.`name`,
+               t3.url_address,
+               t3.longitude,
+               t3.latitude,
+               t4.pic_data,
+               t5.`name`     as grade,
+               t6.`name`     as street,
+               t7.`name`     as community,
+               t1.alarm_time as alarmTime
+        FROM ums_base_case t1
+                 LEFT JOIN ums_violations t2 ON t1.id = t2.id
+                 LEFT JOIN ums_video_point t3 on t2.video_point_id = t3.id
+                 LEFT JOIN ums_video_alarm_report t4 on t4.id = t2.video_alarm_report_id
+                 LEFT JOIN ums_data_dictionary t5 on t5.id = t2.grade_id
+                 LEFT JOIN ums_sccg_region t6 on t6.id = t1.street_id
+                 LEFT JOIN ums_sccg_region t7 on t7.id = t1.community_id
+        WHERE t1.state = 1
+        group by t1.id
+    </select>
+
+    <select id="dayCount" resultType="java.lang.Integer">
+        select count(1)
+        from ums_base_case
+        where to_days(create_time) = TO_DAYS(now());
+    </select>
+    <select id="weekCount" resultType="java.lang.Integer">
+        select count(1)
+        from ums_base_case
+        WHERE YEARWEEK(date_format(create_time, '%Y-%m-%d')) = YEARWEEK(now());;
+    </select>
+    <select id="dispatchCount" resultType="java.lang.Integer">
+        select count(1)
+        FROM
+            ums_base_case t1
+                LEFT JOIN ums_dispose_record t2 ON t1.id = t2.base_case_id
+        WHERE
+            t2.workflow_config_step_id =1
+    </select>
+    <select id="alCount" resultType="java.lang.Integer">
+        select count(1)
+        FROM
+            ums_base_case WHERE event_source=1;
+    </select>
+    <select id="selectEventList" resultType="com.ycl.vo.cockpit.enforcementEvents.EventVO">
         SELECT
-            t1.`code`,
-            t3.`name`,
-            t3.url_address,
-            t3.longitude,
-            t3.latitude,
-            t4.pic_data,
-            t5.`name` as grade,
-            t6.`name` as street,
-            t7.`name` as community,
-            t1.alarm_time as alarmTime
+            t1.alarm_time,
+            ( CASE WHEN t1.event_source = 1 THEN "瑙嗛宸℃煡" WHEN t1.event_source = 2 THEN "浜哄伐涓婃姤" ELSE "鍏朵粬" END ) AS source,
+            t1.site AS address,
+            t2.description,
+            t3.`name` AS point,
+            t4.pic_data AS picture
         FROM
             ums_base_case t1
                 LEFT JOIN ums_violations t2 ON t1.id = t2.id
-                LEFT JOIN ums_video_point t3 on t2.video_point_id=t3.id
-                LEFT JOIN ums_video_alarm_report t4 on t4.id=t2.video_alarm_report_id
-                LEFT JOIN ums_data_dictionary t5 on t5.id=t2.grade_id
-                LEFT JOIN ums_data_dictionary t6 on t6.id=t1.street_id
-                LEFT JOIN ums_data_dictionary t7 on t7.id=t1.community_id
-        WHERE t1.state=1
-       group by t1.id
+                LEFT JOIN ums_video_point t3 ON t3.id = t2.video_point_id
+                LEFT JOIN ums_video_alarm_report t4 ON t4.id = t2.video_alarm_report_id
+        <where>
+            <if test="beginTime !=''and beginTime!=null and endTime!=''and endTime!=null">
+                t1.create_time BETWEEN #{beginTime}
+                AND #{endTime}
+            </if>
+        </where>
+
     </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0