From 57dd8b14fbc1e725678a942a72a6af269091c34b Mon Sep 17 00:00:00 2001 From: "liu.zixi" Date: Wed, 24 Sep 2025 09:19:34 +0800 Subject: [PATCH] =?UTF-8?q?AI=E8=B0=83=E7=94=A8=E6=97=A5=E5=BF=97=20?= =?UTF-8?q?=E9=87=8D=E8=AF=95=E5=8A=9F=E8=83=BD=E8=A1=A5=E5=AE=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/CaseDocumentLogServiceImpl.java | 109 +++++++++--------- .../module/boecase/vo/CaseDocumentLogVo.java | 2 +- 2 files changed, 55 insertions(+), 56 deletions(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CaseDocumentLogServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CaseDocumentLogServiceImpl.java index eebcfd7b..edeae343 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CaseDocumentLogServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CaseDocumentLogServiceImpl.java @@ -11,6 +11,7 @@ import com.xboe.module.boecase.dao.CaseDocumentLogDao; import com.xboe.module.boecase.dto.CaseDocumentLogQueryDto; import com.xboe.module.boecase.entity.CaseDocumentLog; import com.xboe.module.boecase.service.ICaseDocumentLogService; +import com.xboe.module.boecase.service.ICaseKnowledgeService; import com.xboe.module.boecase.vo.CaseDocumentLogVo; import com.xboe.enums.CaseDocumentLogOptTypeEnum; import lombok.extern.slf4j.Slf4j; @@ -35,6 +36,9 @@ public class CaseDocumentLogServiceImpl implements ICaseDocumentLogService { @Resource private CaseDocumentLogDao caseDocumentLogDao; + @Resource + private ICaseKnowledgeService caseKnowledgeService; + @Override public PageList pageQuery(int pageIndex, int pageSize, CaseDocumentLogQueryDto queryDto) { // 构建查询条件 @@ -43,6 +47,13 @@ public class CaseDocumentLogServiceImpl implements ICaseDocumentLogService { // 删除标识过滤 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())) { 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())); } - // 接口调用状态 - if (queryDto.getOptStatus() != null) { - filters.add(FieldFilters.eq("optStatus", queryDto.getOptStatus())); - } - // 业务处理状态 if (queryDto.getCaseStatus() != null) { filters.add(FieldFilters.eq("caseStatus", queryDto.getCaseStatus())); @@ -100,6 +106,13 @@ public class CaseDocumentLogServiceImpl implements ICaseDocumentLogService { // 删除标识过滤 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())) { 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())); } - // 接口调用状态 - if (queryDto.getOptStatus() != null) { - filters.add(FieldFilters.eq("optStatus", queryDto.getOptStatus())); - } - // 业务处理状态 if (queryDto.getCaseStatus() != null) { filters.add(FieldFilters.eq("caseStatus", queryDto.getCaseStatus())); @@ -144,7 +152,7 @@ public class CaseDocumentLogServiceImpl implements ICaseDocumentLogService { deletedCount++; } - log.info("清空日志操作完成,共删除{}\u6761记录", deletedCount); + log.info("清空日志操作完成,共删除{}条记录", deletedCount); return deletedCount; } @@ -165,59 +173,50 @@ public class CaseDocumentLogServiceImpl implements ICaseDocumentLogService { log.info("开始重试AI调用,原始日志ID: {}, 案例标题: {}, 操作类型: {}", logId, originalLog.getCaseTitle(), originalLog.getOptType()); - // 2. 创建新的日志记录 - 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调用重试逻辑 + // 2. 执行AI调用重试逻辑 boolean retrySuccess = false; - long startTime = System.currentTimeMillis(); try { - // TODO: 在这里实现具体的AI调用重试逻辑 - // 模拟执行结果(实际开发时需要替换为真实的AI调用逻辑) - log.info("正在执行AI调用重试..."); + // 根据操作类型调用对应的接口方法 + String optType = originalLog.getOptType(); + String caseId = originalLog.getCaseId(); - // 这里应该有真实的AI调用逻辑 - // 例如: - // String response = aiService.callAI(originalLog.getRequestBody()); - // newLog.setResponseBody(response); + if (StringUtil.isBlank(caseId)) { + throw new IllegalArgumentException("案例ID不能为空"); + } - // 模拟成功的响应 - newLog.setResponseBody("{\"success\": true, \"message\": \"重试成功\"}"); - newLog.setOptStatus(1); // 1-调用成功 - newLog.setCaseStatus(1); // 1-处理成功 - retrySuccess = true; + log.info("正在执行AI调用重试,操作类型: {}, caseId: {}", optType, caseId); - 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) { - log.error("AI调用重试失败", e); - newLog.setResponseBody("{\"success\": false, \"error\": \"" + e.getMessage() + "\"}"); - newLog.setOptStatus(2); // 2-调用失败 - newLog.setCaseStatus(2); // 2-处理失败 + log.error("AI调用重试异常,操作类型: {}, caseId: {}", + originalLog.getOptType(), originalLog.getCaseId(), e); 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; diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/vo/CaseDocumentLogVo.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/vo/CaseDocumentLogVo.java index c448d81b..5b75c2fe 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/vo/CaseDocumentLogVo.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/vo/CaseDocumentLogVo.java @@ -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; /**