|  |  |  | 
|---|
|  |  |  | 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.servlet.http.HttpServletResponse; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.alibaba.fastjson2.JSON; | 
|---|
|  |  |  | import com.github.pagehelper.PageHelper; | 
|---|
|  |  |  | import com.github.pagehelper.PageInfo; | 
|---|
|  |  |  | import com.ruoyi.common.core.domain.entity.SysUser; | 
|---|
|  |  |  | import com.ruoyi.common.utils.SecurityUtils; | 
|---|
|  |  |  | import com.ruoyi.common.utils.uuid.IdUtils; | 
|---|
|  |  |  | import com.ruoyi.sy.param.ArdSyCarParam; | 
|---|
|  |  |  | import com.ruoyi.sy.vo.ArdSyCarVo; | 
|---|
|  |  |  | import com.ruoyi.sy.domain.ArdSyUser; | 
|---|
|  |  |  | import com.ruoyi.sy.gps31.PositionContainer; | 
|---|
|  |  |  | import com.ruoyi.sy.gps31.PushClientImplAlarm; | 
|---|
|  |  |  | 
|---|
|  |  |  | import io.swagger.annotations.Api; | 
|---|
|  |  |  | import io.swagger.annotations.ApiOperation; | 
|---|
|  |  |  | import org.apache.commons.codec.digest.DigestUtils; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Value; | 
|---|
|  |  |  | import org.springframework.security.access.prepost.PreAuthorize; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.*; | 
|---|
|  |  |  | 
|---|
|  |  |  | import com.ruoyi.sy.domain.ArdSyCar; | 
|---|
|  |  |  | import com.ruoyi.sy.service.IArdSyCarService; | 
|---|
|  |  |  | import com.ruoyi.common.utils.poi.ExcelUtil; | 
|---|
|  |  |  | import com.ruoyi.common.core.page.TableDataInfo; | 
|---|
|  |  |  | import org.springframework.web.multipart.MultipartFile; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 三一车辆Controller | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @author ard | 
|---|
|  |  |  | * @date 2023-06-26 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private ArdSyCarController ardSyCarController; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Value("${syCar.enabled}") | 
|---|
|  |  |  | private Boolean syCarEnabled; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @PostConstruct | 
|---|
|  |  |  | public void init(){ | 
|---|
|  |  |  | ardSyCarController = this; | 
|---|
|  |  |  | ardSyCarController.sysConfigService = this.sysConfigService; | 
|---|
|  |  |  | ardSyCarController.iArdSyUserService = this.iArdSyUserService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | SysConfig config = new SysConfig(); | 
|---|
|  |  |  | config.setConfigKey("syCarPT"); | 
|---|
|  |  |  | List<SysConfig> sysConfigResult = sysConfigService.selectConfigList(config); | 
|---|
|  |  |  | String syURL = ""; | 
|---|
|  |  |  | if(sysConfigResult.size() == 0){ | 
|---|
|  |  |  | //if(sysConfigResult.size() == 0){ | 
|---|
|  |  |  | if(!syCarEnabled){//三一车辆加入开关 | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | syURL = sysConfigResult.get(0).getConfigValue(); | 
|---|
|  |  |  | 
|---|
|  |  |  | ardSyCarService.sendArdSyCarPosition(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | carPositionTimer.scheduleAtFixedRate(carPositionTask,date,3*1000);//启用 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //车辆实时位置线程 | 
|---|
|  |  |  | //carPositionTimer.scheduleAtFixedRate(carPositionTask,date,3*1000);//弃用 | 
|---|
|  |  |  | //车辆实时报警线程 | 
|---|
|  |  |  | PushClientImplAlarm pushClientImplAlarm = new PushClientImplAlarm(ip,ardSyUserList.get(0).getUserId(),ardSyUserList.get(0).getPassword()); | 
|---|
|  |  |  | Thread pushClientImplAlarmThread = new Thread(pushClientImplAlarm); | 
|---|
|  |  |  | pushClientImplAlarmThread.start(); | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @PreAuthorize("@ss.hasPermi('sy:syCar:list')") | 
|---|
|  |  |  | @GetMapping("/list") | 
|---|
|  |  |  | public TableDataInfo list(ArdSyCar ardSyCar) | 
|---|
|  |  |  | @ApiOperation("查询三一车辆列表") | 
|---|
|  |  |  | public AjaxResult list(ArdSyCarParam ardSyCarParam) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | startPage(); | 
|---|
|  |  |  | List<ArdSyCar> list = ardSyCarService.selectArdSyCarList(ardSyCar); | 
|---|
|  |  |  | return getDataTable(list); | 
|---|
|  |  |  | PageHelper.startPage(ardSyCarParam.getPageNum(),ardSyCarParam.getPageSize()); | 
|---|
|  |  |  | String userId = SecurityUtils.getUserId(); | 
|---|
|  |  |  | Map<String,Object> result = ardSyCarService.getArdSyCarAll(userId); | 
|---|
|  |  |  | return ardSyCarService.ardSyCarList(ardSyCarParam,result); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @PreAuthorize("@ss.hasPermi('sy:syCar:remove')") | 
|---|
|  |  |  | @Log(title = "三一车辆", businessType = BusinessType.DELETE) | 
|---|
|  |  |  | @DeleteMapping("/{ids}") | 
|---|
|  |  |  | @DeleteMapping("/{ids}") | 
|---|
|  |  |  | @ApiOperation("删除三一车辆") | 
|---|
|  |  |  | public AjaxResult remove(@PathVariable String[] ids) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取未挂接权限的三一车辆 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @PreAuthorize("@ss.hasPermi('sy:syCar:getArdSyCarNoRight')") | 
|---|
|  |  |  | //    @PreAuthorize("@ss.hasPermi('sy:syCar:getArdSyCarNoRight')") | 
|---|
|  |  |  | @PostMapping("/getArdSyCarNoRight") | 
|---|
|  |  |  | @ApiOperation("获取未挂接权限的三一车辆") | 
|---|
|  |  |  | public Map<String,Object> getArdSyCarNoRight(){ | 
|---|
|  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取全部的三一车辆 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @PreAuthorize("@ss.hasPermi('sy:syCar:getArdSyCarAll')") | 
|---|
|  |  |  | //    @PreAuthorize("@ss.hasPermi('sy:syCar:getArdSyCarAll')") | 
|---|
|  |  |  | @PostMapping("/getArdSyCarAll") | 
|---|
|  |  |  | @ApiOperation("获取全部的三一车辆") | 
|---|
|  |  |  | public Map<String,Object> getArdSyCarAll(){ | 
|---|
|  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取全部车辆模型 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @PreAuthorize("@ss.hasPermi('sy:syCar:getAllCarModel')") | 
|---|
|  |  |  | //    @PreAuthorize("@ss.hasPermi('sy:syCar:getAllCarModel')") | 
|---|
|  |  |  | @PostMapping("/getAllCarModel") | 
|---|
|  |  |  | @ApiOperation("获取全部车辆模型") | 
|---|
|  |  |  | public Map<String,Object> getAllCarModel(){ | 
|---|
|  |  |  | 
|---|
|  |  |  | String usersId = SecurityUtils.getUserId(); | 
|---|
|  |  |  | ArdSyUser ardSyUser = iArdSyUserService.userById(usersId); | 
|---|
|  |  |  | String syURL = sysConfigService.getSYURL(); | 
|---|
|  |  |  | return ardSyCarService.allListByUser(ardSyUser,syURL,usersId); | 
|---|
|  |  |  | //根据userId查询部门Id | 
|---|
|  |  |  | SysUser sysUser = sysUserService.selectUserById(usersId); | 
|---|
|  |  |  | //根据当前deptId或者当前及所属下级的所有deptId | 
|---|
|  |  |  | List<Long> deptList = sysDeptService.deptIdBySub(sysUser.getDeptId()); | 
|---|
|  |  |  | return ardSyCarService.allListByUser(ardSyUser,syURL,usersId,deptList); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @PreAuthorize("@ss.hasPermi('sy:syCar:carList')") | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @PreAuthorize("@ss.hasPermi('sy:syCar:carListById')") | 
|---|
|  |  |  | //    @PreAuthorize("@ss.hasPermi('sy:syCar:carListById')") | 
|---|
|  |  |  | @PostMapping("/carListById/{id}") | 
|---|
|  |  |  | @ApiOperation("根据车辆ID获取车辆列表") | 
|---|
|  |  |  | public Results carListById(@PathVariable String id){ | 
|---|
|  |  |  | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | SysUser sysUser = sysUserService.selectUserById(usersId); | 
|---|
|  |  |  | Map<String, Map<String,Map<String,Object>>> deptPositionMap = PositionContainer.getDeptPositionMap(); | 
|---|
|  |  |  | if(deptPositionMap.isEmpty()){ | 
|---|
|  |  |  | return Results.succeed(); | 
|---|
|  |  |  | return Results.error("31平台无车辆位置返回"); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | //            return Results.succeed(deptPositionMap.get(sysUser.getDeptId().toString()).get(map.get("carId"))); | 
|---|
|  |  |  | return Results.succeed(deptPositionMap.get(sysUser.getDeptId().toString())); | 
|---|
|  |  |  | 
|---|
|  |  |  | 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')") | 
|---|
|  |  |  | 
|---|
|  |  |  | 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,ardSyUser); | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | System.out.println("通道:"+videos); | 
|---|
|  |  |  | vs = (String) videos.get("vs"); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | return AjaxResult.error("该车辆没有摄像通道无照片数据!"); | 
|---|
|  |  |  | 
|---|
|  |  |  | channelList.add(vsArray[i].substring(0,1)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //拍照 | 
|---|
|  |  |  | Map<String,Object> sendCmdMap = ardSyCarService.sendCmd(syURL,ardSyUser,carId,channelList); | 
|---|
|  |  |  | //        System.out.println(sendCmdMap); | 
|---|
|  |  |  | Map<String,Object> sendCmdMap = ardSyCarService.sendCmd(ardSyUser.getUserId(),syURL,sessionId,carId,channelList); | 
|---|
|  |  |  | System.out.println("拍照:"+sendCmdMap); | 
|---|
|  |  |  | //获取照片 | 
|---|
|  |  |  | Map<String,Object> photoMap = ardSyCarService.getPhoto(syURL,carId,ardSyUser,startTime); | 
|---|
|  |  |  | //        System.out.println(photoMap); | 
|---|
|  |  |  | Map<String,Object> photoMap = ardSyCarService.getPhoto(syURL,carId,sessionId,startTime); | 
|---|
|  |  |  | System.out.println("获取照片:"+photoMap); | 
|---|
|  |  |  | return AjaxResult.success(photoMap); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | return AjaxResult.success(video); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @GetMapping("getThreeOne") | 
|---|
|  |  |  | @ApiOperation("获取三一视频地址") | 
|---|
|  |  |  | public AjaxResult getThreeOne() { | 
|---|
|  |  |  | return AjaxResult.success("获取地址成功!",sysConfigService.getSYVideo()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @GetMapping("/getOnlineSYCarPosition") | 
|---|
|  |  |  | @ApiOperation("单兵端查看已通过审批的在线三一车辆位置") | 
|---|
|  |  |  | public AjaxResult getOnlineSYCarPosition() { | 
|---|
|  |  |  | String soilderId = SecurityUtils.getUserId(); | 
|---|
|  |  |  | try{ | 
|---|
|  |  |  | Map<String,Object> result = ardSyCarService.getOnlineSYCarPosition(soilderId); | 
|---|
|  |  |  | return AjaxResult.success(result); | 
|---|
|  |  |  | }catch(Exception e){ | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | return AjaxResult.error(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|