|
@@ -9,26 +9,23 @@ import com.takai.ai.domain.dto.*;
|
|
|
import com.takai.ai.domain.entity.*;
|
|
import com.takai.ai.domain.entity.*;
|
|
|
import com.takai.ai.mapper.*;
|
|
import com.takai.ai.mapper.*;
|
|
|
import com.takai.ai.service.ITakaiAiService;
|
|
import com.takai.ai.service.ITakaiAiService;
|
|
|
-import com.takai.ai.utils.ApprovalFlowManager;
|
|
|
|
|
-import com.takai.ai.utils.ApprovalNode;
|
|
|
|
|
-import com.takai.ai.utils.MinioUtil;
|
|
|
|
|
-import com.takai.ai.utils.SnowflakeDigitGenerator;
|
|
|
|
|
|
|
+import com.takai.ai.utils.*;
|
|
|
import com.takai.common.annotation.DataSource;
|
|
import com.takai.common.annotation.DataSource;
|
|
|
import com.takai.common.config.DeepseekConfig;
|
|
import com.takai.common.config.DeepseekConfig;
|
|
|
|
|
+import com.takai.common.constant.UserConstants;
|
|
|
import com.takai.common.core.domain.entity.SysDictData;
|
|
import com.takai.common.core.domain.entity.SysDictData;
|
|
|
|
|
+import com.takai.common.core.domain.entity.SysUser;
|
|
|
|
|
+import com.takai.common.core.domain.model.LoginUser;
|
|
|
import com.takai.common.core.redis.RedisCache;
|
|
import com.takai.common.core.redis.RedisCache;
|
|
|
|
|
+import com.takai.common.enums.AppTypeEnum;
|
|
|
import com.takai.common.enums.DataSourceType;
|
|
import com.takai.common.enums.DataSourceType;
|
|
|
import com.takai.common.utils.SecurityUtils;
|
|
import com.takai.common.utils.SecurityUtils;
|
|
|
import com.takai.common.utils.StringUtils;
|
|
import com.takai.common.utils.StringUtils;
|
|
|
import com.takai.common.utils.uuid.IdUtils;
|
|
import com.takai.common.utils.uuid.IdUtils;
|
|
|
import com.takai.framework.web.service.SysPermissionService;
|
|
import com.takai.framework.web.service.SysPermissionService;
|
|
|
-import com.takai.system.domain.DocumentAuditConfig;
|
|
|
|
|
-import com.takai.system.domain.DocumentAuditInfo;
|
|
|
|
|
-import com.takai.system.domain.TypeApp;
|
|
|
|
|
-import com.takai.system.mapper.SysDictDataMapper;
|
|
|
|
|
-import com.takai.system.mapper.TypeAppMapper;
|
|
|
|
|
-import com.takai.system.mapper.DocumentAuditConfigMapper;
|
|
|
|
|
-import com.takai.system.mapper.DocumentAuditInfoMapper;
|
|
|
|
|
|
|
+import com.takai.system.domain.*;
|
|
|
|
|
+import com.takai.system.mapper.*;
|
|
|
|
|
+import com.takai.system.service.ISysUserService;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import okhttp3.*;
|
|
import okhttp3.*;
|
|
|
import okhttp3.sse.EventSource;
|
|
import okhttp3.sse.EventSource;
|
|
@@ -37,6 +34,7 @@ import okhttp3.sse.EventSources;
|
|
|
import org.apache.commons.collections4.MapUtils;
|
|
import org.apache.commons.collections4.MapUtils;
|
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.redis.core.RedisTemplate;
|
|
import org.springframework.data.redis.core.RedisTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
@@ -125,15 +123,26 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private SysDictDataMapper sysDictDataMapper;
|
|
private SysDictDataMapper sysDictDataMapper;
|
|
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private SysProjectAppMapper sysProjectAppMapper;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private TakaiFileInfoMapper fileInfoMapper;
|
|
|
|
|
+
|
|
|
public static final String START_SIGN = "【";
|
|
public static final String START_SIGN = "【";
|
|
|
public static final String END_SIGN = "】";
|
|
public static final String END_SIGN = "】";
|
|
|
public static final String SYMBOL = "【示意图序号";
|
|
public static final String SYMBOL = "【示意图序号";
|
|
|
|
|
|
|
|
public static final String USER_STR = "user";
|
|
public static final String USER_STR = "user";
|
|
|
|
|
|
|
|
- public static final String TODAY = "今天";
|
|
|
|
|
|
|
+ public static final String TODAY = "今日";
|
|
|
|
|
|
|
|
- public static final String BEFOR = "天前";
|
|
|
|
|
|
|
+ public static final String BEFOR = "日前";
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private SysProjectMapper sysProjectMapper;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private ISysUserService userService;
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public void initDeepseekInfo() {
|
|
public void initDeepseekInfo() {
|
|
@@ -146,9 +155,9 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
//获取知识库列表
|
|
//获取知识库列表
|
|
|
List<TakaiKnowledge> knowledgeList = null;
|
|
List<TakaiKnowledge> knowledgeList = null;
|
|
|
if (StringUtils.isEmpty(knowledgeId)) {
|
|
if (StringUtils.isEmpty(knowledgeId)) {
|
|
|
- knowledgeList = takaiKnowledgeMapper.selectKnowledgeList(null);
|
|
|
|
|
|
|
+ knowledgeList = takaiKnowledgeMapper.selectAllKnowledgeList(null);
|
|
|
} else {
|
|
} else {
|
|
|
- knowledgeList = takaiKnowledgeMapper.selectKnowledgeList(TakaiKnowledge.builder().knowledgeId(knowledgeId).build());
|
|
|
|
|
|
|
+ knowledgeList = takaiKnowledgeMapper.selectAllKnowledgeList(TakaiKnowledge.builder().knowledgeId(knowledgeId).build());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//获取知识列表
|
|
//获取知识列表
|
|
@@ -176,16 +185,32 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
public SseEmitter sseInvoke(TakaiSseInfoParams sseParams) {
|
|
public SseEmitter sseInvoke(TakaiSseInfoParams sseParams) {
|
|
|
TakaiApplication appInfo = takaiApplicationMapper.selectTargetApplication(TakaiApplication.builder().appId(sseParams.getAppId()).build());
|
|
TakaiApplication appInfo = takaiApplicationMapper.selectTargetApplication(TakaiApplication.builder().appId(sseParams.getAppId()).build());
|
|
|
if (appInfo != null) {
|
|
if (appInfo != null) {
|
|
|
- TakaiKnowledge knowledge = takaiKnowledgeMapper.selectTargetKnowledge(TakaiKnowledge.builder().knowledgeId(appInfo.getKnowledgeIds()).build());
|
|
|
|
|
- if (knowledge != null) {
|
|
|
|
|
|
|
+ List<String> idList = Arrays.stream(appInfo.getKnowledgeIds().split(",")) // 按「逗号+空格」拆分字符串为数组
|
|
|
|
|
+ .filter(str -> str != null && !str.trim().isEmpty()) // 过滤 null 和空字符串(防异常)
|
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
+ TakaiKnowledge knowledgeParam = TakaiKnowledge.builder().knowledgeIds(idList).build();
|
|
|
|
|
+ List<TakaiKnowledge> knowledgeList = takaiKnowledgeMapper.selectAllKnowledgeList(knowledgeParam);
|
|
|
|
|
+ if (knowledgeList != null && !knowledgeList.isEmpty()) {
|
|
|
SseEmitter sseEmitter = new SseEmitter(0L);
|
|
SseEmitter sseEmitter = new SseEmitter(0L);
|
|
|
String url = deepseekConfig.getBaseurl() + deepseekConfig.getChat();
|
|
String url = deepseekConfig.getBaseurl() + deepseekConfig.getChat();
|
|
|
TakaiAppInfo info = takaiAppInfoMapper.selectAppInfoByAppId(sseParams.getAppId());
|
|
TakaiAppInfo info = takaiAppInfoMapper.selectAppInfoByAppId(sseParams.getAppId());
|
|
|
JSONObject json = JSONObject.parseObject(info.getAppInfo());
|
|
JSONObject json = JSONObject.parseObject(info.getAppInfo());
|
|
|
- String query = sseParams.getPrompt().get(sseParams.getPrompt().size() - 1).getContent();
|
|
|
|
|
|
|
+ //重新设置knowledgeIds为数组
|
|
|
|
|
+ json.put("knowledgeIds",idList);
|
|
|
|
|
+ String query = null;
|
|
|
|
|
+ if(sseParams.getMessages() != null && !sseParams.getMessages().isEmpty() ) {
|
|
|
|
|
+ query = sseParams.getMessages().get(sseParams.getMessages().size() - 1).getContent();
|
|
|
|
|
+ } else {
|
|
|
|
|
+ query = sseParams.getPrompt().get(sseParams.getPrompt().size() - 1).getContent();
|
|
|
|
|
+ }
|
|
|
log.info("deepseek聊天请求参数:" + query);
|
|
log.info("deepseek聊天请求参数:" + query);
|
|
|
json.put("query", query);
|
|
json.put("query", query);
|
|
|
- json.put("embeddingId", knowledge.getEmbeddingId());
|
|
|
|
|
|
|
+ json.put("embeddingId", knowledgeList.get(0).getEmbeddingId());
|
|
|
|
|
+ if(UserConstants.YES.equals(json.getString("isDeepThink"))) {
|
|
|
|
|
+ json.put("enable_think", true);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ json.put("enable_think", false);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8"), json.toJSONString());
|
|
RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8"), json.toJSONString());
|
|
|
Request request = buildPostRequest(url, requestBody);
|
|
Request request = buildPostRequest(url, requestBody);
|
|
@@ -386,6 +411,19 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
if(StringUtils.isNotEmpty(dto.getSliceJson())){
|
|
if(StringUtils.isNotEmpty(dto.getSliceJson())){
|
|
|
dto.setSliceInfo(JSON.parseObject(dto.getSliceJson(), TakaiSliceInfoDTO.class));
|
|
dto.setSliceInfo(JSON.parseObject(dto.getSliceJson(), TakaiSliceInfoDTO.class));
|
|
|
}
|
|
}
|
|
|
|
|
+ if("user".equals(dto.getType())){
|
|
|
|
|
+ List<TakaiFileInfo> fileInfoList = fileInfoMapper.getFileInfoById(null, dto.getDialog_id(), dto.getDid());
|
|
|
|
|
+
|
|
|
|
|
+ if(fileInfoList != null && !fileInfoList.isEmpty()){
|
|
|
|
|
+ List<TakaiDocumentDTO> documentDTOS = new ArrayList<>();
|
|
|
|
|
+ for(TakaiFileInfo fileInfo : fileInfoList){
|
|
|
|
|
+ TakaiDocumentDTO documentDTO = new TakaiDocumentDTO();
|
|
|
|
|
+ BeanUtils.copyProperties(fileInfo, documentDTO);
|
|
|
|
|
+ documentDTOS.add(documentDTO);
|
|
|
|
|
+ }
|
|
|
|
|
+ dto.setDocuments(documentDTOS);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
return detail;
|
|
return detail;
|
|
@@ -413,6 +451,24 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
if (dto.getSliceInfo() != null) dto.setSliceJson(JSON.toJSONString(dto.getSliceInfo()));
|
|
if (dto.getSliceInfo() != null) dto.setSliceJson(JSON.toJSONString(dto.getSliceInfo()));
|
|
|
takaiDialogMapper.insertDialogDetail(dto);
|
|
takaiDialogMapper.insertDialogDetail(dto);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ if(dto.getDocuments() != null && !dto.getDocuments().isEmpty()){
|
|
|
|
|
+ for(TakaiDocumentDTO documentVo : dto.getDocuments()){
|
|
|
|
|
+ if(!"".equals(documentVo.getId())) {
|
|
|
|
|
+ List<TakaiFileInfo> fileInfo = fileInfoMapper.getFileInfoById(documentVo.getId(), null, null);
|
|
|
|
|
+ if((fileInfo == null || fileInfo.isEmpty()) && "user".equals(dto.getRole())) {
|
|
|
|
|
+ TakaiFileInfo params = new TakaiFileInfo();
|
|
|
|
|
+ params.setId(documentVo.getId());
|
|
|
|
|
+ params.setName(documentVo.getName());
|
|
|
|
|
+ params.setUrl(documentVo.getUrl());
|
|
|
|
|
+ params.setDialogId(dialogId);
|
|
|
|
|
+ params.setDialogDid(dto.getId());
|
|
|
|
|
+ fileInfoMapper.insertFileInfo(params);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -476,6 +532,7 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8"), jsonObject.toJSONString());
|
|
RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8"), jsonObject.toJSONString());
|
|
|
Request request = buildPostRequest(url, requestBody);
|
|
Request request = buildPostRequest(url, requestBody);
|
|
|
OkHttpClient client = buildOkHttpClient();
|
|
OkHttpClient client = buildOkHttpClient();
|
|
|
|
|
+ String createdBy = SecurityUtils.getLoginUser() == null ? "":SecurityUtils.getLoginUser().getUserId();
|
|
|
try {
|
|
try {
|
|
|
Response response = client.newCall(request).execute();
|
|
Response response = client.newCall(request).execute();
|
|
|
if (response.isSuccessful()) {
|
|
if (response.isSuccessful()) {
|
|
@@ -488,7 +545,9 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
.name(knowledge.getName())
|
|
.name(knowledge.getName())
|
|
|
.embeddingId(knowledge.getEmbeddingId())
|
|
.embeddingId(knowledge.getEmbeddingId())
|
|
|
.description(knowledge.getDescription())
|
|
.description(knowledge.getDescription())
|
|
|
|
|
+ .visible(knowledge.getVisible())
|
|
|
.build();
|
|
.build();
|
|
|
|
|
+ params.setCreateBy(createdBy);
|
|
|
return takaiKnowledgeMapper.insertKnowledge(params);
|
|
return takaiKnowledgeMapper.insertKnowledge(params);
|
|
|
}
|
|
}
|
|
|
} else {
|
|
} else {
|
|
@@ -506,7 +565,11 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
.name(knowledge.getName())
|
|
.name(knowledge.getName())
|
|
|
.description(knowledge.getDescription())
|
|
.description(knowledge.getDescription())
|
|
|
.embeddingId(knowledge.getEmbeddingId())
|
|
.embeddingId(knowledge.getEmbeddingId())
|
|
|
|
|
+ .visible(knowledge.getVisible())
|
|
|
.build();
|
|
.build();
|
|
|
|
|
+ String updateBy = SecurityUtils.getLoginUser() == null ? "":SecurityUtils.getLoginUser().getUserId();
|
|
|
|
|
+ params.setUpdateBy(updateBy);
|
|
|
|
|
+ params.setUpdateTime(new Date());
|
|
|
return takaiKnowledgeMapper.updateKnowledge(params);
|
|
return takaiKnowledgeMapper.updateKnowledge(params);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -590,7 +653,7 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
TakaiDocumentSettings settings = new TakaiDocumentSettings();
|
|
TakaiDocumentSettings settings = new TakaiDocumentSettings();
|
|
|
settings.setKnowledgeId(knowledgeId);
|
|
settings.setKnowledgeId(knowledgeId);
|
|
|
JSONObject jsonObject = analysisFile(params, settings, "upload");
|
|
JSONObject jsonObject = analysisFile(params, settings, "upload");
|
|
|
-
|
|
|
|
|
|
|
+ String updateBy = SecurityUtils.getLoginUser() == null ? "":SecurityUtils.getLoginUser().getUserId();
|
|
|
if (jsonObject != null && jsonObject.containsKey("code") && jsonObject.getInteger("code") == 200) {
|
|
if (jsonObject != null && jsonObject.containsKey("code") && jsonObject.getInteger("code") == 200) {
|
|
|
for (UploadDocumentParams vo : params) {
|
|
for (UploadDocumentParams vo : params) {
|
|
|
// 更新知识库文件大小,总字符数, 文件总数
|
|
// 更新知识库文件大小,总字符数, 文件总数
|
|
@@ -617,6 +680,7 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
.length(fileLen)
|
|
.length(fileLen)
|
|
|
.wordNum(wordNum)
|
|
.wordNum(wordNum)
|
|
|
.build();
|
|
.build();
|
|
|
|
|
+ document.setCreateBy(updateBy);
|
|
|
int documentIdInsert = takaiDocumentMapper.insertDocument(document);
|
|
int documentIdInsert = takaiDocumentMapper.insertDocument(document);
|
|
|
|
|
|
|
|
if (documentIdInsert > 0) {
|
|
if (documentIdInsert > 0) {
|
|
@@ -652,11 +716,14 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
.mapToInt(doc -> doc.getWordNum() != null ? doc.getWordNum() : 0)
|
|
.mapToInt(doc -> doc.getWordNum() != null ? doc.getWordNum() : 0)
|
|
|
.sum();
|
|
.sum();
|
|
|
int docSize = documentList == null || documentList.size() == 0 ? 0 : documentList.size();
|
|
int docSize = documentList == null || documentList.size() == 0 ? 0 : documentList.size();
|
|
|
|
|
+ String updateBy = SecurityUtils.getLoginUser() == null ? "":SecurityUtils.getLoginUser().getUserId();
|
|
|
TakaiKnowledge paramInfo = TakaiKnowledge.builder().knowledgeId(knowledgeId)
|
|
TakaiKnowledge paramInfo = TakaiKnowledge.builder().knowledgeId(knowledgeId)
|
|
|
.length(totalLen) // 文件大小
|
|
.length(totalLen) // 文件大小
|
|
|
.wordNum(totalWordNum) // 总字符数
|
|
.wordNum(totalWordNum) // 总字符数
|
|
|
.documentSize(docSize) // 文件总数
|
|
.documentSize(docSize) // 文件总数
|
|
|
.build();
|
|
.build();
|
|
|
|
|
+ paramInfo.setUpdateBy(updateBy);
|
|
|
|
|
+ paramInfo.setUpdateTime(new Date());
|
|
|
takaiKnowledgeMapper.updateKnowledge(paramInfo);
|
|
takaiKnowledgeMapper.updateKnowledge(paramInfo);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -674,8 +741,9 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
.documentId(documentId)
|
|
.documentId(documentId)
|
|
|
.length(totalSize)
|
|
.length(totalSize)
|
|
|
.wordNum(totalLen)
|
|
.wordNum(totalLen)
|
|
|
|
|
+ .sliceTotal(sliceList.size())
|
|
|
.build();
|
|
.build();
|
|
|
- String updateBy = SecurityUtils.getLoginUser() == null ? "":SecurityUtils.getLoginUser().getUsername();
|
|
|
|
|
|
|
+ String updateBy = SecurityUtils.getLoginUser() == null ? "":SecurityUtils.getLoginUser().getUserId();
|
|
|
doc.setUpdateBy(updateBy);
|
|
doc.setUpdateBy(updateBy);
|
|
|
doc.setUpdateTime(new Date());
|
|
doc.setUpdateTime(new Date());
|
|
|
takaiDocumentMapper.updateDocument(doc);
|
|
takaiDocumentMapper.updateDocument(doc);
|
|
@@ -767,7 +835,7 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
.name(params.getName())
|
|
.name(params.getName())
|
|
|
.desc(params.getDesc())
|
|
.desc(params.getDesc())
|
|
|
.model(params.getModel())
|
|
.model(params.getModel())
|
|
|
- .knowledgeIds(params.getKnowledge_ids().toString())
|
|
|
|
|
|
|
+ .knowledgeIds(params.getKnowledge_ids().stream().collect(Collectors.joining(",")))
|
|
|
.topP(params.getTop_p())
|
|
.topP(params.getTop_p())
|
|
|
.temperature(params.getTemperature())
|
|
.temperature(params.getTemperature())
|
|
|
.maxToken(params.getMax_token())
|
|
.maxToken(params.getMax_token())
|
|
@@ -775,8 +843,20 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
.knowledgeInfo(params.getKnowledge_info())
|
|
.knowledgeInfo(params.getKnowledge_info())
|
|
|
.sliceCount(params.getSlice_count())
|
|
.sliceCount(params.getSlice_count())
|
|
|
.typeId(params.getTypeId())
|
|
.typeId(params.getTypeId())
|
|
|
|
|
+ .visible(params.getVisible())
|
|
|
|
|
+ .isDeepThink(params.getIsDeepThink())
|
|
|
.build();
|
|
.build();
|
|
|
- if(isAdmin){
|
|
|
|
|
|
|
+ //关联项目
|
|
|
|
|
+ if(params.getAppProId() != null){
|
|
|
|
|
+ SysProjectApp sysProjectApp = new SysProjectApp();
|
|
|
|
|
+ sysProjectApp.setProjectId(params.getAppProId()[1]);
|
|
|
|
|
+ sysProjectApp.setAppId(info.getAppId());
|
|
|
|
|
+ sysProjectAppMapper.insertSysProjectApp(sysProjectApp);
|
|
|
|
|
+ }
|
|
|
|
|
+ //管理员,私有,项目级应用不需要审核
|
|
|
|
|
+ if(isAdmin
|
|
|
|
|
+ || "1".equals(params.getVisible())
|
|
|
|
|
+ || AppTypeEnum.PROJECT.getCode().equals(String.valueOf(params.getTypeId()))){ // 1 私有 0 公开
|
|
|
info.setStatus("3"); // 有直接创建权限无需审核
|
|
info.setStatus("3"); // 有直接创建权限无需审核
|
|
|
}else{
|
|
}else{
|
|
|
info.setStatus("5"); // 未开始审核状态
|
|
info.setStatus("5"); // 未开始审核状态
|
|
@@ -786,6 +866,18 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
info.setCreateBy(params.getUserId());
|
|
info.setCreateBy(params.getUserId());
|
|
|
int i = takaiApplicationMapper.insertApplication(info);
|
|
int i = takaiApplicationMapper.insertApplication(info);
|
|
|
if (i > 0) {
|
|
if (i > 0) {
|
|
|
|
|
+ //添加VIP用户
|
|
|
|
|
+ if(params.getVipList() != null && params.getVipList().size() > 0){
|
|
|
|
|
+ for(SysUser sysUser : params.getVipList()){
|
|
|
|
|
+ VipApplication vipApplication =
|
|
|
|
|
+ VipApplication.builder()
|
|
|
|
|
+ .appId(info.getAppId())
|
|
|
|
|
+ .userId(sysUser.getUserId())
|
|
|
|
|
+ .build();
|
|
|
|
|
+ takaiApplicationMapper.insertVipApp(vipApplication);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
TypeApp appType = new TypeApp();
|
|
TypeApp appType = new TypeApp();
|
|
|
appType.setTypeId(params.getTypeId() == null ? null : params.getTypeId());
|
|
appType.setTypeId(params.getTypeId() == null ? null : params.getTypeId());
|
|
|
appType.setAppId(String.valueOf(appId));
|
|
appType.setAppId(String.valueOf(appId));
|
|
@@ -824,7 +916,7 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
.name(params.getName())
|
|
.name(params.getName())
|
|
|
.desc(params.getDesc())
|
|
.desc(params.getDesc())
|
|
|
.model(params.getModel())
|
|
.model(params.getModel())
|
|
|
- .knowledgeIds(params.getKnowledge_ids().toString())
|
|
|
|
|
|
|
+ .knowledgeIds(params.getKnowledge_ids().stream().collect(Collectors.joining(",")))
|
|
|
.topP(params.getTop_p())
|
|
.topP(params.getTop_p())
|
|
|
.temperature(params.getTemperature())
|
|
.temperature(params.getTemperature())
|
|
|
.maxToken(params.getMax_token())
|
|
.maxToken(params.getMax_token())
|
|
@@ -832,8 +924,21 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
.knowledgeInfo(params.getKnowledge_info())
|
|
.knowledgeInfo(params.getKnowledge_info())
|
|
|
.sliceCount(params.getSlice_count())
|
|
.sliceCount(params.getSlice_count())
|
|
|
.typeId(params.getTypeId())
|
|
.typeId(params.getTypeId())
|
|
|
|
|
+ .isDeepThink(params.getIsDeepThink())
|
|
|
|
|
+ .visible(params.getVisible())
|
|
|
.build();
|
|
.build();
|
|
|
- if(isAdmin){
|
|
|
|
|
|
|
+ //关联项目
|
|
|
|
|
+ if(params.getAppProId() != null){
|
|
|
|
|
+ SysProjectApp sysProjectApp = sysProjectAppMapper.selectSysProjectAppByAppId(appId);
|
|
|
|
|
+ if(sysProjectApp != null){
|
|
|
|
|
+ sysProjectAppMapper.deleteSysProjectAppByAppId(appId);
|
|
|
|
|
+ }
|
|
|
|
|
+ sysProjectApp = new SysProjectApp();
|
|
|
|
|
+ sysProjectApp.setProjectId(params.getAppProId()[1]);
|
|
|
|
|
+ sysProjectApp.setAppId(appId);
|
|
|
|
|
+ sysProjectAppMapper.insertSysProjectApp(sysProjectApp);
|
|
|
|
|
+ }
|
|
|
|
|
+ if(isAdmin || "1".equals(params.getVisible())){
|
|
|
info.setStatus("3"); // 有直接修改权限无需审核
|
|
info.setStatus("3"); // 有直接修改权限无需审核
|
|
|
info.setApprover(null);
|
|
info.setApprover(null);
|
|
|
info.setNodeOrder(null);
|
|
info.setNodeOrder(null);
|
|
@@ -845,6 +950,19 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
info.setUpdateBy(params.getUserId());
|
|
info.setUpdateBy(params.getUserId());
|
|
|
int i = takaiApplicationMapper.updateApplication(info);
|
|
int i = takaiApplicationMapper.updateApplication(info);
|
|
|
if (1 > 0) {
|
|
if (1 > 0) {
|
|
|
|
|
+ //添加VIP用户
|
|
|
|
|
+ takaiApplicationMapper.deleteVipByAppId(info.getAppId());
|
|
|
|
|
+ if(params.getVipList() != null && params.getVipList().size() > 0){
|
|
|
|
|
+ for(SysUser sysUser : params.getVipList()){
|
|
|
|
|
+ VipApplication vipApplication =
|
|
|
|
|
+ VipApplication.builder()
|
|
|
|
|
+ .appId(info.getAppId())
|
|
|
|
|
+ .userId(sysUser.getUserId())
|
|
|
|
|
+ .build();
|
|
|
|
|
+ takaiApplicationMapper.insertVipApp(vipApplication);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
TakaiAppInfo appInfo = new TakaiAppInfo();
|
|
TakaiAppInfo appInfo = new TakaiAppInfo();
|
|
|
appInfo.setAppId(appId);
|
|
appInfo.setAppId(appId);
|
|
|
appInfo.setAppInfo(String.valueOf(JSONObject.from(info).toJSONString()));
|
|
appInfo.setAppInfo(String.valueOf(JSONObject.from(info).toJSONString()));
|
|
@@ -871,16 +989,53 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public List<TakaiApplicationResult> getApplicationList(TakaiApplication params) {
|
|
public List<TakaiApplicationResult> getApplicationList(TakaiApplication params) {
|
|
|
- return takaiApplicationMapper.selectApplicationList(params);
|
|
|
|
|
|
|
+ //管理员 获取所有项目
|
|
|
|
|
+ Map<String,Object> userParams = getUserParams();
|
|
|
|
|
+ if(userParams != null){
|
|
|
|
|
+ params.setParams(userParams);
|
|
|
|
|
+ }
|
|
|
|
|
+ List<TakaiApplicationResult> appList = takaiApplicationMapper.selectApplicationList(params);
|
|
|
|
|
+ //添加应用VIP用户
|
|
|
|
|
+// if(appList != null && appList.size() > 0){
|
|
|
|
|
+// for (TakaiApplicationResult appResult : appList) {
|
|
|
|
|
+// List<SysUser> vipList = userService.selectAppVipList(appResult.getAppId());
|
|
|
|
|
+// appResult.setVipList(vipList);
|
|
|
|
|
+// }
|
|
|
|
|
+// }
|
|
|
|
|
+ return appList;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public JSONObject selectApplication(String appId) {
|
|
public JSONObject selectApplication(String appId) {
|
|
|
JSONObject object = new JSONObject();
|
|
JSONObject object = new JSONObject();
|
|
|
TakaiApplication application = TakaiApplication.builder().appId(appId).build();
|
|
TakaiApplication application = TakaiApplication.builder().appId(appId).build();
|
|
|
TakaiApplication takaiApplication = takaiApplicationMapper.selectTargetApplication(application);
|
|
TakaiApplication takaiApplication = takaiApplicationMapper.selectTargetApplication(application);
|
|
|
|
|
+ //项目级应用 返回['项目分类','项目id']
|
|
|
|
|
+ if(takaiApplication != null) {
|
|
|
|
|
+ //添加应用VIP用户
|
|
|
|
|
+ List<SysUser> vipList = userService.selectAppVipList(appId);
|
|
|
|
|
+ takaiApplication.setVipList(vipList);
|
|
|
|
|
+
|
|
|
|
|
+ if(AppTypeEnum.PROJECT.getCode().equals(String.valueOf(takaiApplication.getTypeId()))) {
|
|
|
|
|
+ SysProjectApp sysProjectApp = sysProjectAppMapper.selectSysProjectAppByAppId(application.getAppId());
|
|
|
|
|
+ if (sysProjectApp != null) {
|
|
|
|
|
+ SysProject sysProject = sysProjectMapper.selectSysProjectByProjectId(sysProjectApp.getProjectId());
|
|
|
|
|
+ takaiApplication.setAppProId(Arrays.asList(
|
|
|
|
|
+ String.valueOf(sysProject.getSourceFrom()),
|
|
|
|
|
+ String.valueOf(sysProject.getProjectId())));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ List<String> idList = Arrays.stream(takaiApplication.getKnowledgeIds().split(",")) // 按「逗号+空格」拆分字符串为数组
|
|
|
|
|
+ .filter(str -> str != null && !str.trim().isEmpty()) // 过滤 null 和空字符串(防异常)
|
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
+ JSONObject detailObj = JSONObject.from(takaiApplication); // 转为JSON对象
|
|
|
|
|
+ detailObj.put("knowledgeIds", idList); // 用数组替换原字符串
|
|
|
|
|
+ object.put("detail", detailObj);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ object.put("detail", takaiApplication);
|
|
|
|
|
+ }
|
|
|
List<TakaiQuestionDTO> list = takaiQuestionMapper.getQuestionList(appId);
|
|
List<TakaiQuestionDTO> list = takaiQuestionMapper.getQuestionList(appId);
|
|
|
- object.put("detail", takaiApplication);
|
|
|
|
|
object.put("questionlist", list);
|
|
object.put("questionlist", list);
|
|
|
return object;
|
|
return object;
|
|
|
}
|
|
}
|
|
@@ -891,6 +1046,7 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
if (i > 0) {
|
|
if (i > 0) {
|
|
|
takaiAppInfoMapper.delAppInfoByAppId(appId);
|
|
takaiAppInfoMapper.delAppInfoByAppId(appId);
|
|
|
takaiQuestionMapper.delQuestionByAppId(appId);
|
|
takaiQuestionMapper.delQuestionByAppId(appId);
|
|
|
|
|
+ takaiApplicationMapper.delApplication(appId);
|
|
|
}
|
|
}
|
|
|
return i;
|
|
return i;
|
|
|
}
|
|
}
|
|
@@ -903,14 +1059,46 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public List<TakaiKnowledge> queryKnowledgeList() {
|
|
public List<TakaiKnowledge> queryKnowledgeList() {
|
|
|
- return takaiKnowledgeMapper.selectKnowledgeList(null);
|
|
|
|
|
|
|
+ //管理员 获取所有项目
|
|
|
|
|
+ TakaiKnowledge params = getKnowledgeUserParams();
|
|
|
|
|
+ return takaiKnowledgeMapper.selectKnowledgeList(params);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private TakaiKnowledge getKnowledgeUserParams() {
|
|
|
|
|
+ TakaiKnowledge params = null;
|
|
|
|
|
+ //管理员 获取所有项目
|
|
|
|
|
+ Map<String,Object> userParams = getUserParams();
|
|
|
|
|
+ if(userParams != null){
|
|
|
|
|
+ params = TakaiKnowledge.builder().build();
|
|
|
|
|
+ params.setParams(userParams);
|
|
|
|
|
+ }
|
|
|
|
|
+ return params;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private Map<String,Object> getUserParams() {
|
|
|
|
|
+ //管理员 获取所有项目
|
|
|
|
|
+ LoginUser user = SecurityUtils.getLoginUser();
|
|
|
|
|
+ Map<String,Object> userParams = null;
|
|
|
|
|
+ if(user != null){
|
|
|
|
|
+ userParams = new HashMap<>();
|
|
|
|
|
+ SysUser loginUser = user.getUser();
|
|
|
|
|
+
|
|
|
|
|
+ userParams.put("userType",loginUser.getUserType());
|
|
|
|
|
+ userParams.put("userId",loginUser.getUserId());
|
|
|
|
|
+ if(loginUser.getRoles().stream().anyMatch(role -> role.getRoleId() == 1)) {
|
|
|
|
|
+ userParams.put("isAdmin", true);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ userParams.put("isAdmin", false);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return userParams;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
- public List<Object> selectDialogListByAppId(String appId, String userId) {
|
|
|
|
|
|
|
+ public List<TakaiDialogRespDTO> selectDialogListByAppId(String appId, String userId) {
|
|
|
List<TakaiDialogRespDTO> list = takaiDialogMapper.selectDialog(appId, userId);
|
|
List<TakaiDialogRespDTO> list = takaiDialogMapper.selectDialog(appId, userId);
|
|
|
- List<Object> result = setDialogList(list);
|
|
|
|
|
- return result;
|
|
|
|
|
|
|
+// List<Object> result = setDialogList(list);
|
|
|
|
|
+ return list;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -1016,7 +1204,18 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
if (response.isSuccessful()) {
|
|
if (response.isSuccessful()) {
|
|
|
String body = response.body().string();
|
|
String body = response.body().string();
|
|
|
log.info("查询切片详情返回:" + body);
|
|
log.info("查询切片详情返回:" + body);
|
|
|
- return JSON.parseObject(body);
|
|
|
|
|
|
|
+ JSONObject jsonObject = JSON.parseObject(body);
|
|
|
|
|
+ JSONObject dataObject = jsonObject.getJSONObject("data");
|
|
|
|
|
+ String docId = dataObject.getString("document_id");
|
|
|
|
|
+ String sliceText = dataObject.getString("slice_text");
|
|
|
|
|
+ TakaiMediaReplacement conditonR = TakaiMediaReplacement.builder().documentId(docId).build();
|
|
|
|
|
+ List<TakaiMediaReplacement> imageList = takaiMediaReplacementMapper.selectMediaList(conditonR);
|
|
|
|
|
+ //替换【示意图序号_XXXXX】为超链接
|
|
|
|
|
+ List<TakaiSliceImage> sliceImageList = SchematicNumberParser.extractImageUrlMappings(sliceText,imageList);
|
|
|
|
|
+// String replaceText = SchematicNumberParser.replaceWithImageLinks(sliceText,imageList);
|
|
|
|
|
+// dataObject.put("slice_text",replaceText);
|
|
|
|
|
+ dataObject.put("imageList",sliceImageList);
|
|
|
|
|
+ return jsonObject;
|
|
|
} else {
|
|
} else {
|
|
|
logger.info("获取切片详情调用python接口失败,返回状态码:{}", response.code());
|
|
logger.info("获取切片详情调用python接口失败,返回状态码:{}", response.code());
|
|
|
}
|
|
}
|
|
@@ -1027,7 +1226,7 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
- public List<String> uploadSliceImage(MultipartFile[] files, String knowledgeId, String documentId) {
|
|
|
|
|
|
|
+ public List<TakaiSliceImage> uploadSliceImage(MultipartFile[] files, String knowledgeId, String documentId) {
|
|
|
List<TakaiSysOss> resultList = null;
|
|
List<TakaiSysOss> resultList = null;
|
|
|
try {
|
|
try {
|
|
|
resultList = minioUtil.uploadSliceImages(files,knowledgeId,documentId);
|
|
resultList = minioUtil.uploadSliceImages(files,knowledgeId,documentId);
|
|
@@ -1035,7 +1234,7 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
logger.error("上传文件失败", e.getMessage());
|
|
logger.error("上传文件失败", e.getMessage());
|
|
|
}
|
|
}
|
|
|
//保存图片信息
|
|
//保存图片信息
|
|
|
- List<String> originTextList = new ArrayList<>();
|
|
|
|
|
|
|
+ List<TakaiSliceImage> originTextList = new ArrayList<>();
|
|
|
for (TakaiSysOss result : resultList) {
|
|
for (TakaiSysOss result : resultList) {
|
|
|
TakaiMediaReplacement takaiMediaReplacement =
|
|
TakaiMediaReplacement takaiMediaReplacement =
|
|
|
TakaiMediaReplacement.builder()
|
|
TakaiMediaReplacement.builder()
|
|
@@ -1049,7 +1248,8 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
takaiMediaReplacement.setCreateTime(currentDate);
|
|
takaiMediaReplacement.setCreateTime(currentDate);
|
|
|
takaiMediaReplacement.setUpdateTime(currentDate);
|
|
takaiMediaReplacement.setUpdateTime(currentDate);
|
|
|
takaiMediaReplacementMapper.insertMedia(takaiMediaReplacement);
|
|
takaiMediaReplacementMapper.insertMedia(takaiMediaReplacement);
|
|
|
- originTextList.add(result.getOriginText());
|
|
|
|
|
|
|
+ TakaiSliceImage sliceImage = TakaiSliceImage.builder().name(result.getOriginText()).url(result.getUrl()).build();
|
|
|
|
|
+ originTextList.add(sliceImage);
|
|
|
}
|
|
}
|
|
|
return originTextList;
|
|
return originTextList;
|
|
|
}
|
|
}
|
|
@@ -1169,12 +1369,13 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
List<Object> result = new ArrayList();
|
|
List<Object> result = new ArrayList();
|
|
|
if (dictDataList!= null && dictDataList.size() > 0) {
|
|
if (dictDataList!= null && dictDataList.size() > 0) {
|
|
|
for (SysDictData dictData : dictDataList){
|
|
for (SysDictData dictData : dictDataList){
|
|
|
- PageHelper.startPage(1, 3, "sort is null asc,sort");
|
|
|
|
|
|
|
+// PageHelper.startPage(1, 3, "sort is null asc,sort");
|
|
|
|
|
+ PageHelper.orderBy("sort is null asc, sort");
|
|
|
Map<String, Object> map = new HashMap();
|
|
Map<String, Object> map = new HashMap();
|
|
|
TakaiApplication paramsVo = TakaiApplication.builder().approver(userId).flag("0").addOrderBy("0").build();
|
|
TakaiApplication paramsVo = TakaiApplication.builder().approver(userId).flag("0").addOrderBy("0").build();
|
|
|
//项目应用
|
|
//项目应用
|
|
|
if(dictData.getDictCode() == 41){
|
|
if(dictData.getDictCode() == 41){
|
|
|
- Map<String, Object> l = searchAppTypeGroupList(paramsVo, dictData);
|
|
|
|
|
|
|
+ Map<String, Object> l = searchAppProjectGroupList(paramsVo, dictData);
|
|
|
if(!MapUtils.isEmpty(l)){
|
|
if(!MapUtils.isEmpty(l)){
|
|
|
result.add(l);
|
|
result.add(l);
|
|
|
}
|
|
}
|
|
@@ -1202,9 +1403,47 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
return result;
|
|
return result;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private Map<String, Object> searchAppProjectGroupList(TakaiApplication paramsVo, SysDictData dictData) {
|
|
|
|
|
+ paramsVo.setTypeId(dictData.getDictCode());
|
|
|
|
|
+ List<TakaiApplicationResult> list = takaiApplicationMapper.selectApplicationList(paramsVo);
|
|
|
|
|
+ //项目级应用
|
|
|
|
|
+ Map<String, Object> projectLevelMap = new HashMap();
|
|
|
|
|
+ projectLevelMap.put("title", dictData.getDictLabel());
|
|
|
|
|
+ List<Object> projectAppList = new ArrayList();
|
|
|
|
|
+ if (list!= null && list.size() > 0) {
|
|
|
|
|
+ // 按项目分组
|
|
|
|
|
+ Map<String, List<TakaiApplicationResult>> projectAppMap = list
|
|
|
|
|
+ .stream().collect(Collectors.groupingBy(TakaiApplicationResult::getProjectName));
|
|
|
|
|
+
|
|
|
|
|
+ for (Iterator<String> iterator = projectAppMap.keySet().iterator(); iterator.hasNext();) {
|
|
|
|
|
+
|
|
|
|
|
+ String projectName = iterator.next();
|
|
|
|
|
+ Map<String,Object> newProjectAppMap = new HashMap();
|
|
|
|
|
+ List<TakaiApplicationResult> appList = projectAppMap.get(projectName);
|
|
|
|
|
+ List<Object> newAppList = new ArrayList();
|
|
|
|
|
+ for (TakaiApplicationResult application : appList) {
|
|
|
|
|
+ Map<String, Object> appMap = new HashMap();
|
|
|
|
|
+ appMap.put("appId", application.getAppId());
|
|
|
|
|
+ appMap.put("showMenu", "false");
|
|
|
|
|
+ appMap.put("chatMode", "LOCAL");
|
|
|
|
|
+ appMap.put("title", application.getName());
|
|
|
|
|
+ newAppList.add(appMap);
|
|
|
|
|
+ }
|
|
|
|
|
+ newProjectAppMap.put("title", projectName);
|
|
|
|
|
+ newProjectAppMap.put("children",newAppList);
|
|
|
|
|
+ projectAppList.add(newProjectAppMap);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ projectLevelMap.put("children",projectAppList);
|
|
|
|
|
+ return projectLevelMap;
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
private Map<String, Object> searchAppTypeGroupList(TakaiApplication paramsVo, SysDictData dictData) {
|
|
private Map<String, Object> searchAppTypeGroupList(TakaiApplication paramsVo, SysDictData dictData) {
|
|
|
|
|
+ //慧监理
|
|
|
paramsVo.setTypeId(Long.valueOf(42));
|
|
paramsVo.setTypeId(Long.valueOf(42));
|
|
|
List<TakaiApplicationResult> list1 = takaiApplicationMapper.selectApplicationList(paramsVo);
|
|
List<TakaiApplicationResult> list1 = takaiApplicationMapper.selectApplicationList(paramsVo);
|
|
|
|
|
+ //慧项管
|
|
|
paramsVo.setTypeId(Long.valueOf(43));
|
|
paramsVo.setTypeId(Long.valueOf(43));
|
|
|
List<TakaiApplicationResult> list2 = takaiApplicationMapper.selectApplicationList(paramsVo);
|
|
List<TakaiApplicationResult> list2 = takaiApplicationMapper.selectApplicationList(paramsVo);
|
|
|
List<TakaiApplicationResult> list3 = new ArrayList();
|
|
List<TakaiApplicationResult> list3 = new ArrayList();
|
|
@@ -1257,12 +1496,11 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
ApprovalNode vo = flowManager.getFirstApprover();
|
|
ApprovalNode vo = flowManager.getFirstApprover();
|
|
|
- int i = takaiApplicationMapper.updateApplication(TakaiApplication.builder()
|
|
|
|
|
- .appId(appId)
|
|
|
|
|
- .approver(String.valueOf(vo.getApprover()))
|
|
|
|
|
- .nodeOrder(String.valueOf(vo.getNodeOrder()))
|
|
|
|
|
- .status("1") // 待审核
|
|
|
|
|
- .build());
|
|
|
|
|
|
|
+ TakaiApplication appVo = takaiApplicationMapper.selectTargetApplication(TakaiApplication.builder().appId(appId).build());
|
|
|
|
|
+ appVo.setApprover(String.valueOf(vo.getApprover()));
|
|
|
|
|
+ appVo.setNodeOrder(String.valueOf(vo.getNodeOrder()));
|
|
|
|
|
+ appVo.setStatus("1");
|
|
|
|
|
+ int i = takaiApplicationMapper.updateApplication(appVo);
|
|
|
if(i > 0){
|
|
if(i > 0){
|
|
|
DocumentAuditInfo info = new DocumentAuditInfo();
|
|
DocumentAuditInfo info = new DocumentAuditInfo();
|
|
|
info.setAppId(appId);
|
|
info.setAppId(appId);
|
|
@@ -1299,13 +1537,12 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
return saveAuditInfo(appParams, "3", appId);
|
|
return saveAuditInfo(appParams, "3", appId);
|
|
|
}else{
|
|
}else{
|
|
|
// 审核通过,下一个节点
|
|
// 审核通过,下一个节点
|
|
|
- int successI = takaiApplicationMapper.updateApplication(TakaiApplication.builder()
|
|
|
|
|
- .appId(appId)
|
|
|
|
|
- .status("2")
|
|
|
|
|
- .approver(String.valueOf(nextNode.getApprover()))
|
|
|
|
|
- .nodeOrder(String.valueOf(nextNode.getNodeOrder()))
|
|
|
|
|
- .comment(appParams.getComment())
|
|
|
|
|
- .build());
|
|
|
|
|
|
|
+ TakaiApplication appVo = takaiApplicationMapper.selectTargetApplication(TakaiApplication.builder().appId(appId).build());
|
|
|
|
|
+ appVo.setApprover(String.valueOf(nextNode.getApprover()));
|
|
|
|
|
+ appVo.setNodeOrder(String.valueOf(nextNode.getNodeOrder()));
|
|
|
|
|
+ appVo.setStatus("2");
|
|
|
|
|
+ appVo.setComment(appParams.getComment());
|
|
|
|
|
+ int successI = takaiApplicationMapper.updateApplication(appVo);
|
|
|
if(successI > 0){
|
|
if(successI > 0){
|
|
|
DocumentAuditInfo info = new DocumentAuditInfo();
|
|
DocumentAuditInfo info = new DocumentAuditInfo();
|
|
|
info.setAppId(appId);
|
|
info.setAppId(appId);
|
|
@@ -1329,13 +1566,12 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private int saveAuditInfo(TakaiApplicationParams appParams, String status, String appId){
|
|
private int saveAuditInfo(TakaiApplicationParams appParams, String status, String appId){
|
|
|
- int successI = takaiApplicationMapper.updateApplication(TakaiApplication.builder()
|
|
|
|
|
- .appId(appId)
|
|
|
|
|
- .status(status)
|
|
|
|
|
- .approver(appParams.getApprover())
|
|
|
|
|
- .nodeOrder(appParams.getNodeOrder())
|
|
|
|
|
- .comment(appParams.getComment())
|
|
|
|
|
- .build());
|
|
|
|
|
|
|
+ TakaiApplication appVo = takaiApplicationMapper.selectTargetApplication(TakaiApplication.builder().appId(appId).build());
|
|
|
|
|
+ appVo.setApprover(appParams.getApprover());
|
|
|
|
|
+ appVo.setNodeOrder(appParams.getNodeOrder());
|
|
|
|
|
+ appVo.setStatus(status);
|
|
|
|
|
+ appVo.setComment(appParams.getComment());
|
|
|
|
|
+ int successI = takaiApplicationMapper.updateApplication(appVo);
|
|
|
if(successI > 0){
|
|
if(successI > 0){
|
|
|
DocumentAuditInfo info = new DocumentAuditInfo();
|
|
DocumentAuditInfo info = new DocumentAuditInfo();
|
|
|
info.setAppId(appId);
|
|
info.setAppId(appId);
|
|
@@ -1453,7 +1689,8 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
Integer code = obj.getInteger("code");
|
|
Integer code = obj.getInteger("code");
|
|
|
if (code == 200) {
|
|
if (code == 200) {
|
|
|
logger.info("上传文档调用python接口成功,返回内容:{}", body);
|
|
logger.info("上传文档调用python接口成功,返回内容:{}", body);
|
|
|
- return obj;
|
|
|
|
|
|
|
+ } else {
|
|
|
|
|
+ logger.info("上传文档调用python接口失败,返回内容:{}", body);
|
|
|
}
|
|
}
|
|
|
return obj;
|
|
return obj;
|
|
|
} else {
|
|
} else {
|
|
@@ -1466,7 +1703,8 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private List<Object> setDialogList(List<TakaiDialogRespDTO> list) {
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public List<Object> setDialogList(List<TakaiDialogRespDTO> list) {
|
|
|
//根据时间分组降序排序
|
|
//根据时间分组降序排序
|
|
|
NavigableMap<LocalDateTime, List<TakaiDialogRespDTO>> groupList = list.stream().collect(Collectors.groupingBy(TakaiDialogRespDTO::getCreate_time, TreeMap::new, Collectors.toList())).descendingMap();
|
|
NavigableMap<LocalDateTime, List<TakaiDialogRespDTO>> groupList = list.stream().collect(Collectors.groupingBy(TakaiDialogRespDTO::getCreate_time, TreeMap::new, Collectors.toList())).descendingMap();
|
|
|
List<Object> obj = new ArrayList();
|
|
List<Object> obj = new ArrayList();
|