aijinhui
2023-12-23 f059de0b3cfe92ba2980c8ce4c5772637c64e9d2
ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java
@@ -1,10 +1,14 @@
package com.ruoyi.sy.controller;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.*;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson2.JSON;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
@@ -104,7 +108,6 @@
            }
        };
        carPositionTimer.scheduleAtFixedRate(carPositionTask,date,3*1000);//启用
        //车辆实时位置线程
        PushClientImplAlarm pushClientImplAlarm = new PushClientImplAlarm(ip,ardSyUserList.get(0).getUserId(),ardSyUserList.get(0).getPassword());
        Thread pushClientImplAlarmThread = new Thread(pushClientImplAlarm);
@@ -230,7 +233,7 @@
    /**
     * 获取全部的三一车辆
     */
    @PreAuthorize("@ss.hasPermi('sy:syCar:getArdSyCarAll')")
//    @PreAuthorize("@ss.hasPermi('sy:syCar:getArdSyCarAll')")
    @PostMapping("/getArdSyCarAll")
    @ApiOperation("获取全部的三一车辆")
    public Map<String,Object> getArdSyCarAll(){
@@ -248,7 +251,7 @@
    /**
     * 获取全部车辆模型
     */
    @PreAuthorize("@ss.hasPermi('sy:syCar:getAllCarModel')")
//    @PreAuthorize("@ss.hasPermi('sy:syCar:getAllCarModel')")
    @PostMapping("/getAllCarModel")
    @ApiOperation("获取全部车辆模型")
    public Map<String,Object> getAllCarModel(){
@@ -311,7 +314,7 @@
        }
    }
    @PreAuthorize("@ss.hasPermi('sy:syCar:carListById')")
//    @PreAuthorize("@ss.hasPermi('sy:syCar:carListById')")
    @PostMapping("/carListById/{id}")
    @ApiOperation("根据车辆ID获取车辆列表")
    public Results carListById(@PathVariable String id){
@@ -339,6 +342,8 @@
            return Results.succeed();
        }else {
            map.put("userId",ardSyUser.getUserId());
            map.put("password",ardSyUser.getPassword());
            map.put("passwords",DigestUtils.md5Hex(ardSyUser.getPassword()));
        }
        return Results.succeed(map);
    }
@@ -367,7 +372,7 @@
        ArdSyUser ardSyUser = iArdSyUserService.userById(usersId);
        String carId = map.get("carId");
        String syURL = sysConfigService.getSYURL();
        return ardSyCarService.getCarGPSBycarId(usersId,carId,syURL,ardSyUser);
        return Results.succeed(ardSyCarService.getCarGPSBycarId(usersId,carId,syURL,ardSyUser));
    }
    @PreAuthorize("@ss.hasPermi('sy:syCar:chaseCarByCarId')")
@@ -389,4 +394,76 @@
        String time = map.get("time");
        return ardSyCarService.getExistTraceByCarIdAndMonth(userId,carId,time);
    }
    @GetMapping("getCarPicture")
    @ApiOperation("清淤获取照片")
    public AjaxResult getCarNearPositionByCarId(String carId) throws UnsupportedEncodingException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
        Date currentTime = new Date();
        long tenSeconds = 1000L;
        Date beforeTenSeconds = new Date(currentTime.getTime() - tenSeconds);
        String startTime = sdf.format(beforeTenSeconds);
        String usersId = SecurityUtils.getUserId();
        ArdSyUser ardSyUser = iArdSyUserService.userById(usersId);
        String syURL = sysConfigService.getSYURL();
        String sessionId = ardSyCarService.getSessionId(syURL,ardSyUser);
        System.out.println("sessionId:"+sessionId);
        //获取摄像通道信息
        Map<String, Object> result = ardSyCarService.getCarPicture(carId,syURL,sessionId);
        String vs = "";
        try {
            //提取通道信息
            Map<String,Object> map = ((List<Map<String,Object>>)result.get("list")).get(0);
            Map<String, Object> videos = (Map<String, Object>) JSON.parse((String) map.get("videos"));
            System.out.println("通道:"+videos);
            vs = (String) videos.get("vs");
        } catch (Exception e) {
            return AjaxResult.error("该车辆没有摄像通道无照片数据!");
        }
        //筛选通道信息
        String[] vsArray = vs.split(",");
        List<String> channelList = new ArrayList<>();
        for (int i = 0; i < vsArray.length; i++) {
            channelList.add(vsArray[i].substring(0,1));
        }
        //拍照
        Map<String,Object> sendCmdMap = ardSyCarService.sendCmd(ardSyUser.getUserId(),syURL,sessionId,carId,channelList);
        System.out.println("拍照:"+sendCmdMap);
        //获取照片
        Map<String,Object> photoMap = ardSyCarService.getPhoto(syURL,carId,sessionId,startTime);
        System.out.println("获取照片:"+photoMap);
        return AjaxResult.success(photoMap);
    }
    @GetMapping("getVideo")
    @ApiOperation("清淤获取视频")
    public AjaxResult getVideo(String carId){
        String usersId = SecurityUtils.getUserId();
        ArdSyUser ardSyUser = iArdSyUserService.userById(usersId);
        String syURL = sysConfigService.getSYURL();
        Map<String,Object> video = ardSyCarService.getVideo(syURL,carId,ardSyUser);
        return AjaxResult.success(video);
    }
    @GetMapping("getThreeOne")
    @ApiOperation("获取三一视频地址")
    public AjaxResult getThreeOne() {
        return AjaxResult.success("获取地址成功!",sysConfigService.selectConfigByKey("threeOneVideo"));
    }
    @PreAuthorize("@ss.hasPermi('sy:syCar:getAlarmHPfmCountDetail')")
    @PostMapping("getAlarmHPfmCountDetail")
    @ApiOperation("根据车辆和时间段查询报警历史记录详情")
    public AjaxResult getAlarmHPfmCountDetail(@RequestBody Map<String,String> map){
        String usersId = SecurityUtils.getUserId();
        ArdSyUser ardSyUser = iArdSyUserService.userById(usersId);
        String carId = map.get("carId");
        String startTime = map.get("startTime");
        String endTime = map.get("endTime");
        String syURL = sysConfigService.getSYURL();
        String sessionId = ardSyCarService.getSessionId(syURL,ardSyUser);
        Map<String, Object> mapDetail =  ardSyCarService.getAlarmHPfmCountDetail(sessionId,usersId,carId,startTime,endTime,syURL);
        return AjaxResult.success(mapDetail);
    }
}