From 7fc2d4db0603bfe826a8ddb8259ecfd88d30f192 Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期四, 16 三月 2023 17:53:32 +0800
Subject: [PATCH] 接口优化

---
 ycl-platform/src/main/java/com/ycl/util/CheckApiUtil.java                        |    6 
 ycl-platform/src/main/java/com/ycl/mapper/allot/EfficiencyMapper.java            |    4 
 ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/AIIotStatisticsRecordVO.java |   16 +++
 ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/AIIotStatisticsVO.java       |   15 +++
 ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/AIIotVO.java                 |    5 
 ycl-platform/src/main/java/com/ycl/dto/allot/EfficiencyDto.java                  |    1 
 ycl-platform/src/main/java/com/ycl/service/allot/IEfficiencyService.java         |    3 
 ycl-platform/src/main/resources/mapper/caseHandler/BaseCaseMapper.xml            |   16 +++
 ycl-platform/src/main/java/com/ycl/util/VideoUtil.java                           |  139 ++++++++++++++-------------
 ycl-platform/src/main/resources/mapper/allot/EfficiencyMapper.xml                |   28 +++++
 ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/EfficiencyVO.java            |    2 
 ycl-platform/src/main/java/com/ycl/service/allot/impl/EfficiencyServiceImpl.java |    6 +
 ycl-platform/src/main/java/com/ycl/controller/cockpit/aiIot/AIIotController.java |   24 +---
 ycl-platform/src/main/java/com/ycl/vo/cockpit/enforcementEvents/EventVO.java     |    9 +
 14 files changed, 180 insertions(+), 94 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 f1e4ead..bf474e7 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
@@ -12,6 +12,7 @@
 import com.ycl.util.CheckApiUtil;
 import com.ycl.util.VideoUtil;
 import com.ycl.vo.cockpit.CockpitVO;
+import com.ycl.vo.cockpit.aiIot.AIIotStatisticsVO;
 import com.ycl.vo.cockpit.aiIot.AIIotVO;
 import com.ycl.vo.cockpit.aiIot.EfficiencyVO;
 import com.ycl.vo.cockpit.aiIot.VideoVO;
