From a0341d4100c15c57fb645fd1f23225563e306712 Mon Sep 17 00:00:00 2001 From: fengxiang <110431245@qq.com> Date: Wed, 28 Feb 2018 10:55:55 +0800 Subject: [PATCH] 设备和监控点 两模块修改,同步reids里的信息。数据字典功能添加 --- src/main/java/com/moral/controller/ScreenController.java | 325 ++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 252 insertions(+), 73 deletions(-) diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java index 0da945c..eeac838 100644 --- a/src/main/java/com/moral/controller/ScreenController.java +++ b/src/main/java/com/moral/controller/ScreenController.java @@ -4,41 +4,62 @@ import static com.moral.common.util.RedisUtil.hasKey; import static com.moral.common.util.ResourceUtil.getValue; import static com.moral.common.util.WebUtils.getParametersStartingWith; -import static org.springframework.util.ObjectUtils.isEmpty; -import java.io.IOException; -import java.io.InputStreamReader; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.Map; +import java.io.*; +import java.lang.reflect.InvocationTargetException; +import java.util.*; +import java.util.stream.Collectors; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import com.alibaba.fastjson.*; +import com.moral.common.bean.JsonData; +import com.moral.common.bean.PageResult; +import com.moral.common.xml.Version; +import com.moral.entity.Account; +import com.moral.entity.Device; +import com.moral.entity.MapBounds; +import com.moral.entity.MonitorPoint; +import com.moral.entity.alarm.AlarmConfigValue; +import com.moral.entity.alarm.AlarmSensorLevel; +import com.moral.service.*; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang.ArrayUtils; +import org.apache.commons.net.ftp.FTPClient; +import org.apache.log4j.Logger; +import org.dom4j.Document; +import org.dom4j.Element; +import org.dom4j.io.SAXReader; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.web.bind.annotation.CrossOrigin; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.*; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONReader; -import com.alibaba.fastjson.TypeReference; -import com.moral.common.exception.BusinessException; +import com.moral.common.bean.ResultBean; import com.moral.common.util.ValidateUtil; -import com.moral.service.AccountService; -import com.moral.service.DeviceService; -import com.moral.service.HistoryService; +import org.springframework.web.servlet.ModelAndView; +import org.xml.sax.InputSource; /** * The Class ScreenController.������������ */ @RestController -@RequestMapping(value = "screen") -@CrossOrigin(origins = "*", maxAge = 3600) +@RequestMapping("/screen") +//@CrossOrigin(origins = "*", maxAge = 3600) public class ScreenController { + public static Logger log = Logger.getLogger(ScreenController.class); + @Resource + AlarmConfigService alarmConfigService; + @Resource + AreaService areaService; + + @Resource + SensorService sensorService; + @Resource + MonitorPointService monitorPointService; /** The screen service. */ @Resource @@ -52,6 +73,12 @@ @Resource private DeviceService deviceService; + @Resource + private HistoryMinutelyService historyMinutelyService; + + @Resource + private MachineActivateService machineActivateService; + /** The resource. */ @Value(value = "classpath:system/alarmLevels.json") private org.springframework.core.io.Resource resource; @@ -61,7 +88,7 @@ private RedisTemplate<String, String> redisTemplate; /** The level key. */ - private String levelKey = "alarm_level_config"; + private String levelKey = "alarm_"; /** * Screen login. ������������ @@ -91,16 +118,11 @@ * the request * @return the equipment states */ - @GetMapping("equipment-state") + @GetMapping("/equipment-state") + @PreAuthorize("hasAnyRole('USER', 'ADMIN')") public Map<String, Object> getDeviceStatesByAccount(HttpServletRequest request) { - Map<String, Object> result = new LinkedHashMap<String, Object>(); Map<String, Object> parameters = getParametersStartingWith(request, null); - if (!parameters.containsKey("accountId")) { - result.put("msg", "���������������������"); - } else { - result = deviceService.getDeviceStatesByAccount(parameters); - } - return result; + return deviceService.getDeviceStatesByAccount(parameters); } /** @@ -112,34 +134,37 @@ */ @SuppressWarnings("resource") @GetMapping("alarm-levels") - public Map<String, Object> getAlarmLevels(HttpServletRequest request) { - Map<String, Object> result = new LinkedHashMap<String, Object>(); + public Object getAlarmLevels(HttpServletRequest request, Integer orgId) { + List<Map<String,Object>> sensorAlarmList = null; try { - if (hasKey(redisTemplate, levelKey)) { - String levelConfigStr = get(redisTemplate, levelKey); - result = JSON.parseObject(levelConfigStr, new TypeReference<Map<String, Object>>() {}); - } else { - InputStreamReader reader = new InputStreamReader(resource.getInputStream()); - result = new JSONReader(reader).readObject(new TypeReference<LinkedHashMap<String, Object>>() {}); - } - } catch (IOException e) { + AlarmConfigValue alarmConfigValue = alarmConfigService.queryValueByOrganizationId(orgId).get(); + Map<String,AlarmSensorLevel> alarmLevelMap = alarmConfigValue.getAlarmLevels(); + sensorAlarmList = alarmLevelMap.keySet().stream().map(key -> { + AlarmSensorLevel alarmSensorLevel = alarmLevelMap.get(key); + JSONObject alarmSensorLevelMap = (JSONObject) JSON.toJSON(alarmSensorLevel); + alarmSensorLevelMap.put("key",key); + return alarmSensorLevelMap; + }).collect(Collectors.toList()); + } catch (Exception e) { e.printStackTrace(); - result.put("msg", "���������������������������������������������������" + e.getMessage()); + Map<String, Object> err = new LinkedHashMap<String, Object>(); + err.put("msg", "���������������������������������������������������" + e.getMessage()); + return err; } - return result; + return sensorAlarmList; } /** * Gets the standard by sensor.��������������������������� * - * @param request + * @param macKey * the request * @return the standard by sensor */ @GetMapping("sensor-standard") public Map<String, Object> getStandardBySensor(@RequestParam("macKey") String macKey) { + ValidateUtil.notEmpty(macKey, "param.is.null"); Map<String, Object> result = new HashMap<String, Object>(); - ValidateUtil.notEmpty(macKey, "���������������������"); result.put("standard", getValue(macKey + "-standard")); return result; } @@ -153,14 +178,8 @@ */ @GetMapping("day-aqi") public Map<String, Object> getDayAQIByDevice(HttpServletRequest request) { - Map<String, Object> result = new HashMap<String, Object>(); Map<String, Object> parameters = getParametersStartingWith(request, null); - if (!parameters.containsKey("mac")) { - result.put("msg", "���������������������"); - } else { - result = historyService.getDayAQIByDevice(parameters); - } - return result; + return historyMinutelyService.getDayAQIByDevice(parameters); } /** @@ -169,17 +188,12 @@ * @param request * the request * @return the average by all + * @throws Exception */ @GetMapping("all-average") - public Map<String, Object> getAllSensorAverageByDevice(HttpServletRequest request) { - Map<String, Object> result = new LinkedHashMap<String, Object>(); + public Map<String, Object> getAllSensorAverageByDevice(HttpServletRequest request) throws Exception { Map<String, Object> parameters = getParametersStartingWith(request, null); - if (!(parameters.containsKey("areaCode") && parameters.containsKey("accountId"))) { - result.put("msg", "���������������������"); - } else { - result = historyService.getAllSensorAverageByDevice(parameters); - } - return result; + return historyService.getAllSensorAverageByDevice(parameters); } /** @@ -191,15 +205,8 @@ */ @GetMapping("sensor-average") public Map<String, Object> getDeviceRankingBySensorAverage(HttpServletRequest request) { - Map<String, Object> result = new HashMap<String, Object>(); Map<String, Object> parameters = getParametersStartingWith(request, null); - if (!(parameters.containsKey("areaCode") && parameters.containsKey("accountId") - && parameters.containsKey("macKey"))) { - result.put("msg", "���������������������"); - } else { - result = historyService.getDeviceRankingBySensorAverage(parameters); - } - return result; + return historyService.getDeviceRankingBySensorAverage(parameters); } /** @@ -211,14 +218,186 @@ */ @GetMapping("month-sensor-average") public Map<String, Object> getMonthAverageBySensor(HttpServletRequest request) { - Map<String, Object> result = new HashMap<String, Object>(); Map<String, Object> parameters = getParametersStartingWith(request, null); - if (!(parameters.containsKey("mac") && parameters.containsKey("macKey"))) { - result.put("msg", "���������������������"); - } else { - result = historyService.getMonthAverageBySensor(parameters); - } - return result; + return historyMinutelyService.getMonthAverageBySensor(parameters); } + @GetMapping("check-activate") + public ResultBean<Integer> checkActivate(String macCpuCode) { + Integer result = machineActivateService.checkActivate(macCpuCode); + return new ResultBean<Integer>(result); + } + + @PostMapping("activate-machine") + public ResultBean<Integer> activateMachine(HttpServletRequest request) { + Map<String, Object> parameters = getParametersStartingWith(request, null); + Integer result = machineActivateService.activateMachine(parameters); + return new ResultBean<Integer>(result); + } + + /********************************************* + * ������������������������������������ + *********************************************/ + private String fileName = "Version.xml"; + private String ip = "121.40.92.176"; + private String userName = "ftp_user"; + private String userPwd = "qwer1234"; + private int port = 21; + private String path = "/"; + + @RequestMapping(value = "/upgrade", method = RequestMethod.GET) + public Version index() { + Version version = new Version(); + FTPClient ftpClient = new FTPClient(); + try { + ftpClient.connect(ip, port); + ftpClient.login(userName, userPwd); + ftpClient.changeWorkingDirectory(path); + //ftpClient.enterRemotePassiveMode(); + ftpClient.enterLocalPassiveMode(); + InputStream ins = ftpClient.retrieveFileStream(fileName); + BufferedReader reader = new BufferedReader(new InputStreamReader(ins,"utf-8")); + String line; + StringBuilder builder = new StringBuilder(); + while ((line = reader.readLine()) != null) { + builder.append(line); + } + reader.close(); + if (ins != null) { + ins.close(); + } + ftpClient.getReply(); + String content = builder.toString(); + if(ftpClient.isConnected()) { + ftpClient.logout(); + ftpClient.disconnect(); + } + SAXReader saxReader = new SAXReader(); + Document document = saxReader.read(new InputSource(new ByteArrayInputStream(content.getBytes("utf-8")))); + Element root = document.getRootElement(); + version.setVer(root.element("Ver").getText()); + version.setFileName(root.element("FileName").getText()); + version.setFileMD5Hash(root.element("FileMD5Hash").getText()); + } catch (Exception e) { + e.printStackTrace(); + } + return version; + } + /** + * ������������ + * ������ + */ + /** + * ������������ + * @param model + * @param code + * @param accountId + * @return + */ + @RequestMapping(value = "/map-page", method = RequestMethod.GET) + public ModelAndView map(ModelAndView model, @RequestParam("areaCode")int code, @RequestParam("accountId")int accountId){ + Account account = accountService.getAccountById(accountId); + String regionName = areaService.selectFullNameByCode(code); + if(account!=null&®ionName!=null){ + //������������ + regionName = regionName.replace(" ",""); + Object sensors = sensorService.queryAll(); + JSONObject params = new JSONObject(); + params.put("regionCode",code); + params.put("regionName",regionName); + params.put("accountId", accountId); + params.put("orgId", account.getOrganizationId()); + params.put("sensors", sensors); + String paramsJson = params.toJSONString(); + model.addObject("mapParams",paramsJson); + model.setViewName("map"); + return model; + } else { + StringBuilder msg = new StringBuilder(); + msg.append(" param[0] areaCode:"); + msg.append(code); + msg.append(" param[0] accountId:"); + msg.append(accountId); + log.warn(msg); + model.setViewName("401"); + return model; + } + } + @RequestMapping(value="/get-monitorpoints",method = RequestMethod.GET) + @ResponseBody + public ResultBean getMonitorpointList(@RequestParam("orgId")String orgId,MapBounds mapBounds){ + ResultBean<List<MonitorPoint>> resultBean = new ResultBean(); + Map<String,Object> paramMap = new HashMap<String, Object>(); + paramMap.put("orgId", orgId); + paramMap.put("mapBounds",mapBounds); + List<MonitorPoint> list = monitorPointService.queryWithStateByMap(paramMap); + resultBean.setData(list); + resultBean.setCode(ResultBean.SUCCESS); + return resultBean; + } + @RequestMapping(value="/get-devices",method = RequestMethod.GET) + @ResponseBody + public ResultBean getDevices(@RequestParam("orgId")Integer orgId,MapBounds mapBounds){ + ResultBean<List<Device>> resultBean = new ResultBean(); + Map<String,Object> paramMap = new HashMap<String, Object>(); + paramMap.put("orgId", orgId); + paramMap.put("mapBounds",mapBounds); + List<Device> list = deviceService.query(paramMap); + resultBean.setData(list); + resultBean.setCode(ResultBean.SUCCESS); + return resultBean; + } + @RequestMapping(value = "get-devices-for-popup",method = RequestMethod.GET) + @ResponseBody + public PageResult getDevicesForPopup( + @RequestParam("orgId")Integer orgId, + String name, + Integer pageSize, + Integer pageNo + ){ + return deviceService.query(orgId,name,pageSize,pageNo); + } + @RequestMapping(value = "get-devices-by-mid-oid",method = RequestMethod.GET) + @ResponseBody + public PageResult getDevicesByMidOid( + @RequestParam("orgId")Integer orgId, + @RequestParam("mpId")Integer mpId, + Integer pageSize, + Integer pageNo + ){ + return deviceService.query(orgId,mpId,pageSize,pageNo); + } + @RequestMapping(value="/get-real-state-data",method = RequestMethod.POST) + @ResponseBody + public JsonData getRealStateAndData(@RequestBody JSONObject paramMap){ + JsonData jsonData = new JsonData(); + Map<String,Object> returnMap = new HashMap<String, Object>(); + returnMap.put("layer", paramMap.getString("layer")); + //��������������������������� + if(!CollectionUtils.isEmpty(paramMap.getJSONArray("markerKeys"))) { + JSONArray markerKeys = paramMap.getJSONArray("markerKeys"); + List<Map<String, String>> markers = null; + if("equipments".equals(paramMap.getString("layer"))) { + markers = deviceService.queryDevicesState(markerKeys.toJavaList(String.class),true); + }else {//���������������id���state + String orgId= paramMap.getString("orgId"); + String areaCode= paramMap.getString("areaCode"); + for(Object mPointId:markerKeys) { + markers = monitorPointService.queryMonitroPointsState(markerKeys.toJavaList(Integer.class)); + } + } + returnMap.put("markers", markers); + } + if(paramMap.getJSONArray("popupEquMacs")!=null&¶mMap.getJSONArray("popupEquMacs").size()>0) { + JSONArray popupEquMacs = paramMap.getJSONArray("popupEquMacs"); + List<Map<String, String>> popupEquWithStates = null; + for(Object mac:popupEquMacs) { + popupEquWithStates = deviceService.queryDevicesState(popupEquMacs.toJavaList(String.class),false); + } + //��������������������������� + returnMap.put("popupEquStates", popupEquWithStates); + } + jsonData.setExtData(returnMap); + return jsonData; + } } -- Gitblit v1.8.0