From dea35289149c88a91677e5d27ea42aac8c902d07 Mon Sep 17 00:00:00 2001
From: eight <641137800@qq.com>
Date: 星期五, 22 十一月 2024 21:26:57 +0800
Subject: [PATCH] feign xml 实现

---
 jh-server/src/main/resources/application-local.yaml                                                         |    3 +
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/feign/RemoteDataService.java            |    8 +++-
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/config/MyOpenFeignConfig.java           |    6 +++
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devrent/DevRentServiceImpl.java |    7 ++-
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/feign/FeeConfirmFeignService.java       |   20 ++++++++++
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/config/FeignXmlConfiguration.java       |   55 +++++++++++++++++++++++++++
 6 files changed, 95 insertions(+), 4 deletions(-)

diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/config/FeignXmlConfiguration.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/config/FeignXmlConfiguration.java
new file mode 100644
index 0000000..0a5e9d5
--- /dev/null
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/config/FeignXmlConfiguration.java
@@ -0,0 +1,55 @@
+package cn.lihu.jh.module.ecg.config;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.dataformat.xml.XmlMapper;
+import feign.RequestTemplate;
+import feign.Response;
+import feign.codec.DecodeException;
+import feign.codec.Decoder;
+import feign.codec.EncodeException;
+import feign.codec.Encoder;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import java.io.IOException;
+import java.io.StringWriter;
+import java.lang.reflect.Type;
+import java.nio.charset.StandardCharsets;
+
+@Slf4j
+public class FeignXmlConfiguration {
+
+    @Bean
+    public Encoder feignEncoder() {
+        return new Encoder.Default() {
+            @Override
+            public void encode(Object object, Type bodyType, RequestTemplate template) throws EncodeException {
+                try {
+                    XmlMapper xmlMapper = new XmlMapper();
+                    String xml = xmlMapper.writeValueAsString(object);
+                    template.body(xml.getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8);
+                } catch (JsonProcessingException e) {
+                    throw new EncodeException(e.getMessage(), e);
+                }
+            }
+        };
+    }
+
+    @Bean
+    public Decoder feignDecoder() {
+        return new Decoder.Default() {
+            @Override
+            public Object decode(Response response, Type type) throws IOException {
+                try {
+                    XmlMapper xmlMapper = new XmlMapper();
+                    return xmlMapper.readValue(response.body().asInputStream(), xmlMapper.constructType(type));
+                } catch (IllegalArgumentException e) {
+                    throw new DecodeException(response.status(), e.getMessage(), response.request());
+                }
+            }
+        };
+    }
+}
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/config/MyOpenFeignConfig.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/config/MyOpenFeignConfig.java
index 8c85ccc..ccc52f8 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/config/MyOpenFeignConfig.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/config/MyOpenFeignConfig.java
@@ -1,5 +1,6 @@
 package cn.lihu.jh.module.ecg.config;
 
+import feign.Logger;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
@@ -18,4 +19,9 @@
         ObjectFactory<HttpMessageConverters> objectFactory = () -> new HttpMessageConverters(converter);
         return new SpringDecoder(objectFactory);
     }
+
+    @Bean
+    Logger.Level feignLoggerLevel() {
+        return Logger.Level.FULL; // 璁剧疆Feign鏃ュ織绾у埆涓篎ULL
+    }
 }
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/feign/FeeConfirmFeignService.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/feign/FeeConfirmFeignService.java
new file mode 100644
index 0000000..ed0a877
--- /dev/null
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/feign/FeeConfirmFeignService.java
@@ -0,0 +1,20 @@
+package cn.lihu.jh.module.ecg.feign;
+
+import cn.lihu.jh.module.ecg.config.FeignXmlConfiguration;
+import cn.lihu.jh.module.ecg.feign.dto.AppointmentExternal;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+@FeignClient(name = "remote-fee-confirm-service", url = "${openfeign.server}",
+                configuration = FeignXmlConfiguration.class)
+public interface FeeConfirmFeignService {
+
+    @PostMapping(value="/hai/HttpEntry/", produces = MediaType.APPLICATION_XML_VALUE/*, consumes = MediaType.APPLICATION_JSON_VALUE*/)
+    public HisFeeConfirmRespResult httpFeeApi( @RequestParam("service") String service,
+                                          @RequestParam("urid") String urid,
+                                          @RequestParam("pwd") String pwd,
+                                          @RequestBody HisFeeConfirmReqBody bodyVo);
+}
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/feign/RemoteDataService.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/feign/RemoteDataService.java
index 17a0ca1..ee26b50 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/feign/RemoteDataService.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/feign/RemoteDataService.java
@@ -13,9 +13,13 @@
                                           @RequestParam("pwd") String pwd,
                                           @RequestBody RestApiReqBodyVo bodyVo);
 