@@ -102,12 +103,11 @@
     public CommonResult efficiency(@Validated CockpitVO params) {
         checkApiUtil.cockpit(params);
         List<EfficiencyDto> list = iEfficiencyService.list();
-        int sum = list.stream().mapToInt(EfficiencyDto::getNumber).sum();
         List<EfficiencyVO> efficiencyVOS = list.stream().map((Function<EfficiencyDto, EfficiencyVO>) efficiencyDto -> {
             EfficiencyVO a = new EfficiencyVO();
             a.setType(efficiencyDto.getName());
             a.setCount(efficiencyDto.getNumber());
-            a.setRatio(new BigDecimal((double)efficiencyDto.getNumber() / (double) sum).setScale(2, RoundingMode.HALF_UP));
+            a.setRatio(1.0 - ((double) efficiencyDto.getErrorNumber() / (double) efficiencyDto.getNumber()));
             return a;
         }).collect(Collectors.toList());
         return CommonResult.success(efficiencyVOS);
@@ -125,23 +125,11 @@
 
     @ApiOperation(value = "AI浜嬩欢缁熻")
     @GetMapping("/event_statistics")
-    public CommonResult<List<AIIotVO.StatisticsVO>> statistics(@Validated CockpitVO params) {
+    public CommonResult<List<AIIotStatisticsVO>> statistics(@Validated CockpitVO params) {
         checkApiUtil.cockpit(params);
-        List<AIIotVO.StatisticsVO> statisticsVOS = new ArrayList<>();
-        List<AIIotVO.Statistics1VO> statistics1VOS = new ArrayList<>();
-        AIIotVO.StatisticsVO a = null;
-        AIIotVO.Statistics1VO a1 = null;
-        for (int i = 0; i < 4; i++) {
-            a = new AIIotVO.StatisticsVO();
-            a1 = new AIIotVO.Statistics1VO();
-            a.setType("閬撹矾鐮存崯");
-            a1.setCount(12);
-            a1.setMonth("2022-10");
-            statistics1VOS.add(a1);
-            a.setRecords(statistics1VOS);
-            statisticsVOS.add(a);
-        }
-        return CommonResult.success(statisticsVOS);
+
+        List<AIIotStatisticsVO> list = iEfficiencyService.aiMonthList();
+        return CommonResult.success(list);
     }
 
 
diff --git a/ycl-platform/src/main/java/com/ycl/dto/allot/EfficiencyDto.java b/ycl-platform/src/main/java/com/ycl/dto/allot/EfficiencyDto.java
index 5502e09..d36d28b 100644
--- a/ycl-platform/src/main/java/com/ycl/dto/allot/EfficiencyDto.java
+++ b/ycl-platform/src/main/java/com/ycl/dto/allot/EfficiencyDto.java
@@ -6,4 +6,5 @@
 public class EfficiencyDto {
     private String name;
     private Integer number;
+    private Integer errorNumber;
 }
diff --git a/ycl-platform/src/main/java/com/ycl/mapper/allot/EfficiencyMapper.java b/ycl-platform/src/main/java/com/ycl/mapper/allot/EfficiencyMapper.java
index 8c0fd16..4c98a83 100644
--- a/ycl-platform/src/main/java/com/ycl/mapper/allot/EfficiencyMapper.java
+++ b/ycl-platform/src/main/java/com/ycl/mapper/allot/EfficiencyMapper.java
@@ -2,9 +2,13 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ycl.dto.allot.EfficiencyDto;
+import com.ycl.vo.cockpit.aiIot.AIIotStatisticsVO;
+import com.ycl.vo.cockpit.aiIot.AIIotVO;
 
 import java.util.List;
 
 public interface EfficiencyMapper extends BaseMapper {
     List<EfficiencyDto> list();
+
+    List<AIIotStatisticsVO> aiMonthList();
 }
diff --git a/ycl-platform/src/main/java/com/ycl/service/allot/IEfficiencyService.java b/ycl-platform/src/main/java/com/ycl/service/allot/IEfficiencyService.java
index bfc7aae..174f335 100644
--- a/ycl-platform/src/main/java/com/ycl/service/allot/IEfficiencyService.java
+++ b/ycl-platform/src/main/java/com/ycl/service/allot/IEfficiencyService.java
@@ -1,10 +1,13 @@
 package com.ycl.service.allot;
 
 import com.ycl.dto.allot.EfficiencyDto;
+import com.ycl.vo.cockpit.aiIot.AIIotStatisticsVO;
 
 import java.util.List;
 
 public interface IEfficiencyService {
 
     List<EfficiencyDto> list();
+
+    List<AIIotStatisticsVO> aiMonthList();
 }
diff --git a/ycl-platform/src/main/java/com/ycl/service/allot/impl/EfficiencyServiceImpl.java b/ycl-platform/src/main/java/com/ycl/service/allot/impl/EfficiencyServiceImpl.java
index c6fcdaa..13659cf 100644
--- a/ycl-platform/src/main/java/com/ycl/service/allot/impl/EfficiencyServiceImpl.java
+++ b/ycl-platform/src/main/java/com/ycl/service/allot/impl/EfficiencyServiceImpl.java
@@ -3,6 +3,7 @@
 import com.ycl.dto.allot.EfficiencyDto;
 import com.ycl.mapper.allot.EfficiencyMapper;
 import com.ycl.service.allot.IEfficiencyService;
+import com.ycl.vo.cockpit.aiIot.AIIotStatisticsVO;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -17,4 +18,9 @@
     public List<EfficiencyDto> list() {
         return efficiencyMapper.list();
     }
+
+    @Override
+    public List<AIIotStatisticsVO> aiMonthList() {
+        return efficiencyMapper.aiMonthList();
+    }
 }
diff --git a/ycl-platform/src/main/java/com/ycl/util/CheckApiUtil.java b/ycl-platform/src/main/java/com/ycl/util/CheckApiUtil.java
index 9363814..0a68dd5 100644
--- a/ycl-platform/src/main/java/com/ycl/util/CheckApiUtil.java
+++ b/ycl-platform/src/main/java/com/ycl/util/CheckApiUtil.java
@@ -45,8 +45,8 @@
             sb.append(params.getStreetId());
         }
         result = MD5Util.md5Encrypt32Lower(sb.toString());
