顾问服务结束,按键结束(在ai工牌上按结束键), 超时结束(超过一天自动结束)
This commit is contained in:
@@ -177,7 +177,7 @@ public class AudioFileController {
|
||||
return ResponseEntity.ok(result);
|
||||
}
|
||||
|
||||
// 7. 处理业务逻辑
|
||||
// 7. 处理业务逻辑 ,保存文件, 上传
|
||||
ProcessResult processResult = processByDataType(dataType, requestBody, file, request);
|
||||
|
||||
// 8. 构建并返回响应
|
||||
@@ -331,13 +331,13 @@ public class AudioFileController {
|
||||
HttpServletRequest request) {
|
||||
log.info("检测到数据类型Audio----------开始处理--------------------");
|
||||
|
||||
// 再次尝试获取文件(如果之前没有获取到)
|
||||
// 再次尝试获取文件(如果之前没有获取到),没有保存
|
||||
MultipartFile audioFile = extractFileFromMultipartRequest(request, file);
|
||||
|
||||
// 关联上传的文件到audio_management表
|
||||
associateAudioManagement(requestBody);
|
||||
|
||||
// 处理Audio数据
|
||||
// 处理Audio数据 验证文件、保存文件到本地、保存信息到数据库
|
||||
Map<String, Object> processResult = handleAudioDataType(requestBody, audioFile);
|
||||
|
||||
log.info("检测到数据类型Audio-----------处理结束-------------------");
|
||||
@@ -1213,7 +1213,13 @@ public class AudioFileController {
|
||||
audioManagementSegmentsService.save(segment);
|
||||
log.info("音频分段记录保存成功,ID: {}, 父录音ID: {}, 设备号: {}, 文件名: {}",
|
||||
segment.getId(), segment.getParentId(), segment.getDeviceNo(), segment.getAudioFileOriginalName());
|
||||
|
||||
// 如果文件名包含结束标志,修改主记录为结束状态
|
||||
if(segment.getAudioFileOriginalName().contains("-Z")){
|
||||
AudioManagement audioManagement = new AudioManagement();
|
||||
audioManagement.setServiceStatus(AudioManagementConstants.SERVICE_STATUS_IN_SERVICE);
|
||||
audioManagement.setUpdateTime(LocalDateTime.now());
|
||||
serviceManager.getAudioManagementService().save(audioManagement);
|
||||
}
|
||||
// 13. 标记为已保存,避免重复保存
|
||||
requestBody.put(segmentSavedKey, true);
|
||||
|
||||
@@ -1736,39 +1742,43 @@ public class AudioFileController {
|
||||
log.warn("deviceManagement中的tenantId为空,无法设置租户上下文");
|
||||
return;
|
||||
}
|
||||
|
||||
// 2. 通过bind_user_id去SalesManagement表查询sales_name和login_account(作为sales_phone)
|
||||
LambdaQueryWrapper<SalesManagement> salesQuery = new LambdaQueryWrapper<>();
|
||||
salesQuery.eq(SalesManagement::getLoginAccount, deviceManagement.getSalesPhone());
|
||||
SalesManagement salesManagement = serviceManager.getSalesManagementService().getOne(salesQuery);
|
||||
|
||||
if (salesManagement == null) {
|
||||
log.warn("未找到对应的销售人员,getSalesPhone: {}", deviceManagement.getSalesPhone());
|
||||
return;
|
||||
}
|
||||
|
||||
String salesName = salesManagement.getSalesName();
|
||||
String salesPhone = salesManagement.getLoginAccount(); // login_account作为sales_phone
|
||||
|
||||
// 3. 根据sales_name和sales_phone去audio_management表查找sync_status='服务中'的记录
|
||||
LambdaQueryWrapper<AudioManagement> audioQuery = new LambdaQueryWrapper<>();
|
||||
audioQuery.eq(AudioManagement::getSalesPhone, salesPhone)
|
||||
.eq(AudioManagement::getServiceStatus, "服务中")
|
||||
audioQuery.eq(AudioManagement::getSalesPhone, deviceManagement.getSalesPhone())
|
||||
.eq(AudioManagement::getServiceStatus, AudioManagementConstants.SERVICE_STATUS_IN_SERVICE)
|
||||
.orderByDesc(AudioManagement::getCreateTime); // 按创建时间倒序
|
||||
|
||||
List<AudioManagement> audioList = serviceManager.getAudioManagementService().list(audioQuery);
|
||||
|
||||
// 检查audioList中updateTime大于1天的记录,更新serviceStatus为"服务结束"
|
||||
if (audioList != null && !audioList.isEmpty()) {
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
for (AudioManagement audio : audioList) {
|
||||
if (audio.getUpdateTime() != null) {
|
||||
// 计算时间差(天数)
|
||||
long daysBetween = java.time.temporal.ChronoUnit.DAYS.between(audio.getUpdateTime(), now);
|
||||
if (daysBetween >= 1) {
|
||||
audio.setServiceStatus(AudioManagementConstants.SERVICE_STATUS_SERVICE_FINISH);
|
||||
serviceManager.getAudioManagementService().updateById(audio);
|
||||
log.info("更新audio_management记录状态为服务结束,ID: {}, updateTime: {}, 距离现在: {}天",
|
||||
audio.getId(), audio.getUpdateTime(), daysBetween);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
audioList = serviceManager.getAudioManagementService().list(audioQuery);
|
||||
String audioManagementId;
|
||||
if (audioList == null || audioList.isEmpty()) {
|
||||
// 如果没找到,插入一条新记录
|
||||
audioManagementId = createNewAudioManagement(deviceManagement);
|
||||
log.info("创建新的audio_management记录,ID: {}, sales_name: {}, sales_phone: {}",
|
||||
audioManagementId, salesName, salesPhone);
|
||||
log.info("创建新的audio_management记录,ID: {} ",
|
||||
audioManagementId );
|
||||
} else {
|
||||
// 如果找到(一条或多条),取最新的一条记录
|
||||
audioManagementId = audioList.get(0).getId();
|
||||
log.info("找到audio_management记录,ID: {}, sales_name: {}, sales_phone: {}, 共{}条记录",
|
||||
audioManagementId, salesName, salesPhone, audioList.size());
|
||||
|
||||
log.info("找到audio_management记录,ID: {} , 共{}条记录",
|
||||
audioManagementId , audioList.size());
|
||||
}
|
||||
|
||||
// 将id设置到requestBody
|
||||
@@ -1856,7 +1866,7 @@ public class AudioFileController {
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理Audio数据类型(录音推送)
|
||||
* 处理Audio数据类型(录音推送) ,验证文件、保存文件到本地、保存信息到数据库
|
||||
* 适配新的数据结构:dataType="Audio",数据在data字段中
|
||||
* 同时兼容旧的数据结构(数据直接在requestBody中)
|
||||
*
|
||||
@@ -1871,14 +1881,16 @@ public class AudioFileController {
|
||||
// 1. 提取并解析data字段(新数据结构)
|
||||
Map<String, Object> dataFromDataField = extractDataField(requestBody);
|
||||
|
||||
// 2. 判断使用新数据结构还是旧数据结构
|
||||
// 2. 判断使用新数据结构还是旧数据结构 , 保存文件到本地 ,记录到数据库
|
||||
if (isLegacyDataStructure(dataFromDataField)) {
|
||||
log.info("检测到旧数据结构,使用requestBody作为processedData");
|
||||
return processLegacyAudioData(requestBody, file);
|
||||
log.info("检测到旧数据结构,验证文件、保存文件到本地、保存信息到数据库, 使用requestBody作为processedData");
|
||||
String deviceNo = extractStringField(requestBody, "deviceNo");
|
||||
String filePath = extractStringField(requestBody, "filePath");
|
||||
return handleAudioUpload(requestBody, requestBody, file, deviceNo, filePath);
|
||||
}
|
||||
|
||||
// 3. 使用新数据结构处理
|
||||
log.info("检测到新数据结构,从data字段提取数据");
|
||||
// 3. 使用新数据结构处理 验证文件、保存文件到本地、保存信息到数据库
|
||||
log.info("检测到新数据结构,验证文件、保存文件到本地、保存信息到数据库 ");
|
||||
return processNewAudioData(requestBody, dataFromDataField, file);
|
||||
|
||||
} catch (Exception e) {
|
||||
@@ -1935,12 +1947,12 @@ public class AudioFileController {
|
||||
* @param file 上传的音频文件
|
||||
* @return 处理结果
|
||||
*/
|
||||
private Map<String, Object> processLegacyAudioData(Map<String, Object> requestBody, MultipartFile file) {
|
||||
String deviceNo = extractStringField(requestBody, "deviceNo");
|
||||
String filePath = extractStringField(requestBody, "filePath");
|
||||
|
||||
return handleAudioUpload(requestBody, requestBody, file, deviceNo, filePath);
|
||||
}
|
||||
// private Map<String, Object> processLegacyAudioData(Map<String, Object> requestBody, MultipartFile file) {
|
||||
// String deviceNo = extractStringField(requestBody, "deviceNo");
|
||||
// String filePath = extractStringField(requestBody, "filePath");
|
||||
//
|
||||
// return handleAudioUpload(requestBody, requestBody, file, deviceNo, filePath);
|
||||
// }
|
||||
|
||||
/**
|
||||
* 处理新数据结构的Audio数据
|
||||
|
||||
Reference in New Issue
Block a user