DeviceInfoController.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  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(success.isBoolean()) {
  117. JsonNode dataNode = rootNode.path("data");
  118. if (dataNode.isObject()) {
  119. DevicePageResponse intelligentPanelResponse = objectMapper.treeToValue(dataNode, DevicePageResponse.class);
  120. return Result.ok(intelligentPanelResponse);
  121. } else {
  122. return Result.ok(null);
  123. }
  124. }else {
  125. return Result.error("分页获取通道信息失败");
  126. }
  127. }
  128. } catch (IOException e) {
  129. log.error("请求失败: {}", e);
  130. }
  131. return Result.error("请求失败");
  132. }*/
  133. @ApiOperation(value = "设备树查询")
  134. @PostMapping("/deviceTree")
  135. public Result deviceTree(DeviceTreeRequest request){
  136. ObjectMapper objectMapper = new ObjectMapper();
  137. String jsonParams = null;
  138. String authorization = redisTemplate
  139. .opsForValue()
  140. .get("Authorization:" + iccConfigProperty.getUsername());
  141. try {
  142. jsonParams = objectMapper.writeValueAsString(request);
  143. } catch (JsonProcessingException e) {
  144. log.error("JSON序列化失败: {}", e);
  145. return Result.error("请求失败");
  146. }
  147. // 创建请求体
  148. RequestBody body = RequestBody.create(jsonParams, JSON);
  149. // 构建请求
  150. Request requestHttp = new Request.Builder()
  151. .url("https://" + iccConfigProperty.getHost() + "/evo-apigw/evo-brm/"+ iccConfigProperty.getVersion() +"/tree")
  152. .addHeader("Authorization", authorization)
  153. .post(body)
  154. .build();
  155. // 发送请求
  156. try (Response response = httpClient.newCall(requestHttp).execute()) {
  157. if (!response.isSuccessful()) {
  158. return Result.error("请求失败");
  159. }
  160. ResponseBody responseBody = response.body();
  161. if (responseBody != null) {
  162. String responseString = responseBody.string();
  163. JsonNode rootNode = objectMapper.readTree(responseString);
  164. JsonNode success = rootNode.path("success");
  165. if(success.isBoolean() && success.asBoolean()) {
  166. JsonNode dataNode = rootNode.path("data");
  167. if (dataNode.isObject()) {
  168. DeviceTreeResponse deviceTreeResponse = objectMapper.treeToValue(dataNode, DeviceTreeResponse.class);
  169. return Result.ok(deviceTreeResponse);
  170. } else {
  171. return Result.ok(null);
  172. }
  173. }else {
  174. // 获取错误信息并返回
  175. JsonNode errMsgNode = rootNode.path("errMsg");
  176. String errMsg = errMsgNode.isTextual() ? errMsgNode.asText() : "未知错误";
  177. return Result.error(errMsg);
  178. }
  179. }
  180. } catch (IOException e) {
  181. log.error("请求失败: {}", e);
  182. }
  183. return Result.error("请求失败");
  184. }
  185. /**
  186. * TODO 分页获取通道信息
  187. * @param
  188. * @return ChannelPageResponse
  189. * @author Administrator
  190. * @date 2024/12/12 16:02:14
  191. */
  192. @ApiOperation(value = "分页获取通道信息")
  193. @PostMapping("/getChannelPage")
  194. public Result getChannelPage(ChannelPageRequest request){
  195. ObjectMapper objectMapper = new ObjectMapper();
  196. String jsonParams = null;
  197. String authorization = redisTemplate
  198. .opsForValue()
  199. .get("Authorization:" + iccConfigProperty.getUsername());
  200. try {
  201. jsonParams = objectMapper.writeValueAsString(request);
  202. } catch (JsonProcessingException e) {
  203. log.error("JSON序列化失败: {}", e);
  204. return Result.error("请求失败");
  205. }
  206. // 创建请求体
  207. RequestBody body = RequestBody.create(jsonParams, JSON);
  208. // 构建请求
  209. Request requestHttp = new Request.Builder()
  210. .url("https://" + iccConfigProperty.getHost() + "/evo-apigw/evo-brm/"+ iccConfigProperty.getVersion() +"/device/channel/subsystem/page")
  211. .addHeader("Authorization", authorization)
  212. .post(body)
  213. .build();
  214. // 发送请求
  215. try (Response response = httpClient.newCall(requestHttp).execute()) {
  216. if (!response.isSuccessful()) {
  217. return Result.error("请求失败");
  218. }
  219. ResponseBody responseBody = response.body();
  220. if (responseBody != null) {
  221. String responseString = responseBody.string();
  222. JsonNode rootNode = objectMapper.readTree(responseString);
  223. JsonNode success = rootNode.path("success");
  224. if(success.isBoolean() && success.asBoolean()) {
  225. JsonNode dataNode = rootNode.path("data");
  226. if (dataNode.isObject()) {
  227. ChannelPageResponse intelligentPanelResponse = objectMapper.treeToValue(dataNode, ChannelPageResponse.class);
  228. return Result.ok(intelligentPanelResponse);
  229. } else {
  230. return Result.ok(null);
  231. }
  232. }else {
  233. JsonNode errMsgNode = rootNode.path("errMsg");
  234. String errMsg = errMsgNode.isTextual() ? errMsgNode.asText() : "未知错误";
  235. return Result.error(errMsg);
  236. }
  237. }
  238. } catch (IOException e) {
  239. log.error("请求失败: {}", e);
  240. }
  241. return Result.error("请求失败");
  242. }
  243. }