Explorar el Código

20250415 dify功能修改

lrj hace 4 meses
padre
commit
af5069683e

+ 6 - 1
src/main/java/cn/cslg/pas/controller/outApi/DifyController.java

@@ -52,7 +52,6 @@ public class DifyController {
     @Autowired
     private LoginUtils loginUtils;
 
-    //
     @RequestMapping(value = "/chatMessage", method = RequestMethod.POST, produces = MediaType.TEXT_EVENT_STREAM_VALUE)
     @Operation(summary = "发送对话")
     public Flux<String> chatMessage(@RequestBody ChatMessageDTO chatMessageDTO) throws IOException {
@@ -86,4 +85,10 @@ public class DifyController {
     public Response generateInventionPoint(@RequestBody ChatMessageDTO chatMessageDTO) throws IOException {
         return Response.success(difyService.generateInventionPoint(chatMessageDTO));
     }
+
+    @RequestMapping(value = "/generateClaimExplain", method = RequestMethod.POST)
+    @Operation(summary = "生成权利要求解释和有益效果")
+    public Response generateClaimExplain(@RequestBody ChatMessageDTO chatMessageDTO) throws IOException {
+        return Response.success(difyService.ge(chatMessageDTO));
+    }
 }

+ 61 - 15
src/main/java/cn/cslg/pas/service/common/DifyService.java

@@ -5,9 +5,11 @@ import cn.cslg.pas.common.model.dify.ChatMessageDTO;
 import cn.cslg.pas.common.model.dify.DifyChatMessageDTO;
 import cn.cslg.pas.common.model.dify.DifyHistoryMessageDTO;
 
+import cn.cslg.pas.common.model.dify.confessionSession.AddConfessionSessionDTO;
 import cn.cslg.pas.common.model.dify.confessionSession.UpdateConfessionSessionDTO;
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.DataUtils;
+import cn.cslg.pas.common.utils.DateUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.domain.business.TechnicalCase;
 import cn.cslg.pas.domain.dify.ConfessionSession;
@@ -17,6 +19,7 @@ import cn.cslg.pas.service.dify.ConfessionSessionService;
 import cn.cslg.pas.service.dify.DifySessionService;
 import cn.cslg.pas.service.report.AssoProjectConfessionService;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -35,10 +38,7 @@ import reactor.core.publisher.Flux;
 import java.io.*;
 
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.concurrent.TimeUnit;
 
 
@@ -58,6 +58,8 @@ public class DifyService {
     private String url;
     @Value("${FileDownloadUrl}")
     private String fileDownloadUrl;
+    @Value("${DIFY.cliamKey}")
+    private String cliamKey;
     private final DifySessionService difySessionService;
     private final TechnicalCaseService technicalCaseService;
     private final AssoProjectConfessionService assoProjectConfessionService;
@@ -136,7 +138,7 @@ public class DifyService {
             inventionPoint = this.getInventPoint(projectId);
         } else if (confessionSessionId != null) {
             ConfessionSession confessionSession = confessionSessionService.getById(confessionSessionId);
-            fileContent = fileDownloadUrl +confessionSession.getGuid();
+            fileContent = fileDownloadUrl + confessionSession.getGuid();
             inventionPoint = confessionSession.getInventionPoint();
         }
 
@@ -268,14 +270,13 @@ public class DifyService {
         String conversationId = chatMessageDTO.getConversationId();
         DifyChatMessageDTO difyChatMessageDTO = new DifyChatMessageDTO();
         Map<String, Object> map = new HashMap<>();
-        String fileContent="";
-         if(confessionSessionId!=null){
-             ConfessionSession confessionSession=confessionSessionService.getById(confessionSessionId);
-             fileContent=fileDownloadUrl+confessionSession.getGuid();
-         }
-         else if(projectId!=null) {
-             fileContent = this.getConfression(projectId);
-         }
+        String fileContent = "";
+        if (confessionSessionId != null) {
+            ConfessionSession confessionSession = confessionSessionService.getById(confessionSessionId);
+            fileContent = fileDownloadUrl + confessionSession.getGuid();
+        } else if (projectId != null) {
+            fileContent = this.getConfression(projectId);
+        }
         map.put("file_path", fileContent);
         difyChatMessageDTO.setInputs(map);
         difyChatMessageDTO.setConversationId(conversationId);
@@ -310,8 +311,53 @@ public class DifyService {
         }
         map1.put("conversation_id", conversationId);
 
-        map1.put("projectId",projectId);
-        map1.put("confessionSessionId",confessionSessionId);
+        map1.put("projectId", projectId);
+        map1.put("confessionSessionId", confessionSessionId);
         return map1;
     }
+
+    public Map<String, Object> generateClaimExplain(String claim) throws Exception {
+        Map<String, Object> reMap = new HashMap<>();
+        DifyChatMessageDTO difyChatMessageDTO = new DifyChatMessageDTO();
+        String userId = "1";
+//        String userId = loginUtils.getId().toString();
+        Map<String, Object> map = new HashMap<>();
+        map.put("claim", claim);
+        difyChatMessageDTO.setInputs(map);
+        difyChatMessageDTO.setResponseMode("blocking");
+        difyChatMessageDTO.setUser(userId);
+
+        String param = new Gson().toJson(difyChatMessageDTO);
+        RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(6000, TimeUnit.SECONDS)
+                .writeTimeout(6000, TimeUnit.SECONDS)
+                .readTimeout(6000, TimeUnit.SECONDS)
+                .build();
+        Request request = new Request.Builder()
+                .url(url + "workflows/run")
+                .post(requestBody)
+                .addHeader("Authorization", "Bearer " + cliamKey)
+                .build();
+        String res = Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+        JSONObject jsonObject = JSONObject.parseObject(res);
+        String dataStr = jsonObject.get("data").toString();
+        JSONObject dataObject=JSONObject.parseObject(dataStr);
+        String outPuts = dataObject.get("outputs").toString();
+        JSONObject jsonObject1 = JSONObject.parseObject(outPuts);
+        String rets = jsonObject1.get("json").toString();
+        Map<String, Object> addMap = new HashMap<>();
+        addMap.put("query", claim);
+        addMap.put("answer", rets);
+        String addStr = JSONObject.toJSONString(addMap);
+        AddConfessionSessionDTO addConfessionSessionDTO = new AddConfessionSessionDTO();
+        addConfessionSessionDTO.setConversationId(jsonObject.get("workflow_run_id").toString());
+        addConfessionSessionDTO.setContent(addStr);
+        String name = DateUtils.dateTimeToStr(new Date());
+        name=name+"-权利要求解释及有益效果";
+        addConfessionSessionDTO.setConversationName(name);
+        confessionSessionService.addSession(addConfessionSessionDTO);
+        System.out.println(res);
+        return reMap;
+    }
 }

+ 13 - 11
src/main/java/cn/cslg/pas/service/dify/ConfessionSessionService.java

@@ -39,11 +39,13 @@ public class ConfessionSessionService extends ServiceImpl<ConfessionSessionMappe
         String guid = addConfessionSessionDTO.getFileGuid();
         String name = "";
         try {
-            String res = fileManagerService.getSystemFileFromFMS(Arrays.asList(guid));
-            List<SystemFile> systemFiles = JSONObject.parseArray(res, SystemFile.class);
-            if (systemFiles != null && !systemFiles.isEmpty()) {
-                SystemFile systemFile = systemFiles.get(0);
-                name = systemFile.getOriginalName();
+            if (guid != null && !guid.trim().equals("")) {
+                String res = fileManagerService.getSystemFileFromFMS(Arrays.asList(guid));
+                List<SystemFile> systemFiles = JSONObject.parseArray(res, SystemFile.class);
+                if (systemFiles != null && !systemFiles.isEmpty()) {
+                    SystemFile systemFile = systemFiles.get(0);
+                    name = systemFile.getOriginalName();
+                }
             }
         } catch (Exception e) {
         }
@@ -88,12 +90,12 @@ public class ConfessionSessionService extends ServiceImpl<ConfessionSessionMappe
         if (confessionSessions == null || confessionSessions.size() == 0) {
             return queryConfessionSessionVOS;
         }
-        List<String> fileGuids = confessionSessions.stream().filter(item->item.getGuid()!=null).map(ConfessionSession::getGuid).collect(Collectors.toList());
+        List<String> fileGuids = confessionSessions.stream().filter(item -> item.getGuid() != null).map(ConfessionSession::getGuid).collect(Collectors.toList());
         List<SystemFile> systemFiles = new ArrayList<>();
         try {
-            if (fileGuids != null&&fileGuids.size()>0) {
+            if (fileGuids != null && fileGuids.size() > 0) {
                 String res = fileManagerService.getSystemFileFromFMS(fileGuids);
-            systemFiles = JSONObject.parseArray(res, SystemFile.class);
+                systemFiles = JSONObject.parseArray(res, SystemFile.class);
             }
         } catch (Exception e) {
             e.printStackTrace();
@@ -102,7 +104,7 @@ public class ConfessionSessionService extends ServiceImpl<ConfessionSessionMappe
             QueryConfessionSessionVO queryConfessionSessionVO = new QueryConfessionSessionVO();
             BeanUtils.copyProperties(confessionSession, queryConfessionSessionVO);
             String guid = confessionSession.getGuid();
-            if(systemFiles!=null) {
+            if (systemFiles != null) {
                 SystemFile systemFile = systemFiles.stream().filter(item -> item.getGuid().equals(guid)).findFirst().orElse(null);
                 queryConfessionSessionVO.setSystemFile(systemFile);
             }
@@ -122,8 +124,8 @@ public class ConfessionSessionService extends ServiceImpl<ConfessionSessionMappe
         confessionSession.setContent(addConfessionSessionDTO.getContent());
         confessionSession.setConversationId(addConfessionSessionDTO.getConversationId());
         confessionSession.setConversationName(addConfessionSessionDTO.getConversationName());
-        String createId = loginUtils.getId().toString();
-        confessionSession.setCreateId(createId);
+//        String createId = loginUtils.getId().toString();
+        confessionSession.setCreateId("createId");
         confessionSession.setType(addConfessionSessionDTO.getType());
         confessionSession.insert();
         return confessionSession.getId();

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

@@ -87,4 +87,5 @@ management:
       show-details: always
 DIFY:
   apiKey: app-DDGJt4QUmzlc2aFQ5voOAXIj
+  cliamKey: app-fxpiWOYqtJM1BOaJnG54NlCZ
   url: http://192.168.2.24/v1/

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 6 - 0
src/test/java/cn/cslg/pas/service/common/DifyServiceTest.java