From f9640a02ea2abd1369c179f3ec88a7f9d91dea62 Mon Sep 17 00:00:00 2001
From: xufenglei <xufenglei>
Date: Wed, 13 Mar 2019 14:09:45 +0800
Subject: [PATCH] 排放超标比例 报表
---
src/main/java/com/moral/service/DeviceService.java | 2
src/main/java/com/moral/service/impl/HistoryDailyServiceImpl.java | 30 +++++++
src/main/resources/mapper/DeviceMapper.xml | 4 +
src/main/java/com/moral/service/HistoryDailyService.java | 2
src/main/java/com/moral/controller/ReportController.java | 11 ++
src/main/java/com/moral/mapper/DeviceMapper.java | 1
src/main/java/com/moral/mapper/HistoryDailyMapper.java | 2
src/main/resources/mapper/HistoryDailyMapper.xml | 61 +++++++++++++++
src/main/java/com/moral/controller/ScreenController.java | 118 ++++++++++++++++++++++++++---
src/main/java/com/moral/service/impl/DeviceServiceImpl.java | 6 +
10 files changed, 223 insertions(+), 14 deletions(-)
diff --git a/src/main/java/com/moral/controller/ReportController.java b/src/main/java/com/moral/controller/ReportController.java
index 30a2188..d191744 100644
--- a/src/main/java/com/moral/controller/ReportController.java
+++ b/src/main/java/com/moral/controller/ReportController.java
@@ -112,4 +112,15 @@
return new ResultBean<List<Map<String, Object>>>(result);
}
+
+ @GetMapping("overproof")
+ public ResultBean<Map> getOverproofData(HttpServletRequest request, JwtAuthenticationToken token) throws Exception {
+ Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+ UserContext userContext = token.getPrincipal();
+ Integer orgId = userContext.getOrganizationId();
+ parameters.put("orgId", orgId);
+ //List<Map<String, Object>> result = null;
+ Map result = historyDailyService.getOverproofData(parameters);
+ return new ResultBean<Map>(result);
+ }
}
diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java
index 24a34eb..e2cd8e5 100644
--- a/src/main/java/com/moral/controller/ScreenController.java
+++ b/src/main/java/com/moral/controller/ScreenController.java
@@ -3,24 +3,24 @@
import static com.moral.common.util.ResourceUtil.getValue;
import static com.moral.common.util.WebUtils.getParametersStartingWith;
-import java.io.*;
-import java.util.*;
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
import java.util.stream.Collectors;
+
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
-import com.alibaba.fastjson.*;
-import com.moral.common.util.BeanUtils;
-import com.moral.common.util.ParameterUtils;
-import com.moral.common.util.StringUtils;
-import com.moral.entity.*;
-import com.moral.entity.alarm.AlarmConfig;
-import com.moral.entity.alarm.AlarmConfigValue;
-import com.moral.entity.charts.DataSortCondition;
-import com.moral.entity.layout.RealTimeDeviceLayout;
-import com.moral.service.*;
import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang.math.NumberUtils;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.log4j.Logger;
import org.dom4j.Document;
@@ -31,17 +31,61 @@
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.util.ObjectUtils;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.CrossOrigin;
+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.Constants;
import com.moral.common.bean.JsonData;
import com.moral.common.bean.PageResult;
import com.moral.common.bean.ResultBean;
+import com.moral.common.util.BeanUtils;
+import com.moral.common.util.ParameterUtils;
import com.moral.common.util.ValidateUtil;
import com.moral.common.util.WebUtils;
import com.moral.common.xml.Version;
+import com.moral.entity.Account;
+import com.moral.entity.AreaNames;
+import com.moral.entity.Device;
+import com.moral.entity.DeviceVersion;
+import com.moral.entity.MapBounds;
+import com.moral.entity.MonitorPoint;
+import com.moral.entity.Organization;
+import com.moral.entity.Region;
+import com.moral.entity.alarm.AlarmConfig;
+import com.moral.entity.alarm.AlarmConfigValue;
import com.moral.entity.alarm.AlarmSensorLevel;
+import com.moral.entity.charts.DataSortCondition;
+import com.moral.entity.layout.RealTimeDeviceLayout;
+import com.moral.service.AccountService;
+import com.moral.service.AlarmConfigService;
+import com.moral.service.AlarmDailyService;
+import com.moral.service.AreaService;
+import com.moral.service.DeviceService;
+import com.moral.service.DeviceVersionService;
+import com.moral.service.DictionaryDataService;
+import com.moral.service.HangzhouAqiService;
+import com.moral.service.HistoryDailyService;
+import com.moral.service.HistoryMinutelyService;
+import com.moral.service.HistoryService;
+import com.moral.service.MachineActivateService;
+import com.moral.service.MonitorPointService;
+import com.moral.service.OrganizationLayoutService;
+import com.moral.service.OrganizationService;
+import com.moral.service.QualityDailyService;
+import com.moral.service.SensorService;
+import com.moral.service.WeatherService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@@ -789,4 +833,50 @@
Collection<Object> monitorPoints= monitorPointService.getDevicesStateByRegion(parameters);
return new ResultBean<Collection<Object>>(monitorPoints);
}
+
+ @Resource
+ private HistoryDailyService historyDailyService;
+
+ @GetMapping("emissions")
+ @ApiOperation(value = "���������", notes = "���������")
+ @ApiImplicitParams(value = {
+ @ApiImplicitParam(name = "organizationId",defaultValue = "5", value = "���������������������id", required = true, paramType = "query", dataType = "Integer"),
+ @ApiImplicitParam(name = "time",defaultValue = "2019", value = "���������������", required = true, paramType = "query", dataType = "String"),
+ @ApiImplicitParam(name = "sensorKey",defaultValue = "e27", value = "������������������������key", required = true, paramType = "query", dataType = "String"),
+ @ApiImplicitParam(name = "regionCode",defaultValue = "130000", value = "���������", required = true, paramType = "query", dataType = "String")
+ })
+ public ResultBean<List<Map<String, Object>>> getemissionsData(HttpServletRequest request) throws Exception {
+ Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+ List<Map<String, Object>> result = historyDailyService.getEmissionsData(parameters);
+ return new ResultBean<List<Map<String, Object>>>(result);
+ }
+
+
+ @GetMapping("overproof")
+ @ApiOperation(value = "������������", notes = "������������")
+ @ApiImplicitParams(value = {
+ @ApiImplicitParam(name = "organizationId",defaultValue = "5", value = "���������������������id", required = true, paramType = "query", dataType = "Integer"),
+ @ApiImplicitParam(name = "time",defaultValue = "2019", value = "���������������", required = true, paramType = "query", dataType = "String"),
+ @ApiImplicitParam(name = "sensorKey",defaultValue = "e27", value = "������������������������key", required = true, paramType = "query", dataType = "String"),
+ @ApiImplicitParam(name = "overproofRatio",defaultValue = "0", value = "������������(0,1,2,3)(������,������100%,������200%,������300%)", required = true, paramType = "query", dataType = "String"),
+ @ApiImplicitParam(name = "regionCode",defaultValue = "130000", value = "���������", required = true, paramType = "query", dataType = "String")
+ })
+ public ResultBean<Map> getOverproofData(HttpServletRequest request) throws Exception {
+ Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+ Map result = historyDailyService.getOverproofData(parameters);
+ return new ResultBean<Map>(result);
+ }
+
+ @GetMapping("limit-device")
+ @ApiOperation(value = "���������������������������", notes = "���������������������������")
+ @ApiImplicitParams(value = {
+ @ApiImplicitParam(name = "mac",defaultValue = "p5dnd7a0391956", value = "������mac���", required = true, paramType = "query", dataType = "String")
+ })
+ public ResultBean<Map<String, Object>> getLimitDataByDevice(HttpServletRequest request) throws Exception {
+ Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+ String density = deviceService.getLimitDataByDevice(parameters);
+ JSONObject parseObject = JSONObject.parseObject(density);
+ return new ResultBean<Map<String, Object>>(parseObject);
+ }
+
}
diff --git a/src/main/java/com/moral/mapper/DeviceMapper.java b/src/main/java/com/moral/mapper/DeviceMapper.java
index 70c23aa..2d4ae0f 100644
--- a/src/main/java/com/moral/mapper/DeviceMapper.java
+++ b/src/main/java/com/moral/mapper/DeviceMapper.java
@@ -41,4 +41,5 @@
List<Map<String, Object>> getDevicesStateByRegion(Map<String, Object> parameters);
List<Device> getDeviceList(Example example);
+ String getLimitDataByDevice(Map<String, Object> parameters);
}
\ No newline at end of file
diff --git a/src/main/java/com/moral/mapper/HistoryDailyMapper.java b/src/main/java/com/moral/mapper/HistoryDailyMapper.java
index 2c6cc90..7a0c48f 100644
--- a/src/main/java/com/moral/mapper/HistoryDailyMapper.java
+++ b/src/main/java/com/moral/mapper/HistoryDailyMapper.java
@@ -7,4 +7,6 @@
List<Map<String, Object>> getEmissionsData(Map<String, Object> parameters);
+ List<Map<String, Object>> getOverproofData(Map<String, Object> parameters);
+
}
diff --git a/src/main/java/com/moral/service/DeviceService.java b/src/main/java/com/moral/service/DeviceService.java
index 8181d0a..ce6b075 100644
--- a/src/main/java/com/moral/service/DeviceService.java
+++ b/src/main/java/com/moral/service/DeviceService.java
@@ -56,4 +56,6 @@
void saveOrUpdate4Mobile(Device device, DeviceProperty deviceProperty);
+ String getLimitDataByDevice(Map<String, Object> parameters);
+
}
diff --git a/src/main/java/com/moral/service/HistoryDailyService.java b/src/main/java/com/moral/service/HistoryDailyService.java
index b06a3ba..fa19eb8 100644
--- a/src/main/java/com/moral/service/HistoryDailyService.java
+++ b/src/main/java/com/moral/service/HistoryDailyService.java
@@ -6,4 +6,6 @@
public interface HistoryDailyService {
List<Map<String, Object>> getEmissionsData(Map<String, Object> parameters) throws Exception;
+ Map getOverproofData(Map<String, Object> parameters) throws Exception;
+
}
diff --git a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java
index 79afd10..b36e58b 100644
--- a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java
@@ -604,4 +604,10 @@
}
+ @Override
+ public String getLimitDataByDevice(Map<String, Object> parameters) {
+ // TODO Auto-generated method stub
+ return deviceMapper.getLimitDataByDevice(parameters);
+ }
+
}
diff --git a/src/main/java/com/moral/service/impl/HistoryDailyServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryDailyServiceImpl.java
index 6c6bcea..8517875 100644
--- a/src/main/java/com/moral/service/impl/HistoryDailyServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/HistoryDailyServiceImpl.java
@@ -91,4 +91,34 @@
}
}
+ @Override
+ public Map getOverproofData(Map<String, Object> parameters) throws Exception {
+ getAllchildrenOrg(parameters);
+ ParameterUtils.getTimeType4Time(parameters);
+ ParameterUtils.getElementByType(parameters);
+ ParameterUtils.getStartAndEndByTime(parameters);
+ ParameterUtils.getRegionType4RegionCode(parameters);
+ List<Map<String, Object>> list = historyDailyMapper.getOverproofData(parameters);
+ Map<String, Map<String, Object>[]> resultMap = new HashMap<String, Map<String, Object>[]>();
+ for (Map<String, Object> map : list) {
+ String name = map.get("name").toString();
+ Integer deviceTech = Integer.valueOf(map.get("device_tech").toString());
+ Map<String,Object>[] resultlist ;
+ if (resultMap.containsKey(name)) {
+ resultlist = resultMap.get(name);
+ } else {
+ resultlist = new HashMap[3];
+ }
+ resultlist[deviceTech-1] = new HashMap<String,Object>() {
+ private static final long serialVersionUID = 1L;
+ {
+ put("avg", map.get("avg"));
+ put("limit", map.get("limit"));
+ }
+ };
+ resultMap.put(name, resultlist);
+ }
+ return resultMap;
+ }
+
}
diff --git a/src/main/resources/mapper/DeviceMapper.xml b/src/main/resources/mapper/DeviceMapper.xml
index 2932898..68910e8 100644
--- a/src/main/resources/mapper/DeviceMapper.xml
+++ b/src/main/resources/mapper/DeviceMapper.xml
@@ -414,4 +414,8 @@
</if>
)
</select>
+
+ <select id="getLimitDataByDevice" resultType="String">
+ SELECT limit_val FROM view_device_density WHERE mac = #{mac}
+ </select>
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/HistoryDailyMapper.xml b/src/main/resources/mapper/HistoryDailyMapper.xml
index 549b64f..6fa840a 100644
--- a/src/main/resources/mapper/HistoryDailyMapper.xml
+++ b/src/main/resources/mapper/HistoryDailyMapper.xml
@@ -33,4 +33,65 @@
</where>
GROUP BY mp.`name`, vdi.mac
</select>
+
+
+ <select id="getOverproofData" resultType="java.util.Map">
+ SELECT
+ AVG( hd.`json` -> '$.${sensorKey}[0]' ) avg,
+ ( SELECT DISTINCT limit_val ->> '$.${sensorKey}' FROM view_device_density WHERE monitor_point_id = vdd.monitor_point_id AND device_tech = vdd.device_tech ) `limit`,
+ ( SELECT mp.`name` FROM monitor_point mp WHERE mp.id = vdd.monitor_point_id ) `name`,
+ vdd.device_tech
+ FROM
+ history_daily hd,
+ view_device_density vdd,
+ (
+ SELECT
+ vdd.monitor_point_id
+ FROM
+ history_daily hd,
+ device vdd,
+ monitor_point mp
+ <where>
+ hd.mac = vdd.mac
+ AND mp.id = vdd.monitor_point_id
+ <if test="start != null">
+ AND hd.time >= #{start}
+ </if>
+ <if test="end != null">
+ AND hd.time < #{end}
+ </if>
+ <if test="regionCode != null">
+ AND mp.${regionType}_code = #{regionCode}
+ </if>
+ <if test="orgIds != null and orgIds.size > 0">
+ AND mp.organization_id IN
+ <foreach collection="orgIds" open="(" separator="," close=")"
+ item="listItem">
+ #{listItem}
+ </foreach>
+ </if>
+ </where>
+ GROUP BY
+ vdd.mac,
+ vdd.monitor_point_id
+ HAVING
+ AVG( hd.`json` -> '$.${sensorKey}[0]' ) >= ( SELECT limit_val ->> '$.${sensorKey}' FROM view_device_density WHERE mac = vdd.mac ) * (1 + #{overproofRatio} * 1)
+ <if test="overproofRatio != 0 and overproofRatio != 3">
+ AND AVG( hd.`json` -> '$.${sensorKey}[0]' ) < ( SELECT limit_val ->> '$.${sensorKey}' FROM view_device_density WHERE mac = vdd.mac ) * (2 + #{overproofRatio} * 1)
+ </if>
+ ) ta
+ <where>
+ hd.mac = vdd.mac
+ AND vdd.monitor_point_id = ta.monitor_point_id
+ <if test="start != null">
+ AND hd.time >= #{start}
+ </if>
+ <if test="end != null">
+ AND hd.time < #{end}
+ </if>
+ </where>
+ GROUP BY
+ vdd.monitor_point_id,
+ vdd.device_tech
+ </select>
</mapper>
\ No newline at end of file
--
Gitblit v1.8.0