zhanghua
2023-03-16 7fc2d4db0603bfe826a8ddb8259ecfd88d30f192
接口优化
12个文件已修改
2个文件已添加
144 ■■■■ 已修改文件
ycl-platform/src/main/java/com/ycl/controller/cockpit/aiIot/AIIotController.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/dto/allot/EfficiencyDto.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/mapper/allot/EfficiencyMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/service/allot/IEfficiencyService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/service/allot/impl/EfficiencyServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/util/CheckApiUtil.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/util/VideoUtil.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/AIIotStatisticsRecordVO.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/AIIotStatisticsVO.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/AIIotVO.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/EfficiencyVO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/vo/cockpit/enforcementEvents/EventVO.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/resources/mapper/allot/EfficiencyMapper.xml 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/resources/mapper/caseHandler/BaseCaseMapper.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
    }
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;
}
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();
}
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();
}
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();
    }
}
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);
        // }
    }
}
ycl-platform/src/main/java/com/ycl/util/VideoUtil.java
@@ -40,7 +40,9 @@
     **/
    @SneakyThrows
    public String getVideo(String code, String scheme, Integer subType) {
        System.out.println("开始视频请求:" + code);
        // System.out.println("开始视频请求:" + code);
        try {
        String clientType = "winpc";
        String reqUrl = "/videoService/accounts/authorize";
        String deviceUrl = "/videoService/devicesManager/devices";
@@ -102,6 +104,7 @@
        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();
@@ -109,5 +112,9 @@
        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 "获取地址失败,请检查code值";
        }
    }
}
ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/AIIotStatisticsRecordVO.java
New file
@@ -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;
}
ycl-platform/src/main/java/com/ycl/vo/cockpit/aiIot/AIIotStatisticsVO.java
New file
@@ -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;
}
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 = "渣土联动")
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;
}
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;
}
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>
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">