package com.cloud.retrieve.service.impl; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.cloud.common.utils.JsonUtil; import com.cloud.common.utils.RestTemplateUtil; import com.cloud.model.common.Page; import com.cloud.model.common.Result; import com.cloud.retrieve.service.DeviceService; import com.cloud.retrieve.utils.EnumStr; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; import java.util.ArrayList; import java.util.List; import java.util.Map; @Slf4j @Service public class DeviceServiceImpl implements DeviceService { @Autowired private EnumStr enumStr; /** * 获取设备类型 * @return */ @Override public Result getDeviceType() { try { String url = "http://" + enumStr.getDeviceServiceUrl()+":" + enumStr.getDeviceServicePort()+ "/data/api-d/device/getDeviceType"; JSONObject jsonObject = new JSONObject(); jsonObject.put("type", "DEVICE_TYPE"); String result = RestTemplateUtil.post(url, jsonObject, MediaType.APPLICATION_FORM_URLENCODED, true); if(StringUtils.isNotEmpty(result)) return JSONObject.parseObject(result, Result.class); } catch (Exception e) { e.printStackTrace(); } return Result.custom("查询失败", 500, false, "服务调用失败"); } /** * 获取设备品牌 * @return */ @Override public Result getDeviceBrand() { try { String url = "http://" + enumStr.getDeviceServiceUrl()+":" + enumStr.getDeviceServicePort()+ "/data/api-d/device/getDeviceBrand"; JSONObject jsonObject = new JSONObject(); jsonObject.put("type", "DEVICE_BRAND"); String result = RestTemplateUtil.get(url, jsonObject, true); if(StringUtils.isNotEmpty(result)) return JSONObject.parseObject(result, Result.class); } catch (Exception e) { e.printStackTrace(); } return Result.custom("查询失败", 500, false, "服务调用失败"); } /** * 获取设备状态 * @return */ @Override public Result getStatusList() { try { String url = "http://" + enumStr.getDeviceServiceUrl()+":" + enumStr.getDeviceServicePort()+ "/data/api-d/device/getStatus"; JSONObject jsonObject = new JSONObject(); jsonObject.put("type", "DEVICE_STATUS"); String result = RestTemplateUtil.get(url, jsonObject, true); if(StringUtils.isNotEmpty(result)){ Result res = JSONObject.parseObject(result, Result.class); if(res !=null && res.isSuccess()){ return res; } } } catch (Exception e) { e.printStackTrace(); } return Result.custom("查询失败", 500, false, "服务调取失败"); } /** * 获取组织机构树及设备(不包含集群设备) * @param param * @return */ @Override public List getOrgDeviceTree(Map param) { List list = new ArrayList<>(); String url = "http://" + enumStr.getDeviceServiceUrl()+":" + enumStr.getDeviceServicePort()+ "/data/api-d/device/getOrgDeviceTree"; try { JSONObject jsonObject = JsonUtil.mapToJson(param); String result = RestTemplateUtil.get(url, jsonObject, true); if(StringUtils.isNotEmpty(result)) list = JSONArray.parseArray(result); } catch (Exception e) { log.info(e.getMessage()); } return list; } /** * 获取地区下的设备(不区分集群和非集群) * @param param * @return */ @Override public Result findByArea(Map param) { try { String url = "http://" + enumStr.getDeviceServiceUrl()+":" + enumStr.getDeviceServicePort()+ "/data/api-d/device/findByArea"; JSONObject jsonObject = JsonUtil.mapToJson(param); String result = RestTemplateUtil.get(url, jsonObject, true); if(StringUtils.isNotEmpty(result)){ Result res = JSONObject.parseObject(result, Result.class); if(res !=null && res.isSuccess()) return res; } } catch (Exception e) { e.printStackTrace(); return Result.error(e); } return Result.custom("查询失败", 500, false, "查询失败"); } @Override public Result findAllDeviceByArea(Map param){ try { String url = "http://" + enumStr.getDeviceServiceUrl()+":" + enumStr.getDeviceServicePort()+ "/data/api-d/device/findAllDeviceByArea"; JSONObject jsonObject = JsonUtil.mapToJson(param); String result = RestTemplateUtil.get(url, jsonObject, true); if(StringUtils.isNotEmpty(result)){ Result res = JSONObject.parseObject(result, Result.class); if(res !=null && res.isSuccess()) return res; } } catch (Exception e) { e.printStackTrace(); return Result.error(e); } return Result.custom("查询失败", 500, false, "查询失败"); } /** * 获取非集群下的设备 * @param param * @return */ @Override public Result findAllPlatDeviceList(Map param) { try { String url = "http://" + enumStr.getDeviceServiceUrl()+":" + enumStr.getDeviceServicePort()+ "/data/api-d/device/findAllPlatDeviceList"; JSONObject jsonObject = JsonUtil.mapToJson(param); String result = RestTemplateUtil.get(url, jsonObject, true); if(StringUtils.isNotEmpty(result)){ Result res = JSONObject.parseObject(result, Result.class); if(res !=null && res.isSuccess()) return res; } } catch (Exception e) { e.printStackTrace(); return Result.error(e); } return Result.custom("查询失败", 500, false, "查询失败"); } /** * 通过设备id获取设备信息 * @param id * @return */ @Override public Result getDeviceById(String id){ try { String url = "http://" + enumStr.getDeviceServiceUrl()+":" + enumStr.getDeviceServicePort()+ "/data/api-d/device/getDeviceById"; JSONObject jsonObject = new JSONObject(); jsonObject.put("id",id); String result = RestTemplateUtil.post(url, jsonObject, MediaType.APPLICATION_FORM_URLENCODED, true); if(StringUtils.isNotEmpty(result)){ Result res = JSONObject.parseObject(result, Result.class); if(res !=null && res.isSuccess()) return res; } } catch (Exception e) { e.printStackTrace(); } return Result.custom("查询失败", 500, false, "服务调取失败"); } @Override public Result getNodeByDeviceId(String id) { String url = "http://" + enumStr.getDeviceServiceUrl()+":" + enumStr.getDeviceServicePort()+ "/data/api-d/device/getNodeByDeviceId"; JSONObject jsonObject = new JSONObject(); jsonObject.put("deviceId",id); String respJson = RestTemplateUtil.get(url, jsonObject, true); Result result = JSONObject.parseObject(respJson,Result.class); return result; } @Override public Result getDevSnapshot(String id) { String url = "http://" + enumStr.getDeviceServiceUrl()+":" + enumStr.getDeviceServicePort()+ "/data/api-d/device/getDevSnapshot"; // localhost JSONObject jsonObject = new JSONObject(); jsonObject.put("devId",id); String respJson = RestTemplateUtil.post(url, jsonObject,MediaType.APPLICATION_JSON_UTF8, true); Result result = JSONObject.parseObject(respJson,Result.class); return result; } /** * 查询设备管理中的所有设备 * @return */ @Override public Result findAllDevices() { try { String url = "http://" + enumStr.getDeviceServiceUrl()+":" + enumStr.getDeviceServicePort()+ "/data/api-d/device/findAllDevices"; String result = RestTemplateUtil.get(url, new JSONObject(), true); if(StringUtils.isNotEmpty(result)){ Result res = JSONObject.parseObject(result, Result.class); if(res !=null && res.isSuccess()) return res; } } catch (Exception e) { e.printStackTrace(); return Result.error(e); } return Result.custom("查询失败", 500, false, "服务调取失败"); } /** * 获取 设备模块 依据 设备id 查询 设备信息 * wp 19-02-12 * @return */ @Override public JSONObject getNodeByDevId(String devId) { String url = "http://" + enumStr.getDeviceServiceUrl()+":" + enumStr.getDeviceServicePort()+ "/data/api-d/device/getNodeByDevId"; try { JSONObject jsonParam = new JSONObject(); jsonParam.put("devId", devId); String resp = RestTemplateUtil.get(url, jsonParam,true); if(StringUtils.isNotEmpty(resp)){ Result result = JSONObject.parseObject(resp, Result.class); if(result !=null && result.isSuccess() && result.getData() !=null){ return JSONObject.parseObject(result.getData().toString()); } } } catch (Exception e) { e.printStackTrace(); } return null; } }