From 093a58b2b7df015c371daa1c1634ff8bfd8f003b Mon Sep 17 00:00:00 2001 From: xufenglei <xufenglei> Date: Wed, 21 Mar 2018 10:12:27 +0800 Subject: [PATCH] 报表 优化 --- src/main/java/com/moral/controller/ScreenController.java | 185 +++++++++++++++++++++++++++++++++++++-------- 1 files changed, 150 insertions(+), 35 deletions(-) diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java index 0673c42..21c6424 100644 --- a/src/main/java/com/moral/controller/ScreenController.java +++ b/src/main/java/com/moral/controller/ScreenController.java @@ -1,26 +1,22 @@ package com.moral.controller; -import static com.moral.common.util.RedisUtil.get; -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 java.io.*; +import java.io.BufferedReader; +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.io.InputStreamReader; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; -import com.alibaba.fastjson.JSONObject; -import com.moral.common.bean.PageResult; -import com.moral.common.xml.Version; -import com.moral.entity.Account; -import com.moral.entity.MapBounds; -import com.moral.entity.MonitorPoint; -import com.moral.service.*; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.net.ftp.FTPClient; import org.apache.log4j.Logger; import org.dom4j.Document; @@ -29,16 +25,40 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; 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.bean.ResultBean; -import com.moral.common.util.ValidateUtil; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.ModelAndView; import org.xml.sax.InputSource; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.moral.common.bean.JsonData; +import com.moral.common.bean.PageResult; +import com.moral.common.bean.ResultBean; +import com.moral.common.util.ValidateUtil; +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.AccountService; +import com.moral.service.AlarmConfigService; +import com.moral.service.AreaService; +import com.moral.service.DeviceService; +import com.moral.service.HistoryMinutelyService; +import com.moral.service.HistoryService; +import com.moral.service.MachineActivateService; +import com.moral.service.MonitorPointService; +import com.moral.service.SensorService; /** * The Class ScreenController.������������ @@ -48,7 +68,8 @@ //@CrossOrigin(origins = "*", maxAge = 3600) public class ScreenController { public static Logger log = Logger.getLogger(ScreenController.class); - + @Resource + AlarmConfigService alarmConfigService; @Resource AreaService areaService; @@ -130,23 +151,24 @@ */ @SuppressWarnings("resource") @GetMapping("alarm-levels") - public Map<String, Object> getAlarmLevels(HttpServletRequest request,String orgId) { - Map<String, Object> result = new LinkedHashMap<String, Object>(); - String key = levelKey + orgId; + public Object getAlarmLevels(HttpServletRequest request, Integer orgId) { + List<Map<String,Object>> sensorAlarmList = null; try { - if (hasKey(redisTemplate, key)) { - String levelConfigStr = get(redisTemplate, key); - 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; } /** @@ -183,9 +205,10 @@ * @param request * the request * @return the average by all + * @throws Exception */ @GetMapping("all-average") - public Map<String, Object> getAllSensorAverageByDevice(HttpServletRequest request) { + public Map<String, Object> getAllSensorAverageByDevice(HttpServletRequest request) throws Exception { Map<String, Object> parameters = getParametersStartingWith(request, null); return historyService.getAllSensorAverageByDevice(parameters); } @@ -277,12 +300,24 @@ } 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); @@ -317,6 +352,18 @@ 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( @@ -327,4 +374,72 @@ ){ 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; + } + + @GetMapping("monitor_points") + public ResultBean<List<MonitorPoint>> getMonitorPointsByOrganizationId(Integer orgId) { + //Map<String, Object> parameters = getParametersStartingWith(request, null); + List<MonitorPoint> monitorPoints = monitorPointService.getMonitorPointsByOrganizationId(orgId); + return new ResultBean<List<MonitorPoint>>(monitorPoints); + } + + @GetMapping("report_avg_datas") + public ResultBean<List<Map<String, Object>>> getMonitorPointOrDeviceAvgData(HttpServletRequest request) throws Exception { + Map<String, Object> parameters = getParametersStartingWith(request, null); + parameters.put("type", "month"); + parameters.put("format", "yyyy-MM"); + parameters.put("typeFormat", "%Y-%m-%d"); + List<Map<String, Object>> list = historyMinutelyService.getMonitorPointOrDeviceAvgData(parameters); + String sensorKey = parameters.get("sensorKey").toString(); + for (Map<String, Object> map : list) { + String time = map.get("time").toString(); + time = time.substring(time.length() - 2); + map.put("time", Integer.valueOf(time)); + map.put("value", map.get(sensorKey)); + map.remove(sensorKey); + } + return new ResultBean<List<Map<String, Object>>>(list); + } } -- Gitblit v1.8.0