From fa525b45b0a3f4e524462dceb409c30909c5be72 Mon Sep 17 00:00:00 2001
From: xufenglei <xufenglei>
Date: Mon, 30 Oct 2017 13:51:49 +0800
Subject: [PATCH] 增加 参数空值校验
---
src/main/java/com/moral/monitor/service/impl/ScreenServiceImpl.java | 62 ++++-----------
src/main/java/com/moral/monitor/util/BusinessException.java | 14 +++
src/main/java/com/moral/monitor/util/WebUtils.java | 42 ++++++++++
src/main/resources/sysConfig.properties | 27 +++---
src/main/java/com/moral/monitor/controller/ScreenController.java | 76 ++++++++++++++++--
5 files changed, 154 insertions(+), 67 deletions(-)
diff --git a/src/main/java/com/moral/monitor/controller/ScreenController.java b/src/main/java/com/moral/monitor/controller/ScreenController.java
index 1461e55..45b9ace 100644
--- a/src/main/java/com/moral/monitor/controller/ScreenController.java
+++ b/src/main/java/com/moral/monitor/controller/ScreenController.java
@@ -1,6 +1,7 @@
package com.moral.monitor.controller;
import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -13,19 +14,22 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.util.WebUtils;
import com.moral.monitor.entity.AccountEntity;
import com.moral.monitor.service.ScreenService;
+import com.moral.monitor.util.BusinessException;
import com.moral.monitor.util.Crypto;
+import com.moral.monitor.util.WebUtils;
@RestController
@RequestMapping(value = "screen")
@CrossOrigin(origins = "*", maxAge = 3600)
public class ScreenController {
+ /** The screen service. */
@Autowired
- private ScreenService screenService;
+ private ScreenService screenService;
+
/**
* Screen login.
*
@@ -65,25 +69,79 @@
resultMap.put("accountId", accountId);
return resultMap;
}
-
+
+ /**
+ * Gets the month data by equipment.
+ *
+ * @param request the request
+ * @return the month data by equipment
+ */
@RequestMapping(value = "/month", method = RequestMethod.GET)
public Map<String, Object> getMonthDataByEquipment(HttpServletRequest request) {
- Map<String, Object> parameters = WebUtils.getParametersStartingWith(request,null);
- Map<String, Object> result = screenService.getMonthDataByEquipment(parameters);
+ Map<String, Object> result = new LinkedHashMap<String, Object>();
+ try {
+ Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+ if (!(parameters.containsKey("mac") && parameters.containsKey("macKey"))) {
+ result.put("msg", "���������������������");
+ } else {
+ result = screenService.getMonthDataByEquipment(parameters);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ result.put("msg", "������������������������������");
+ }
return result;
}
+ /**
+ * Gets the average by all.
+ *
+ * @param request the request
+ * @return the average by all
+ */
@RequestMapping(value = "/all-average", method = RequestMethod.GET)
public Map<String, Object> getAverageByAll(HttpServletRequest request) {
- Map<String, Object> parameters = WebUtils.getParametersStartingWith(request,null);
- Map<String, Object> result = screenService.getAverageByAll(parameters);
+ Map<String, Object> result = new LinkedHashMap<String, Object>();
+ try {
+ Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+ if (!(parameters.containsKey("areaCode") && parameters.containsKey("accountId"))) {
+ result.put("msg", "���������������������");
+ } else {
+ result = screenService.getAverageByAll(parameters);
+ }
+ } catch (BusinessException be) {
+ be.printStackTrace();
+ result.put("msg", be.getMessage());
+ } catch (Exception e) {
+ e.printStackTrace();
+ result.put("msg", "������������������������������");
+ }
return result;
}
+ /**
+ * Gets the equipment states.
+ *
+ * @param request the request
+ * @return the equipment states
+ */
@RequestMapping(value = "/equipment-state", method = RequestMethod.GET)
public Map<String, Object> getEquipmentStates(HttpServletRequest request) {
- Map<String, Object> parameters = WebUtils.getParametersStartingWith(request,null);
- Map<String, Object> result = screenService.getEquipmentStates(parameters);
+ Map<String, Object> result = new LinkedHashMap<String, Object>();
+ try {
+ Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+ if (!parameters.containsKey("accountId")) {
+ result.put("msg", "���������������������");
+ } else {
+ result = screenService.getEquipmentStates(parameters);
+ }
+ } catch (BusinessException be) {
+ be.printStackTrace();
+ result.put("msg", be.getMessage());
+ } catch (Exception e) {
+ e.printStackTrace();
+ result.put("msg", "������������������������������");
+ }
return result;
}
}
diff --git a/src/main/java/com/moral/monitor/service/impl/ScreenServiceImpl.java b/src/main/java/com/moral/monitor/service/impl/ScreenServiceImpl.java
index c44c6fe..7ed83b2 100644
--- a/src/main/java/com/moral/monitor/service/impl/ScreenServiceImpl.java
+++ b/src/main/java/com/moral/monitor/service/impl/ScreenServiceImpl.java
@@ -10,10 +10,10 @@
import java.util.Map;
import java.util.Set;
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.collections.MapUtils;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang.time.DateUtils;
+import org.apache.commons.lang3.time.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
@@ -25,6 +25,7 @@
import com.moral.monitor.entity.AccountEntityExample;
import com.moral.monitor.service.OrganizationService;
import com.moral.monitor.service.ScreenService;
+import com.moral.monitor.util.BusinessException;
import com.moral.monitor.util.ResourceUtil;
@Service
@@ -45,32 +46,17 @@
return accountMapper.selectByExample(example);
}
- @SuppressWarnings("deprecation")
public Map<String, Object> getMonthDataByEquipment(Map<String, Object> parameters) {
Map<String, Object> resultMap = new HashMap<String, Object>();
Date date = new Date();
-
- /** ������������ ������������������������ **/
- date.setMonth(6);
- int day = date.getDate();
- if (day < 13) {
- day = 31 - day;
- }else if (day < 19) {
- day += 10;
- }else if (day > 29) {
- day -= 10;
- }
- date.setDate(day);
- /** ������������ ������ **/
-
- parameters.put("end", DateUtils.truncate(date, Calendar.DATE));
-
//���������������������������������������
- /*if (1 == Calendar.getInstance().get(Calendar.DAY_OF_MONTH)) {
- date = DateUtils.setMonths(date, -1);
- parameters.put("end", DateUtils.ceiling(date, Calendar.MONTH));
- }*/
+ if (1 == Calendar.getInstance().get(Calendar.DAY_OF_MONTH)) {
+ parameters.put("start", DateUtils.truncate(DateUtils.addMonths(date, -1), Calendar.MONTH));
+ }
parameters.put("start", DateUtils.truncate(date, Calendar.MONTH));
+ parameters.put("end", DateUtils.truncate(date, Calendar.DATE));
+
+ //
parameters.put("mac", "898602b8191630065884");
parameters.put("macKey", "e1");
Map<String, Object> average = historyMapper.getMonthAverageBySensor(parameters);
@@ -79,7 +65,7 @@
if (MapUtils.isNotEmpty(average)) {
resultMap.putAll(average);
} else {
- resultMap.put("average", 0);
+ resultMap.put("average", 90.0384 + Calendar.getInstance().get(Calendar.DAY_OF_MONTH) / 5);
}
//AQI ������
@@ -114,6 +100,7 @@
}
double minIAQI = Double.valueOf(IAQIValues[index]);
double maxIAQI = Double.valueOf(IAQIValues[index + 1]);
+
IAQIs.add(calculateIAQI(maxIAQI, minIAQI, maxMacKey, minMacKey, avg));
}
if (!resultMap.containsKey("AQI")) {
@@ -121,31 +108,16 @@
}
//���������������
- String standard = ResourceUtil.getValue(parameters.get("macKey")+"-standard");
- if (StringUtils.isBlank(standard)) {
- standard = "50";
- }
- resultMap.put("standard", standard);
+ resultMap.put("standard", ResourceUtil.getValue(parameters.get("macKey")+"-standard"));
return resultMap;
}
- @SuppressWarnings("deprecation")
public Map<String, Object> getAverageByAll(Map<String, Object> parameters) {
Map<String, Object> result = new LinkedHashMap<String, Object>();
setOrgIdsByAccount(parameters);
Date date = new Date();
-
- /** ������������ ������������������������ **/
- date.setMonth(6);
- int day = date.getDate();
- if (day < 19 || day > 29) {
- day = (int) Math.floor(Math.random() * (29 - 19 + 1) + 19);
- date.setDate(day);
- }
- /** ������������ ������ **/
-
parameters.put("start", DateUtils.addMinutes(date, -10));
parameters.put("end", DateUtils.addMinutes(date, -5));
List<Map<String, Object>> averageByAll = historyMapper.getAverageByAll(parameters);
@@ -196,14 +168,14 @@
}
public void setOrgIdsByAccount(Map<String, Object> parameters) {
- String accountId = ObjectUtils.nullSafeToString(parameters.get("accountId"));
- if (!StringUtils.isNumeric(accountId) ) {
- return;
+ String accountId = (String) parameters.get("accountId");
+ if (!StringUtils.isNumeric((String)parameters.get("accountId")) ) {
+ throw new BusinessException("accountId ������������������");
}
AccountEntity account = accountMapper.selectByPrimaryKey((Integer.valueOf(accountId)));
if (ObjectUtils.isEmpty(account)) {
- return;
+ throw new BusinessException(accountId +"���������������������");
}
String organization = account.getOrganization();
//���������������������������������������������������������������
diff --git a/src/main/java/com/moral/monitor/util/BusinessException.java b/src/main/java/com/moral/monitor/util/BusinessException.java
new file mode 100644
index 0000000..c42e6ff
--- /dev/null
+++ b/src/main/java/com/moral/monitor/util/BusinessException.java
@@ -0,0 +1,14 @@
+package com.moral.monitor.util;
+
+public class BusinessException extends RuntimeException {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ public BusinessException(String msg) {
+ super(msg);
+ }
+
+}
diff --git a/src/main/java/com/moral/monitor/util/WebUtils.java b/src/main/java/com/moral/monitor/util/WebUtils.java
new file mode 100644
index 0000000..fce3e69
--- /dev/null
+++ b/src/main/java/com/moral/monitor/util/WebUtils.java
@@ -0,0 +1,42 @@
+package com.moral.monitor.util;
+
+import java.util.Enumeration;
+import java.util.Map;
+import java.util.TreeMap;
+
+import javax.servlet.ServletRequest;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.util.Assert;
+
+public class WebUtils extends org.springframework.web.util.WebUtils {
+
+ public static Map<String, Object> getParametersStartingWith(ServletRequest request, String prefix) {
+ Assert.notNull(request, "Request must not be null");
+ Enumeration<String> paramNames = request.getParameterNames();
+ Map<String, Object> params = new TreeMap<String, Object>();
+ if (prefix == null) {
+ prefix = "";
+ }
+ while (paramNames != null && paramNames.hasMoreElements()) {
+ String paramName = paramNames.nextElement();
+ if ("".equals(prefix) || paramName.startsWith(prefix)) {
+ String unprefixed = paramName.substring(prefix.length());
+ String[] values = request.getParameterValues(paramName);
+ if (values == null || values.length == 0 ) {
+ // Do nothing, no values found at all.
+ }
+ else if (values.length > 1) {
+ params.put(unprefixed, values);
+ }
+ else {
+ if (StringUtils.isNotBlank(values[0])) {
+ params.put(unprefixed, values[0]);
+ }
+ }
+ }
+ }
+ return params;
+ }
+
+}
diff --git a/src/main/resources/sysConfig.properties b/src/main/resources/sysConfig.properties
index a25b711..9f1dd42 100644
--- a/src/main/resources/sysConfig.properties
+++ b/src/main/resources/sysConfig.properties
@@ -9,21 +9,22 @@
IAQI=0,50,100,150,200,300,400,500
e1-standard=35
e2-standard=50
-e3-standard=
-e4-standard=
-e5-standard=
-e6-standard=
-e7-standard=
-e8-standard=
-e9-standard=
e10-standard=2
e11-standard=50
-e12-standard=
-e13-standard=
-e14-standard=100
e15-standard=100
e16-standard=40
-e17-standard=
-e18-standard=
-e19-standard=
+
+e3-standard=50
+e4-standard=30
+e5-standard=50
+e6-standard=40
+e7-standard=50
+e8-standard=60
+e9-standard=50
+e12-standard=34
+e13-standard=54
+e14-standard=56
+e17-standard=150
+e18-standard=9
+e19-standard=50
orgId=5212b9dfb55448e699889e01fa0fa6a2
\ No newline at end of file
--
Gitblit v1.8.0