From e45bad6cf75f6da4e8002020755cc07a55892e14 Mon Sep 17 00:00:00 2001
From: xufenglei <xufenglei>
Date: Fri, 29 Jun 2018 09:49:05 +0800
Subject: [PATCH] 接口 升级
---
src/main/java/com/moral/service/impl/AccountServiceImpl.java | 16 +++++
src/main/java/com/moral/service/impl/HistoryServiceImpl.java | 72 +++++++++++++++++++++--
src/main/java/com/moral/mapper/HistoryMapper.java | 2
src/main/resources/mapper/HistoryMapper.xml | 21 +++++-
src/main/java/com/moral/service/impl/OrganizationServiceImpl.java | 2
src/main/java/com/moral/controller/ScreenController.java | 25 ++++++++
src/main/java/com/moral/service/AccountService.java | 2
7 files changed, 128 insertions(+), 12 deletions(-)
diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java
index e549d66..d02d6d6 100644
--- a/src/main/java/com/moral/controller/ScreenController.java
+++ b/src/main/java/com/moral/controller/ScreenController.java
@@ -566,6 +566,7 @@
@ApiImplicitParam(name = "dimension", value = "������(profession���region���monitorPoint������)", required = true, paramType = "query", dataType = "String"),
@ApiImplicitParam(name = "sensorKey", value = "���������key", required = true, paramType = "query", dataType = "String"),
@ApiImplicitParam(name = "accountId", value = "������id", required = true, paramType = "query", dataType = "int"),
+ @ApiImplicitParam(name = "timeType", value = "������������(month���day���hour������)", required = true, paramType = "query", dataType = "int"),
})
public ResultBean<List<Map<String, Object>>> getRegionRankingData(HttpServletRequest request){
Map<String, Object> parameters = getParametersStartingWith(request, null);
@@ -615,4 +616,28 @@
return new ResultBean(rtdLayout);
}
+ @GetMapping("report_avg_data")
+ @ApiOperation(value = "������������������������������", notes = "������������������������������")
+ @ApiImplicitParams(value = {
+ @ApiImplicitParam(name = "monitorPoint", value = "���������id", required = true, paramType = "query", dataType = "String"),
+ @ApiImplicitParam(name = "mac", value = "������mac", required = false, paramType = "query", dataType = "String"),
+ @ApiImplicitParam(name = "sensorKey", value = "���������key,���������������������������", required = true, paramType = "query", dataType = "String"),
+ @ApiImplicitParam(name = "time", value = "������,������(���������2018-03)", required = true, paramType = "query", dataType = "String"),
+ })
+ public ResultBean<List<Map<String, Object>>> getMonitorPointOrDeviceAvgDataBySensorKey(HttpServletRequest request) throws Exception {
+ Map<String, Object> parameters = getParametersStartingWith(request, null);
+ parameters.put("type", "month");
+ parameters.put("monitorPointId", parameters.remove("monitorPoint"));
+ String[] sensorKeys = parameters.remove("sensorKey").toString().split(",");
+ parameters.put("sensors", Arrays.asList(sensorKeys));
+ List<Map<String, Object>> list = historyMinutelyService.getMonitorPointOrDeviceAvgData(parameters);
+
+ for (Map<String, Object> map : list) {
+ String time = map.get("time").toString();
+ time = time.substring(time.length() - 2);
+ map.put("time", Integer.valueOf(time));
+ }
+ return new ResultBean<List<Map<String, Object>>>(list);
+ }
+
}
diff --git a/src/main/java/com/moral/mapper/HistoryMapper.java b/src/main/java/com/moral/mapper/HistoryMapper.java
index 3afddc2..66ff879 100644
--- a/src/main/java/com/moral/mapper/HistoryMapper.java
+++ b/src/main/java/com/moral/mapper/HistoryMapper.java
@@ -14,4 +14,6 @@
List<Map<String, Object>> selectNextLevelRegion(Map<String, Object> parameters);
+ List<Map<String, Object>> getDischargeByRegion(Map<String, Object> parameters);
+
}
\ No newline at end of file
diff --git a/src/main/java/com/moral/service/AccountService.java b/src/main/java/com/moral/service/AccountService.java
index 68e8371..5ac31a0 100644
--- a/src/main/java/com/moral/service/AccountService.java
+++ b/src/main/java/com/moral/service/AccountService.java
@@ -26,4 +26,6 @@
Integer getAccountCountByAccountName(String accountName);
Optional<Account> queryAccountByName(String accountName);
+
+ Account companyLogin(Map<String, Object> parameters);
}
diff --git a/src/main/java/com/moral/service/impl/AccountServiceImpl.java b/src/main/java/com/moral/service/impl/AccountServiceImpl.java
index 1fbcfa1..87ee342 100644
--- a/src/main/java/com/moral/service/impl/AccountServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/AccountServiceImpl.java
@@ -179,4 +179,20 @@
Account account = accountMapper.getByAccountName(accountName);
return Optional.ofNullable(account);
}
+
+ @Override
+ public Account companyLogin(Map<String, Object> parameters) {
+ Account account = new Account();
+ account.setIsDelete(Constants.IS_DELETE_FALSE);
+ account.setAccountName(parameters.get("account").toString());
+ account = accountMapper.selectOne(account);
+ if (ObjectUtils.isEmpty(account)) {
+ throw new BusinessException("���������������������������������������");
+ }
+ if (!encoder.matches(parameters.get("password").toString(), account.getPassword())) {
+ throw new BusinessException("���������������������������������");
+ }
+ account.setPassword(parameters.get("password").toString());
+ return account;
+ }
}
diff --git a/src/main/java/com/moral/service/impl/HistoryServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryServiceImpl.java
index 9eabd4d..c75e317 100644
--- a/src/main/java/com/moral/service/impl/HistoryServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/HistoryServiceImpl.java
@@ -1,7 +1,17 @@
package com.moral.service.impl;
+import java.time.LocalDate;
import java.time.LocalDateTime;
-import java.util.*;
+import java.time.temporal.ChronoUnit;
+import java.time.temporal.TemporalAdjusters;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
import javax.annotation.Resource;
@@ -93,31 +103,58 @@
ValidateUtil.notNull(parameters.get("accountId"), "param.is.null");
String regionCode = parameters.get("regionCode").toString();
- String regionType = "village_code";
+ String regionType = "village";
String nextLevel = "";
if (regionCode.length() == 6) {
if (regionCode.endsWith("0000")) {
- regionType = "province_code";
+ regionType = "province";
nextLevel = "city";
} else if (regionCode.endsWith("00")) {
- regionType = "city_code";
+ regionType = "city";
nextLevel = "area";
} else {
- regionType = "area_code";
+ regionType = "area";
nextLevel = "town";
}
} else {
if (regionCode.endsWith("000")) {
- regionType = "town_code";
+ regionType = "town";
nextLevel = "village";
}
}
parameters.put("regionType", regionType);
parameters.put("nextLevel", nextLevel);
- parameters.put("start", LocalDateTime.now().minusMinutes(5));
+
+ LocalDate localDate = LocalDate.now();
+ Object timeType = parameters.get("timeType");
+ String table = "history";
+ String column = "value";
+ if ("month".equals(timeType)) {
+ if (1 != localDate.getDayOfMonth()) {
+ table = "history_minutely";
+ column = "json";
+ }
+ parameters.put("start", localDate.with(TemporalAdjusters.firstDayOfMonth()));
+ } else if ("day".equals(timeType)) {
+ parameters.put("start", localDate);
+ } else if ("hour".equals(timeType)) {
+ parameters.put("start", LocalDateTime.now().truncatedTo(ChronoUnit.HOURS));
+ } else {
+ parameters.put("start", LocalDateTime.now().minusMinutes(5));
+ }
+ parameters.put("table", table);
+ parameters.put("column", column);
+
+ String dimension = "";
+ if ("discharge".equals(parameters.get("dimension"))) {
+ dimension = "discharge";
+ parameters.put("dimension","monitorPoint");
+ }
accountService.setOrgIdsByAccount(parameters);
+
List<Map<String, Object>> result = historyMapper.getRegionRankingData(parameters);
+
if ("profession".equals(parameters.get("dimension"))) {
List<Profession> professions = professionMapper.selectAll();
for (Map<String, Object> map : result) {
@@ -146,6 +183,7 @@
if (map.get("code").equals(region.get("code"))) {
map.put("name", region.get("name"));
regions.remove(region);
+ map.remove("code");
break;
}
}
@@ -157,6 +195,26 @@
result.add(map);
}
}
+ if ("discharge".equals(dimension)) {
+ parameters.put("year", LocalDate.now().getYear());
+ List<Map<String, Object>> discharges = historyMapper.getDischargeByRegion(parameters);
+ for (Map<String, Object> map : result) {
+ for (Map<String, Object> discharge : discharges) {
+ if (map.get("name").equals(discharge.get("name"))) {
+ map.put("value", discharge.get("value"));
+ discharges.remove(discharge);
+ break;
+ }
+ }
+ }
+ Collections.sort(result, new Comparator<Map<String, Object>>() {
+ @Override
+ public int compare(Map<String, Object> o1, Map<String, Object> o2) {
+ return Double.compare(((Double) o2.get("avg"))- Double.valueOf((String) o2.get("value")),
+ ((Double) o1.get("avg")) - Double.valueOf((String) o1.get("value")));
+ }
+ });
+ }
return result;
}
}
diff --git a/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java b/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java
index f38fe9e..3b24c86 100644
--- a/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java
@@ -40,7 +40,7 @@
if (IS_DELETE_FALSE.equals(organization.getIsDelete())) {
List<OrganizationRelation> organizationRelations = organizationRelationMapper.select(relation);
for (OrganizationRelation organizationRelation : organizationRelations) {
- Set<Integer> organizationIds = getChildOrganizationIds(organizationRelation.getParentId());
+ Set<Integer> organizationIds = getChildOrganizationIds(organizationRelation.getChildId());
orgIds.addAll(organizationIds);
}
}
diff --git a/src/main/resources/mapper/HistoryMapper.xml b/src/main/resources/mapper/HistoryMapper.xml
index 2408a33..3c0576f 100644
--- a/src/main/resources/mapper/HistoryMapper.xml
+++ b/src/main/resources/mapper/HistoryMapper.xml
@@ -38,7 +38,7 @@
<select id="getRegionRankingData" resultType="java.util.Map">
SELECT
- AVG( h.`value` -> '$.${sensorKey}[0]' ) avg ,
+ AVG( h.${column} -> '$.${sensorKey}[0]' ) avg ,
<if test="dimension == 'profession'">
p.`name`
</if>
@@ -53,7 +53,7 @@
profession p ,
</if>
device d,
- history h,
+ ${table} h,
monitor_point mp
WHERE
d.mac = h.mac
@@ -61,7 +61,7 @@
AND mp.is_delete = '0'
AND d.monitor_point_id = mp.id
AND h.time >= #{start}
- AND mp.${regionType} = #{regionCode}
+ AND mp.${regionType}_code = #{regionCode}
<if test="dimension == 'profession'">
AND d.profession_id = p.id
</if>
@@ -95,6 +95,19 @@
FROM
${nextLevel}
WHERE
- ${regionType} = #{regionCode}
+ ${regionType}_code = #{regionCode}
+ </select>
+
+ <select id="getDischargeByRegion" resultType="java.util.Map">
+ SELECT
+ mp.`name`,
+ dis.`value` -> '$.e1' 'value'
+ FROM
+ monitor_point mp,
+ discharge dis
+ WHERE
+ dis.monitor_point_id = mp.id
+ AND mp.${regionType}_code = #{regionCode}
+ AND dis.`year` = #{year}
</select>
</mapper>
\ No newline at end of file
--
Gitblit v1.8.0