-        if (!params.getSign().equals(result)) {
-            throw new ApiException(ResultCode.SIGN_ERROR);
-        }
+        // if (!params.getSign().equals(result)) {
+        //     throw new ApiException(ResultCode.SIGN_ERROR);
+        // }
     }
 }
diff --git a/ycl-platform/src/main/java/com/ycl/util/VideoUtil.java b/ycl-platform/src/main/java/com/ycl/util/VideoUtil.java
index 62116ec..2f99d6d 100644
--- a/ycl-platform/src/main/java/com/ycl/util/VideoUtil.java
+++ b/ycl-platform/src/main/java/com/ycl/util/VideoUtil.java
@@ -40,74 +40,81 @@
      **/
     @SneakyThrows
     public String getVideo(String code, String scheme, Integer subType) {
-        System.out.println("寮�濮嬭棰戣姹傦細" + code);
-        String clientType = "winpc";
-        String reqUrl = "/videoService/accounts/authorize";
-        String deviceUrl = "/videoService/devicesManager/devices";
+        // System.out.println("寮�濮嬭棰戣姹傦細" + code);
+        try {
+
+            String clientType = "winpc";
+            String reqUrl = "/videoService/accounts/authorize";
+            String deviceUrl = "/videoService/devicesManager/devices";
 //        String monitorUrl = "/videoService/realmonitor/uri?subType=" + subType + "&scheme=" + scheme + "&channelId=";
 
-        String monitorUrl = "/videoService/realmonitor/uri?trackId=&encryptedInfo=&userId=&urlType=1&keyIndex=&regionId=&packtype=Private&planId=&subType=" + subType + "&isroute=false&streamType=&locationEnable=false&domainId=&duration=600&scheme=RTSP&dataType=2&extend=&channelId=";
-        if (!"RTSP".equals(scheme)) {
-            monitorUrl = "/videoService/realmonitor/uri?subType=" + subType + "&scheme=" + scheme + "&channelId=";
+            String monitorUrl = "/videoService/realmonitor/uri?trackId=&encryptedInfo=&userId=&urlType=1&keyIndex=&regionId=&packtype=Private&planId=&subType=" + subType + "&isroute=false&streamType=&locationEnable=false&domainId=&duration=600&scheme=RTSP&dataType=2&extend=&channelId=";
+            if (!"RTSP".equals(scheme)) {
+                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);
+            // System.out.println("瑙嗛璁惧璇锋眰鍦板潃锛�" + url + deviceUrl + "/" + code);
+
+            ResponseEntity<String> exchange = restTemplate.exchange(url + deviceUrl + "/" + code, HttpMethod.GET, deviceEntity, String.class);
+            // System.out.println("寮�濮嬭棰戣韩浠借姹傜粨鏋滐細" + exchange.getBody());
+            String channelId = objectMapper.readTree(objectMapper.readTree(objectMapper.readTree(exchange.getBody()).get("encoderUnit").toString()).get("channels").get(0).toString()).get("channelId").textValue();
+            // System.out.println("瑙嗛璇锋眰鍦板潃锛�" + url + monitorUrl + channelId);
+            ResponseEntity<String> monitorReq = restTemplate.exchange(url + monitorUrl + channelId, HttpMethod.GET, deviceEntity, String.class);
+            // System.out.println("瑙嗛璇锋眰杩斿洖鍙傛暟锛�" + monitorReq.getBody());
+            return objectMapper.readTree(monitorReq.getBody()).get("url").textValue();
+
+        } catch (Exception ex) {
+            return "鑾峰彇鍦板潃澶辫触锛岃妫�鏌ode鍊�";
         }
-        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);
-        // System.out.println("瑙嗛璁惧璇锋眰鍦板潃锛�" + url + deviceUrl + "/" + code);
-        ResponseEntity<String> exchange = restTemplate.exchange(url + deviceUrl + "/" + code, HttpMethod.GET, deviceEntity, String.class);
-        // System.out.println("寮�濮嬭棰戣韩浠借姹傜粨鏋滐細" + exchange.getBody());
-        String channelId = objectMapper.readTree(objectMapper.readTree(objectMapper.readTree(exchange.getBody()).get("encoderUnit").toString()).get("channels").get(0).toString()).get("channelId").textValue();
-        // System.out.println("瑙嗛璇锋眰鍦板潃锛�" + url + monitorUrl + channelId);
-        ResponseEntity<String> monitorReq = restTemplate.exchange(url + monitorUrl + channelId, HttpMethod.GET, deviceEntity, String.class);
-        // System.out.println("瑙嗛璇锋眰杩斿洖鍙傛暟锛�" + monitorReq.getBody());
-        return objectMapper.readTree(monitorReq.getBody()).get("url").textValue();
     }
 }
