zhanghua
2023-11-29 5b545fd1006fb28dbe3928c666db2d8a0622fcf2
ycl-platform/src/main/java/com/ycl/controller/platformApi/AlarmController.java
@@ -1,10 +1,17 @@
package com.ycl.controller.platformApi;
import cn.hutool.json.JSONConverter;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.ycl.annotation.LogSave;
import com.ycl.api.CommonResult;
import com.ycl.dto.video.AlarmParam;
import com.ycl.dto.video.HKAlarmParam;
import com.ycl.entity.video.VideoPoint;
import com.ycl.enums.common.ResultCode;
import com.ycl.service.video.IVideoAlarmReportService;
import com.ycl.service.video.impl.IVideoPointService;
import com.ycl.util.VideoUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -14,6 +21,7 @@
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -21,6 +29,9 @@
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Base64;
import java.util.Dictionary;
import java.util.Hashtable;
import java.util.List;
/**
 * @author admin
@@ -29,7 +40,10 @@
@RestController
@RequestMapping("/API")
public class AlarmController {
    private IVideoPointService videoPointService;
    private IVideoAlarmReportService videoAlarmReportService;
    private static Dictionary<String, Integer> sessionDic = new Hashtable<>();
    @Autowired
    private VideoUtil videoUtil;
@@ -39,10 +53,26 @@
        this.videoAlarmReportService = videoAlarmReportService;
    }
    @Autowired
    public void setVideoPointService(IVideoPointService videoPointService) {
        this.videoPointService = videoPointService;
    }
    @ApiOperation("视频报警推送API")
    @PostMapping("/AlarmReport")
    @LogSave(operationType = "报警管理", contain = "视频报警推送")
    public CommonResult alarmReport(@RequestBody @Validated AlarmParam alarmParam) {
//        System.out.println("保存报警数据:" + JSONObject.toJSONString(alarmParam));
        videoAlarmReportService.save(alarmParam);
        return new CommonResult(ResultCode.SUCCESS.getCode(), ResultCode.SUCCESS.getMessage());
    }
    @ApiOperation("海康视频报警推送API")
    @PostMapping("/HK/alarmReport")
    @LogSave(operationType = "报警管理", contain = "海康视频报警推送")
    public CommonResult hkAlarmReport(@RequestBody @Validated HKAlarmParam alarmParam) {
        System.out.println("海康视频报警推送API:" + JSONObject.toJSONString(alarmParam));
        videoAlarmReportService.saveFromHK(alarmParam);
        return new CommonResult(ResultCode.SUCCESS.getCode(), ResultCode.SUCCESS.getMessage());
    }
@@ -52,13 +82,34 @@
    public CommonResult getMonitorAddress(@PathVariable String code, @PathVariable Integer subType,
                                          @RequestParam(required = false) String scheme) {
        if (subType == null) {
            subType = 1;
        LambdaQueryWrapper<VideoPoint> queryWrapper = new LambdaQueryWrapper<VideoPoint>()
                .eq(VideoPoint::getPlatResourceId, code)
                .or().eq(VideoPoint::getCode, code);
        List<VideoPoint> pointList = videoPointService.list(queryWrapper);
        if (pointList.size() > 0) {
            VideoPoint videoPoint = pointList.get(0);
            if (videoPoint.getType() == 1) {
//                videoUtil.getKHPresets(code);
                return CommonResult.successApi(videoUtil.getKHVideo(code));
            } else {
                if (subType == null) {
                    subType = 1;
                }
                if (!StringUtils.isNotBlank(scheme)) {
                    scheme = "RTSP";
                }
                return CommonResult.successApi(videoUtil.getVideo(code, scheme, subType));
            }
        } else {
            if (subType == null) {
                subType = 1;
            }
            if (!StringUtils.isNotBlank(scheme)) {
                scheme = "RTSP";
            }
            return CommonResult.successApi(videoUtil.getVideo(code, scheme, subType));
        }
        if (!StringUtils.isNotBlank(scheme)) {
            scheme = "RTSP";
        }
        return CommonResult.successApi(videoUtil.getVideo(code, scheme, subType));
    }
@@ -66,30 +117,50 @@
    @GetMapping(value = "/img", produces = {MediaType.IMAGE_JPEG_VALUE, MediaType.IMAGE_PNG_VALUE})
//    @GetMapping(value = "/img")
    @ResponseBody
    public byte[] getImages(HttpServletResponse response, @RequestParam String fileUrl, @RequestParam String OSSAccessKeyId, @RequestParam String Signature) {
    public byte[] getImages(HttpServletRequest request, HttpServletResponse response,
                            @RequestParam String fileUrl, @RequestParam(required = false) String OSSAccessKeyId,
                            @RequestParam(required = false) String Signature) {
        String sessionId = request.getSession().getId();
        sessionDic.put(sessionId, 0);
        return getBytes(fileUrl, OSSAccessKeyId, Signature, sessionId);
    }
    @GetMapping(value = "/index")
    @ResponseBody
    public String getImages(HttpServletRequest request, HttpServletResponse response) {
        return "遂昌综合执法平台";
    }
    private byte[] getBytes(String fileUrl, String OSSAccessKeyId, String Signature, String sessionId) {
        int index = sessionDic.get(sessionId);
        try {
            if (sessionDic.get(sessionId) < 10) {
                sessionDic.remove(sessionId);
                fileUrl = fileUrl.replace("Expires", "v");
                System.out.println("getImages获取图片地址:" + fileUrl + "&OSSAccessKeyId=" + OSSAccessKeyId + "&Signature=" + Signature);
                URL url = new URL(fileUrl + "&OSSAccessKeyId=" + OSSAccessKeyId + "&Signature=" + Signature);
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                conn.setRequestMethod("GET");
                conn.setConnectTimeout(10 * 1000);
                conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
            System.out.println("getImages获取图片地址:" + fileUrl + "&OSSAccessKeyId=" + OSSAccessKeyId + "&Signature=" + Signature);
            URL url = new URL(fileUrl + "&OSSAccessKeyId=" + OSSAccessKeyId + "&Signature=" + Signature);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.setConnectTimeout(10 * 1000);
            conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
                InputStream inputStream = conn.getInputStream();// 通过输入流获取图片数据
            InputStream inputStream = conn.getInputStream();// 通过输入流获取图片数据
                byte[] data = readInputStream(inputStream);
                System.out.println("getImages获取图片成功");
            byte[] data = readInputStream(inputStream);
            System.out.println("getImages获取图片成功");
            System.out.println("getImages -图片64");
            System.out.println(Base64.getEncoder().encodeToString(data));
            return data;
                return data;
            }
        } catch (Exception e) {
            System.out.println("getImages获取图片失败:" + e.getMessage());
            // e.printStackTrace();
            index++;
            sessionDic.put(sessionId, index);
            System.out.println(index + "-getImages获取图片失败:" + e.getMessage());
            e.printStackTrace();
            getBytes(fileUrl, OSSAccessKeyId, Signature, sessionId);
        }
        return null;
    }