-    @PostMapping(value="/hai/HttpEntry/", produces = MediaType.APPLICATION_XML_VALUE/*, consumes = MediaType.APPLICATION_JSON_VALUE*/)
-    public HisFeeConfirmRespResult httpFeeApi( @RequestParam("service") String service,
+/*
+    @PostMapping(value="/hai/HttpEntry/", produces = MediaType.APPLICATION_XML_VALUE*/
+/*, consumes = MediaType.APPLICATION_JSON_VALUE*//*
+)
+    public String httpFeeApi( @RequestParam("service") String service,
                                           @RequestParam("urid") String urid,
                                           @RequestParam("pwd") String pwd,
                                           @RequestBody HisFeeConfirmReqBody bodyVo);
+*/
 }
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devrent/DevRentServiceImpl.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devrent/DevRentServiceImpl.java
index c7bacba..16fb61b 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devrent/DevRentServiceImpl.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devrent/DevRentServiceImpl.java
@@ -21,6 +21,7 @@
 import cn.lihu.jh.module.ecg.service.queue.QueueServiceTxFunctions;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.dataformat.xml.XmlMapper;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.transaction.annotation.Transactional;
@@ -53,13 +54,14 @@
  */
 @Service
 @Validated
+@Slf4j
 public class DevRentServiceImpl implements DevRentService {
 
     @Resource
     QueueServiceTxFunctions queueServiceTxFunctions;
 
     @Resource
-    private RemoteDataService remoteDataService;
+    private FeeConfirmFeignService feeConfirmFeignService;
 
     @Resource
     private DevRentMapper devRentMapper;
@@ -749,7 +751,8 @@
         exmRequest.setPatientType( getPatientType(patDetails.getSource()) ); //
         exmRequest.setItem(item);
         hisFeeConfirmReqBody.setExmRequest(exmRequest);
-        HisFeeConfirmRespResult result = remoteDataService.httpFeeApi("UpdateExmRequestStatus", "ECG", "ECG", hisFeeConfirmReqBody);
+        HisFeeConfirmRespResult result = feeConfirmFeignService.httpFeeApi("UpdateExmRequestStatus", "ECG", "ECG", hisFeeConfirmReqBody);
+        log.info( result.getMsgHeader().getStatus() );
         Integer returnValue = result.getMsgHeader().getStatus().equals("true") ? 0 : 1;
         if (0 == returnValue) {
             devRentMapper.setPaid(rentId, isFeeConfirmOrCancel ? 1 : 0);
diff --git a/jh-server/src/main/resources/application-local.yaml b/jh-server/src/main/resources/application-local.yaml
index 88359e7..e2deb52 100644
--- a/jh-server/src/main/resources/application-local.yaml
+++ b/jh-server/src/main/resources/application-local.yaml
@@ -182,6 +182,9 @@
     cn.lihu.jh.module.ai.dal.mysql: debug
     cn.lihu.jh.module.ecg.dal.mysql: debug
     org.springframework.context.support.PostProcessorRegistrationDelegate: ERROR # TODO 鑺嬭壙锛氬厛绂佺敤锛孲pring Boot 3.X 瀛樺湪閮ㄥ垎閿欒鐨� WARN 鎻愮ず
+    org.springframework.cloud.openfeign: debug
+    feign: debug
+    cn.lihu.jh.module.ecg.feign: debug
 
 debug: false
 

--
Gitblit v1.9.3