| | |
| | | |
| | | /** |
| | | * Handle media files messages reported by dock. |
| | | * 处理由dock报告的媒体文件消息。 |
| | | * @param receiver |
| | | * @return |
| | | */ |
| | |
| | | FileUploadCallback callback = objectMapper.convertValue(receiver.getData(), FileUploadCallback.class); |
| | | |
| | | if (callback.getResult() != ResponseResult.CODE_SUCCESS) { |
| | | log.error("Media file upload failed!"); |
| | | log.error("媒体文件上传失败;Media file upload failed!"); |
| | | return null; |
| | | } |
| | | |
| | |
| | | if (jobOpt.isPresent()) { |
| | | boolean isSave = parseMediaFile(callback, jobOpt.get()); |
| | | if (!isSave) { |
| | | log.error("Failed to save the file to the database, please check the data manually."); |
| | | log.error("保存文件到数据库失败,请手动检查数据;Failed to save the file to the database, please check the data manually."); |
| | | return null; |
| | | } |
| | | } |
| | |
| | | |
| | | /** |
| | | * update the uploaded count and notify web side |
| | | * 更新上传的计数并通知web端 |
| | | * @param mediaFileCount |
| | | * @param receiver |
| | | * @param jobId |
| | | */ |
| | | private void notifyUploadedCount(MediaFileCountDTO mediaFileCount, CommonTopicReceiver receiver, String jobId, DeviceDTO dock) { |
| | | // Do not notify when files that do not belong to the route are uploaded. |
| | | //上传不属于该路线的文件时不进行通知。 |
| | | if (Objects.isNull(mediaFileCount)) { |
| | | return; |
| | | } |
| | |
| | | |
| | | String key = RedisConst.MEDIA_FILE_PREFIX + receiver.getGateway(); |
| | | // After all the files of the job are uploaded, delete the media file key. |
| | | //待作业的所有文件上传完成后,删除媒体文件密钥。 |
| | | if (mediaFileCount.getUploadedCount() >= mediaFileCount.getMediaCount()) { |
| | | RedisOpsUtils.hashDel(key, new String[]{jobId}); |
| | | |
| | | // After uploading, delete the key with the highest priority. |
| | | //上传完成后,删除优先级最高的密钥。 |
| | | String highestKey = RedisConst.MEDIA_HIGHEST_PRIORITY_PREFIX + receiver.getGateway(); |
| | | if (RedisOpsUtils.checkExist(highestKey) && |
| | | jobId.equals(((MediaFileCountDTO) RedisOpsUtils.get(highestKey)).getJobId())) { |
| | |
| | | RedisOpsUtils.hashSet(key, jobId, mediaFileCount); |
| | | } |
| | | |
| | | //通过websocket把数据发送给web |
| | | sendMessageService.sendBatch(dock.getWorkspaceId(), UserTypeEnum.WEB.getVal(), |
| | | BizCodeEnum.FILE_UPLOAD_CALLBACK.getCode(), mediaFileCount); |
| | | } |