DifyController.java 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. package cn.cslg.pas.controller.outApi;
  2. import cn.cslg.pas.common.core.base.Constants;
  3. import cn.cslg.pas.common.model.dify.ChatMessageDTO;
  4. import cn.cslg.pas.common.model.dify.DifyChatMessageDTO;
  5. import cn.cslg.pas.common.model.dify.DifyHistoryMessageDTO;
  6. import cn.cslg.pas.common.model.dify.OAMessageDTO;
  7. import cn.cslg.pas.common.model.dify.GenerateClaimDTO;
  8. import cn.cslg.pas.common.utils.CacheUtils;
  9. import cn.cslg.pas.common.utils.LoginUtils;
  10. import cn.cslg.pas.common.utils.Response;
  11. import cn.cslg.pas.domain.business.ProjectTask;
  12. import cn.cslg.pas.domain.business.ReportProject;
  13. import cn.cslg.pas.domain.business.TaskCode;
  14. import cn.cslg.pas.service.business.ProjectTaskService;
  15. import cn.cslg.pas.service.business.ReportProjectService;
  16. import cn.cslg.pas.service.business.TaskCodeService;
  17. import cn.cslg.pas.service.business.es.EsPatentVectorService;
  18. import cn.cslg.pas.service.common.DifyService;
  19. import cn.cslg.pas.service.common.POIService;
  20. import cn.cslg.pas.service.dify.DifySessionService;
  21. import com.alibaba.fastjson2.JSONObject;
  22. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  23. import com.fasterxml.jackson.databind.JsonNode;
  24. import com.google.gson.JsonObject;
  25. import io.swagger.v3.oas.annotations.Operation;
  26. import io.swagger.v3.oas.annotations.tags.Tag;
  27. import jakarta.servlet.http.HttpServletRequest;
  28. import jakarta.servlet.http.HttpServletResponse;
  29. import lombok.RequiredArgsConstructor;
  30. import org.springframework.beans.factory.annotation.Autowired;
  31. import org.springframework.context.annotation.Lazy;
  32. import org.springframework.core.io.InputStreamResource;
  33. import org.springframework.http.MediaType;
  34. import org.springframework.http.ResponseEntity;
  35. import org.springframework.web.bind.annotation.RequestBody;
  36. import org.springframework.web.bind.annotation.RequestMapping;
  37. import org.springframework.web.bind.annotation.RequestMethod;
  38. import org.springframework.web.bind.annotation.RestController;
  39. import org.springframework.web.context.request.RequestAttributes;
  40. import org.springframework.web.context.request.RequestContextHolder;
  41. import org.springframework.web.context.request.ServletRequestAttributes;
  42. import org.springframework.web.multipart.MultipartFile;
  43. import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
  44. import reactor.core.publisher.Flux;
  45. import java.io.IOException;
  46. import java.util.List;
  47. @SuppressWarnings({"all"})
  48. @Tag(name = "外部人员调用接口")
  49. @RestController
  50. @RequestMapping(Constants.API_XiaoSHI + "/dify")
  51. @RequiredArgsConstructor(onConstructor_ = {@Lazy})
  52. public class DifyController {
  53. private final DifyService difyService;
  54. private final DifySessionService difySessionService;
  55. private final POIService poiService;
  56. @Autowired
  57. private CacheUtils cacheUtils;
  58. @Autowired
  59. private LoginUtils loginUtils;
  60. @RequestMapping(value = "/chatMessage", method = RequestMethod.POST, produces = MediaType.TEXT_EVENT_STREAM_VALUE)
  61. @Operation(summary = "发送对话")
  62. public Flux<String> chatMessage(@RequestBody ChatMessageDTO chatMessageDTO) throws IOException {
  63. return difyService.getOkhttp(chatMessageDTO);
  64. }
  65. @RequestMapping(value = "/queryHistoryMessage", method = RequestMethod.POST)
  66. @Operation(summary = "查询历史会话")
  67. public Response queryHistoryMessage(@RequestBody DifyHistoryMessageDTO difyHistoryMessageDTO) throws IOException {
  68. String jsons = difyService.queryHistoryMessage(difyHistoryMessageDTO);
  69. JSONObject jsonObject = JSONObject.parseObject(jsons);
  70. return Response.success(jsonObject);
  71. }
  72. @RequestMapping(value = "/querySessionId", method = RequestMethod.GET)
  73. @Operation(summary = "查询会话id")
  74. public Response querySessionId(Integer projectId) throws IOException {
  75. String userId = loginUtils.getId().toString();
  76. return Response.success(difySessionService.getSessionId(projectId, userId));
  77. }
  78. @RequestMapping(value = "/stopMessage", method = RequestMethod.GET)
  79. @Operation(summary = "停止会话")
  80. public Response stopMessage(String taskId) throws IOException {
  81. return Response.success(difyService.stopMessage(taskId));
  82. }
  83. @RequestMapping(value = "/generateInventionPoint", method = RequestMethod.POST)
  84. @Operation(summary = "生成发明点")
  85. public Response generateInventionPoint(@RequestBody ChatMessageDTO chatMessageDTO) throws IOException {
  86. return Response.success(difyService.generateInventionPoint(chatMessageDTO));
  87. }
  88. @RequestMapping(value = "/generateClaimExplain", method = RequestMethod.POST)
  89. @Operation(summary = "生成权利要求解释和有益效果")
  90. public Response generateClaimExplain(@RequestBody GenerateClaimDTO generateClaimDTO) throws Exception {
  91. return Response.success(difyService.generateClaimExplain(generateClaimDTO));
  92. }
  93. @RequestMapping(value = "/sendOADefense", method = RequestMethod.GET, produces = MediaType.TEXT_EVENT_STREAM_VALUE)
  94. @Operation(summary = "OA答辩")
  95. public Flux<String> sendOADefense(Integer confessionSessionId) throws IOException {
  96. return difyService.successGetOAHttp(confessionSessionId);
  97. }
  98. @RequestMapping(value = "/getCheckFile", method = RequestMethod.POST)
  99. @Operation(summary = "获取质检文件")
  100. public ResponseEntity<InputStreamResource> addConfessionSession(MultipartFile file) throws Exception {
  101. RequestAttributes ra = RequestContextHolder.getRequestAttributes();
  102. ServletRequestAttributes sra = (ServletRequestAttributes) ra;
  103. HttpServletRequest httpRequest = sra.getRequest();
  104. String a= httpRequest.getHeader("Content-Type");
  105. System.out.println(a);
  106. return poiService.exportCheckFile(file);
  107. }
  108. }