三重一大、重大经济决策调查表数据生成优化
This commit is contained in:
@@ -0,0 +1,169 @@
|
||||
package com.gxwebsoft.ai.controller;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.gxwebsoft.ai.dto.AuditContentRequest;
|
||||
import com.gxwebsoft.ai.entity.AiCloudDoc;
|
||||
import com.gxwebsoft.ai.entity.AiCloudFile;
|
||||
import com.gxwebsoft.common.core.web.ApiResult;
|
||||
import com.gxwebsoft.common.core.web.BaseController;
|
||||
import com.gxwebsoft.common.system.entity.User;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import com.gxwebsoft.ai.service.AiCloudDocService;
|
||||
import com.gxwebsoft.ai.service.AiCloudFileService;
|
||||
import com.gxwebsoft.ai.service.AuditContent3TripleService;
|
||||
import com.gxwebsoft.ai.service.AuditContent3DecisionService;
|
||||
import com.gxwebsoft.ai.service.KnowledgeBaseService;
|
||||
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* 审计内容3控制器 - 三重一大制度对比分析 & 重大经济决策调查表
|
||||
*/
|
||||
@Slf4j
|
||||
@Tag(name = "审计内容3-三重一大制度")
|
||||
@RestController
|
||||
@RequestMapping("/api/ai/auditContent3")
|
||||
public class AuditContent3Controller extends BaseController {
|
||||
|
||||
@Autowired
|
||||
private AuditContent3TripleService auditContent3TripleService;
|
||||
|
||||
@Autowired
|
||||
private AuditContent3DecisionService auditContent3DecisionService;
|
||||
|
||||
@Autowired
|
||||
private AiCloudDocService aiCloudDocService;
|
||||
|
||||
@Autowired
|
||||
private AiCloudFileService aiCloudFileService;
|
||||
|
||||
@Autowired
|
||||
private KnowledgeBaseService knowledgeBaseService;
|
||||
|
||||
/**
|
||||
* 生成三重一大制度对比分析表数据
|
||||
*/
|
||||
@Operation(summary = "生成三重一大制度对比分析表")
|
||||
@PostMapping("/generateTripleOneTable")
|
||||
public ApiResult<?> generateTripleOneTable(@RequestBody AuditContentRequest request) {
|
||||
final User loginUser = getLoginUser();
|
||||
String kbIdTmp = "";
|
||||
|
||||
try {
|
||||
// 创建临时知识库(如果需要)
|
||||
if (!request.getDocList().isEmpty() || !request.getFileList().isEmpty()) {
|
||||
kbIdTmp = createTempKnowledgeBase(request);
|
||||
}
|
||||
|
||||
// 生成三重一大制度对比分析表数据
|
||||
String knowledgeBaseId = StrUtil.isNotBlank(kbIdTmp) ? kbIdTmp : request.getKbIds();
|
||||
JSONObject result = auditContent3TripleService.generateTripleOneTableData(
|
||||
knowledgeBaseId,
|
||||
request.getLibraryIds(),
|
||||
request.getProjectLibrary(),
|
||||
loginUser.getUsername(),
|
||||
request.getHistory(),
|
||||
request.getSuggestion()
|
||||
);
|
||||
|
||||
return success(result);
|
||||
} catch (Exception e) {
|
||||
log.error("生成三重一大制度对比分析表失败", e);
|
||||
return fail("生成三重一大制度对比分析表失败: " + e.getMessage());
|
||||
} finally {
|
||||
cleanupTempKnowledgeBase(kbIdTmp);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成重大经济决策调查表数据
|
||||
*/
|
||||
@Operation(summary = "生成重大经济决策调查表")
|
||||
@PostMapping("/generateDecisionTable")
|
||||
public ApiResult<?> generateDecisionTable(@RequestBody AuditContentRequest request) {
|
||||
final User loginUser = getLoginUser();
|
||||
String kbIdTmp = "";
|
||||
|
||||
try {
|
||||
// 创建临时知识库(如果需要)
|
||||
if (!request.getDocList().isEmpty() || !request.getFileList().isEmpty()) {
|
||||
kbIdTmp = createTempKnowledgeBase(request);
|
||||
}
|
||||
|
||||
// 生成重大经济决策调查表数据
|
||||
String knowledgeBaseId = StrUtil.isNotBlank(kbIdTmp) ? kbIdTmp : request.getKbIds();
|
||||
JSONObject result = auditContent3DecisionService.generateDecisionTableData(
|
||||
knowledgeBaseId,
|
||||
request.getLibraryIds(),
|
||||
request.getProjectLibrary(),
|
||||
loginUser.getUsername(),
|
||||
request.getHistory(),
|
||||
request.getSuggestion(),
|
||||
request.getData()
|
||||
);
|
||||
|
||||
return success(result);
|
||||
} catch (Exception e) {
|
||||
log.error("生成重大经济决策调查表失败", e);
|
||||
return fail("生成重大经济决策调查表失败: " + e.getMessage());
|
||||
} finally {
|
||||
cleanupTempKnowledgeBase(kbIdTmp);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建临时知识库并提交文档
|
||||
*/
|
||||
private String createTempKnowledgeBase(AuditContentRequest request) {
|
||||
String kbIdTmp = knowledgeBaseService.createKnowledgeBaseTemp();
|
||||
|
||||
// 收集文档ID
|
||||
Set<Integer> docIds = request.getDocList().stream()
|
||||
.flatMap(docId -> aiCloudDocService.getSelfAndChildren(docId).stream())
|
||||
.map(AiCloudDoc::getId)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
// 查询相关文件
|
||||
LambdaQueryWrapper<AiCloudFile> queryWrapper = new LambdaQueryWrapper<AiCloudFile>()
|
||||
.in(!docIds.isEmpty(), AiCloudFile::getDocId, docIds)
|
||||
.or(!request.getFileList().isEmpty())
|
||||
.in(!request.getFileList().isEmpty(), AiCloudFile::getId, request.getFileList());
|
||||
|
||||
List<AiCloudFile> fileList = aiCloudFileService.list(queryWrapper);
|
||||
|
||||
// 提取文件ID并提交到知识库
|
||||
Set<String> kbFileIds = fileList.stream()
|
||||
.map(AiCloudFile::getFileId)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
if (!kbFileIds.isEmpty()) {
|
||||
knowledgeBaseService.submitDocuments(kbIdTmp, new ArrayList<>(kbFileIds));
|
||||
}
|
||||
|
||||
return kbIdTmp;
|
||||
}
|
||||
|
||||
/**
|
||||
* 清理临时知识库
|
||||
*/
|
||||
private void cleanupTempKnowledgeBase(String kbId) {
|
||||
if (StrUtil.isNotBlank(kbId)) {
|
||||
try {
|
||||
knowledgeBaseService.deleteIndex(kbId);
|
||||
} catch (Exception e) {
|
||||
log.warn("删除临时知识库失败: {}", kbId, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user