DeviceInfoController.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. package com.zksy.visualization.controller;
  2. import com.fasterxml.jackson.core.JsonProcessingException;
  3. import com.fasterxml.jackson.databind.JsonNode;
  4. import com.fasterxml.jackson.databind.ObjectMapper;
  5. import com.zksy.common.core.domain.Result;
  6. import com.zksy.visualization.config.IccConfigProperty;
  7. import com.zksy.visualization.domain.request.ChannelPageRequest;
  8. import com.zksy.visualization.domain.request.DevicePageRequest;
  9. import com.zksy.visualization.domain.request.DeviceTreeRequest;
  10. import com.zksy.visualization.domain.response.ChannelPageResponse;
  11. import com.zksy.visualization.domain.response.DeviceDetailsResponse;
  12. import com.zksy.visualization.domain.response.DevicePageResponse;
  13. import com.zksy.visualization.domain.response.DeviceTreeResponse;
  14. import io.swagger.annotations.Api;
  15. import io.swagger.annotations.ApiOperation;
  16. import lombok.extern.slf4j.Slf4j;
  17. import okhttp3.*;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.data.redis.core.RedisTemplate;
  20. import org.springframework.web.bind.annotation.GetMapping;
  21. import org.springframework.web.bind.annotation.PostMapping;
  22. import org.springframework.web.bind.annotation.RequestMapping;
  23. import org.springframework.web.bind.annotation.RestController;
  24. import java.io.IOException;
  25. /**
  26. * @author Administrator
  27. * @version 1.0
  28. * @project dh-server-micro
  29. * @description 设备管理
  30. * @date 2024/12/12 16:56:41
  31. */
  32. @RestController
  33. @Api(tags = "设备管理", description = "设备管理")
  34. @RequestMapping("/deviceInfo")
  35. @Slf4j
  36. public class DeviceInfoController {
  37. @Autowired
  38. private IccConfigProperty iccConfigProperty;
  39. @Autowired
  40. private OkHttpClient httpClient;
  41. @Autowired
  42. private RedisTemplate<String,String> redisTemplate;
  43. private static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
  44. @ApiOperation(value = "设备详情查询")
  45. @GetMapping("/deviceDetails")
  46. public Result deviceDetails(String deviceCode){
  47. String authorization = redisTemplate
  48. .opsForValue()
  49. .get("Authorization:" + iccConfigProperty.getUsername());
  50. Request request = new Request.Builder()
  51. .url("https://" + iccConfigProperty.getHost() + "/evo-apigw/evo-brm/"+iccConfigProperty.getVersion()+"/device/"+deviceCode)
  52. .addHeader("Authorization", authorization)
  53. .build();
  54. try {
  55. Response response = httpClient.newCall(request).execute();
  56. if(!response.isSuccessful()){
  57. return Result.error("设备详情查询失败");
  58. }
  59. ResponseBody responseBody = response.body();
  60. if (responseBody != null) {
  61. String responseString = responseBody.string();
  62. ObjectMapper objectMapper = new ObjectMapper();
  63. JsonNode rootNode = objectMapper.readTree(responseString);
  64. JsonNode success = rootNode.path("success");
  65. if(success.isBoolean() && success.asBoolean()) {
  66. JsonNode dataNode = rootNode.path("data");
  67. if (dataNode.isObject()) {
  68. DeviceDetailsResponse parkingOverviewResponse = objectMapper.treeToValue(dataNode, DeviceDetailsResponse.class);
  69. return Result.ok(parkingOverviewResponse);
  70. } else {
  71. return Result.ok(null);
  72. }
  73. }else {
  74. JsonNode errMsgNode = rootNode.path("errMsg");
  75. String errMsg = errMsgNode.isTextual() ? errMsgNode.asText() : "未知错误";
  76. return Result.error(errMsg);
  77. }
  78. }
  79. } catch (Exception e) {
  80. log.error("设备详情查询失败:{}", e);
  81. }
  82. return Result.error("设备详情查询失败");
  83. }
  84. @ApiOperation(value = "设备分页查询")
  85. @PostMapping("/devicePage")
  86. public Result devicePage(DevicePageRequest request){
  87. ObjectMapper objectMapper = new ObjectMapper();
  88. String jsonParams = null;
  89. String authorization = redisTemplate
  90. .opsForValue()
  91. .get("Authorization:" + iccConfigProperty.getUsername());
  92. try {
  93. jsonParams = objectMapper.writeValueAsString(request);
  94. } catch (JsonProcessingException e) {
  95. log.error("JSON序列化失败: {}", e);
  96. return Result.error("请求失败");
  97. }
  98. // 创建请求体
  99. RequestBody body = RequestBody.create(jsonParams, JSON);
  100. // 构建请求
  101. Request requestHttp = new Request.Builder()
  102. .url("https://" + iccConfigProperty.getHost() + "/evo-apigw/evo-brm/"+ iccConfigProperty.getVersion() +"/device/subsystem/page")
  103. .addHeader("Authorization", authorization)
  104. .post(body)
  105. .build();
  106. // 发送请求
  107. try (Response response = httpClient.newCall(requestHttp).execute()) {
  108. if (!response.isSuccessful()) {
  109. return Result.error("请求失败");
  110. }
  111. ResponseBody responseBody = response.body();
  112. if (responseBody != null) {
  113. String responseString = responseBody.string();
  114. JsonNode rootNode = objectMapper.readTree(responseString);
  115. JsonNode success = rootNode.path("success");
  116. if("true".equals(success.asText())) {
  117. JsonNode dataNode = rootNode.path("data");
  118. if (dataNode != null) {
  119. return Result.ok(dataNode);
  120. } else {
  121. return Result.ok(null);
  122. }
  123. }else {
  124. return Result.error("设备分页查询失败");
  125. }
  126. }
  127. } catch (IOException e) {
  128. log.error("请求失败: {}", e);
  129. }
  130. return Result.error("请求失败");
  131. }
  132. @ApiOperation(value = "设备树查询")
  133. @PostMapping("/deviceTree")
  134. public Result deviceTree(DeviceTreeRequest request){
  135. ObjectMapper objectMapper = new ObjectMapper();
  136. String jsonParams = null;
  137. String authorization = redisTemplate
  138. .opsForValue()
  139. .get("Authorization:" + iccConfigProperty.getUsername());
  140. try {
  141. jsonParams = objectMapper.writeValueAsString(request);
  142. } catch (JsonProcessingException e) {
  143. log.error("JSON序列化失败: {}", e);
  144. return Result.error("请求失败");
  145. }
  146. // 创建请求体
  147. RequestBody body = RequestBody.create(jsonParams, JSON);
  148. // 构建请求
  149. Request requestHttp = new Request.Builder()
  150. .url("https://" + iccConfigProperty.getHost() + "/evo-apigw/evo-brm/"+ iccConfigProperty.getVersion() +"/tree")
  151. .addHeader("Authorization", authorization)
  152. .post(body)
  153. .build();
  154. // 发送请求
  155. try (Response response = httpClient.newCall(requestHttp).execute()) {
  156. if (!response.isSuccessful()) {
  157. return Result.error("请求失败");
  158. }
  159. ResponseBody responseBody = response.body();
  160. if (responseBody != null) {
  161. String responseString = responseBody.string();
  162. JsonNode rootNode = objectMapper.readTree(responseString);
  163. JsonNode success = rootNode.path("success");
  164. if(success.isBoolean() && success.asBoolean()) {
  165. JsonNode dataNode = rootNode.path("data");
  166. if (dataNode.isObject()) {
  167. DeviceTreeResponse deviceTreeResponse = objectMapper.treeToValue(dataNode, DeviceTreeResponse.class);
  168. return Result.ok(deviceTreeResponse);
  169. } else {
  170. return Result.ok(null);
  171. }
  172. }else {
  173. // 获取错误信息并返回
  174. JsonNode errMsgNode = rootNode.path("errMsg");
  175. String errMsg = errMsgNode.isTextual() ? errMsgNode.asText() : "未知错误";
  176. return Result.error(errMsg);
  177. }
  178. }
  179. } catch (IOException e) {
  180. log.error("请求失败: {}", e);
  181. }
  182. return Result.error("请求失败");
  183. }
  184. /**
  185. * TODO 分页获取通道信息
  186. * @param
  187. * @return ChannelPageResponse
  188. * @author Administrator
  189. * @date 2024/12/12 16:02:14
  190. */
  191. @ApiOperation(value = "分页获取通道信息")
  192. @PostMapping("/getChannelPage")
  193. public Result getChannelPage(ChannelPageRequest request){
  194. ObjectMapper objectMapper = new ObjectMapper();
  195. String jsonParams = null;
  196. String authorization = redisTemplate
  197. .opsForValue()
  198. .get("Authorization:" + iccConfigProperty.getUsername());
  199. try {
  200. jsonParams = objectMapper.writeValueAsString(request);
  201. } catch (JsonProcessingException e) {
  202. log.error("JSON序列化失败: {}", e);
  203. return Result.error("请求失败");
  204. }
  205. // 创建请求体
  206. RequestBody body = RequestBody.create(jsonParams, JSON);
  207. // 构建请求
  208. Request requestHttp = new Request.Builder()
  209. .url("https://" + iccConfigProperty.getHost() + "/evo-apigw/evo-brm/"+ iccConfigProperty.getVersion() +"/device/channel/subsystem/page")
  210. .addHeader("Authorization", authorization)
  211. .post(body)
  212. .build();
  213. // 发送请求
  214. try (Response response = httpClient.newCall(requestHttp).execute()) {
  215. if (!response.isSuccessful()) {
  216. return Result.error("请求失败");
  217. }
  218. ResponseBody responseBody = response.body();
  219. if (responseBody != null) {
  220. String responseString = responseBody.string();
  221. JsonNode rootNode = objectMapper.readTree(responseString);
  222. JsonNode success = rootNode.path("success");
  223. if(success.isBoolean() && success.asBoolean()) {
  224. JsonNode dataNode = rootNode.path("data");
  225. if (dataNode.isObject()) {
  226. ChannelPageResponse intelligentPanelResponse = objectMapper.treeToValue(dataNode, ChannelPageResponse.class);
  227. return Result.ok(intelligentPanelResponse);
  228. } else {
  229. return Result.ok(null);
  230. }
  231. }else {
  232. JsonNode errMsgNode = rootNode.path("errMsg");
  233. String errMsg = errMsgNode.isTextual() ? errMsgNode.asText() : "未知错误";
  234. return Result.error(errMsg);
  235. }
  236. }
  237. } catch (IOException e) {
  238. log.error("请求失败: {}", e);
  239. }
  240. return Result.error("请求失败");
  241. }
  242. }