| | |
| | | package com.stylefeng.guns.modular.system.service.impl; |
| | | |
| | | import cn.hutool.http.HttpRequest; |
| | | import cn.hutool.http.HttpResponse; |
| | | import cn.hutool.http.HttpUtil; |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | |
| | | taskDetailService.updateById(taskDetail); |
| | | PatrolTask patrolTask = this.selectById(taskDetail.getPatrolTaskId()); |
| | | if(!patrolTask.getImageModel().equals(ImageModelEnum.CONSTRUCTION_WASTE_LOAD.getCode())){ |
| | | //获取所有在线车船 |
| | | //2018年协议车辆在线 |
| | | List<VehicleOnline> vehicleOnlines2018 = VideoGateway.queryRuntimeInfoByCache(0); |
| | | //2023年协议车辆在线 |
| | | List<VehicleOnline> vehicleOnlines203 = VideoGateway.locationRealTimeInfoCache(0); |
| | | |
| | | //获取当前任务中的车船信息 |
| | | List<TaskDetailVehicles> taskDetailVehicles = taskDetailVehiclesService.selectList(new EntityWrapper<TaskDetailVehicles>().eq("task_detail_id", id)); |
| | | //根据车辆数量,分组线程数 |
| | |
| | | try { |
| | | taskDetailVehicle.setStartExecutionTime(LocalDateTime.now()); |
| | | Integer taskDetailVehicleId = taskDetailVehicle.getId(); |
| | | //车船类型:1 车辆设备 2 船舶设备 |
| | | Integer vehicleType = taskDetailVehicle.getVehicleType(); |
| | | //车船id |
| | | Integer vehicleId = taskDetailVehicle.getVehicleId(); |
| | | VehicleOnline vehicleOnline1 = null; |
| | | for (VehicleOnline vehicleOnline : vehicleOnlines2018) { |
| | | if(null != vehicleOnline.getVehicleId() && vehicleOnline.getVehicleId().equals(vehicleId) && |
| | | null != vehicleOnline.getVehicleType() && vehicleOnline.getVehicleType().equals(vehicleType)){ |
| | | vehicleOnline1 = vehicleOnline; |
| | | String vehicleGpsProtocol = vehicleOnline.getVehicleGpsProtocol(); |
| | | vehicleOnline1.setVehicleGpsProtocol("808-guangzhou".equals(vehicleGpsProtocol) ? "1" : "2"); |
| | | break; |
| | | } |
| | | } |
| | | if(null == vehicleOnline1){ |
| | | for (VehicleOnline vehicleOnline : vehicleOnlines203) { |
| | | if(null != vehicleOnline.getVehicleId() && vehicleOnline.getVehicleId().equals(vehicleId) && |
| | | null != vehicleOnline.getVehicleType() && vehicleOnline.getVehicleType().equals(vehicleType)){ |
| | | vehicleOnline1 = vehicleOnline; |
| | | vehicleOnline1.setVehicleGpsProtocol(vehicleOnline.getVehicleGpsProtocol()); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | //不在线 |
| | | if(null == vehicleOnline1){ |
| | | taskDetailVehicle.setEndExecutionTime(LocalDateTime.now()); |
| | | taskDetailVehicle.setStatus(4); |
| | | taskDetailVehiclesService.updateById(taskDetailVehicle); |
| | | continue; |
| | | } |
| | | taskDetailVehicle.setVehicleGpsProtocol(vehicleOnline1.getVehicleGpsProtocol()); |
| | | taskDetailVehicle.setTerminalId(vehicleOnline1.getTerminalId()); |
| | | taskDetailVehicle.setStatus(2); |
| | | taskDetailVehiclesService.updateById(taskDetailVehicle); |
| | | |
| | | //成功 |
| | | List<TaskDetailVehiclesChannel> taskDetailVehiclesChannels = taskDetailVehiclesChannelService.selectList(new EntityWrapper<TaskDetailVehiclesChannel>().eq("task_detail_vehicles_id", taskDetailVehicleId)); |
| | | //开始发送拍照指令,获取照片地址 |
| | | String vehicleGpsProtocol = vehicleOnline1.getVehicleGpsProtocol(); |
| | | String terminalId = vehicleOnline1.getTerminalId(); |
| | | for (TaskDetailVehiclesChannel taskDetailVehiclesChannel : taskDetailVehiclesChannels) { |
| | | Integer videoChannel = taskDetailVehiclesChannel.getVideoChannel(); |
| | | try { |
| | | if("1".equals(vehicleGpsProtocol)){ |
| | | //2018 协议 |
| | | String fileId = VideoGateway.cameraShot2018(terminalId, videoChannel, 0); |
| | | if(ToolUtil.isNotEmpty(fileId)){ |
| | | String fileUrl = VideoGateway.getCameraShotByFileId2018(terminalId, fileId, 0); |
| | | if(ToolUtil.isNotEmpty(fileUrl)){ |
| | | taskDetailVehiclesChannel.setImageUrl(fileUrl); |
| | | taskDetailVehiclesChannel.setSysCreateTime(LocalDateTime.now()); |
| | | taskDetailVehiclesChannel.setArtificialStatus(1); |
| | | //开始调模型接口得出结果 |
| | | Map<String, Object> map = ImageModelUtil.modelCheck(fileUrl, ImageModelEnum.getImageModelEnum(patrolTask.getImageModel())); |
| | | Boolean b = (Boolean) map.get("b"); |
| | | String r = map.get("r").toString(); |
| | | taskDetailVehiclesChannel.setSysStatus(b ? 2 : 3); |
| | | taskDetailVehiclesChannel.setResult(r); |
| | | taskDetailVehiclesChannelService.updateById(taskDetailVehiclesChannel); |
| | | } |
| | | } |
| | | }else{ |
| | | //2023 协议 |
| | | String fileId = VideoGateway.cameraShot2023(vehicleId, vehicleType, terminalId, videoChannel, 0); |
| | | if(ToolUtil.isNotEmpty(fileId)){ |
| | | String fileUrl = VideoGateway.getCameraShotByFileId2023(fileId, 0); |
| | | if(ToolUtil.isNotEmpty(fileUrl)){ |
| | | taskDetailVehiclesChannel.setImageUrl(fileUrl); |
| | | taskDetailVehiclesChannel.setSysCreateTime(LocalDateTime.now()); |
| | | taskDetailVehiclesChannel.setArtificialStatus(1); |
| | | //开始调模型接口得出结果 |
| | | Map<String, Object> map = ImageModelUtil.modelCheck(fileUrl, ImageModelEnum.getImageModelEnum(patrolTask.getImageModel())); |
| | | Boolean b = (Boolean) map.get("b"); |
| | | String r = map.get("r").toString(); |
| | | taskDetailVehiclesChannel.setSysStatus(b ? 2 : 3); |
| | | taskDetailVehiclesChannel.setResult(r); |
| | | taskDetailVehiclesChannelService.updateById(taskDetailVehiclesChannel); |
| | | } |
| | | } |
| | | Integer videoChannel = taskDetailVehiclesChannel.getVideoChannel(); |
| | | String imageModel = patrolTask.getImageModel(); |
| | | String fileUrl = null; |
| | | if(imageModel.equals(ImageModelEnum.TOP_SEAL.getCode())){ |
| | | fileUrl = "http://120.232.235.142/image/model1/" + taskDetailVehicle.getVehicleNum() + "_" + videoChannel + ".png"; |
| | | } |
| | | if(imageModel.equals(ImageModelEnum.CAMERA_FAULT.getCode())){ |
| | | fileUrl = "http://120.232.235.142/image/model2/" + taskDetailVehicle.getVehicleNum() + "_" + videoChannel + ".png"; |
| | | } |
| | | HttpRequest get = HttpUtil.createGet(fileUrl); |
| | | HttpResponse execute = get.execute(); |
| | | if(200 == execute.getStatus()){ |
| | | taskDetailVehiclesChannel.setImageUrl(fileUrl); |
| | | taskDetailVehiclesChannel.setSysCreateTime(LocalDateTime.now()); |
| | | taskDetailVehiclesChannel.setArtificialStatus(1); |
| | | //开始调模型接口得出结果 |
| | | Map<String, Object> map = ImageModelUtil.modelCheck(fileUrl, ImageModelEnum.getImageModelEnum(patrolTask.getImageModel())); |
| | | Boolean b = (Boolean) map.get("b"); |
| | | String r = map.get("r").toString(); |
| | | taskDetailVehiclesChannel.setSysStatus(b ? 2 : 3); |
| | | taskDetailVehiclesChannel.setResult(r); |
| | | taskDetailVehiclesChannelService.updateById(taskDetailVehiclesChannel); |
| | | } |
| | | }catch (Exception e){ |
| | | taskDetailVehiclesChannel.setResult(e.getMessage()); |