mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/per-boe/java-servers.git
synced 2025-12-09 02:46:50 +08:00
AI调用日志 重试功能补完
This commit is contained in:
@@ -11,6 +11,7 @@ import com.xboe.module.boecase.dao.CaseDocumentLogDao;
|
|||||||
import com.xboe.module.boecase.dto.CaseDocumentLogQueryDto;
|
import com.xboe.module.boecase.dto.CaseDocumentLogQueryDto;
|
||||||
import com.xboe.module.boecase.entity.CaseDocumentLog;
|
import com.xboe.module.boecase.entity.CaseDocumentLog;
|
||||||
import com.xboe.module.boecase.service.ICaseDocumentLogService;
|
import com.xboe.module.boecase.service.ICaseDocumentLogService;
|
||||||
|
import com.xboe.module.boecase.service.ICaseKnowledgeService;
|
||||||
import com.xboe.module.boecase.vo.CaseDocumentLogVo;
|
import com.xboe.module.boecase.vo.CaseDocumentLogVo;
|
||||||
import com.xboe.enums.CaseDocumentLogOptTypeEnum;
|
import com.xboe.enums.CaseDocumentLogOptTypeEnum;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -35,6 +36,9 @@ public class CaseDocumentLogServiceImpl implements ICaseDocumentLogService {
|
|||||||
@Resource
|
@Resource
|
||||||
private CaseDocumentLogDao caseDocumentLogDao;
|
private CaseDocumentLogDao caseDocumentLogDao;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ICaseKnowledgeService caseKnowledgeService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageList<CaseDocumentLogVo> pageQuery(int pageIndex, int pageSize, CaseDocumentLogQueryDto queryDto) {
|
public PageList<CaseDocumentLogVo> pageQuery(int pageIndex, int pageSize, CaseDocumentLogQueryDto queryDto) {
|
||||||
// 构建查询条件
|
// 构建查询条件
|
||||||
@@ -43,6 +47,13 @@ public class CaseDocumentLogServiceImpl implements ICaseDocumentLogService {
|
|||||||
// 删除标识过滤
|
// 删除标识过滤
|
||||||
filters.add(FieldFilters.eq("deleted", false));
|
filters.add(FieldFilters.eq("deleted", false));
|
||||||
|
|
||||||
|
// 接口调用状态
|
||||||
|
if (queryDto.getOptStatus() != null) {
|
||||||
|
filters.add(FieldFilters.eq("optStatus", queryDto.getOptStatus()));
|
||||||
|
} else {
|
||||||
|
filters.add(FieldFilters.ge("optStatus", 1));
|
||||||
|
}
|
||||||
|
|
||||||
// 案例标题模糊查询
|
// 案例标题模糊查询
|
||||||
if (StringUtil.isNotBlank(queryDto.getCaseTitle())) {
|
if (StringUtil.isNotBlank(queryDto.getCaseTitle())) {
|
||||||
filters.add(FieldFilters.like("caseTitle", LikeMatchMode.ANYWHERE, queryDto.getCaseTitle()));
|
filters.add(FieldFilters.like("caseTitle", LikeMatchMode.ANYWHERE, queryDto.getCaseTitle()));
|
||||||
@@ -61,11 +72,6 @@ public class CaseDocumentLogServiceImpl implements ICaseDocumentLogService {
|
|||||||
filters.add(FieldFilters.le("optTime", queryDto.getOptTimeEnd()));
|
filters.add(FieldFilters.le("optTime", queryDto.getOptTimeEnd()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 接口调用状态
|
|
||||||
if (queryDto.getOptStatus() != null) {
|
|
||||||
filters.add(FieldFilters.eq("optStatus", queryDto.getOptStatus()));
|
|
||||||
}
|
|
||||||
|
|
||||||
// 业务处理状态
|
// 业务处理状态
|
||||||
if (queryDto.getCaseStatus() != null) {
|
if (queryDto.getCaseStatus() != null) {
|
||||||
filters.add(FieldFilters.eq("caseStatus", queryDto.getCaseStatus()));
|
filters.add(FieldFilters.eq("caseStatus", queryDto.getCaseStatus()));
|
||||||
@@ -100,6 +106,13 @@ public class CaseDocumentLogServiceImpl implements ICaseDocumentLogService {
|
|||||||
// 删除标识过滤
|
// 删除标识过滤
|
||||||
filters.add(FieldFilters.eq("deleted", false));
|
filters.add(FieldFilters.eq("deleted", false));
|
||||||
|
|
||||||
|
// 接口调用状态
|
||||||
|
if (queryDto.getOptStatus() != null) {
|
||||||
|
filters.add(FieldFilters.eq("optStatus", queryDto.getOptStatus()));
|
||||||
|
} else {
|
||||||
|
filters.add(FieldFilters.ge("optStatus", 1));
|
||||||
|
}
|
||||||
|
|
||||||
// 案例标题模糊查询
|
// 案例标题模糊查询
|
||||||
if (StringUtil.isNotBlank(queryDto.getCaseTitle())) {
|
if (StringUtil.isNotBlank(queryDto.getCaseTitle())) {
|
||||||
filters.add(FieldFilters.like("caseTitle", LikeMatchMode.ANYWHERE, queryDto.getCaseTitle()));
|
filters.add(FieldFilters.like("caseTitle", LikeMatchMode.ANYWHERE, queryDto.getCaseTitle()));
|
||||||
@@ -118,11 +131,6 @@ public class CaseDocumentLogServiceImpl implements ICaseDocumentLogService {
|
|||||||
filters.add(FieldFilters.le("optTime", queryDto.getOptTimeEnd()));
|
filters.add(FieldFilters.le("optTime", queryDto.getOptTimeEnd()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 接口调用状态
|
|
||||||
if (queryDto.getOptStatus() != null) {
|
|
||||||
filters.add(FieldFilters.eq("optStatus", queryDto.getOptStatus()));
|
|
||||||
}
|
|
||||||
|
|
||||||
// 业务处理状态
|
// 业务处理状态
|
||||||
if (queryDto.getCaseStatus() != null) {
|
if (queryDto.getCaseStatus() != null) {
|
||||||
filters.add(FieldFilters.eq("caseStatus", queryDto.getCaseStatus()));
|
filters.add(FieldFilters.eq("caseStatus", queryDto.getCaseStatus()));
|
||||||
@@ -144,7 +152,7 @@ public class CaseDocumentLogServiceImpl implements ICaseDocumentLogService {
|
|||||||
deletedCount++;
|
deletedCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
log.info("清空日志操作完成,共删除{}\u6761记录", deletedCount);
|
log.info("清空日志操作完成,共删除{}条记录", deletedCount);
|
||||||
return deletedCount;
|
return deletedCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -165,59 +173,50 @@ public class CaseDocumentLogServiceImpl implements ICaseDocumentLogService {
|
|||||||
log.info("开始重试AI调用,原始日志ID: {}, 案例标题: {}, 操作类型: {}",
|
log.info("开始重试AI调用,原始日志ID: {}, 案例标题: {}, 操作类型: {}",
|
||||||
logId, originalLog.getCaseTitle(), originalLog.getOptType());
|
logId, originalLog.getCaseTitle(), originalLog.getOptType());
|
||||||
|
|
||||||
// 2. 创建新的日志记录
|
// 2. 执行AI调用重试逻辑
|
||||||
CaseDocumentLog newLog = new CaseDocumentLog();
|
|
||||||
newLog.setId(IDGenerator.generate());
|
|
||||||
newLog.setTaskId(originalLog.getTaskId());
|
|
||||||
newLog.setCaseId(originalLog.getCaseId());
|
|
||||||
newLog.setCaseTitle(originalLog.getCaseTitle());
|
|
||||||
newLog.setOptType(originalLog.getOptType());
|
|
||||||
newLog.setRequestUrl(originalLog.getRequestUrl());
|
|
||||||
newLog.setRequestBody(originalLog.getRequestBody());
|
|
||||||
newLog.setOptTime(LocalDateTime.now());
|
|
||||||
|
|
||||||
// 3. 执行AI调用重试逻辑
|
|
||||||
boolean retrySuccess = false;
|
boolean retrySuccess = false;
|
||||||
long startTime = System.currentTimeMillis();
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// TODO: 在这里实现具体的AI调用重试逻辑
|
// 根据操作类型调用对应的接口方法
|
||||||
// 模拟执行结果(实际开发时需要替换为真实的AI调用逻辑)
|
String optType = originalLog.getOptType();
|
||||||
log.info("正在执行AI调用重试...");
|
String caseId = originalLog.getCaseId();
|
||||||
|
|
||||||
// 这里应该有真实的AI调用逻辑
|
if (StringUtil.isBlank(caseId)) {
|
||||||
// 例如:
|
throw new IllegalArgumentException("案例ID不能为空");
|
||||||
// String response = aiService.callAI(originalLog.getRequestBody());
|
}
|
||||||
// newLog.setResponseBody(response);
|
|
||||||
|
|
||||||
// 模拟成功的响应
|
log.info("正在执行AI调用重试,操作类型: {}, caseId: {}", optType, caseId);
|
||||||
newLog.setResponseBody("{\"success\": true, \"message\": \"重试成功\"}");
|
|
||||||
newLog.setOptStatus(1); // 1-调用成功
|
|
||||||
newLog.setCaseStatus(1); // 1-处理成功
|
|
||||||
retrySuccess = true;
|
|
||||||
|
|
||||||
log.info("AI调用重试成功");
|
// 根据操作类型执行对应的方法(这些方法内部会自动创建日志记录)
|
||||||
|
if (CaseDocumentLogOptTypeEnum.CREATE.getCode().equals(optType)) {
|
||||||
|
// 上传案例文档
|
||||||
|
retrySuccess = caseKnowledgeService.uploadCaseDocument(caseId);
|
||||||
|
log.info("执行上传案例文档重试,caseId: {}, 结果: {}", caseId, retrySuccess);
|
||||||
|
|
||||||
|
} else if (CaseDocumentLogOptTypeEnum.DELETE.getCode().equals(optType)) {
|
||||||
|
// 删除案例文档
|
||||||
|
retrySuccess = caseKnowledgeService.deleteCaseDocument(caseId);
|
||||||
|
log.info("执行删除案例文档重试,caseId: {}, 结果: {}", caseId, retrySuccess);
|
||||||
|
|
||||||
|
} else if (CaseDocumentLogOptTypeEnum.UPDATE.getCode().equals(optType)) {
|
||||||
|
// 更新案例文档
|
||||||
|
retrySuccess = caseKnowledgeService.updateCaseDocument(caseId);
|
||||||
|
log.info("执行更新案例文档重试,caseId: {}, 结果: {}", caseId, retrySuccess);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
throw new IllegalArgumentException("不支持的操作类型: " + optType);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (retrySuccess) {
|
||||||
|
log.info("AI调用重试成功,操作类型: {}, caseId: {}", optType, caseId);
|
||||||
|
} else {
|
||||||
|
log.warn("AI调用重试失败,操作类型: {}, caseId: {}", optType, caseId);
|
||||||
|
}
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("AI调用重试失败", e);
|
log.error("AI调用重试异常,操作类型: {}, caseId: {}",
|
||||||
newLog.setResponseBody("{\"success\": false, \"error\": \"" + e.getMessage() + "\"}");
|
originalLog.getOptType(), originalLog.getCaseId(), e);
|
||||||
newLog.setOptStatus(2); // 2-调用失败
|
|
||||||
newLog.setCaseStatus(2); // 2-处理失败
|
|
||||||
retrySuccess = false;
|
retrySuccess = false;
|
||||||
} finally {
|
|
||||||
// 4. 记录执行时间
|
|
||||||
long endTime = System.currentTimeMillis();
|
|
||||||
newLog.setExecuteDuration(endTime - startTime);
|
|
||||||
|
|
||||||
// 5. 保存新的日志记录
|
|
||||||
try {
|
|
||||||
caseDocumentLogDao.save(newLog);
|
|
||||||
log.info("重试日志记录保存成功,新日志ID: {}, 执行状态: {}",
|
|
||||||
newLog.getId(), retrySuccess ? "成功" : "失败");
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("保存重试日志记录失败", e);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return retrySuccess;
|
return retrySuccess;
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ public class CaseDocumentLogVo {
|
|||||||
/**
|
/**
|
||||||
* 调用时间
|
* 调用时间
|
||||||
*/
|
*/
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||||
private LocalDateTime optTime;
|
private LocalDateTime optTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user