From ef3b453bce953ad9d11a24f19d637171791e8117 Mon Sep 17 00:00:00 2001 From: chenxudong Date: Wed, 2 Apr 2025 11:46:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=83=A8=E5=88=86=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electrmangnetic/pom.xml | 4 ++++ .../software/manage/aop/ServiceAspect.java | 15 +++++++++------ .../manage/controller/AiChatController.java | 11 ++++++++--- .../manage/service/serviceimpl/AiChatService.java | 1 + 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/electrmangnetic/pom.xml b/electrmangnetic/pom.xml index 8652bd5..a1cd5b4 100644 --- a/electrmangnetic/pom.xml +++ b/electrmangnetic/pom.xml @@ -99,6 +99,10 @@ aspectjweaver 1.9.7 + + org.springframework.boot + spring-boot-starter-webflux + diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/aop/ServiceAspect.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/aop/ServiceAspect.java index cddebc9..6769967 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/aop/ServiceAspect.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/aop/ServiceAspect.java @@ -13,6 +13,7 @@ import org.aspectj.lang.reflect.MethodSignature; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.util.StopWatch; +import reactor.core.publisher.Flux; import java.util.Objects; @@ -26,6 +27,7 @@ public class ServiceAspect { */ @Around("execution(* com.electromagnetic.industry.software.manage.controller..*.*(..)))") public Object process(ProceedingJoinPoint jp) throws Throwable { + String methodInfo = jp.getTarget().getClass().getSimpleName() + "." + jp.getSignature().getName(); Object[] args = jp.getArgs(); @@ -41,15 +43,16 @@ public class ServiceAspect { } UserThreadLocal.setReqArgs(paramInfo); Object rvt = jp.proceed(); - if (rvt instanceof ResponseEntity) { + + if (rvt instanceof ElectromagneticResult) { + UserThreadLocal.setRes((ElectromagneticResult) rvt); + String returnInfo = JSONUtil.toJsonStr(rvt); + log.info("请求接口结束:{},返回参数:{},接口耗时:{}", methodInfo, returnInfo, (System.currentTimeMillis() - startTime) + "毫秒"); + } else { UserThreadLocal.setRes(ElectromagneticResultUtil.success("")); - return rvt; } - UserThreadLocal.setRes((ElectromagneticResult) rvt); - String returnInfo = JSONUtil.toJsonStr(rvt); - log.info("请求接口结束:{},返回参数:{},接口耗时:{}", methodInfo, returnInfo, (System.currentTimeMillis() - startTime) + "毫秒"); stopwatch.stop(); log.debug(stopwatch.prettyPrint()); return rvt; } -} +} \ No newline at end of file diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/AiChatController.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/AiChatController.java index 4c46ee3..5dc851a 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/AiChatController.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/AiChatController.java @@ -6,14 +6,17 @@ import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil; import com.electromagnetic.industry.software.manage.pojo.req.ChatQueryDTO; import com.electromagnetic.industry.software.manage.service.serviceimpl.AiChatService; +import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; +import reactor.core.publisher.Flux; import javax.annotation.Resource; import java.io.IOException; +import java.time.Duration; @RestController @RequestMapping("/data/ed/ai/") @@ -22,9 +25,11 @@ public class AiChatController { @Resource private AiChatService aiChatService; - @RequestMapping(value = "chat") - public ElectromagneticResult chat(@RequestBody ChatQueryDTO chatQueryDTO) { - return aiChatService.chat(chatQueryDTO.getQuestion()); + @RequestMapping(value = "chat", produces = MediaType.TEXT_EVENT_STREAM_VALUE) + public Flux chat(@RequestBody ChatQueryDTO chatQueryDTO) { + String content = aiChatService.chat(chatQueryDTO.getQuestion()).getData().toString(); + String[] stringArray = StrUtil.split(content, 1); + return Flux.just(stringArray).delayElements(Duration.ofMillis(5000)); } @RequestMapping(value = "addKnowledge") diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/AiChatService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/AiChatService.java index 8680dac..dbea9f2 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/AiChatService.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/AiChatService.java @@ -24,6 +24,7 @@ public class AiChatService { public ElectromagneticResult chat(String message) { Map map = new HashMap<>(); + map.put("msg", message); String url = StrFormatter.format("http://{}:{}/data/ed/ai/chat", elePropertyConfig.getAiRemoteHost(), elePropertyConfig.getAiRemotePort()); String res = HttpUtil.post(url, JSONUtil.toJsonStr(map), 5 * 60 * 1000); ElectromagneticResult result = JSONUtil.toBean(res, ElectromagneticResult.class);