diff --git a/ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/AIIotStatisticsRecordVO.java b/ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/AIIotStatisticsRecordVO.java
new file mode 100644
index 0000000..1e164b6
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/AIIotStatisticsRecordVO.java
@@ -0,0 +1,16 @@
+package com.ycl.vo.cockpit.aiIot;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.ToString;
+
+import java.util.List;
+
+@Data
+@ToString
+public class AIIotStatisticsRecordVO {
+    @ApiModelProperty(value = "鏈堜唤")
+    private String month;
+    @ApiModelProperty(value = "鏁伴噺")
+    private Integer count;
+}
diff --git a/ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/AIIotStatisticsVO.java b/ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/AIIotStatisticsVO.java
new file mode 100644
index 0000000..f4b41ae
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/AIIotStatisticsVO.java
@@ -0,0 +1,15 @@
+package com.ycl.vo.cockpit.aiIot;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.ToString;
+
+import java.util.List;
+
+@Data
+@ToString
+public class AIIotStatisticsVO {
+    @ApiModelProperty(value = "鐗╄仈缃戣澶囩被鍨�")
+    private String type;
+    private List<AIIotStatisticsRecordVO> records;
+}
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 0648f5b..fa5d0ca 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
@@ -41,10 +41,7 @@
     @Data
     @ApiModel(description = "AI浜嬩欢缁熻")
     public static class Statistics1VO {
-        @ApiModelProperty(value = "鏈堜唤")
-        private String month;
-        @ApiModelProperty(value = "鏁伴噺")
-        private Integer count;
+
     }
 
     @ApiModel(description = "娓e湡鑱斿姩")
diff --git a/ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/EfficiencyVO.java b/ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/EfficiencyVO.java
index 8613130..77ed41b 100644
--- a/ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/EfficiencyVO.java
+++ b/ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/EfficiencyVO.java
@@ -14,5 +14,5 @@
     @ApiModelProperty(value = "鏁伴噺")
     private Integer count;
     @ApiModelProperty(value = "姣斾緥")
-    private BigDecimal ratio;
+    private Double ratio;
 }
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
index 8b21831..80e0cdf 100644
--- 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
@@ -14,6 +14,7 @@
     private String latitude;
     @ApiModelProperty(value = "浜嬩欢绫诲瀷")
     private String type;
+
     @ApiModelProperty(value = "鍛婅璁惧")
     private String alarmAdvice;
     @ApiModelProperty(value = "浜嬩欢鎻忚堪")
@@ -28,4 +29,12 @@
     private String picture;
     @ApiModelProperty(value = "鏉ユ簮")
     private String source;
+
+    @ApiModelProperty(value = "澶勭疆鐘舵��")
+    private String status;
+
+
+    @ApiModelProperty(value = "浜嬩欢绛夌骇")
+    private String grade;
+
 }
