feat(可回溯): 视频生成
调整视频生成逻辑
This commit is contained in:
-1
@@ -14,7 +14,6 @@ import java.sql.PreparedStatement;
|
|||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@MappedTypes(value = {List.class})
|
@MappedTypes(value = {List.class})
|
||||||
|
|||||||
-1
@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
|||||||
import com.wabestway.recall.trace.entity.RecallOrderEntity;
|
import com.wabestway.recall.trace.entity.RecallOrderEntity;
|
||||||
import com.wabestway.recall.trace.dto.RecallOrderDTO;
|
import com.wabestway.recall.trace.dto.RecallOrderDTO;
|
||||||
import com.wabestway.recall.trace.vo.RecallOrderVO;
|
import com.wabestway.recall.trace.vo.RecallOrderVO;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|||||||
-2
@@ -13,8 +13,6 @@ import com.wabestway.recall.trace.dto.RecallOrderDTO;
|
|||||||
import com.wabestway.recall.trace.vo.RecallOrderVO;
|
import com.wabestway.recall.trace.vo.RecallOrderVO;
|
||||||
import com.wabestway.recall.trace.service.RecallOrderService;
|
import com.wabestway.recall.trace.service.RecallOrderService;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author wangH
|
* @author wangH
|
||||||
* @company 北京华焱坤泰科技有限公司
|
* @company 北京华焱坤泰科技有限公司
|
||||||
|
|||||||
+66
-26
@@ -2,16 +2,12 @@ package com.wabestway.recall.trace.vo;
|
|||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.alibaba.fastjson.annotation.JSONField;
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
*
|
|
||||||
* @author wangH
|
* @author wangH
|
||||||
* @company 北京华焱坤泰科技有限公司
|
* @company 北京华焱坤泰科技有限公司
|
||||||
* @Time 2023-05-06 17:37:03
|
* @Time 2023-05-06 17:37:03
|
||||||
@@ -21,71 +17,115 @@ import io.swagger.annotations.ApiModelProperty;
|
|||||||
public class RecallOrderVO implements Serializable {
|
public class RecallOrderVO implements Serializable {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
/** 主键 */
|
/**
|
||||||
|
* 主键
|
||||||
|
*/
|
||||||
@ApiModelProperty(value = "主键")
|
@ApiModelProperty(value = "主键")
|
||||||
private String id;
|
private String id;
|
||||||
/** 产品编码 */
|
/**
|
||||||
|
* 产品编码
|
||||||
|
*/
|
||||||
@ApiModelProperty(value = "产品编码")
|
@ApiModelProperty(value = "产品编码")
|
||||||
private String productCode;
|
private String productCode;
|
||||||
/** 产品名称 */
|
/**
|
||||||
|
* 产品名称
|
||||||
|
*/
|
||||||
@ApiModelProperty(value = "产品名称")
|
@ApiModelProperty(value = "产品名称")
|
||||||
private String productName;
|
private String productName;
|
||||||
/** 保单号 */
|
/**
|
||||||
|
* 保单号
|
||||||
|
*/
|
||||||
@ApiModelProperty(value = "保单号")
|
@ApiModelProperty(value = "保单号")
|
||||||
private String policyNo;
|
private String policyNo;
|
||||||
/** 投保人名称 */
|
/**
|
||||||
|
* 投保人名称
|
||||||
|
*/
|
||||||
@ApiModelProperty(value = "投保人名称")
|
@ApiModelProperty(value = "投保人名称")
|
||||||
private String holderName;
|
private String holderName;
|
||||||
/** 投保人手机号 */
|
/**
|
||||||
|
* 投保人手机号
|
||||||
|
*/
|
||||||
@ApiModelProperty(value = "投保人手机号")
|
@ApiModelProperty(value = "投保人手机号")
|
||||||
private String holderPhone;
|
private String holderPhone;
|
||||||
/** 保险公司名称 */
|
/**
|
||||||
|
* 保险公司名称
|
||||||
|
*/
|
||||||
@ApiModelProperty(value = "保险公司名称")
|
@ApiModelProperty(value = "保险公司名称")
|
||||||
private String supplierName;
|
private String supplierName;
|
||||||
/** 是否记录完整0-否1-是 */
|
/**
|
||||||
|
* 是否记录完整0-否1-是
|
||||||
|
*/
|
||||||
@ApiModelProperty(value = "是否记录完整0-否1-是")
|
@ApiModelProperty(value = "是否记录完整0-否1-是")
|
||||||
private String complete;
|
private String complete;
|
||||||
/** 是否已归档 0-否1-是 */
|
/**
|
||||||
|
* 是否已归档 0-否1-是
|
||||||
|
*/
|
||||||
@ApiModelProperty(value = "是否已归档 0-否1-是 ")
|
@ApiModelProperty(value = "是否已归档 0-否1-是 ")
|
||||||
private String archived;
|
private String archived;
|
||||||
/** 完成日期 */
|
/**
|
||||||
|
* 完成日期
|
||||||
|
*/
|
||||||
@ApiModelProperty(value = "完成日期")
|
@ApiModelProperty(value = "完成日期")
|
||||||
private Long completeDate;
|
private Long completeDate;
|
||||||
/** 归档日期 */
|
/**
|
||||||
|
* 归档日期
|
||||||
|
*/
|
||||||
@ApiModelProperty(value = "归档日期")
|
@ApiModelProperty(value = "归档日期")
|
||||||
private Long archivedDate;
|
private Long archivedDate;
|
||||||
/** 保单起始日期 */
|
/**
|
||||||
|
* 保单起始日期
|
||||||
|
*/
|
||||||
@ApiModelProperty(value = "保单起始日期")
|
@ApiModelProperty(value = "保单起始日期")
|
||||||
private String startDate;
|
private String startDate;
|
||||||
/** 保单结束日期 */
|
/**
|
||||||
|
* 保单结束日期
|
||||||
|
*/
|
||||||
@ApiModelProperty(value = "保单结束日期")
|
@ApiModelProperty(value = "保单结束日期")
|
||||||
private String endDate;
|
private String endDate;
|
||||||
/** 生成视频文件ID */
|
/**
|
||||||
|
* 生成视频文件ID
|
||||||
|
*/
|
||||||
@ApiModelProperty(value = "生成视频文件ID")
|
@ApiModelProperty(value = "生成视频文件ID")
|
||||||
private String fileId;
|
private String fileId;
|
||||||
/** 生成视频文件地址 */
|
/**
|
||||||
|
* 生成视频文件地址
|
||||||
|
*/
|
||||||
@ApiModelProperty(value = "生成视频文件地址")
|
@ApiModelProperty(value = "生成视频文件地址")
|
||||||
private String fileUrl;
|
private String fileUrl;
|
||||||
/** 业务订单ID */
|
/**
|
||||||
|
* 业务订单ID
|
||||||
|
*/
|
||||||
@ApiModelProperty(value = "业务订单ID")
|
@ApiModelProperty(value = "业务订单ID")
|
||||||
private String orderId;
|
private String orderId;
|
||||||
/** 回溯记录跟踪ID */
|
/**
|
||||||
|
* 回溯记录跟踪ID
|
||||||
|
*/
|
||||||
@ApiModelProperty(value = "回溯记录跟踪ID")
|
@ApiModelProperty(value = "回溯记录跟踪ID")
|
||||||
private String traceId;
|
private String traceId;
|
||||||
/** 可回溯记录appKey */
|
/**
|
||||||
|
* 可回溯记录appKey
|
||||||
|
*/
|
||||||
@ApiModelProperty(value = "可回溯记录appKey")
|
@ApiModelProperty(value = "可回溯记录appKey")
|
||||||
private String appKey;
|
private String appKey;
|
||||||
/** 创建人 */
|
/**
|
||||||
|
* 创建人
|
||||||
|
*/
|
||||||
@ApiModelProperty(value = "创建人")
|
@ApiModelProperty(value = "创建人")
|
||||||
private String createBy;
|
private String createBy;
|
||||||
/** 创建时间 */
|
/**
|
||||||
|
* 创建时间
|
||||||
|
*/
|
||||||
@ApiModelProperty(value = "创建时间")
|
@ApiModelProperty(value = "创建时间")
|
||||||
@JsonProperty(value = "createAt")
|
@JsonProperty(value = "createAt")
|
||||||
private Long createTime;
|
private Long createTime;
|
||||||
/** 更新人 */
|
/**
|
||||||
|
* 更新人
|
||||||
|
*/
|
||||||
@ApiModelProperty(value = "更新人")
|
@ApiModelProperty(value = "更新人")
|
||||||
private String updateBy;
|
private String updateBy;
|
||||||
/** 更新时间 */
|
/**
|
||||||
|
* 更新时间
|
||||||
|
*/
|
||||||
@ApiModelProperty(value = "更新时间")
|
@ApiModelProperty(value = "更新时间")
|
||||||
private Long updateTime;
|
private Long updateTime;
|
||||||
|
|
||||||
|
|||||||
+31
-8
@@ -80,11 +80,8 @@ public class RecallOrderApiServiceImpl implements RecallOrderApiService {
|
|||||||
orderQuery.orderByDesc(RecallOrderEntity::getCompleteDate);
|
orderQuery.orderByDesc(RecallOrderEntity::getCompleteDate);
|
||||||
List<RecallOrderEntity> orderList = recallOrderService.getBaseMapper().selectList(orderQuery);
|
List<RecallOrderEntity> orderList = recallOrderService.getBaseMapper().selectList(orderQuery);
|
||||||
orderList.forEach(order -> {
|
orderList.forEach(order -> {
|
||||||
LambdaQueryWrapper<RecallRecordEntity> recordQuery = Wrappers.lambdaQuery();
|
|
||||||
recordQuery.eq(RecallRecordEntity::getTraceId, order.getTraceId());
|
|
||||||
recordQuery.orderByAsc(RecallRecordEntity::getCreateTime);
|
|
||||||
List<RecallRecordEntity> recordList = recallRecordService.getBaseMapper().selectList(recordQuery);
|
|
||||||
|
|
||||||
|
List<RecallRecordVO> recordList = recallRecordService.queryTraceRecords(order.getTraceId());
|
||||||
List<String> events = recordList.stream()
|
List<String> events = recordList.stream()
|
||||||
.flatMap(entity -> entity.getEvents().stream())
|
.flatMap(entity -> entity.getEvents().stream())
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
@@ -117,23 +114,23 @@ public class RecallOrderApiServiceImpl implements RecallOrderApiService {
|
|||||||
bw.flush();
|
bw.flush();
|
||||||
bw.close();
|
bw.close();
|
||||||
fw.close();
|
fw.close();
|
||||||
String[] command = {"ts-node", "/opt/trace-transform/src/index.ts"};
|
String[] command = {"ts-node", "/opt/review/index.ts"};
|
||||||
ProcessBuilder processBuilder = new ProcessBuilder(command);
|
ProcessBuilder processBuilder = new ProcessBuilder(command);
|
||||||
processBuilder.directory(tempDir.toFile());
|
processBuilder.directory(tempDir.toFile());
|
||||||
// 在临时目录下执行命令
|
// 在临时目录下执行命令
|
||||||
Process process = processBuilder.start();
|
Process p1 = processBuilder.start();
|
||||||
|
|
||||||
Thread processThread = new Thread(() -> {
|
Thread processThread = new Thread(() -> {
|
||||||
try {
|
try {
|
||||||
// 读取命令输出
|
// 读取命令输出
|
||||||
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
|
BufferedReader reader = new BufferedReader(new InputStreamReader(p1.getInputStream()));
|
||||||
String line;
|
String line;
|
||||||
while ((line = reader.readLine()) != null) {
|
while ((line = reader.readLine()) != null) {
|
||||||
System.out.println(line);
|
System.out.println(line);
|
||||||
}
|
}
|
||||||
reader.close();
|
reader.close();
|
||||||
// 等待命令执行完成
|
// 等待命令执行完成
|
||||||
int exitCode = process.waitFor();
|
int exitCode = p1.waitFor();
|
||||||
|
|
||||||
System.out.println("Command exited with code " + exitCode);
|
System.out.println("Command exited with code " + exitCode);
|
||||||
} catch (InterruptedException | IOException e) {
|
} catch (InterruptedException | IOException e) {
|
||||||
@@ -144,12 +141,38 @@ public class RecallOrderApiServiceImpl implements RecallOrderApiService {
|
|||||||
|
|
||||||
// Continue with other tasks here...
|
// Continue with other tasks here...
|
||||||
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
processThread.join();
|
processThread.join();
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String[] video = {"rrvideo", "--input", "unpack.json", "--config", "/opt/review/config.json", "--output", "video.mp4"};
|
||||||
|
ProcessBuilder videoBuilder = new ProcessBuilder(video);
|
||||||
|
videoBuilder.directory(tempDir.toFile());
|
||||||
|
Process p2 = videoBuilder.start();
|
||||||
|
|
||||||
|
|
||||||
|
Thread processThread2 = new Thread(() -> {
|
||||||
|
try {
|
||||||
|
// 读取命令输出
|
||||||
|
BufferedReader reader = new BufferedReader(new InputStreamReader(p2.getInputStream()));
|
||||||
|
String line;
|
||||||
|
while ((line = reader.readLine()) != null) {
|
||||||
|
System.out.println(line);
|
||||||
|
}
|
||||||
|
reader.close();
|
||||||
|
// 等待命令执行完成
|
||||||
|
int exitCode = p2.waitFor();
|
||||||
|
|
||||||
|
System.out.println("Command exited with code " + exitCode);
|
||||||
|
} catch (InterruptedException | IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
processThread2.start();
|
||||||
|
|
||||||
File file = new File(tempDir.toFile(), "video.mp4");
|
File file = new File(tempDir.toFile(), "video.mp4");
|
||||||
if (file.exists()) {
|
if (file.exists()) {
|
||||||
log.info(String.valueOf(file.length()));
|
log.info(String.valueOf(file.length()));
|
||||||
|
|||||||
@@ -17,9 +17,9 @@ spring:
|
|||||||
|
|
||||||
datasource:
|
datasource:
|
||||||
type: com.alibaba.druid.pool.DruidDataSource
|
type: com.alibaba.druid.pool.DruidDataSource
|
||||||
url: jdbc:mysql://123.56.82.16:3306/afis-agency?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
|
url: jdbc:mysql://203.189.0.250:13049/afis-agency?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
|
||||||
username: rocar
|
username: yxb-dev
|
||||||
password: rocar
|
password: yxbDev!902
|
||||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||||
platform: mysql
|
platform: mysql
|
||||||
druid:
|
druid:
|
||||||
|
|||||||
Reference in New Issue
Block a user