| | |
| | | |
| | | headers.set("x-lc-secret", enSM2); |
| | | // 构建请求实体 |
| | | HttpEntity<String> requestEntity = new HttpEntity<>(base64, headers); |
| | | // 发送请求 |
| | | ResponseEntity<String> response = restTemplate.exchange( |
| | | "https://xcx.geoway.com.cn:8033/v1/droneAirport/RegistService", |
| | | HttpMethod.POST, |
| | | requestEntity, |
| | | String.class); |
| | | HttpHeaders responseHeaders = response.getHeaders(); |
| | | String responseSecret = responseHeaders.getFirst("x-lc-secret"); |
| | | // HttpEntity<String> requestEntity = new HttpEntity<>(base64, headers); |
| | | // // 发送请求 |
| | | // ResponseEntity<String> response = restTemplate.exchange( |
| | | // "https://xcx.geoway.com.cn:8033/v1/droneAirport/RegistService", |
| | | // HttpMethod.POST, |
| | | // requestEntity, |
| | | // String.class); |
| | | // HttpHeaders responseHeaders = response.getHeaders(); |
| | | // String responseSecret = responseHeaders.getFirst("x-lc-secret"); |
| | | |
| | | String data=deSM2(responseSecret, "00D631FD5615416EAB63D33A9E66E801F95DE840567504210080006081DE877AE3"); |
| | | String data=deSM2(enSM2, "00D631FD5615416EAB63D33A9E66E801F95DE840567504210080006081DE877AE3"); |
| | | |
| | | // 使用 Hutool 的 JSONUtil 解析 JSON 字符串 |
| | | JSONObject jsonObject = JSONUtil.parseObj(response.getBody()); |
| | | // JSONObject jsonObject = JSONUtil.parseObj(response.getBody()); |
| | | |
| | | // 提取 data 字段的值 |
| | | String dataValue = jsonObject.getStr("data"); |
| | | return SM4Util.decrypt(data,dataValue); |
| | | // String dataValue = jsonObject.getStr("data"); |
| | | |
| | | // return SM4Util.decrypt(data,dataValue); |
| | | String text=SM4Util.decrypt(data,base64); |
| | | return SM4Util.decrypt(data,base64); |
| | | } catch (Exception e) { |
| | | |
| | | // 异常处理 |
| | | throw new IllegalArgumentException("无人机机场注册失败: " + e.getMessage()); |
| | | return(e.getMessage()); |
| | | } |
| | | } |
| | | |
| | |
| | | DeviceExpanSionEntity drone = expanSionMapper.selectOne(new LambdaQueryWrapper<DeviceExpanSionEntity>() |
| | | .eq(DeviceExpanSionEntity::getWorkspaceId, workspaceId) |
| | | .eq(DeviceExpanSionEntity::getType, 1)); |
| | | registPort(airport); |
| | | AddDeviceDto dto = deviceEntityToDto(drone); |
| | | String secret = SM4Util.generateSM4Key(); |
| | | // 构建请求体 |
| | | String jsonBody = buildRequestBody(dto); |
| | | String base64 = SM4Util.encrypt(secret, jsonBody); |
| | | String keys=Utils.encrypt(secret,"04225AACF606D800EA3C2C31FCF8FB161B15F7A8D0460DEB91013D4F228C455E76A2ED8D71BC6525B5DC5CC015C155479D8839950344AEE438A3A6305C90F8269F"); |
| | | String keys=Utils.encrypt(secret,"04CF7CAE31B5130D1D5D1AC1DC2778D94533868A8D57FC02BBD97B688E07145DAAA96462DC83D9F348261F738D51C049770C43BA53B584917C9E30C6221B737CDD"); |
| | | String enSM2=Utils.hexToBase64(keys); |
| | | // registPort(airport); |
| | | // 设置请求头 |
| | | HttpHeaders headers = new HttpHeaders(); |
| | | headers.setContentType(MediaType.APPLICATION_JSON); |
| | |
| | | String.class); |
| | | HttpHeaders responseHeaders = response.getHeaders(); |
| | | String responseSecret = responseHeaders.getFirst("x-lc-secret"); |
| | | |
| | | String data=deSM2(responseSecret, "00D631FD5615416EAB63D33A9E66E801F95DE840567504210080006081DE877AE3"); |
| | | |
| | | // 使用 Hutool 的 JSONUtil 解析 JSON 字符串 |
| | | JSONObject jsonObject = JSONUtil.parseObj(response.getBody()); |
| | | // 提取 data 字段的值 |
| | |
| | | return SM4Util.decrypt(data,dataValue); |
| | | } catch (Exception e) { |
| | | // 异常处理 |
| | | return ("无人机机场设备注册失败: " + e.getMessage()); |
| | | return (e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, String> getDroneState(String deviceId) throws Exception { |
| | | String key = SM4Util.generateSM4Key(); |
| | | String secret = Utils.encrypt(key, "04225AACF606D800EA3C2C31FCF8FB161B15F7A8D0460DEB91013D4F228C455E76A2ED8D71BC6525B5DC5CC015C155479D8839950344AEE438A3A6305C90F8269F"); |
| | | String secret = Utils.encrypt(key, "04CF7CAE31B5130D1D5D1AC1DC2778D94533868A8D57FC02BBD97B688E07145DAAA96462DC83D9F348261F738D51C049770C43BA53B584917C9E30C6221B737CDD"); |
| | | DroneStateDto data = getAirportFromCache(deviceId); |
| | | String json = JSON.toJSONString(data); |
| | | String SM4Screct = SM4Util.encrypt(key, json); |
| | |
| | | @Override |
| | | public Map<String, String> AddTask(String base64, String Secret, String username) throws Exception { |
| | | ReturnTaskParam param = new ReturnTaskParam(); |
| | | //获取SM4密钥 |
| | | String secret = SM4Util.generateSM4Key(); |
| | | String retse = Utils.encrypt(secret, "04225AACF606D800EA3C2C31FCF8FB161B15F7A8D0460DEB91013D4F228C455E76A2ED8D71BC6525B5DC5CC015C155479D8839950344AEE438A3A6305C90F8269F"); |
| | | //对SM4密钥进行SM2加密 |
| | | String retse = Utils.encrypt(secret, "04CF7CAE31B5130D1D5D1AC1DC2778D94533868A8D57FC02BBD97B688E07145DAAA96462DC83D9F348261F738D51C049770C43BA53B584917C9E30C6221B737CDD"); |
| | | String taskId = UUID.randomUUID().toString(); |
| | | String traceid = UUID.randomUUID().toString(); |
| | | //通过SM2私钥解密请求头里的secret获取SM4密钥 |
| | | String sm4Secrect = deSM2(Secret, "00D631FD5615416EAB63D33A9E66E801F95DE840567504210080006081DE877AE3"); |
| | | //使用从请求头里获取的SM4密钥解析请求参数 |
| | | String decryptedJson = SM4Util.decrypt(sm4Secrect, base64); |
| | | JSONObject jsonObject = new JSONObject(decryptedJson); |
| | | AddTaskDto addTaskDto = jsonToDto(jsonObject); |
| | | TaskInfo taskInfo = new TaskInfo(); |
| | | //获取设备Id |
| | | List<String> listx = convertStringToList(addTaskDto.getDeviceid()); |
| | | taskInfo.setId(traceid); |
| | | taskInfo.setTaskId(taskId); |
| | |
| | | for (TaskListDto taskListDto : tasklist) { |
| | | LotInfo lotInfo = convertToLotInfo(taskListDto); |
| | | lotInfo.setTaskId(taskId); |
| | | // |
| | | lotInfo.setType(1); |
| | | lotInfo.setTaskName(addTaskDto.getBizidname()); |
| | | lotInfo.setUserName(username); |
| | |
| | | String waylineName = TimerUtil.getTimeName(); |
| | | MultipartFile multipartFile = timerUtil.getFile(waylineName, lotInfosForAirport, airport.getLat(), airport.getLon()); |
| | | WaylineFileEntity waylineFile = timerUtil.backWayline(multipartFile, waylineName, airport.getWorkspaceId(), username); |
| | | // Long time = getNextDayEightAMTimestamp(getDistinctTaskIdCount(airport.getWorkspaceId())); |
| | | Long time = getAdjustedTimestamp(50); |
| | | Long time = getNextDayEightAMTimestamp(getDistinctTaskIdCount(airport.getWorkspaceId())); |
| | | // Long time = getAdjustedTimestamp(50); |
| | | List<List<Long>> listOfLists = new ArrayList<>(); |
| | | List<Long> sublist = new ArrayList<>(); |
| | | sublist.add(time); |
| | |
| | | public Map<String, String> updateTask(String base64, String Secret, String username) throws Exception { |
| | | ReturnTaskParam param = new ReturnTaskParam(); |
| | | String secret = SM4Util.generateSM4Key(); |
| | | String retse = Utils.encrypt(secret, "04225AACF606D800EA3C2C31FCF8FB161B15F7A8D0460DEB91013D4F228C455E76A2ED8D71BC6525B5DC5CC015C155479D8839950344AEE438A3A6305C90F8269F"); |
| | | String retse = Utils.encrypt(secret, "04CF7CAE31B5130D1D5D1AC1DC2778D94533868A8D57FC02BBD97B688E07145DAAA96462DC83D9F348261F738D51C049770C43BA53B584917C9E30C6221B737CDD"); |
| | | String traceid = UUID.randomUUID().toString(); |
| | | String sm4Secrect = deSM2(Secret, "00D631FD5615416EAB63D33A9E66E801F95DE840567504210080006081DE877AE3"); |
| | | String decryptedJson = SM4Util.decrypt(sm4Secrect, base64); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public ResponseResult cancelTask(String taskId) { |
| | | public Map<String, String> cancelTask(String taskId) throws InvalidCipherTextException, IOException { |
| | | String secret = SM4Util.generateSM4Key(); |
| | | String retse = Utils.encrypt(secret, "04CF7CAE31B5130D1D5D1AC1DC2778D94533868A8D57FC02BBD97B688E07145DAAA96462DC83D9F348261F738D51C049770C43BA53B584917C9E30C6221B737CDD"); |
| | | LambdaUpdateWrapper<WaylineJobEntity> updateWrapper = new LambdaUpdateWrapper<>(); |
| | | updateWrapper.like(WaylineJobEntity::getJobId, taskId) |
| | | .set(WaylineJobEntity::getStatus, 4); |
| | | waylineJobMapper.update(null, updateWrapper); |
| | | return null; |
| | | Map<String, String> info = new HashMap<>(); |
| | | info.put("serect", retse); |
| | | info.put("taskid", SM4Util.encrypt(secret,taskId)); |
| | | return info; |
| | | } |
| | | |
| | | public void processAndInsertTasks(List<AirportTasks> airportTasks) { |
| | |
| | | List<WaylineJobEntity> jobEntity = waylineJobMapper.selectList(new LambdaQueryWrapper<WaylineJobEntity>().like(WaylineJobEntity::getJobId, taskid)); |
| | | |
| | | if (jobEntity == null || jobEntity.isEmpty()) { |
| | | return ResponseResult.error(201, "查询无人机机场任务状态失败!"); |
| | | return ResponseResult.success(201, "查询无人机机场任务状态失败!","",UUID.randomUUID().toString()); |
| | | } |
| | | |
| | | // 检查是否所有 status 都等于 4 |
| | |
| | | .allMatch(job -> job.getStatus() == 3); |
| | | |
| | | if (allStatusAreFour) { |
| | | return ResponseResult.error(204, "查询无人机机场任务状态成功!"); |
| | | return ResponseResult.success(204, "查询无人机机场任务状态成功!","",UUID.randomUUID().toString()); |
| | | } else if (allStatusAreThree) { |
| | | return ResponseResult.error(200, "查询无人机机场任务状态成功!"); |
| | | return ResponseResult.success(200, "查询无人机机场任务状态成功!","",UUID.randomUUID().toString()); |
| | | } else { |
| | | return ResponseResult.error(202, "查询无人机机场任务状态成功!"); |
| | | return ResponseResult.success(202, "查询无人机机场任务状态成功!","",UUID.randomUUID().toString()); |
| | | } |
| | | } |
| | | |