KprXuChangWaterController.java 4.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package io.github.pnoker.gateway.control;
  2. import cn.hutool.json.JSONObject;
  3. import cn.hutool.json.JSONUtil;
  4. import com.alibaba.fastjson.serializer.SerializerFeature;
  5. import io.github.pnoker.gateway.JPBean.JPKprXuChangWaterSS;
  6. import io.github.pnoker.gateway.bizmgr.KprXuChangWaterBizFun;
  7. import io.github.pnoker.gateway.comtool.CommTool;
  8. import io.github.pnoker.gateway.comtool.HttpTool;
  9. import io.github.pnoker.gateway.config.GlobalData;
  10. import org.springframework.core.io.buffer.DataBuffer;
  11. import org.springframework.core.io.buffer.DataBufferUtils;
  12. import org.springframework.http.server.reactive.ServerHttpRequest;
  13. import org.springframework.util.CollectionUtils;
  14. import org.springframework.util.StringUtils;
  15. import org.springframework.web.bind.annotation.RequestHeader;
  16. import org.springframework.web.bind.annotation.RequestMapping;
  17. import org.springframework.web.bind.annotation.RequestMethod;
  18. import org.springframework.web.bind.annotation.RestController;
  19. import org.springframework.web.reactive.function.client.WebClient;
  20. import reactor.core.publisher.Flux;
  21. import reactor.core.publisher.Mono;
  22. import retrofit2.http.POST;
  23. import io.github.pnoker.gateway.comtool.ResponseCode;
  24. import javax.servlet.http.HttpServletRequest;
  25. import java.nio.CharBuffer;
  26. import java.nio.charset.StandardCharsets;
  27. import java.util.List;
  28. import java.util.Map;
  29. import java.util.concurrent.atomic.AtomicReference;
  30. /**
  31. * @ClassName TestController
  32. * @Description: TODO
  33. * @Author LX
  34. * @Date 2024/1/31
  35. * @Version V1.0
  36. **/
  37. @RestController
  38. @RequestMapping("/iot-cloud/gateway/xuchang/water")
  39. public class KprXuChangWaterController {
  40. WebClient webClient = WebClient.builder().codecs(configurer->configurer.defaultCodecs().maxInMemorySize(262144)).build();
  41. @RequestMapping(value = "/newlist",method = {RequestMethod.POST})
  42. public Mono<JSONObject> testMono(ServerHttpRequest serverHttpRequest){
  43. JSONObject oRes = new JSONObject();
  44. long llReqBefore = System.currentTimeMillis();
  45. oRes.set("rescode",ResponseCode.RESULT_BAD.toStrCode());
  46. oRes.set("msg",".error");
  47. oRes.set("resdata","");
  48. oRes.set("timestamp", System.currentTimeMillis());
  49. try {
  50. //TODO webflux获取body
  51. Flux<DataBuffer> body = serverHttpRequest.getBody();
  52. AtomicReference<String> bodyRef = new AtomicReference<>();
  53. body.subscribe(buffer -> {
  54. CharBuffer charBuffer = StandardCharsets.UTF_8.decode(buffer.asByteBuffer());
  55. DataBufferUtils.release(buffer);
  56. bodyRef.set(charBuffer.toString());
  57. });
  58. String bodyStr = bodyRef.get();
  59. if(StringUtils.isEmpty(bodyStr)){
  60. oRes.set("rescode", ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrCode());
  61. oRes.set("msg", ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrMsg());
  62. return Mono.just(oRes);
  63. }
  64. com.alibaba.fastjson.JSONObject jObj = com.alibaba.fastjson.JSONObject.parseObject(bodyStr);
  65. JPKprXuChangWaterSS oJsonParam = jObj.toJavaObject(JPKprXuChangWaterSS.class);
  66. if (oJsonParam == null
  67. || !oJsonParam.checkValid()) {
  68. oRes.set("rescode", ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrCode());
  69. oRes.set("msg", ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrMsg());
  70. return Mono.just(oRes);
  71. }
  72. List<Map<String, Object>> resResultList = KprXuChangWaterBizFun.dataCenterTogether(oJsonParam);
  73. if (!CollectionUtils.isEmpty(resResultList)) {
  74. oRes.set("rescode", ResponseCode.RESULT_NORMAL.toStrCode());
  75. oRes.set("msg", ".success");
  76. oRes.set("resdata", com.alibaba.fastjson.JSONObject.toJSONString(resResultList, SerializerFeature.WriteMapNullValue));
  77. }
  78. return Mono.just(oRes);
  79. }catch(Exception ex){
  80. ex.printStackTrace();
  81. oRes.set("rescode", ResponseCode.RESULT_BAD.toStrCode());
  82. oRes.set("msg", ".error");
  83. return Mono.just(oRes);
  84. }
  85. }
  86. }