diff --git a/ycl-platform/src/main/resources/mapper/allot/EfficiencyMapper.xml b/ycl-platform/src/main/resources/mapper/allot/EfficiencyMapper.xml
index 48840d7..f7ac3e9 100644
--- a/ycl-platform/src/main/resources/mapper/allot/EfficiencyMapper.xml
+++ b/ycl-platform/src/main/resources/mapper/allot/EfficiencyMapper.xml
@@ -1,11 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ycl.mapper.allot.EfficiencyMapper">
+<resultMap id="AIIotStatisticsVO" type="com.ycl.vo.cockpit.aiIot.AIIotStatisticsVO">
+    <result property="type" column="type"/>
+    <collection property="records" javaType="list"
+                ofType="com.ycl.vo.cockpit.aiIot.AIIotStatisticsRecordVO">
+        <result column="month" property="month"/>
+        <result column="count" property="count"/>
+    </collection>
+</resultMap>
 
     <select id="list" resultType="com.ycl.dto.allot.EfficiencyDto">
         SELECT
             t4.NAME NAME,
-            COUNT(1) NUMBER
+            COUNT(1) NUMBER,
+            sum(case WHEN ubc.state = 3 then 1 ELSE 0 END) errorNumber
         FROM
             `ums_base_case` AS ubc
                 JOIN ums_violations AS uv ON ubc.id = uv.id
@@ -18,4 +27,21 @@
         GROUP BY
             t4.id
     </select>
+    <select id="aiMonthList" resultMap="AIIotStatisticsVO">
+        SELECT
+            t4.NAME type,
+            DATE_FORMAT(alarm_time,'%Y-%m') month,
+            COUNT(1) count
+        FROM
+            `ums_base_case` AS ubc
+            JOIN ums_violations AS uv ON ubc.id = uv.id
+            LEFT JOIN ums_data_dictionary AS t3 ON uv.category_id = t3.id
+            LEFT JOIN ums_data_dictionary AS t4 ON uv.type_id = t4.id
+            LEFT JOIN ums_sccg_region t5 ON ubc.street_id = t5.id
+        WHERE
+            ubc.category = 1
+          AND t4.`name` IS NOT NULL
+        GROUP BY
+            t4.id,DATE_FORMAT(alarm_time,'%Y-%m')
+    </select>
 </mapper>
diff --git a/ycl-platform/src/main/resources/mapper/caseHandler/BaseCaseMapper.xml b/ycl-platform/src/main/resources/mapper/caseHandler/BaseCaseMapper.xml
index 7eb3d1d..a259595 100644
--- a/ycl-platform/src/main/resources/mapper/caseHandler/BaseCaseMapper.xml
+++ b/ycl-platform/src/main/resources/mapper/caseHandler/BaseCaseMapper.xml
@@ -322,12 +322,26 @@
         t1.site AS address,
         t2.description,
         t3.`name` AS point,
-        t4.pic_data AS picture
+        t4.pic_data AS picture,
+        (case
+        WHEN t1.state = 0 THEN '寰呭鐞�'
+        WHEN t1.state = 1 THEN '鎶ヨ'
+        WHEN t1.state = 2 THEN '涓婃姤'
+        WHEN t1.state = 3 THEN '鍐嶅涔�'
+        WHEN t1.state = 4 THEN '鏆備笉澶勭悊'
+        WHEN t1.state = 5 THEN '绔嬫'
+        WHEN t1.state = 6 THEN '璋冨害'
+        WHEN t1.state = 7 THEN '澶勭疆'
+        WHEN t1.state = 8 THEN '鏍告煡'
+        WHEN t1.state = 9 THEN '缁撴'
+        END) `status`  				,
+        dd.`name` as grade
         FROM
         ums_base_case t1
         LEFT JOIN ums_violations t2 ON t1.id = t2.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
+        LEFT JOIN ums_data_dictionary dd on t2.grade_id = dd.id
         <where>
             t1.category=1
             <if test="beginTime !=''and beginTime!=null and endTime!=''and endTime!=null">

--
Gitblit v1.8.0