Просмотр исходного кода

20250910-理解技术交底书生成结果

lrj 3 недель назад
Родитель
Сommit
dd680e43be

+ 1 - 0
src/main/java/cn/cslg/pas/common/model/dify/ChatMessageDTO.java

@@ -13,4 +13,5 @@ public class ChatMessageDTO {
     private String conversationId;
     private Integer projectId;
     private Integer confessionSessionId;
+    private Integer type;
 }

+ 1 - 0
src/main/java/cn/cslg/pas/common/model/dify/DifyHistoryMessageDTO.java

@@ -8,4 +8,5 @@ public class DifyHistoryMessageDTO {
     private String user;
     private String firstId;
     private Integer limit;
+    private Integer type;
 }

+ 2 - 1
src/main/java/cn/cslg/pas/common/model/dify/confessionSession/ConfessionSessionDetailVO.java

@@ -1,10 +1,11 @@
 package cn.cslg.pas.common.model.dify.confessionSession;
 
 import cn.cslg.pas.common.model.cronModel.SystemFile;
+import lombok.Data;
 
 import java.util.Date;
 import java.util.List;
-
+@Data
 public class ConfessionSessionDetailVO {
 
     private Integer id;

+ 4 - 4
src/main/java/cn/cslg/pas/controller/common/ConfessionSessionController.java

@@ -85,7 +85,7 @@ public class ConfessionSessionController {
         Integer id = confessionSessionService.addConfessionSessionFile(addConfessionSessionDTO);
         return Response.success(id);
     }
-    @RequestMapping(value = "/updateDiscoryResult", method = RequestMethod.POST)
+    @RequestMapping(value = "/updateDiscoveryResult", method = RequestMethod.POST)
     @Operation(summary = "更新技术交底书理解结果")
     public Response updateDiscoryResult(@RequestBody UpdateDiscoveryResultDTO updateDiscoveryResultDTO) throws IOException {
         Integer id = confessionSessionService.updateDiscoveryResult(updateDiscoveryResultDTO);
@@ -94,8 +94,8 @@ public class ConfessionSessionController {
 
     @RequestMapping(value = "/detail", method = RequestMethod.POST)
     @Operation(summary = "查询会话记录详情")
-    public Response detail(@RequestBody UpdateDiscoveryResultDTO updateDiscoveryResultDTO) throws IOException {
-        Integer id = confessionSessionService.updateDiscoveryResult(updateDiscoveryResultDTO);
-        return Response.success(id);
+    public Response detail(@RequestBody ConfessionSessionDetailDTO confessionSessionDetailDTO) throws IOException {
+        ConfessionSessionDetailVO  confessionSessionDetailVO = confessionSessionService.getConfessionSessionDetail(confessionSessionDetailDTO);
+        return Response.success(confessionSessionDetailVO);
     }
 }

+ 21 - 4
src/main/java/cn/cslg/pas/controller/outApi/DifyController.java

@@ -2,10 +2,13 @@ package cn.cslg.pas.controller.outApi;
 
 import cn.cslg.pas.common.core.base.Constants;
 import cn.cslg.pas.common.model.dify.*;
+import cn.cslg.pas.common.model.dify.confessionSession.ConfessionSessionDetailDTO;
+import cn.cslg.pas.common.model.dify.confessionSession.ConfessionSessionDetailVO;
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.utils.Response;
 import cn.cslg.pas.service.common.DifyService;
+import cn.cslg.pas.service.dify.ConfessionSessionService;
 import cn.cslg.pas.service.dify.DifySessionService;
 import cn.cslg.pas.service.dify.GenerateDiscoveryResultService;
 import cn.cslg.pas.service.dify.GenerateInstructionService;
@@ -36,6 +39,7 @@ public class DifyController {
     private final DifySessionService difySessionService;
     private final GenerateInstructionService generateInstructionService;
     private final GenerateDiscoveryResultService generateDiscoveryResultService;
+    private final ConfessionSessionService confessionSessionService;
     @Autowired
     private CacheUtils cacheUtils;
     @Autowired
@@ -65,8 +69,8 @@ public class DifyController {
 
     @RequestMapping(value = "/stopMessage", method = RequestMethod.GET)
     @Operation(summary = "停止会话")
-    public Response stopMessage(String taskId) throws IOException {
-        return Response.success(difyService.stopMessage(taskId));
+    public Response stopMessage(String taskId,Integer type) throws IOException {
+        return Response.success(difyService.stopMessage(taskId,type));
     }
 
     @RequestMapping(value = "/generateInventionPoint", method = RequestMethod.POST)
@@ -92,9 +96,22 @@ public class DifyController {
     public Flux<String> addConfessionSession(@RequestBody GenerateClaimDTO generateClaimDTO) throws Exception {
         return generateInstructionService.generateInstruction2(generateClaimDTO);
     }
-    @RequestMapping(value = "/generateDiscoryResult", method = RequestMethod.POST)
+
+    @RequestMapping(value = "/generateDiscoveryResult", method = RequestMethod.POST)
     @Operation(summary = "生成技术交底书理解结果")
-    public Response generateDiscoryResult(@RequestBody ChatMessageDTO chatMessageDTO) throws Exception {
+    public Response generateDiscoveryResult(@RequestBody ChatMessageDTO chatMessageDTO) throws Exception {
         return Response.success(generateDiscoveryResultService.generateResult(chatMessageDTO));
     }
+
+    @RequestMapping(value = "/generateDiscoveryResult/detail", method = RequestMethod.POST)
+    @Operation(summary = "获取技术交底书理解结果详情")
+    public Response detail(@RequestBody ConfessionSessionDetailDTO confessionSessionDetailDTO) throws IOException {
+        ConfessionSessionDetailVO confessionSessionDetailVO = confessionSessionService.getConfessionSessionDetail(confessionSessionDetailDTO);
+        return Response.success(confessionSessionDetailVO);
+    }
+    @RequestMapping(value = "/generateDiscoveryResult/dialogue", method = RequestMethod.POST, produces = MediaType.TEXT_EVENT_STREAM_VALUE)
+    @Operation(summary = "ai对话")
+    public Flux<String> discoveryResultDialogue(@RequestBody ChatMessageDTO chatMessageDTO) throws Exception {
+        return difyService.discoveryResultDialogue(chatMessageDTO);
+    }
 }

+ 27 - 0
src/main/java/cn/cslg/pas/domain/dify/AssoConfessionConversation.java

@@ -0,0 +1,27 @@
+package cn.cslg.pas.domain.dify;
+
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @TableName asso_confession_conversation
+ */
+@TableName(value ="asso_confession_conversation")
+@Data
+public class AssoConfessionConversation extends BaseEntity<AssoConfessionConversation> {
+    private Integer id;
+
+    private Integer confessionId;
+
+    private String conversationId;
+
+    private Integer type;
+
+    private Date createTime;
+
+    private String createId;
+}

+ 2 - 0
src/main/java/cn/cslg/pas/domain/dify/AssoConfessionSessionFile.java

@@ -14,4 +14,6 @@ public class AssoConfessionSessionFile extends BaseEntity<AssoConfessionSessionF
 
     @TableField(value = "guid")
     private String guid;
+    @TableField(value = "type")
+    private Integer type;
 }

+ 18 - 0
src/main/java/cn/cslg/pas/mapper/dify/AssoConfessionConversationMapper.java

@@ -0,0 +1,18 @@
+package cn.cslg.pas.mapper.dify;
+
+import cn.cslg.pas.domain.dify.AssoConfessionConversation;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author admin
+* @description 针对表【asso_confession_conversation】的数据库操作Mapper
+* @createDate 2025-09-11 11:32:40
+* @Entity cn.cslg.pas.domain.novelty.domain.AssoConfessionConversation
+*/
+public interface AssoConfessionConversationMapper extends BaseMapper<AssoConfessionConversation> {
+
+}
+
+
+
+

+ 59 - 41
src/main/java/cn/cslg/pas/service/common/DifyService.java

@@ -6,11 +6,13 @@ import cn.cslg.pas.common.model.dify.*;
 import cn.cslg.pas.common.model.dify.GenerateClaimDTO;
 import cn.cslg.pas.common.model.dify.confessionSession.AddConfessionSessionDTO;
 import cn.cslg.pas.common.model.dify.confessionSession.UpdateConfessionSessionDTO;
+import cn.cslg.pas.common.model.dify.generateDiscoveryResult.DiscoryResultVO;
 import cn.cslg.pas.common.utils.*;
 import cn.cslg.pas.common.utils.ClaimUtils.ClaimSplitUtils;
 import cn.cslg.pas.common.vo.PatentRightParams;
 import cn.cslg.pas.domain.business.ReportTemple;
 import cn.cslg.pas.domain.business.TechnicalCase;
+import cn.cslg.pas.domain.dify.AssoConfessionConversation;
 import cn.cslg.pas.domain.dify.AssoConfessionSessionFile;
 import cn.cslg.pas.domain.dify.ConfessionSession;
 import cn.cslg.pas.domain.report.AssoProjectConfession;
@@ -19,9 +21,7 @@ import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.mapper.dify.ConfessionSessionMapper;
 import cn.cslg.pas.service.business.ReportTempleService;
 import cn.cslg.pas.service.business.TechnicalCaseService;
-import cn.cslg.pas.service.dify.ConfessionSessionService;
-import cn.cslg.pas.service.dify.DifySessionService;
-import cn.cslg.pas.service.dify.GenerateInstructionService;
+import cn.cslg.pas.service.dify.*;
 import cn.cslg.pas.service.report.AssoProjectConfessionService;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -81,6 +81,8 @@ public class DifyService {
     private String fileDownloadUrl;
     @Value("${DIFY.cliamKey}")
     private String cliamKey;
+    @Value("${DIFY.discoveryResultKey}")
+    private String discoveryResultKey;
     private final DifySessionService difySessionService;
     private final TechnicalCaseService technicalCaseService;
     private final AssoProjectConfessionService assoProjectConfessionService;
@@ -100,11 +102,15 @@ public class DifyService {
     @Autowired
     @Lazy
     private GenerateInstructionService generateInstructionService;
+    @Autowired
+    private AssoConfessionConversationService assoConfessionConversationService;
+    @Autowired
+    private AssoConfessionSessionFileService assoConfessionSessionFileService;
 
     /**
      * 调用文件系统删除文件接口
      */
-    public String chatMessage(DifyChatMessageDTO difyChatMessageDTO,String key) throws IOException {
+    public String chatMessage(DifyChatMessageDTO difyChatMessageDTO, String key) throws IOException {
         String param = new Gson().toJson(difyChatMessageDTO);
         RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
@@ -131,14 +137,19 @@ public class DifyService {
                 .writeTimeout(600, TimeUnit.SECONDS)
                 .readTimeout(600, TimeUnit.SECONDS)
                 .build();
+        Integer type =difyChatMessageDTO.getType();
         String path = "messages?conversation_id=" + difyChatMessageDTO.getConversationId() + "&user=" + difyChatMessageDTO.getUser() + "&limit=" + difyChatMessageDTO.getLimit();
         if (difyChatMessageDTO.getFirstId() != null) {
             path += "&first_id=" + difyChatMessageDTO.getFirstId();
         }
+        String key =apiKey;
+        if(type!=null&&type.equals(4)){
+            key=discoveryResultKey;
+        }
         Request request = new Request.Builder()
                 .url(url + path)
                 .get()
-                .addHeader("Authorization", "Bearer " + apiKey)
+                .addHeader("Authorization", "Bearer " + key)
                 .build();
         return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
     }
@@ -185,7 +196,7 @@ public class DifyService {
 
         String param = new Gson().toJson(difyChatMessageDTO);
         RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
-        Request request = this.getChatMessageRequest(requestBody);
+        Request request = this.getChatMessageRequest(requestBody,apiKey);
         return Flux.create(emitter -> {
             client.newCall(request).enqueue(new Callback() {
                 @Override
@@ -264,16 +275,16 @@ public class DifyService {
         return url;
     }
 
-    public Request getChatMessageRequest(RequestBody requestBody) {
+    public Request getChatMessageRequest(RequestBody requestBody,String key) {
         Request request = new Request.Builder()
                 .url(url + "chat-messages")
-                .addHeader("Authorization", "Bearer " + apiKey).addHeader(HttpHeaders.CONTENT_TYPE, "application/json")
+                .addHeader("Authorization", "Bearer " + key).addHeader(HttpHeaders.CONTENT_TYPE, "application/json")
                 .post(requestBody)
                 .build();
         return request;
     }
 
-    public JSONObject stopMessage(String taskId) throws IOException {
+    public JSONObject stopMessage(String taskId,Integer type) throws IOException {
         OkHttpClient client = new OkHttpClient.Builder()
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
@@ -283,9 +294,13 @@ public class DifyService {
         difyChatMessageDTO.setUser("1");
         String param = new Gson().toJson(difyChatMessageDTO);
         RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
+        String key =apiKey;
+        if(type!=null&&type.equals(4)){
+            key=discoveryResultKey;
+        }
         Request request = new Request.Builder()
                 .url(url + "chat-messages/" + taskId + "/stop")
-                .addHeader("Authorization", "Bearer " + apiKey).addHeader(HttpHeaders.CONTENT_TYPE, "application/json")
+                .addHeader("Authorization", "Bearer " + key).addHeader(HttpHeaders.CONTENT_TYPE, "application/json")
                 .post(requestBody)
                 .build();
         String json = Objects.requireNonNull(client.newCall(request).execute().body()).string();
@@ -325,7 +340,7 @@ public class DifyService {
                 .build();
         String param = new Gson().toJson(difyChatMessageDTO);
         RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
-        Request request = this.getChatMessageRequest(requestBody);
+        Request request = this.getChatMessageRequest(requestBody,apiKey);
         String res = Objects.requireNonNull(client.newCall(request).execute().body()).string();
         JSONObject jsonObject = JSONObject.parseObject(res);
         String inventionPoint = jsonObject.get("answer").toString();
@@ -524,9 +539,9 @@ public class DifyService {
 
         Map<String, Object> map = new HashMap<>();
         map.put("fileUrl", fileUrl);
-        map.put("patent_fileUrls",patentFileUrls);
-        map.put("app_file_guid",appFileGuid);
-        map.put("modify_file_guid",modifyFileGuid);
+        map.put("patent_fileUrls", patentFileUrls);
+        map.put("app_file_guid", appFileGuid);
+        map.put("modify_file_guid", modifyFileGuid);
         map.put("patent_files", new ArrayList<>());
         map.put("changeClaim", vo.getChangeClaim());
         map.put("claim", vo.getClaim());
@@ -581,7 +596,7 @@ public class DifyService {
                             }
                             try {
                                 JSONObject jsonObject = JSON.parseObject(line);
-                                String sessionConversationId  = jsonObject.get("conversation_id").toString();
+                                String sessionConversationId = jsonObject.get("conversation_id").toString();
                                 String event = jsonObject.get("event").toString();
                                 if (StringUtils.isEmpty(runId)) {
                                     if (StringUtils.isNotEmpty(sessionConversationId)) {
@@ -630,7 +645,7 @@ public class DifyService {
         });
     }
 
-    public void generateDoc(String conversationName,Integer confessionSessionId,JSONObject object) {
+    public void generateDoc(String conversationName, Integer confessionSessionId, JSONObject object) {
         Map<String, Object> map = new HashMap<>();
         String reason = object.getString("reason");
         String num = object.getString("num");
@@ -759,7 +774,7 @@ public class DifyService {
         String background = generateClaimDTO.getBackground();
 
         DifyChatMessageDTO difyChatMessageDTO = new DifyChatMessageDTO();
-        String userId ="1";
+        String userId = "1";
 //        String userId = loginUtils.getId().toString();
         Map<String, Object> map = new HashMap<>();
         map.put("claim", claim);
@@ -784,17 +799,23 @@ public class DifyService {
 
         return res;
     }
-    public Flux<String> chatMessageReFux(DifyChatMessageDTO difyChatMessageDTO,String key) {
-        Integer projectId = chatMessageDTO.getProjectId();
+
+    public Flux<String> discoveryResultDialogue(ChatMessageDTO chatMessageDTO) {
         Integer confessionSessionId = chatMessageDTO.getConfessionSessionId();
         String conversationId = chatMessageDTO.getConversationId();
         String userId = loginUtils.getId().toString();
         String query = chatMessageDTO.getQuery();
+        Integer type = chatMessageDTO.getType();
+        if (type == null || query == null || query.trim().equals("")) {
+            throw new XiaoShiException(ExceptionEnum.BUSINESS_CHECK, "请按要求输入参数");
+        }
         if (conversationId == null) {
-            conversationId = difySessionService.getSessionId(projectId, userId);
+            conversationId = assoConfessionConversationService.getConversationId(confessionSessionId, type);
         }
 
+
         String temConversationId = conversationId;
+        String temConversationId3=conversationId;
         OkHttpClient client = new OkHttpClient.Builder()
                 .connectTimeout(600, TimeUnit.SECONDS)
                 .writeTimeout(600, TimeUnit.SECONDS)
@@ -804,18 +825,18 @@ public class DifyService {
         DifyChatMessageDTO difyChatMessageDTO = new DifyChatMessageDTO();
         Map<String, Object> map = new HashMap<>();
         String fileContent = "";
-        String inventionPoint = "";
-        if (projectId != null) {
-            fileContent = this.getConfression(projectId);
-            inventionPoint = this.getInventPoint(projectId);
-        } else if (confessionSessionId != null) {
-            ConfessionSession confessionSession = confessionSessionService.getById(confessionSessionId);
-            fileContent = fileDownloadUrl + confessionSession.getGuid();
-            inventionPoint = confessionSession.getInventionPoint();
-        }
 
-        map.put("file_path", fileContent);
-        map.put("invention_point", inventionPoint);
+        ConfessionSession confessionSession = confessionSessionService.getById(confessionSessionId);
+
+            List<String> guids = assoConfessionSessionFileService.getFileGuid(confessionSessionId, 0);
+            if (guids == null || guids.size() == 0) {
+                throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "数据错误,未检测到交底书");
+            }
+            fileContent = fileDownloadUrl + guids.get(0);
+            map.put("file_path", fileContent);
+
+        map.put("data_Result", confessionSession.getResultContent());
+        map.put("ask_type", type.toString());
         difyChatMessageDTO.setInputs(map);
         difyChatMessageDTO.setConversationId(conversationId);
         difyChatMessageDTO.setResponseMode("streaming");
@@ -825,7 +846,8 @@ public class DifyService {
 
         String param = new Gson().toJson(difyChatMessageDTO);
         RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
-        Request request = this.getChatMessageRequest(requestBody);
+        Request request = this.getChatMessageRequest(requestBody,discoveryResultKey);
+
         return Flux.create(emitter -> {
             client.newCall(request).enqueue(new Callback() {
                 @Override
@@ -857,15 +879,11 @@ public class DifyService {
                                 try {
                                     JSONObject jsonObject = JSON.parseObject(line);
                                     temConversationId2 = jsonObject.get("conversation_id").toString();
-                                    if (projectId != null) {
-                                        difySessionService.addDifySession(projectId, userId, temConversationId2);
-                                    }
-                                    if (confessionSessionId != null) {
-                                        UpdateConfessionSessionDTO updateConfessionSessionDTO = new UpdateConfessionSessionDTO();
-                                        updateConfessionSessionDTO.setConfessionSessionId(confessionSessionId);
-                                        updateConfessionSessionDTO.setConversationId(temConversationId2);
-                                        confessionSessionService.updateConfessionSession(updateConfessionSessionDTO);
-                                    }
+                                    AssoConfessionConversation assoConfessionConversation = new AssoConfessionConversation();
+                                    assoConfessionConversation.setConfessionId(confessionSessionId);
+                                    assoConfessionConversation.setConversationId(temConversationId2);
+                                    assoConfessionConversation.setType(type);
+                                    assoConfessionConversation.insert();
                                 } catch (Exception e) {
                                 }
 

+ 32 - 0
src/main/java/cn/cslg/pas/service/dify/AssoConfessionConversationService.java

@@ -0,0 +1,32 @@
+package cn.cslg.pas.service.dify;
+
+import cn.cslg.pas.domain.dify.AssoConfessionConversation;
+import cn.cslg.pas.mapper.dify.AssoConfessionConversationMapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import org.springframework.stereotype.Service;
+
+/**
+ * @author admin
+ * @description 针对表【asso_confession_conversation】的数据库操作Service实现
+ * @createDate 2025-09-11 11:32:40
+ */
+@Service
+public class AssoConfessionConversationService extends ServiceImpl<AssoConfessionConversationMapper, AssoConfessionConversation> {
+    public String getConversationId(Integer confessionSessionId, Integer type) {
+        String conversationId = null;
+        LambdaQueryWrapper<AssoConfessionConversation> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(AssoConfessionConversation::getConfessionId, confessionSessionId)
+                .eq(AssoConfessionConversation::getType, type);
+        AssoConfessionConversation assoConfessionConversation = this.getOne(queryWrapper, false);
+        if (assoConfessionConversation != null) {
+            conversationId = assoConfessionConversation.getConversationId();
+        }
+        return conversationId;
+    }
+}
+
+
+
+

+ 19 - 0
src/main/java/cn/cslg/pas/service/dify/AssoConfessionSessionFileService.java

@@ -2,11 +2,30 @@ package cn.cslg.pas.service.dify;
 
 import cn.cslg.pas.domain.dify.AssoConfessionSessionFile;
 import cn.cslg.pas.mapper.dify.AssoConfessionSessionFileMapper;
+import cn.cslg.pas.service.quartzService.QuartzVO;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
 @Service
 @RequiredArgsConstructor
 public class AssoConfessionSessionFileService extends ServiceImpl<AssoConfessionSessionFileMapper, AssoConfessionSessionFile> {
+
+    public List<String> getFileGuid(Integer confessionSessionId, Integer type) {
+        LambdaQueryWrapper<AssoConfessionSessionFile> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(AssoConfessionSessionFile::getConfessionSessionId, confessionSessionId);
+        if (type != null) {
+            queryWrapper.eq(AssoConfessionSessionFile::getType, type);
+
+        }
+        List<AssoConfessionSessionFile> assoConfessionSessionFiles = this.list(queryWrapper);
+        List<String> guids = assoConfessionSessionFiles.stream().map(AssoConfessionSessionFile::getGuid).collect(Collectors.toList());
+
+        return guids;
+    }
 }

+ 62 - 7
src/main/java/cn/cslg/pas/service/dify/ConfessionSessionService.java

@@ -6,6 +6,7 @@ import cn.cslg.pas.common.model.dify.generateDiscoveryResult.UpdateDiscoveryResu
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.FormatUtil;
 import cn.cslg.pas.common.utils.LoginUtils;
+import cn.cslg.pas.domain.dify.AssoConfessionConversation;
 import cn.cslg.pas.domain.dify.AssoConfessionSessionFile;
 import cn.cslg.pas.exception.ExceptionEnum;
 import cn.cslg.pas.exception.XiaoShiException;
@@ -16,6 +17,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import cn.cslg.pas.domain.dify.ConfessionSession;
 import cn.cslg.pas.mapper.dify.ConfessionSessionMapper;
@@ -45,9 +47,12 @@ public class ConfessionSessionService extends ServiceImpl<ConfessionSessionMappe
     private final LoginUtils loginUtils;
     private final FileManagerService fileManagerService;
     private final AssoConfessionSessionFileMapper assoConfessionSessionFileMapper;
+    private final AssoConfessionSessionFileService assoConfessionSessionFileService;
+    private final AssoConfessionConversationService assoConfessionConversationService;
 
     public Integer addConfessionSession(AddConfessionSessionDTO addConfessionSessionDTO) {
         String guid = addConfessionSessionDTO.getFileGuid();
+        Integer type = addConfessionSessionDTO.getType();
         String name = "";
         try {
             if (guid != null && !guid.trim().equals("")) {
@@ -71,6 +76,13 @@ public class ConfessionSessionService extends ServiceImpl<ConfessionSessionMappe
         confessionSession.setType(addConfessionSessionDTO.getType());
         confessionSession.setContent(addConfessionSessionDTO.getContent());
         confessionSession.insert();
+        if (type != null && type == 4) {
+            AssoConfessionSessionFile assoConfessionSessionFile = new AssoConfessionSessionFile();
+            assoConfessionSessionFile.setGuid(guid);
+            assoConfessionSessionFile.setConfessionSessionId(confessionSession.getId());
+            assoConfessionSessionFile.setType(0);
+            assoConfessionSessionFile.insert();
+        }
         return confessionSession.getId();
     }
 
@@ -209,18 +221,61 @@ public class ConfessionSessionService extends ServiceImpl<ConfessionSessionMappe
         confessionSession.insert();
         return confessionSession;
     }
-    public Integer updateDiscoveryResult(UpdateDiscoveryResultDTO updateDiscoveryResultDTO){
-        String discoveryResult =updateDiscoveryResultDTO.getDiscoveryResult();
-        Integer confessionSessionId =updateDiscoveryResultDTO.getConfessionSessionId();
+
+    public Integer updateDiscoveryResult(UpdateDiscoveryResultDTO updateDiscoveryResultDTO) {
+        String discoveryResult = updateDiscoveryResultDTO.getDiscoveryResult();
+        Integer confessionSessionId = updateDiscoveryResultDTO.getConfessionSessionId();
         LambdaUpdateWrapper<ConfessionSession> updateWrapper = new LambdaUpdateWrapper<>();
         updateWrapper.set(ConfessionSession::getResultContent, discoveryResult).eq(ConfessionSession::getId, confessionSessionId);
         this.update(updateWrapper);
         return confessionSessionId;
     }
-    public ConfessionSessionDetailVO getConfessionSessionDetail(ConfessionSessionDetailDTO confessionSessionDetailDTO){
-        ConfessionSessionDetailVO confessionSessionDetailVO =new ConfessionSessionDetailVO();
-        Integer confessionSessionId =confessionSessionDetailDTO.getConfessionSessionId();
-        ConfessionSession confessionSession =this.getById(confessionSessionId);
+
+    public ConfessionSessionDetailVO getConfessionSessionDetail(ConfessionSessionDetailDTO confessionSessionDetailDTO) {
+        ConfessionSessionDetailVO confessionSessionDetailVO = new ConfessionSessionDetailVO();
+        Integer confessionSessionId = confessionSessionDetailDTO.getConfessionSessionId();
+        ConfessionSession confessionSession = this.getById(confessionSessionId);
+        BeanUtils.copyProperties(confessionSession, confessionSessionDetailVO);
+        confessionSessionDetailVO.setDiscoveryResult(confessionSession.getResultContent());
+
+        //装载文件
+        LambdaQueryWrapper<AssoConfessionSessionFile> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(AssoConfessionSessionFile::getConfessionSessionId, confessionSessionId);
+        List<AssoConfessionSessionFile> assoConfessionSessionFiles = assoConfessionSessionFileService.list(queryWrapper);
+        List<String> fileGuids = assoConfessionSessionFiles.stream().map(AssoConfessionSessionFile::getGuid).collect(Collectors.toList());
+        List<SystemFile> systemFiles = new ArrayList<>();
+        try {
+            if (fileGuids != null && fileGuids.size() > 0) {
+                String res = fileManagerService.getSystemFileFromFMS(fileGuids);
+                systemFiles = JSONObject.parseArray(res, SystemFile.class);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        List<String> inFileGuids =assoConfessionSessionFiles.stream().filter(item->item.getType()!=null&&item.getType().equals(0)).map(AssoConfessionSessionFile::getGuid).collect(Collectors.toList());
+        List<String> outFileGuids =assoConfessionSessionFiles.stream().filter(item->item.getType()==null||item.getType().equals(1)).map(AssoConfessionSessionFile::getGuid).collect(Collectors.toList());
+        if(inFileGuids.size()>0){
+            List<SystemFile> systemFileList =systemFiles.stream().filter(item->inFileGuids.contains(item.getGuid())).collect(Collectors.toList());
+            confessionSessionDetailVO.setDiscoveryFiles(systemFileList);
+        }
+        if(outFileGuids.size()>0){
+            List<SystemFile> systemFileList =systemFiles.stream().filter(item->outFileGuids.contains(item.getGuid())).collect(Collectors.toList());
+            confessionSessionDetailVO.setResultFiles(systemFileList);
+        }
+        //装载会话id
+        LambdaQueryWrapper<AssoConfessionConversation> assoQueryWrapper = new LambdaQueryWrapper<>();
+        assoQueryWrapper.eq(AssoConfessionConversation::getConfessionId, confessionSessionId);
+        List<AssoConfessionConversation> assoConfessionConversations = assoConfessionConversationService.list(assoQueryWrapper);
+        if (assoConfessionConversations != null && assoConfessionConversations.size() > 0) {
+            AssoConfessionConversation confessionSessionAiDialogue = assoConfessionConversations.stream().filter(item -> item.getType().equals(31)).findFirst().orElse(null);
+            AssoConfessionConversation confessionSessionAiUpdate = assoConfessionConversations.stream().filter(item -> item.getType().equals(32)).findFirst().orElse(null);
+            if (confessionSessionAiDialogue != null) {
+                confessionSessionDetailVO.setDialogueConversationId(confessionSessionAiDialogue.getConversationId());
+            }
+            if (confessionSessionAiUpdate != null) {
+                confessionSessionDetailVO.setAiUpdateConversationId(confessionSessionAiUpdate.getConversationId());
+            }
+        }
         return confessionSessionDetailVO;
     }
 }

+ 1 - 0
src/main/resources/application-dev.yml

@@ -92,4 +92,5 @@ DIFY:
   checkApiKey: aa
   cliamKey: app-jF3akhYKgljPLdpeIpTNbs6f
   gInstructionKey: app-7ImBmlr7kvBTSvBj1mTvgKyp
+  discoveryResultKey: app-ekzGTtvRnSq2aSqwZqKG5EH3
   url: http://192.168.2.24/v1/