[1078] 增加单条存储多媒体数据上传
This commit is contained in:
@@ -888,7 +888,7 @@ public class JT1078Controller {
|
||||
|
||||
@Operation(summary = "JT-存储多媒体数据检索", security = @SecurityRequirement(name = JwtUtils.HEADER))
|
||||
@Parameter(name = "param", description = "存储多媒体数据参数", required = true)
|
||||
@PostMapping("/media-data-info")
|
||||
@PostMapping("/media/list")
|
||||
public WVPResult<List<JTMediaDataInfo>> queryMediaData(@RequestBody QueryMediaDataParam param){
|
||||
|
||||
log.info("[JT-存储多媒体数据检索] param: {}", param );
|
||||
@@ -900,72 +900,89 @@ public class JT1078Controller {
|
||||
}
|
||||
}
|
||||
|
||||
@Operation(summary = "JT-存储多媒体数据上传命令", security = @SecurityRequirement(name = JwtUtils.HEADER))
|
||||
@Parameter(name = "param", description = "存储多媒体数据参数", required = true)
|
||||
@PostMapping("/media-data-upload")
|
||||
public DeferredResult<WVPResult<List<String>>> updateMediaData(@RequestBody QueryMediaDataParam param){
|
||||
@Operation(summary = "JT-单条存储多媒体数据上传", security = @SecurityRequirement(name = JwtUtils.HEADER))
|
||||
@Parameter(name = "phoneNumber", description = "设备编号", required = true)
|
||||
@Parameter(name = "mediaId", description = "多媒体ID", required = true)
|
||||
@GetMapping("/media/upload/one")
|
||||
public void uploadOneMedia(HttpServletResponse response, String phoneNumber, Long mediaId){
|
||||
|
||||
log.info("[JT-存储多媒体数据上传命令] param: {}", param );
|
||||
DeferredResult<WVPResult<List<String>>> deferredResult = new DeferredResult<>(30000L);
|
||||
List<String> resultList = new ArrayList<>();
|
||||
|
||||
deferredResult.onTimeout(()->{
|
||||
log.info("[JT-存储多媒体数据上传命令超时] param: {}", param );
|
||||
WVPResult<List<String>> fail = WVPResult.fail(ErrorCode.ERROR100);
|
||||
fail.setMsg("超时");
|
||||
fail.setData(resultList);
|
||||
deferredResult.setResult(fail);
|
||||
});
|
||||
List<JTMediaDataInfo> ids;
|
||||
if (param.getMediaId() != null) {
|
||||
ids = new ArrayList<>();
|
||||
JTMediaDataInfo mediaDataInfo = new JTMediaDataInfo();
|
||||
mediaDataInfo.setId(param.getMediaId());
|
||||
ids.add(mediaDataInfo);
|
||||
}else {
|
||||
ids = service.queryMediaData(param.getPhoneNumber(), param.getQueryMediaDataCommand());
|
||||
}
|
||||
if (ids.isEmpty()) {
|
||||
deferredResult.setResult(WVPResult.fail(ErrorCode.ERROR100));
|
||||
return deferredResult;
|
||||
}
|
||||
Map<String, JTMediaDataInfo> idMap= new HashMap<>();
|
||||
for (JTMediaDataInfo mediaDataInfo : ids) {
|
||||
idMap.put(mediaDataInfo.getId() + ".jpg", mediaDataInfo);
|
||||
}
|
||||
// 开启文件监听
|
||||
FileAlterationObserver observer = new FileAlterationObserver(new File("mediaEvent"));
|
||||
observer.addListener(new FileAlterationListenerAdaptor() {
|
||||
@Override
|
||||
public void onFileCreate(File file) {
|
||||
if (idMap.containsKey(file.getName())) {
|
||||
idMap.remove(file.getName());
|
||||
resultList.add("mediaEvent" + File.separator + file.getName());
|
||||
if (idMap.isEmpty()) {
|
||||
deferredResult.setResult(WVPResult.success(resultList));
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
FileAlterationMonitor monitor = new FileAlterationMonitor(5, observer);
|
||||
log.info("[JT-单条存储多媒体数据上传] 设备编号: {}, 多媒体ID: {}", phoneNumber, mediaId );
|
||||
Assert.notNull(mediaId, "缺少通道编号");
|
||||
try {
|
||||
monitor.start();
|
||||
} catch (Exception e) {
|
||||
log.info("[JT-存储多媒体数据上传命令监听文件失败] param: {}", param );
|
||||
deferredResult.setResult(null);
|
||||
return deferredResult;
|
||||
ServletOutputStream outputStream = response.getOutputStream();
|
||||
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
|
||||
service.uploadOneMedia(phoneNumber, mediaId, outputStream);
|
||||
}catch (Exception e) {
|
||||
throw new ControllerException(ErrorCode.ERROR100.getCode(), e.getMessage());
|
||||
}
|
||||
taskExecutor.execute(()->{
|
||||
if (param.getMediaId() != null) {
|
||||
service.uploadMediaDataForSingle(param.getPhoneNumber(), param.getMediaId(), param.getDelete());
|
||||
}else {
|
||||
service.uploadMediaData(param.getPhoneNumber(), param.getQueryMediaDataCommand());
|
||||
}
|
||||
|
||||
});
|
||||
return deferredResult;
|
||||
}
|
||||
|
||||
// @Operation(summary = "JT-存储多媒体数据上传命令", security = @SecurityRequirement(name = JwtUtils.HEADER))
|
||||
// @Parameter(name = "param", description = "存储多媒体数据参数", required = true)
|
||||
// @PostMapping("/media-data-upload")
|
||||
// public DeferredResult<WVPResult<List<String>>> updateMediaData(@RequestBody QueryMediaDataParam param){
|
||||
//
|
||||
// log.info("[JT-存储多媒体数据上传命令] param: {}", param );
|
||||
// DeferredResult<WVPResult<List<String>>> deferredResult = new DeferredResult<>(30000L);
|
||||
// List<String> resultList = new ArrayList<>();
|
||||
//
|
||||
// deferredResult.onTimeout(()->{
|
||||
// log.info("[JT-存储多媒体数据上传命令超时] param: {}", param );
|
||||
// WVPResult<List<String>> fail = WVPResult.fail(ErrorCode.ERROR100);
|
||||
// fail.setMsg("超时");
|
||||
// fail.setData(resultList);
|
||||
// deferredResult.setResult(fail);
|
||||
// });
|
||||
// List<JTMediaDataInfo> ids;
|
||||
// if (param.getMediaId() != null) {
|
||||
// ids = new ArrayList<>();
|
||||
// JTMediaDataInfo mediaDataInfo = new JTMediaDataInfo();
|
||||
// mediaDataInfo.setId(param.getMediaId());
|
||||
// ids.add(mediaDataInfo);
|
||||
// }else {
|
||||
// ids = service.queryMediaData(param.getPhoneNumber(), param.getQueryMediaDataCommand());
|
||||
// }
|
||||
// if (ids.isEmpty()) {
|
||||
// deferredResult.setResult(WVPResult.fail(ErrorCode.ERROR100));
|
||||
// return deferredResult;
|
||||
// }
|
||||
// Map<String, JTMediaDataInfo> idMap= new HashMap<>();
|
||||
// for (JTMediaDataInfo mediaDataInfo : ids) {
|
||||
// idMap.put(mediaDataInfo.getId() + ".jpg", mediaDataInfo);
|
||||
// }
|
||||
// // 开启文件监听
|
||||
// FileAlterationObserver observer = new FileAlterationObserver(new File("mediaEvent"));
|
||||
// observer.addListener(new FileAlterationListenerAdaptor() {
|
||||
// @Override
|
||||
// public void onFileCreate(File file) {
|
||||
// if (idMap.containsKey(file.getName())) {
|
||||
// idMap.remove(file.getName());
|
||||
// resultList.add("mediaEvent" + File.separator + file.getName());
|
||||
// if (idMap.isEmpty()) {
|
||||
// deferredResult.setResult(WVPResult.success(resultList));
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
// FileAlterationMonitor monitor = new FileAlterationMonitor(5, observer);
|
||||
// try {
|
||||
// monitor.start();
|
||||
// } catch (Exception e) {
|
||||
// log.info("[JT-存储多媒体数据上传命令监听文件失败] param: {}", param );
|
||||
// deferredResult.setResult(null);
|
||||
// return deferredResult;
|
||||
// }
|
||||
// taskExecutor.execute(()->{
|
||||
// if (param.getMediaId() != null) {
|
||||
// service.uploadMediaDataForSingle(param.getPhoneNumber(), param.getMediaId(), param.getDelete());
|
||||
// }else {
|
||||
// service.uploadMediaData(param.getPhoneNumber(), param.getQueryMediaDataCommand());
|
||||
// }
|
||||
//
|
||||
// });
|
||||
// return deferredResult;
|
||||
// }
|
||||
|
||||
@Operation(summary = "JT-开始录音", security = @SecurityRequirement(name = JwtUtils.HEADER))
|
||||
@Parameter(name = "phoneNumber", description = "设备手机号", required = true)
|
||||
@Parameter(name = "time", description = "录音时间,单位为秒(s) ,0 表示一直录音", required = false)
|
||||
|
||||
@@ -125,4 +125,7 @@ public interface Ijt1078Service {
|
||||
|
||||
void snap(String phoneNumber, int channelId, ServletOutputStream outputStream);
|
||||
|
||||
void uploadOneMedia(String phoneNumber, Long mediaId, ServletOutputStream outputStream);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -767,4 +767,25 @@ public class jt1078ServiceImpl implements Ijt1078Service {
|
||||
throw new ControllerException(ErrorCode.ERROR100.getCode(), "数据写入异常");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void uploadOneMedia(String phoneNumber, Long mediaId, ServletOutputStream outputStream) {
|
||||
log.info("[JT-单条存储多媒体数据上传] 媒体编号: {}, 设备编号: {}", mediaId, phoneNumber);
|
||||
J8805 j8805 = new J8805();
|
||||
j8805.setMediaId(mediaId);
|
||||
j8805.setDelete(1);
|
||||
log.info("[JT-单条存储多媒体数据上传] 请求上传图片,媒体编号: {}, 设备编号: {}", mediaId, phoneNumber);
|
||||
JTMediaEventInfo mediaEventInfo = (JTMediaEventInfo)jt1078Template.uploadMediaDataForSingle(phoneNumber, j8805, 300);
|
||||
if (mediaEventInfo == null) {
|
||||
throw new ControllerException(ErrorCode.ERROR100.getCode(), ErrorCode.ERROR100.getMsg());
|
||||
}
|
||||
log.info("[JT-单条存储多媒体数据上传] 图片上传完成,媒体编号: {}, 设备编号: {}", mediaId, phoneNumber);
|
||||
try {
|
||||
outputStream.write(mediaEventInfo.getMediaData());
|
||||
outputStream.flush();
|
||||
} catch (IOException e) {
|
||||
log.info("[JT-单条存储多媒体数据上传] 数据写入异常,抓图编号: {}, 设备编号: {}", mediaId, phoneNumber, e);
|
||||
throw new ControllerException(ErrorCode.ERROR100.getCode(), "数据写入异常");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user