package cn.cslg.pas.controller.outApi; import cn.cslg.pas.common.core.base.Constants; 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.OAMessageDTO; import cn.cslg.pas.common.model.dify.GenerateClaimDTO; 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.domain.business.ProjectTask; import cn.cslg.pas.domain.business.ReportProject; import cn.cslg.pas.domain.business.TaskCode; import cn.cslg.pas.service.business.ProjectTaskService; import cn.cslg.pas.service.business.ReportProjectService; import cn.cslg.pas.service.business.TaskCodeService; import cn.cslg.pas.service.business.es.EsPatentVectorService; import cn.cslg.pas.service.common.DifyService; import cn.cslg.pas.service.common.POIService; import cn.cslg.pas.service.dify.DifySessionService; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.fasterxml.jackson.databind.JsonNode; import com.google.gson.JsonObject; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.core.io.InputStreamResource; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; import reactor.core.publisher.Flux; import java.io.IOException; import java.util.List; @SuppressWarnings({"all"}) @Tag(name = "外部人员调用接口") @RestController @RequestMapping(Constants.API_XiaoSHI + "/dify") @RequiredArgsConstructor(onConstructor_ = {@Lazy}) public class DifyController { private final DifyService difyService; private final DifySessionService difySessionService; private final POIService poiService; @Autowired private CacheUtils cacheUtils; @Autowired private LoginUtils loginUtils; @RequestMapping(value = "/chatMessage", method = RequestMethod.POST, produces = MediaType.TEXT_EVENT_STREAM_VALUE) @Operation(summary = "发送对话") public Flux chatMessage(@RequestBody ChatMessageDTO chatMessageDTO) throws IOException { return difyService.getOkhttp(chatMessageDTO); } @RequestMapping(value = "/queryHistoryMessage", method = RequestMethod.POST) @Operation(summary = "查询历史会话") public Response queryHistoryMessage(@RequestBody DifyHistoryMessageDTO difyHistoryMessageDTO) throws IOException { String jsons = difyService.queryHistoryMessage(difyHistoryMessageDTO); JSONObject jsonObject = JSONObject.parseObject(jsons); return Response.success(jsonObject); } @RequestMapping(value = "/querySessionId", method = RequestMethod.GET) @Operation(summary = "查询会话id") public Response querySessionId(Integer projectId) throws IOException { String userId = loginUtils.getId().toString(); return Response.success(difySessionService.getSessionId(projectId, userId)); } @RequestMapping(value = "/stopMessage", method = RequestMethod.GET) @Operation(summary = "停止会话") public Response stopMessage(String taskId) throws IOException { return Response.success(difyService.stopMessage(taskId)); } @RequestMapping(value = "/generateInventionPoint", method = RequestMethod.POST) @Operation(summary = "生成发明点") 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 GenerateClaimDTO generateClaimDTO) throws Exception { return Response.success(difyService.generateClaimExplain(generateClaimDTO)); } @RequestMapping(value = "/sendOADefense", method = RequestMethod.GET, produces = MediaType.TEXT_EVENT_STREAM_VALUE) @Operation(summary = "OA答辩") public Flux sendOADefense(Integer confessionSessionId) throws IOException { return difyService.successGetOAHttp(confessionSessionId); } @RequestMapping(value = "/getCheckFile", method = RequestMethod.POST) @Operation(summary = "获取质检文件") public ResponseEntity addConfessionSession(MultipartFile file) throws Exception { RequestAttributes ra = RequestContextHolder.getRequestAttributes(); ServletRequestAttributes sra = (ServletRequestAttributes) ra; HttpServletRequest httpRequest = sra.getRequest(); String a= httpRequest.getHeader("Content-Type"); System.out.println(a); return poiService.exportCheckFile(file); } }