From 8dc1a393928b0195bf0b5a6d6f8daec6e4a043b1 Mon Sep 17 00:00:00 2001
From: kaiyu <404897439@qq.com>
Date: Wed, 18 Nov 2020 14:18:12 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
src/main/java/com/moral/controller/DeviceController.java | 9
src/main/java/com/moral/controller/SensorController.java | 6
src/main/java/com/moral/mapper/HistoryMapper.java | 51
src/main/java/com/moral/service/SensorService.java | 2
src/main/java/com/moral/mapper/SensorMapper.java | 2
src/main/java/com/moral/service/impl/DeviceServiceImpl.java | 2264 ++++++++++++++++++++++++------------------------
src/main/java/com/moral/service/impl/SensorServiceImpl.java | 5
src/main/java/com/moral/service/impl/HistoryServiceImpl.java | 112 +
src/main/resources/mapper/SensorMapper.xml | 9
src/main/resources/mapper/HistoryMapper.xml | 29
src/main/resources/mapper/HistoryHourlyMapper.xml | 7
src/main/java/com/moral/controller/ScreenController.java | 8
src/main/java/com/moral/service/impl/HistoryHourlyServiceImpl.java | 216 ++--
13 files changed, 1,413 insertions(+), 1,307 deletions(-)
diff --git a/src/main/java/com/moral/controller/DeviceController.java b/src/main/java/com/moral/controller/DeviceController.java
index 5febfa5..d02ddd8 100644
--- a/src/main/java/com/moral/controller/DeviceController.java
+++ b/src/main/java/com/moral/controller/DeviceController.java
@@ -9,6 +9,7 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
+import com.moral.mapper.DeviceMapper;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@@ -30,6 +31,8 @@
public class DeviceController {
@Resource
DeviceService deviceService;
+ @Resource
+ DeviceMapper deviceMapper;
@GetMapping("count-by-example")
public ResultBean<Integer> countByExample(PageBean pageBean){
return new ResultBean<Integer>(deviceService.countByExample(pageBean));
@@ -68,6 +71,12 @@
List<Device> devices = deviceService.getDevicesByProfessionId(parameters);
return new ResultBean<List<Device>>(devices);
}
+
+ @GetMapping("getDeviceByMonitorId")
+ public ResultBean<List<Map<String, Object>>> getDeviceByMonitorId() {
+ List<Map<String, Object>> devices = deviceMapper.getDevicesByMpId(563);
+ return new ResultBean<List<Map<String, Object>>>(devices);
+ }
@PostMapping("save-or-update")
public ResultBean saveOrUpdate(@RequestBody String jsonString){
diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java
index 3fa1e6e..dd33e5f 100644
--- a/src/main/java/com/moral/controller/ScreenController.java
+++ b/src/main/java/com/moral/controller/ScreenController.java
@@ -2072,7 +2072,7 @@
} else {
mon = "" + month;
}
- String table = "history_minutely_" + year + mon;
+ String table = "history_five_minutely_" + year + mon;
List list = deviceService.byMonitorIdGetDeviceAndWind(monitorPointId, table);
return list;
}
@@ -2093,7 +2093,7 @@
} else {
mon = "" + month;
}
- String table = "history_minutely_" + year + mon;
+ String table = "history_five_minutely_" + year + mon;
List list = deviceService.byMonitorIdGetDeviceAndWindSpecial(monitorPointId, table);
return list;
}
@@ -2693,7 +2693,7 @@
@ApiImplicitParams(value = {
@ApiImplicitParam(name = "monitorPointIds", value = "������monitorid", required = true, paramType = "query", dataType = "String"),
@ApiImplicitParam(name = "time", value = "������(���������2020-03-19)", required = true, paramType = "query", dataType = "String")})
- public List<List<Map>> monitorAVGData(HttpServletRequest request) throws Exception {
+ public ResultBean<List<List<Map>>> monitorAVGData(HttpServletRequest request) throws Exception {
Map<String, Object> parameters = getParametersStartingWith(request, null);
String monitorPointIds = (String) parameters.get("monitorPointIds");
String time = (String) parameters.get("time");
@@ -2718,6 +2718,6 @@
lists.add(dataAvbByMIdAndTime);
}
}
- return lists;
+ return new ResultBean<List<List<Map>>>(lists);
}
}
diff --git a/src/main/java/com/moral/controller/SensorController.java b/src/main/java/com/moral/controller/SensorController.java
index 3e6a47c..dd004ca 100644
--- a/src/main/java/com/moral/controller/SensorController.java
+++ b/src/main/java/com/moral/controller/SensorController.java
@@ -56,6 +56,12 @@
return new ResultBean<List<Sensor>>(sensors);
}
+ @GetMapping("allById")
+ public ResultBean<List<Map<String, Object>>> getAllSensorsById() {
+ List<Map<String, Object>> sensors = sensorService.getSensorByDId("1230");
+ return new ResultBean<List<Map<String, Object>>>(sensors);
+ }
+
@GetMapping("getSenosrsByOrgId")
public ResultBean<List<Sensor>> getSenosrsByOrgId(Integer organizationId, String regionCode) {
Map<String, Object> parameters = new HashMap<>();
diff --git a/src/main/java/com/moral/mapper/HistoryMapper.java b/src/main/java/com/moral/mapper/HistoryMapper.java
index 74c339e..eae009e 100644
--- a/src/main/java/com/moral/mapper/HistoryMapper.java
+++ b/src/main/java/com/moral/mapper/HistoryMapper.java
@@ -6,43 +6,46 @@
import org.apache.ibatis.annotations.Param;
-public interface HistoryMapper{
- String selectValueByMacAndTime(@Param("mac")String mac, @Param("time")Date time);
- String getValueByMacAndTime(@Param("mac")String mac, @Param("time")String time,@Param("time1")String time1);
- List<Map<String, Object>> getAreaAllDataByAccount(Map<String, Object> parameters);
+public interface HistoryMapper {
+ String selectValueByMacAndTime(@Param("mac") String mac, @Param("time") Date time, @Param("timeUnits") String timeUnits);
- List<Map<String, Object>> getRegionRankingData(Map<String, Object> parameters);
+ String getValueByMacAndTime(@Param("mac") String mac, @Param("time") String time, @Param("time1") String time1, @Param("timeUnits") String timeUnits);
- List<String> selectNextLevelRegion(Map<String, Object> parameters);
+ List<Map<String, Object>> getAreaAllDataByAccount(Map<String, Object> parameters);
- List<Map<String, Object>> getDischargeByRegion(Map<String, Object> parameters);
-
- List<Map<String, Object>> getValueByMacAndSize(Map<String, Object> parameters);
+ List<Map<String, Object>> getRegionRankingData(Map<String, Object> parameters);
- Map<String, Object> getActualDataByRegion(Map<String, Object> parameters);
-
- Map<String, Object> getAVGValueByMacAndTimeslot(@Param("mac")String mac, @Param("starttime")String starttime, @Param("endtime")String endtime);
+ List<String> selectNextLevelRegion(Map<String, Object> parameters);
+
+ List<Map<String, Object>> getDischargeByRegion(Map<String, Object> parameters);
+
+ List<Map<String, Object>> getValueByMacAndSize(Map<String, Object> parameters);
+
+ Map<String, Object> getActualDataByRegion(Map<String, Object> parameters);
+
+ Map<String, Object> getAVGValueByMacAndTimeslot(@Param("mac") String mac, @Param("starttime") String starttime, @Param("endtime") String endtime, @Param("timeUnits") String timeUnits);
List<Map<String, Object>> getSensorDataToday(Map<String, Object> parameters);
-
- List<Map<String, Object>> getAVGSensorRankByMonitorPointIdList(@Param("sensor")String sensor, @Param("monitorPointIdList") List<Object> monitorPointIdList, @Param("before5Time")String before5Time, @Param("endTime")String endTime);
-
- Map<String, Object> getMonitorPointAVGValueByMonitorPointIdAndTimeslot(@Param("monitor_point_id")String monitor_point_id, @Param("starttime")String starttime, @Param("endtime")String endtime);
+
+ List<Map<String, Object>> getAVGSensorRankByMonitorPointIdList(@Param("sensor") String sensor, @Param("monitorPointIdList") List<Object> monitorPointIdList, @Param("before5Time") String before5Time, @Param("endTime") String endTime,@Param("timeUnits") String timeUnits);
+
+ Map<String, Object> getMonitorPointAVGValueByMonitorPointIdAndTimeslot(@Param("monitor_point_id") String monitor_point_id, @Param("starttime") String starttime, @Param("endtime") String endtime, @Param("timeUnits") String timeUnits);
List<Map<String, Object>> getCarSensorData(Map<String, Object> parameters);
- List<Map<String, Object>> getUavSensorData(Map<String, Object> parameters);
+ List<Map<String, Object>> getUavSensorData(Map<String, Object> parameters);
List<Map<String, Object>> listGetSensorData(Map<String, Object> parameters);
- //���������������������������
- List<Map<String, Object>> getO3AVG(Map<String, Object> parameters);
+ //���������������������������
+ List<Map<String, Object>> getO3AVG(Map<String, Object> parameters);
- int getNum(@Param("timef") String timef,
- @Param("timea") String timea);
- String getJsonData(@Param("mac") String mac,
- @Param("time") String time,
- @Param("table") String table);
+ int getNum(@Param("timef") String timef,
+ @Param("timea") String timea);
+
+ String getJsonData(@Param("mac") String mac,
+ @Param("time") String time,
+ @Param("table") String table);
Map<String,Object> getDailyAvgData(@Param("mId")String mId,@Param("time")String time);
}
\ No newline at end of file
diff --git a/src/main/java/com/moral/mapper/SensorMapper.java b/src/main/java/com/moral/mapper/SensorMapper.java
index f221367..638ffe6 100644
--- a/src/main/java/com/moral/mapper/SensorMapper.java
+++ b/src/main/java/com/moral/mapper/SensorMapper.java
@@ -34,4 +34,6 @@
List<Sensor> selectSenosrsByOrgId(Map<String, Object> parameters);
List<String> getSensorKeys();
+
+ List<Map<String, Object>> getSensorByDId(String id);
}
\ No newline at end of file
diff --git a/src/main/java/com/moral/service/SensorService.java b/src/main/java/com/moral/service/SensorService.java
index 0a99483..e9ba5b2 100644
--- a/src/main/java/com/moral/service/SensorService.java
+++ b/src/main/java/com/moral/service/SensorService.java
@@ -29,6 +29,8 @@
List<Map<String, Object>> getSensorByDeviceId(String id);
+ List<Map<String, Object>> getSensorByDId(String id);
+
List<Map<String, Object>> getSensorByMonitorPointId(String monitor_point_id);
Map<String, String> getSensorsMap(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 03df587..5e5f1f7 100644
--- a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java
@@ -1,1131 +1,1133 @@
-package com.moral.service.impl;
-
-import java.util.*;
-import java.util.stream.Collectors;
-
-import javax.annotation.Resource;
-import javax.validation.constraints.NotNull;
-
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.TypeReference;
-import com.github.pagehelper.Page;
-import com.github.pagehelper.PageHelper;
-import com.moral.common.bean.Constants;
-import com.moral.common.bean.PageBean;
-import com.moral.common.bean.PageResult;
-import com.moral.common.exception.BusinessException;
-import com.moral.common.util.ExampleUtil;
-import com.moral.common.util.RedisUtils;
-import com.moral.common.util.ValidateUtil;
-import com.moral.entity.Device;
-import com.moral.entity.DeviceAndWind;
-import com.moral.entity.DeviceProperty;
-import com.moral.entity.MonitorPoint;
-import com.moral.mapper.DeviceMapper;
-import com.moral.mapper.DevicePropertyMapper;
-import com.moral.mapper.DeviceVersionMapper;
-import com.moral.mapper.DictionaryDataMapper;
-import com.moral.mapper.MonitorPointMapper;
-import com.moral.mapper.OrganizationMapper;
-import com.moral.service.AccountService;
-import com.moral.service.DeviceService;
-import com.moral.service.MonitorPointService;
-import com.moral.util.LatLngTransformation;
-import com.moral.util.TkMybatisUtils;
-
-import org.apache.commons.collections.MapUtils;
-import org.apache.commons.lang3.BooleanUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.log4j.Logger;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.ObjectUtils;
-
-import tk.mybatis.mapper.entity.Example;
-
-@Service
-public class DeviceServiceImpl implements DeviceService {
- private static Logger log = Logger.getLogger(DeviceServiceImpl.class);
- //-----------------------redis key������-������---------------------------------
- private static String AlARM = "alarm";//������������������key������
- private static String ADJUST = "adjust";//���������������key������
- private static String DEVICE = "device";//������������������key������
- private static String STATE = "state";//������������������key������
- private static String DATA = "data";//������������������key������
-
- //-----------------------redis key������-������---------------------------------
- private String keysConnect(String... keys) {
- StringBuilder key = new StringBuilder(keys[0]);
- for (int i = 1; i < keys.length; i++) {
- key.append("_");
- key.append(keys[i]);
- }
- return key.toString().toLowerCase();
- }
-
- @Resource
- private DeviceMapper deviceMapper;
- @Resource
- private MonitorPointMapper monitorPointMapper;
- @Resource
- private AccountService accountService;
- private Class ENTITY_CLASS = Device.class;
- @Resource
- OrganizationMapper orgMapper;
- @Resource
- DeviceVersionMapper deviceVersionMapper;
- @Resource
- RedisUtils redisUtils;
- @Resource
- OrganizationMapper organizationMapper;
- @Resource
- DictionaryDataMapper dictionaryDataMapper;
- @Resource
- private MonitorPointService monitorPointService ;
-
- @Override
- public Map<String, Object> getDeviceStatesByAccount(Map<String, Object> parameters) {
- ValidateUtil.notNull(parameters.get("accountId"), "param.is.null");
- Map<String, Object> result = new HashMap<String, Object>();
- accountService.setOrgIdsByAccount(parameters);
- List<Map<String, Object>> list = deviceMapper.getDeviceStatesByAccount(parameters);
- Long all = 0L, normal = 0L, abnormal = 0L, stop = 0L;
- for (Map<String, Object> map : list) {
- Long count = (Long) map.get("count");
- all += count;
- switch (Integer.valueOf((String) map.get("state"))) {
- case 0:
- normal = count;
- break;
- case 4:
- stop = count;
- break;
- default:
- abnormal += count;
- }
- }
- result.put("all", all);
- result.put("normal", normal);
- result.put("abnormal", abnormal);
- result.put("stop", stop);
- return result;
- }
-
- @Override
- @Transactional
- public void saveOrUpdateDevice(Device device) {
- ValidateUtil.notNull(device, "param.is.null");
- ValidateUtil.notEmpty(device.getMac(), "param.is.null");
- Device queryDevice = new Device();
- queryDevice.setMac(device.getMac());
- queryDevice = deviceMapper.selectOne(queryDevice);
- Date operateDate = new Date();
- device.setInstallTime(operateDate);
- if (ObjectUtils.isEmpty(queryDevice)) {
- device.setCreateTime(operateDate);
- device.setState("4");
- device.setIsDelete(Constants.IS_DELETE_FALSE);
- deviceMapper.insertSelective(device);
- } else {
- device.setId(queryDevice.getId());
- deviceMapper.updateByPrimaryKeySelective(device);
- }
- //������redis������������
- refreshDeviceInRedis(device.getMac());
- }
-
- @Override
- public List<Device> getInstallDevicesByOperateUser(Integer uid, Integer pageIndex, Integer pageSize) {
- ValidateUtil.notNull(uid, "param.is.null");
- Device device = new Device();
- device.setOperateUserId(uid);
- PageHelper.startPage(pageIndex, pageSize, false);
- List<Device> devices = deviceMapper.select(device);
- return devices;
- }
-
- /**
- * @param mac
- * @param fromCache
- * @return ������������������
- */
- @Override
- public Device getDeviceByMac(String mac, boolean fromCache) {
- if (fromCache) {
- Device device = getDeviceFromRedis(mac);
- if (device == null) {
- device = deviceMapper.selectWithOrgIdsByMac(mac);
- }
- return device;
- } else {
- return deviceMapper.selectWithOrgIdsByMac(mac);
- }
-
- }
-
- /**
- * ���������������������
- *
- * @param mac
- * @return
- */
- @Override
- public Device getDeviceByMac(String mac) {
-
- return getDeviceByMac(mac, true);
- }
-
- /*
- * ���������������������redis������key
- */
- private String getDeviceKey(String mac) {
- return keysConnect(DEVICE, mac);
- }
-
- // /*
-// * ������������������redis��������� ������
-// */
-// private void setDeviceToRedis(String mac,Device device){
-// String key = getDeviceKey(mac);
-// Device simpleDevice = new Device();
-// simpleDevice.setId(device.getId());// id
-// simpleDevice.setName(device.getName());// name
-// simpleDevice.setAddress(device.getAddress());// address
-// simpleDevice.setDeviceVersionId(device.getDeviceVersionId());// version
-// simpleDevice.setMac(device.getMac()); // mac
-// simpleDevice.setMonitorPointId(device.getMonitorPointId());// ���������id
-// simpleDevice.setOrganizationIds(device.getOrganizationIds());// ������������
-// simpleDevice.setDeviceVersion(device.getDeviceVersion());
-// redisUtils.set(key,simpleDevice);
-// }
- private Device getDeviceFromRedis(String mac) {
- String key = getDeviceKey(mac);
- return redisUtils.get(key, Device.class);
- }
-
- /**
- * @param params map��� ������ ������id���4������������
- * @return ������������������������
- */
- @Override
- public List<Device> query(Map<String, Object> params) {
- List<Integer> dv = deviceMapper.getHasWindDirAndWindSpeedDeviceVersion();
- Object orgIdObj = params.get("orgId");
- String regionCode = params.get("regionCode").toString();
- List<Device> deviceList = null;
- if (orgIdObj != null) {
- Integer orgId = Integer.parseInt(orgIdObj.toString());
- List<Integer> orgIds = orgMapper.selectLowerOrgIds(orgId);
- //���������������������������������������������
- if (regionCode.startsWith("1309")&&orgIdObj.toString().equals("5")) {
- orgIds = new ArrayList<>();
- Collections.addAll(orgIds, 60, 65, 159, 165, 166);
- deviceList = deviceMapper.selectByMap(params);
- Iterator<Device> iter = deviceList.iterator();
- while (iter.hasNext()) {
- Device device = iter.next();
- Integer mpId = device.getMonitorPointId();
- Integer oid = monitorPointService.byIdGetMonitorPoint(mpId).getOrganizationId();
- if (!orgIds.contains(oid)) {
- iter.remove();
- } else {
- if (orgId == 60) {
- if (mpId != 56) {
- iter.remove();
- }
- } else if (orgId == 65) {
- if (mpId != 83 && mpId != 84) {
- iter.remove();
- }
- }
- }
- }
- }else {
- params.put("orgIds", orgIds);
- deviceList = deviceMapper.selectByMap(params);
- }
- // loadDeviceState(deviceList);
- }
- Example deviceExample = new Example(Device.class);//���������
- Example.Criteria deviceCriteria = deviceExample.createCriteria();
- deviceCriteria.orEqualTo("isDelete", Constants.IS_DELETE_FALSE);
- List<Device> devicesInfo = deviceMapper.selectByExample(deviceExample);
- Example monitorExample = new Example(MonitorPoint.class);//���������
- Example.Criteria monitorCriteria = monitorExample.createCriteria();
- monitorCriteria.orEqualTo("isDelete", Constants.IS_DELETE_FALSE);
- List<MonitorPoint> monitorsInfo = monitorPointMapper.selectByExample(monitorExample);
- for (Device d : deviceList) {
- if (dv.contains(d.getDeviceVersionId())) {
- d.setHasWindInfo(true);
- } else {
- d.setHasWindInfo(false);
- }
- for (Device temp : devicesInfo) {
- if (d.getId().equals(temp.getId())) {
- d.setState(temp.getState());
- }
- }
- for (MonitorPoint mp : monitorsInfo) {
- if (d.getMonitorPointId().equals(mp.getId())) {
- d.setMonitorPoint(mp);
- }
- }
- }
- return deviceList;
- }
-
- /**
- * ������������id��������������� ������������������
- *
- * @param orgId
- * @param deviceName
- * @param pageSize
- * @param pageNo
- * @return ���������������������
- */
- @Override
- public PageResult query(Integer orgId, String deviceName, Integer pageSize, Integer pageNo) {
- List<Integer> orgIds = orgMapper.selectLowerOrgIds(orgId);
- if (!ObjectUtils.isEmpty(pageSize) && !ObjectUtils.isEmpty(pageNo)) {
- PageHelper.startPage(pageNo, pageSize);
- }
- String state = null;
- switch (deviceName) {
- case "������":
- state = "0";
- deviceName = null;
- break;
- case "������":
- state = "1";
- deviceName = null;
- break;
- case "������":
- state = "2";
- deviceName = null;
- break;
- case "������":
- state = "3";
- deviceName = null;
- break;
- case "������":
- state = "4";
- deviceName = null;
- break;
- }
- List<Device> list = deviceMapper.selectByOrgIdAndDevName(orgId, orgIds, state, deviceName);
- //���redis������������
- loadDeviceState(list);
- if (list instanceof Page) {
- return new PageResult(((Page) list).getTotal(), list);
- }
- return new PageResult(null, list);
- }
-
- /**
- * ������������id������������id ������������������
- *
- * @param orgId
- * @param mpId
- * @param pageSize
- * @param pageNo
- * @return ���������������������
- */
- @Override
- public PageResult query(Integer orgId, Integer mpId, Integer pageSize, Integer pageNo) {
- List<Integer> orgIds = orgMapper.selectLowerOrgIds(orgId);
- if (!ObjectUtils.isEmpty(pageSize) && !ObjectUtils.isEmpty(pageNo)) {
- PageHelper.startPage(pageNo, pageSize);
- }
- List<Device> list = deviceMapper.selectByOrgIdAndMpId(orgId, orgIds, mpId);
- //���redis������������
- loadDeviceState(list);
- if (list instanceof Page) {
- return new PageResult(((Page) list).getTotal(), list);
- }
- return new PageResult(null, list);
- }
-
- private void loadDeviceState(List<Device> list) {
- //���redis������������
- list.stream().map(device -> {
- String mac = device.getMac();
- if (!StringUtils.isBlank(mac)) {
- String state = getSateFromRedis(device.getMonitorPointId(), mac.toLowerCase());
- device.setState(state);
- } else {
- device.setState(Constants.DEVICE_STATE_OFFLINE);
- }
- return device;
- }).count();
- }
-
- private String getSateFromRedis(Integer mpId, String mac) {
-
- Map<String, String> stateMap = getStateMapFromRedis(mpId, mac);
- String state = null;
- if (stateMap != null) {
- state = stateMap.get("state");
- }
- state = state == null ? Constants.DEVICE_STATE_OFFLINE : state;
- return state;
- }
-
- public Map<String, String> getStateMapFromRedis(Integer mpId, String mac) {
- StringBuilder key = new StringBuilder();
- //������key
- key.append("state_").append(mpId).append("_").append(mac);
- return redisUtils.get(key.toString(), new TypeReference<Map<String, String>>() {
- });
- }
-
- private Device getDeviceWithOrgIdsByMac(String mac) {
- String key = "device_" + mac;
- Device device = redisUtils.get(key, Device.class);
- if (device == null) {
- device = deviceMapper.selectWithOrgIdsByMac(mac);
- if (device != null) {
- redisUtils.set(key, device);
- }
- }
- return device;
- }
-
- /**
- * ������������������������������
- * ������ redis ���������������,���������������������������������������������task������
- *
- * @param mac
- */
- private void refreshDeviceInRedis(String mac) {
- if (!StringUtils.isBlank(mac)) {
- String key = getDeviceKey(mac);
- redisUtils.remove(key);
- } else {
- log.warn("param mac is null in method [refreshDeviceInRedis]");
- }
- }
-
- @Override
- public int countByExample(PageBean pageBean) {
- Example example = ExampleUtil.generateExample(ENTITY_CLASS, pageBean);
- TkMybatisUtils.addDeletesToExample(example);
- return deviceMapper.selectCountByExample(example);
- }
-
- @Override
- public PageBean queryByPageBean(PageBean pageBean) {
- Example example = ExampleUtil.generateExample(ENTITY_CLASS, pageBean);
-// addDeletesToExample(example);
- if (pageBean.getPageSize() > 0) {
- PageHelper.startPage(pageBean.getPageIndex(), pageBean.getPageSize());
- }
- List<Device> deviceList = deviceMapper.selectWithRelationData(example);
- return new PageBean(deviceList);
- }
-
- @Override
- public void deleteByIds(Integer[] ids) {
- Device device = new Device();
- device.setIsDelete(Constants.IS_DELETE_TRUE);
- if (ids != null && ids.length > 0) {
- Example example = new Example(ENTITY_CLASS);
- example.or().andIn("id", Arrays.asList(ids));
- if (ids.length == 1) {
- device.setId(ids[0]);
- deviceMapper.updateByPrimaryKeySelective(device);
- } else {
- deviceMapper.updateByExampleSelective(device, example);
- }
- List<Device> deviceList = deviceMapper.selectByExample(example);
- List<String> adjustAndDeviceKeys = deviceList.stream().collect(
- ArrayList<String>::new,
- (list, dev) -> {
- if (!StringUtils.isBlank(dev.getMac())) {
- list.add("device_" + dev.getMac());
- list.add("adjust_" + dev.getMac());
- }
- },
- (oList, nList) -> {
- oList.addAll(nList);
- }
- );
- redisUtils.remove(adjustAndDeviceKeys.toArray(new String[adjustAndDeviceKeys.size()]));
- }
- }
-
- @Override
- @Transactional
- public void addOrModify(Device device) {
- try {
- //mac ���������
- if (!StringUtils.isBlank(device.getMac())) {
- device.setMac(device.getMac().toLowerCase());
- }
- if (device.getId() != null) {
- deviceMapper.updateByPrimaryKeySelective(device);
- } else {
- Device deviceQuery = new Device();
- deviceQuery.setMac(device.getMac());
- Device deviceResult = deviceMapper.selectOne(deviceQuery);
- if (deviceResult != null) {
- device.setId(deviceResult.getId());
- deviceMapper.updateByPrimaryKeySelective(device);
- } else {
- device.setState(Constants.DEVICE_STATE_OFFLINE);
- device.setIsDelete(Constants.IS_DELETE_FALSE);
- deviceMapper.insertSelective(device);
- }
- }
- //������redis���������������
- refreshDeviceInRedis(device.getMac());
- } catch (Exception ex) {
- throw ex;
- }
- }
-
- @Override
- public List<Map> countByTimes(Date start, Date end, String format) {
- if (start == null || end == null || StringUtils.isBlank(format)) {
- log.error("some params is null");
- throw new BusinessException("some params is null");
- }
- return deviceMapper.countByTimes(start, end, format);
- }
-
- @Override
- public List<Device> getDevicesByMonitorPointId(Integer monitorPointId) {
- Device device = new Device();
- device.setMonitorPointId(monitorPointId);
- device.setIsDelete(Constants.IS_DELETE_FALSE);
- List<Device> devices = deviceMapper.select(device);
- for (Device device2 : devices) {
- DeviceProperty deviceProperty = devicePropertyMapper.selectByPrimaryKey(device2.getId());
- device2.setDeviceProperty(deviceProperty);
- }
- return devices;
- }
-
- /**
- * ������map{mac������state���}
- *
- * @param macList
- * @return
- */
- @Override
- public List<Map<String, String>> queryDevicesState(List<String> macList, Boolean withData) {
- List<Map<String, String>> list = macList.stream().map(mac -> {
- Map<String, String> resultMap = new HashMap<>();
- if (!StringUtils.isBlank(mac)) {
- mac = mac.toLowerCase();
- Device device = getDeviceWithOrgIdsByMac(mac);
- Map<String, String> stateMap = getStateMapFromRedis(device.getMonitorPointId(), mac);
- if (!MapUtils.isEmpty(stateMap)) {
- resultMap.putAll(stateMap);
- } else {
- resultMap.put("state", Constants.DEVICE_STATE_OFFLINE);
- resultMap.put("mac", mac);
- }
- //������data
- if (BooleanUtils.isTrue(withData)) {
- String dataKey = "data_" + mac;
- Map<String, String> dataMap = redisUtils.get(dataKey, new TypeReference<Map<String, String>>() {
- });
- if (!MapUtils.isEmpty(dataMap)) {
- resultMap.putAll(dataMap);
- }
- }
- }
- return resultMap;
- }).collect(Collectors.toList());
- return list;
- }
-
- @Override
- public Device queryById(Integer id) {
- return deviceMapper.selectByPrimaryKey(id);
- }
-
- @Override
- public List<Device> getDevicesByProfessionId(Map<String, Object> parameters) {
-
- return deviceMapper.getDevicesByProfession(parameters);
- }
-
- @Override
- public List<Device> getDevicesByOrganizationId(Map<String, Object> parameters) {
- ValidateUtil.notNull(parameters.get("organizationId"), "param.is.null");
- return deviceMapper.getDevicesByOrganizationId(parameters);
- }
-
- @Override
- public Map<String, Long> queryDeviceStateSummary(@NotNull Integer orgId) {
- Map<String, Object> params = new HashMap<>();
- if (!dictionaryDataMapper.isSupperOrgId(orgId)) {
- List<Integer> orgIds = organizationMapper.selectLowerOrgIds(orgId);
- params.put("orgIds", orgIds);
- }
- List<Map<String, Object>> list = deviceMapper.getDeviceStatesByAccount(params);
- Long all = 0L, normal = 0L, abnormal = 0L, stop = 0L;
- for (Map<String, Object> map : list) {
- Long count = (Long) map.get("count");
- all += count;
- switch (Integer.valueOf((String) map.get("state"))) {
- case 0:
- normal = count;
- break;
- case 4:
- stop = count;
- break;
- default:
- abnormal += count;
- }
- }
- Map<String, Long> result = new HashMap<>();
- result.put("all", all);
- result.put("normal", normal);
- result.put("abnormal", abnormal);
- result.put("stop", stop);
- return result;
- }
-
- @Resource
- private DevicePropertyMapper devicePropertyMapper;
-
- @Override
- @Transactional
- public void saveOrUpdate(Device device, DeviceProperty deviceProperty) {
- device.setMac(device.getMac().toLowerCase());
- if (ObjectUtils.isEmpty(device.getId())) {
- device.setState(Constants.DEVICE_STATE_OFFLINE);
- device.setIsDelete(Constants.IS_DELETE_FALSE);
- deviceMapper.insertSelective(device);
- deviceProperty.setId(device.getId());
- } else {
- deviceMapper.updateByPrimaryKeySelective(device);
- devicePropertyMapper.deleteByPrimaryKey(deviceProperty);
- }
- devicePropertyMapper.insertSelective(deviceProperty);
- refreshDeviceInRedis(device.getMac());
-
- }
-
- @Override
- public PageBean getDeviceList(PageBean pageBean) {
- Example example = ExampleUtil.generateExample(ENTITY_CLASS, pageBean);
- if (pageBean.getPageSize() > 0) {
- PageHelper.startPage(pageBean.getPageIndex(), pageBean.getPageSize());
- }
- List<Device> deviceList = deviceMapper.getDeviceList(example);
- return new PageBean(deviceList);
- }
-
- @Override
- public void offLinToMaintenance(Map<String, Object> parameters) {
- ValidateUtil.notNull(parameters.get("id"), "param.is.null");
- ValidateUtil.notNull(parameters.get("old_state"), "param.is.null");
- ValidateUtil.notNull(parameters.get("new_state"), "param.is.null");
- int count = 0;
- if (Constants.DEVICE_STATE_OFFLINE.equals(parameters.get("old_state")) && Constants.DEVICE_STATE_MAINTENANCE.equals(parameters.get("new_state"))) {
- Device device = new Device();
- Example example = new Example(ENTITY_CLASS);
- example.and().andEqualTo("id", new Integer(parameters.get("id").toString())).andEqualTo("state", Constants.DEVICE_STATE_OFFLINE);
- device.setState(Constants.DEVICE_STATE_MAINTENANCE);
- count = deviceMapper.updateByExampleSelective(device, example);
- }
- if (count == 0) {
- throw new BusinessException("������������������");
- }
- }
-
- @Override
- public void saveOrUpdate4Mobile(Device device, DeviceProperty deviceProperty) {
- device.setMac(device.getMac().toLowerCase());
- Device selectDevice = new Device();
- selectDevice.setMac(device.getMac());
- selectDevice = deviceMapper.selectOne(selectDevice);
- if (ObjectUtils.isEmpty(selectDevice)) {
- device.setState(Constants.DEVICE_STATE_OFFLINE);
- device.setIsDelete(Constants.IS_DELETE_FALSE);
- deviceMapper.insertSelective(device);
- deviceProperty.setId(device.getId());
- devicePropertyMapper.insertSelective(deviceProperty);
- } else {
- device.setId(selectDevice.getId());
- deviceMapper.updateByPrimaryKeySelective(device);
- deviceProperty.setId(selectDevice.getId());
- devicePropertyMapper.selectByPrimaryKey(selectDevice.getId());
- if (ObjectUtils.isEmpty(devicePropertyMapper.selectByPrimaryKey(deviceProperty.getId()))) {
- devicePropertyMapper.insertSelective(deviceProperty);
- } else {
- devicePropertyMapper.updateByPrimaryKeySelective(deviceProperty);
- }
-
- }
- refreshDeviceInRedis(device.getMac());
-
-
- }
-
- @Override
- public String getLimitDataByDevice(Map<String, Object> parameters) {
- // TODO Auto-generated method stub
- return deviceMapper.getLimitDataByDevice(parameters);
- }
-
- //������������������������������mac���������������������������������������������
- @Override
- public Device getDeviceByLongitudeAsc(String mac) {
- Example example = new Example(Device.class);
- example.setOrderByClause("longitude ASC");
- List<Device> deviceList = deviceMapper.selectByExample(example);
- for (int i = 0; i < deviceList.size(); i++) {
- if (mac.equals(deviceList.get(i).getMac())) {
- Device deviceSecond = deviceList.get(i + 1);
- return deviceSecond;
- }
- }
- return null;
- }
-
- @Override
- public List<String> getMacsByOrganizationId(List<Object> organizationIdList) {
- return deviceMapper.getMacsByOrganizationId(organizationIdList);
- }
-
- @Override
- public List<Device> getDeviceById1(int id) {
- return deviceMapper.getDeviceById1(id);
- }
-
- @Override
- public List<Device> getDeviceById2(int id) {
- return deviceMapper.getDeviceById2(id);
- }
-
- @Override
- public List<Device> getDeviceById3(int id) {
- return deviceMapper.getDeviceById3(id);
- }
-
- @Override
- public List<Device> queryDevice(Map<String, Object> params) {
- List<Integer> dv = deviceMapper.getHasWindDirAndWindSpeedDeviceVersion();
- Object orgIdObj = params.get("orgId");
- List<Device> deviceList = null;
- if (orgIdObj != null) {
- Integer orgId = Integer.parseInt(orgIdObj.toString());
- List<Integer> orgIds = orgMapper.selectLowerOrgIds(orgId);
- params.put("orgIds", orgIds);
- deviceList = deviceMapper.selectDevicesAll(params);
- }
- List<Device> deviceListHasWind = new ArrayList<>();
- for (Device d : deviceList) {
- if (dv.contains(d.getDeviceVersionId())) {
- deviceListHasWind.add(d);
- }
- }
- return deviceListHasWind;
- }
-
- @Override
- public Map<String, Object> getAllFieldByMac(Map<String, Object> parameters) {
- Map<String, Object> deviceMap = deviceMapper.selectAllFieldByMac(parameters);
- return deviceMap;
- }
-
- @Override
- public List<DeviceAndWind> getAllDevice() {
- return deviceMapper.getAllDevice();
- }
-
- @Override
- public List<String> getAllMac() {
- return deviceMapper.getAllMac();
- }
-
- @Override
- public Device byMacGetDevice(String mac) {
- return deviceMapper.byMacGetDevice(mac);
- }
-
- @Override
- public List byMonitorIdGetDeviceAndWind(String id, String tab) {
- List<DeviceAndWind> deviceAndWinds = deviceMapper.byMonitorIdGetDeviceAndWind(Integer.parseInt(id), tab);
- List loList = new ArrayList();
- List laList = new ArrayList();
- Double U = 0.0;
- Double V = 0.0;
- List list = new ArrayList();
- for (DeviceAndWind andWind : deviceAndWinds) {
- Double lo = andWind.getLongitude();
- Double la = andWind.getLatitude();
- List tranlist = LatLngTransformation.Convert_BD09_To_GCJ02(la, lo);
- Double transLo = (Double) tranlist.get(0);
- Double transLa = (Double) tranlist.get(1);
- loList.add(transLo);
- laList.add(transLa);
- }
- Double loma = 0.0;
- Double lomi = 0.0;
- Double lama = 0.0;
- Double lami = 0.0;
- if (loList.size() > 0) {
- loma = (Double) Collections.max(loList);
- lomi = (Double) Collections.min(loList);
- }
- if (laList.size() > 0) {
- lama = (Double) Collections.max(laList);
- lami = (Double) Collections.min(laList);
- }
- Map laLaMap = new HashMap();
- laLaMap.put("maxLo", loma);
- laLaMap.put("minLo", lomi);
- laLaMap.put("maxLa", lama);
- laLaMap.put("minLa", lami);
-
- Double lo1 = lomi - 250 * 0.00001141;
- Double lo2 = loma + 250 * 0.00001141;
- Double la2 = lami - 250 * 0.00000899;
- Double la1 = lama + 250 * 0.00000899;
-
- Double dx = 0.00001141 * 20;
- Double dy = 0.00000899 * 20;
- int nx = (int) Math.floor((lo2 - lo1) / dx);
- int ny = (int) Math.floor((la1 - la2) / dy);
- String header1 = "\"" + "header" + "\"" + ": " + "{" + "\"" + "parameterUnit" + "\"" + ": " + "\"" + "m/s" + "\"" + ", " + "\"" + "parameterNumber" + "\"" + ": " + 2 +
- ", " + "\"" + "dx" + "\"" + ": " + dx + ", " + "\"" + "dy" + "\"" + ": " + dy +
- ", " + "\"" + "parameterNumberName" + "\"" + ": " + "\"" + "eastward_wind" + "\"" + ", " + "\"" + "la1" + "\"" + ": " + la1 + ", " + "\"" + "la2" + "\"" + ": " + la2 +
- ", " + "\"" + "parameterCategory" + "\"" + ": " + 2 + ", " + "\"" + "lo1" + "\"" + ": " + lo1 + ", " + "\"" + "lo2" + "\"" + ": " + lo2 +
- ", " + "\"" + "nx" + "\"" + ": " + nx + ", " + "\"" + "ny" + "\"" + ": " + ny + ", " + "\"" + "refTime" + "\"" + ": " + "\"" + "2020-07-22 23:00:00" + "\"" + "}";
-
- String header2 = "\"" + "header" + "\"" + ": " + "{" + "\"" + "parameterUnit" + "\"" + ": " + "\"" + "m/s" + "\"" + ", " + "\"" + "parameterNumber" + "\"" + ": " + 3 +
- ", " + "\"" + "dx" + "\"" + ": " + dx + ", " + "\"" + "dy" + "\"" + ": " + dy +
- ", " + "\"" + "parameterNumberName" + "\"" + ": " + "\"" + "eastward_wind" + "\"" + ", " + "\"" + "la1" + "\"" + ": " + la1 + ", " + "\"" + "la2" + "\"" + ": " + la2 +
- ", " + "\"" + "parameterCategory" + "\"" + ": " + 2 + ", " + "\"" + "lo1" + "\"" + ": " + lo1 + ", " + "\"" + "lo2" + "\"" + ": " + lo2 +
- ", " + "\"" + "nx" + "\"" + ": " + nx + ", " + "\"" + "ny" + "\"" + ": " + ny + ", " + "\"" + "refTime" + "\"" + ": " + "\"" + "2020-07-22 23:00:00" + "\"" + "}";
-
- List<Double> uList = new ArrayList<Double>();
- List<Double> vList = new ArrayList<Double>();
- int x = 0;
- int y = 0;
- List<Map> mapList = new ArrayList<Map>();
-
- for (int j = 0; j < deviceAndWinds.size(); j++) {
- Map<String, Double> map = new HashMap<String, Double>();
- Double windDir = deviceAndWinds.get(j).getWindDir();
-
- Double windSpeed = deviceAndWinds.get(j).getWindSpeed();
- if (windDir == null) {
- windDir = 0.0;
- windSpeed = 0.0;
- }
- Double tvoc = deviceAndWinds.get(j).getTVoc();
-
- List tranlist = LatLngTransformation.Convert_BD09_To_GCJ02(deviceAndWinds.get(j).getLatitude(), deviceAndWinds.get(j).getLongitude());
- Double transLo = (Double) tranlist.get(0);
- Double transLa = (Double) tranlist.get(1);
- if (tvoc == null) {
- tvoc = 0.0;
- }
- Double dir = (270.0 - windDir * Math.PI / 180.0);
-
- U = windSpeed * Math.cos(dir);
- V = windSpeed * Math.sin(dir);
- map.put("lo", transLo);
- map.put("la", transLa);
- map.put("U", U);
- map.put("V", V);
- mapList.add(map);
- }
- for (int i = 0; i < mapList.size(); i++) {
- Double lo = (Double) mapList.get(i).get("lo");
- Double la = (Double) mapList.get(i).get("la");
- x = (int) Math.floor((lo - lo1) / dx);
- y = Math.abs((int) Math.floor((la - la1) / dy));
- //y=Math.floor(Math.abs(la-la1)/dy);
- U = (Double) mapList.get(i).get("U");
- V = (Double) mapList.get(i).get("V");
- if (i == 0) {
- for (int j = 0; j < nx * ny; j++) {
- uList.add(0.0);
- vList.add(0.0);
- }
- }
- for (int j = 0; j < nx * ny; j++) {
- if (i == 0) {
- if ((y >= 2 && j == (y) * nx + x)) {
- int k;
- for (k = j - 2 * nx; k <= j + 2 * nx; k = k + nx) {
- uList.set(k, U);
- uList.set(k - 1, U);
- uList.set(k - 2, U);
- uList.set(k + 1, U);
- uList.set(k + 2, U);
- vList.set(k, V);
- vList.set(k - 1, V);
- vList.set(k - 2, V);
- vList.set(k + 1, V);
- vList.set(k + 2, V);
- }
- }
- } else {
- if (y >= 1 && j == y * nx + x) {
- int k;
- for (k = j - 2 * nx; k <= j + 2 * nx; ) {
- uList.set(k - 1, U);
- uList.set(k - 2, U);
- uList.set(k + 1, U);
- uList.set(k + 2, U);
- vList.set(k - 1, V);
- vList.set(k - 2, V);
- vList.set(k + 1, V);
- vList.set(k + 2, V);
- k = k + nx;
- }
- uList.set(j, U);
- vList.set(j, V);
- }
- }
- }
- }
- String uData = "\"" + "data" + "\"" + ": " + uList;
- String vData = "\"" + "data" + "\"" + ": " + vList;
- String s1 = "[" + "{" + header1 + ", " + uData + "}" + ", " + "{" + header2 + ", " + vData + "}" + "]";
- JSONArray jsonArray = JSONArray.parseArray(s1);
- MonitorPoint monitorPoint = monitorPointMapper.byIdGetMonitorPoint(Integer.parseInt(id));
- Double monitorLo = monitorPoint.getLongitude();
- Double monitorLa = monitorPoint.getLatitude();
- List transList = LatLngTransformation.Convert_BD09_To_GCJ02(monitorLa, monitorLo);
- Double transLo = (Double) transList.get(0);
- Double transLa = (Double) transList.get(1);
- list.add(jsonArray);
- list.add(transLo);
- list.add(transLa);
- list.add(laLaMap);
- return list;
- }
-
- @Override
- public List byMonitorIdGetDeviceAndWindSpecial(String id, String tab) {
- MonitorPoint monitorPoint = monitorPointMapper.byIdGetMonitorPoint(Integer.parseInt(id));
- Integer areaCode = monitorPoint.getAreaCode();
- String townCode = monitorPoint.getTownCode() + "";
- int monitorPointId = monitorPoint.getId();
- Map<String, Object> parm = new HashMap<>();
- List<DeviceAndWind> deviceAndWinds = new ArrayList<>();
- Double loma = 0.0;
- Double lomi = 0.0;
- Double lama = 0.0;
- Double lami = 0.0;
-
- int length = 1;
- int perdlen = 1;
- if (areaCode == 320581) {
- parm.put("areaCode", areaCode);
- List<Device> deviceList = deviceMapper.getDeviceByCode(parm);
- for (Device d : deviceList) {
- String mac = d.getMac();
- DeviceAndWind deviceAndWind = deviceMapper.byMacGetDeviceAndWind(mac, tab);
- if (deviceAndWind != null) {
- deviceAndWinds.add(deviceAndWind);
- }
- }
- length = 8000;
- perdlen = 2200;
- } else if ((areaCode == 320583) && (townCode.equals("320583108000"))) {
- parm.put("townCode", townCode);
- List<Device> deviceList = deviceMapper.getDeviceByCode(parm);
- for (Device d : deviceList) {
- String mac = d.getMac();
- DeviceAndWind deviceAndWind = deviceMapper.byMacGetDeviceAndWind(mac, tab);
- if (deviceAndWind != null) {
- deviceAndWinds.add(deviceAndWind);
- }
- }
- length = 2000;
- perdlen = 280;
- } else if (monitorPointId == 35) {
- DeviceAndWind deviceAndWind = deviceMapper.getDeviceAndWindByMac("898607b0101730392253", tab);
- DeviceAndWind deviceAndWind1 = deviceMapper.getDeviceAndWindByMac("p5dnd7a0392083", tab);
- deviceAndWinds.add(deviceAndWind);
- deviceAndWinds.add(deviceAndWind1);
- length = 2000;
- perdlen = 50;
-
- } else {
- deviceAndWinds = deviceMapper.byMonitorIdGetDeviceAndWind(Integer.parseInt(id), tab);
- length = 2000;
- perdlen = 80;
- }
- List loList = new ArrayList();
- List laList = new ArrayList();
- Double U = 0.0;
- Double V = 0.0;
- List list = new ArrayList();
- for (DeviceAndWind andWind : deviceAndWinds) {
- Double lo = andWind.getLongitude();
- Double la = andWind.getLatitude();
- List tranlist = LatLngTransformation.Convert_BD09_To_GCJ02(la, lo);
- Double transLo = (Double) tranlist.get(0);
- Double transLa = (Double) tranlist.get(1);
- loList.add(transLo);
- laList.add(transLa);
- }
-
- if (loList.size() > 0) {
- loma = (Double) Collections.max(loList);
- lomi = (Double) Collections.min(loList);
- }
- if (laList.size() > 0) {
- lama = (Double) Collections.max(laList);
- lami = (Double) Collections.min(laList);
- }
- Map laLaMap = new HashMap();
- laLaMap.put("maxLo", loma);
- laLaMap.put("minLo", lomi);
- laLaMap.put("maxLa", lama);
- laLaMap.put("minLa", lami);
-
- Double lo1 = lomi - length * 0.00001141;
- Double lo2 = loma + length * 0.00001141;
- Double la2 = lami - length * 0.00000899;
- Double la1 = lama + length * 0.00000899;
-
- Double dx = 0.00001141 * perdlen;
- Double dy = 0.00000899 * perdlen;
- int nx = (int) Math.floor((lo2 - lo1) / dx);
- int ny = (int) Math.floor((la1 - la2) / dy);
- String header1 = "\"" + "header" + "\"" + ": " + "{" + "\"" + "parameterUnit" + "\"" + ": " + "\"" + "m/s" + "\"" + ", " + "\"" + "parameterNumber" + "\"" + ": " + 2 +
- ", " + "\"" + "dx" + "\"" + ": " + dx + ", " + "\"" + "dy" + "\"" + ": " + dy +
- ", " + "\"" + "parameterNumberName" + "\"" + ": " + "\"" + "eastward_wind" + "\"" + ", " + "\"" + "la1" + "\"" + ": " + la1 + ", " + "\"" + "la2" + "\"" + ": " + la2 +
- ", " + "\"" + "parameterCategory" + "\"" + ": " + 2 + ", " + "\"" + "lo1" + "\"" + ": " + lo1 + ", " + "\"" + "lo2" + "\"" + ": " + lo2 +
- ", " + "\"" + "nx" + "\"" + ": " + nx + ", " + "\"" + "ny" + "\"" + ": " + ny + ", " + "\"" + "refTime" + "\"" + ": " + "\"" + "2020-07-22 23:00:00" + "\"" + "}";
-
- String header2 = "\"" + "header" + "\"" + ": " + "{" + "\"" + "parameterUnit" + "\"" + ": " + "\"" + "m/s" + "\"" + ", " + "\"" + "parameterNumber" + "\"" + ": " + 3 +
- ", " + "\"" + "dx" + "\"" + ": " + dx + ", " + "\"" + "dy" + "\"" + ": " + dy +
- ", " + "\"" + "parameterNumberName" + "\"" + ": " + "\"" + "eastward_wind" + "\"" + ", " + "\"" + "la1" + "\"" + ": " + la1 + ", " + "\"" + "la2" + "\"" + ": " + la2 +
- ", " + "\"" + "parameterCategory" + "\"" + ": " + 2 + ", " + "\"" + "lo1" + "\"" + ": " + lo1 + ", " + "\"" + "lo2" + "\"" + ": " + lo2 +
- ", " + "\"" + "nx" + "\"" + ": " + nx + ", " + "\"" + "ny" + "\"" + ": " + ny + ", " + "\"" + "refTime" + "\"" + ": " + "\"" + "2020-07-22 23:00:00" + "\"" + "}";
-
- List<Double> uList = new ArrayList<Double>();
- List<Double> vList = new ArrayList<Double>();
- int x = 0;
- int y = 0;
- List<Map> mapList = new ArrayList<Map>();
-
- for (int j = 0; j < deviceAndWinds.size(); j++) {
- Map<String, Double> map = new HashMap<String, Double>();
- Double windDir = deviceAndWinds.get(j).getWindDir();
- Double windSpeed = deviceAndWinds.get(j).getWindSpeed();
- if (windDir == null) {
- windDir = 0.0;
- windSpeed = 0.0;
- }
- Double tvoc = deviceAndWinds.get(j).getTVoc();
-
- List tranlist = LatLngTransformation.Convert_BD09_To_GCJ02(deviceAndWinds.get(j).getLatitude(), deviceAndWinds.get(j).getLongitude());
- Double transLo = (Double) tranlist.get(0);
- Double transLa = (Double) tranlist.get(1);
- if (tvoc == null) {
- tvoc = 0.0;
- }
- Double dir = (270.0 - windDir * Math.PI / 180.0);
-
- U = windSpeed * Math.cos(dir);
- V = windSpeed * Math.sin(dir);
- map.put("lo", transLo);
- map.put("la", transLa);
- map.put("U", U);
- map.put("V", V);
- mapList.add(map);
- }
- for (int i = 0; i < mapList.size(); i++) {
- Double lo = (Double) mapList.get(i).get("lo");
- Double la = (Double) mapList.get(i).get("la");
- x = (int) Math.floor((lo - lo1) / dx);
- y = Math.abs((int) Math.floor((la - la1) / dy));
- //y=Math.floor(Math.abs(la-la1)/dy);
- U = (Double) mapList.get(i).get("U");
- V = (Double) mapList.get(i).get("V");
- if (i == 0) {
- for (int j = 0; j < nx * ny; j++) {
- uList.add(0.0);
- vList.add(0.0);
- }
- }
- for (int j = 0; j < nx * ny; j++) {
- if (i == 0) {
- if ((y >= 2 && j == (y) * nx + x)) {
- int k;
- for (k = j - 2 * nx; k <= j + 2 * nx; k = k + nx) {
- uList.set(k, U);
- uList.set(k - 1, U);
- uList.set(k - 2, U);
- uList.set(k + 1, U);
- uList.set(k + 2, U);
- vList.set(k, V);
- vList.set(k - 1, V);
- vList.set(k - 2, V);
- vList.set(k + 1, V);
- vList.set(k + 2, V);
- }
- }
- } else {
- if (y >= 1 && j == y * nx + x) {
- int k;
- for (k = j - 2 * nx; k <= j + 2 * nx; ) {
- uList.set(k - 1, U);
- uList.set(k - 2, U);
- uList.set(k + 1, U);
- uList.set(k + 2, U);
- vList.set(k - 1, V);
- vList.set(k - 2, V);
- vList.set(k + 1, V);
- vList.set(k + 2, V);
- k = k + nx;
- }
- uList.set(j, U);
- vList.set(j, V);
- }
- }
- }
- }
- String uData = "\"" + "data" + "\"" + ": " + uList;
- String vData = "\"" + "data" + "\"" + ": " + vList;
- String s1 = "[" + "{" + header1 + ", " + uData + "}" + ", " + "{" + header2 + ", " + vData + "}" + "]";
- JSONArray jsonArray = JSONArray.parseArray(s1);
-
- Double monitorLo = monitorPoint.getLongitude();
- Double monitorLa = monitorPoint.getLatitude();
- List transList = LatLngTransformation.Convert_BD09_To_GCJ02(monitorLa, monitorLo);
- Double transLo = (Double) transList.get(0);
- Double transLa = (Double) transList.get(1);
-
- list.add(jsonArray);
- list.add(transLo);
- list.add(transLa);
- list.add(laLaMap);
- return list;
- }
-
- @Override
- public List<Device> getDeviceByCodeAndId(String code, String id) {
- return deviceMapper.getDeviceByCodeAndId(code, id);
- }
-
- @Override
- public String byMacGetOrgId(String mac) {
- return deviceMapper.byMacGetOrgId(mac);
- }
-
- @Override
- public List<Device> getDevice(String macOrName) {
- return deviceMapper.getDevice(macOrName);
- }
-
- @Override
- public List<Device> getDeviceByCode() {
- return deviceMapper.getDeviceByCityCode();
- }
-
-}
+package com.moral.service.impl;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+import javax.annotation.Resource;
+import javax.validation.constraints.NotNull;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.TypeReference;
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
+import com.moral.common.bean.Constants;
+import com.moral.common.bean.PageBean;
+import com.moral.common.bean.PageResult;
+import com.moral.common.exception.BusinessException;
+import com.moral.common.util.ExampleUtil;
+import com.moral.common.util.RedisUtils;
+import com.moral.common.util.ValidateUtil;
+import com.moral.entity.Device;
+import com.moral.entity.DeviceAndWind;
+import com.moral.entity.DeviceProperty;
+import com.moral.entity.MonitorPoint;
+import com.moral.mapper.DeviceMapper;
+import com.moral.mapper.DevicePropertyMapper;
+import com.moral.mapper.DeviceVersionMapper;
+import com.moral.mapper.DictionaryDataMapper;
+import com.moral.mapper.MonitorPointMapper;
+import com.moral.mapper.OrganizationMapper;
+import com.moral.service.AccountService;
+import com.moral.service.DeviceService;
+import com.moral.service.MonitorPointService;
+import com.moral.util.LatLngTransformation;
+import com.moral.util.TkMybatisUtils;
+
+import org.apache.commons.collections.MapUtils;
+import org.apache.commons.lang3.BooleanUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.log4j.Logger;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
+
+import tk.mybatis.mapper.entity.Example;
+
+@Service
+public class DeviceServiceImpl implements DeviceService {
+ private static Logger log = Logger.getLogger(DeviceServiceImpl.class);
+ //-----------------------redis key������-������---------------------------------
+ private static String AlARM = "alarm";//������������������key������
+ private static String ADJUST = "adjust";//���������������key������
+ private static String DEVICE = "device";//������������������key������
+ private static String STATE = "state";//������������������key������
+ private static String DATA = "data";//������������������key������
+
+ //-----------------------redis key������-������---------------------------------
+ private String keysConnect(String... keys) {
+ StringBuilder key = new StringBuilder(keys[0]);
+ for (int i = 1; i < keys.length; i++) {
+ key.append("_");
+ key.append(keys[i]);
+ }
+ return key.toString().toLowerCase();
+ }
+
+ @Resource
+ private DeviceMapper deviceMapper;
+ @Resource
+ private MonitorPointMapper monitorPointMapper;
+ @Resource
+ private AccountService accountService;
+ private Class ENTITY_CLASS = Device.class;
+ @Resource
+ OrganizationMapper orgMapper;
+ @Resource
+ DeviceVersionMapper deviceVersionMapper;
+ @Resource
+ RedisUtils redisUtils;
+ @Resource
+ OrganizationMapper organizationMapper;
+ @Resource
+ DictionaryDataMapper dictionaryDataMapper;
+ @Resource
+ private MonitorPointService monitorPointService ;
+
+ @Override
+ public Map<String, Object> getDeviceStatesByAccount(Map<String, Object> parameters) {
+ ValidateUtil.notNull(parameters.get("accountId"), "param.is.null");
+ Map<String, Object> result = new HashMap<String, Object>();
+ accountService.setOrgIdsByAccount(parameters);
+ List<Map<String, Object>> list = deviceMapper.getDeviceStatesByAccount(parameters);
+ Long all = 0L, normal = 0L, abnormal = 0L, stop = 0L;
+ for (Map<String, Object> map : list) {
+ Long count = (Long) map.get("count");
+ all += count;
+ switch (Integer.valueOf((String) map.get("state"))) {
+ case 0:
+ normal = count;
+ break;
+ case 4:
+ stop = count;
+ break;
+ default:
+ abnormal += count;
+ }
+ }
+ result.put("all", all);
+ result.put("normal", normal);
+ result.put("abnormal", abnormal);
+ result.put("stop", stop);
+ return result;
+ }
+
+ @Override
+ @Transactional
+ public void saveOrUpdateDevice(Device device) {
+ ValidateUtil.notNull(device, "param.is.null");
+ ValidateUtil.notEmpty(device.getMac(), "param.is.null");
+ Device queryDevice = new Device();
+ queryDevice.setMac(device.getMac());
+ queryDevice = deviceMapper.selectOne(queryDevice);
+ Date operateDate = new Date();
+ device.setInstallTime(operateDate);
+ if (ObjectUtils.isEmpty(queryDevice)) {
+ device.setCreateTime(operateDate);
+ device.setState("4");
+ device.setIsDelete(Constants.IS_DELETE_FALSE);
+ deviceMapper.insertSelective(device);
+ } else {
+ device.setId(queryDevice.getId());
+ deviceMapper.updateByPrimaryKeySelective(device);
+ }
+ //������redis������������
+ refreshDeviceInRedis(device.getMac());
+ }
+
+ @Override
+ public List<Device> getInstallDevicesByOperateUser(Integer uid, Integer pageIndex, Integer pageSize) {
+ ValidateUtil.notNull(uid, "param.is.null");
+ Device device = new Device();
+ device.setOperateUserId(uid);
+ PageHelper.startPage(pageIndex, pageSize, false);
+ List<Device> devices = deviceMapper.select(device);
+ return devices;
+ }
+
+ /**
+ * @param mac
+ * @param fromCache
+ * @return ������������������
+ */
+ @Override
+ public Device getDeviceByMac(String mac, boolean fromCache) {
+ if (fromCache) {
+ Device device = getDeviceFromRedis(mac);
+ if (device == null) {
+ device = deviceMapper.selectWithOrgIdsByMac(mac);
+ }
+ return device;
+ } else {
+ return deviceMapper.selectWithOrgIdsByMac(mac);
+ }
+
+ }
+
+ /**
+ * ���������������������
+ *
+ * @param mac
+ * @return
+ */
+ @Override
+ public Device getDeviceByMac(String mac) {
+
+ return getDeviceByMac(mac, true);
+ }
+
+ /*
+ * ���������������������redis������key
+ */
+ private String getDeviceKey(String mac) {
+ return keysConnect(DEVICE, mac);
+ }
+
+ // /*
+// * ������������������redis��������� ������
+// */
+// private void setDeviceToRedis(String mac,Device device){
+// String key = getDeviceKey(mac);
+// Device simpleDevice = new Device();
+// simpleDevice.setId(device.getId());// id
+// simpleDevice.setName(device.getName());// name
+// simpleDevice.setAddress(device.getAddress());// address
+// simpleDevice.setDeviceVersionId(device.getDeviceVersionId());// version
+// simpleDevice.setMac(device.getMac()); // mac
+// simpleDevice.setMonitorPointId(device.getMonitorPointId());// ���������id
+// simpleDevice.setOrganizationIds(device.getOrganizationIds());// ������������
+// simpleDevice.setDeviceVersion(device.getDeviceVersion());
+// redisUtils.set(key,simpleDevice);
+// }
+ private Device getDeviceFromRedis(String mac) {
+ String key = getDeviceKey(mac);
+ return redisUtils.get(key, Device.class);
+ }
+
+ /**
+ * @param params map��� ������ ������id���4������������
+ * @return ������������������������
+ */
+ @Override
+ public List<Device> query(Map<String, Object> params) {
+ List<Integer> dv = deviceMapper.getHasWindDirAndWindSpeedDeviceVersion();
+ Object orgIdObj = params.get("orgId");
+ String regionCode = params.get("regionCode").toString();
+ List<Device> deviceList = null;
+ if (orgIdObj != null) {
+ Integer orgId = Integer.parseInt(orgIdObj.toString());
+ List<Integer> orgIds = orgMapper.selectLowerOrgIds(orgId);
+ //���������������������������������������������
+ if (regionCode.startsWith("1309")&&orgIdObj.toString().equals("5")) {
+ orgIds = new ArrayList<>();
+ Collections.addAll(orgIds, 60, 65, 159, 165, 166);
+ deviceList = deviceMapper.selectByMap(params);
+ Iterator<Device> iter = deviceList.iterator();
+ while (iter.hasNext()) {
+ Device device = iter.next();
+ Integer mpId = device.getMonitorPointId();
+ Integer oid = monitorPointService.byIdGetMonitorPoint(mpId).getOrganizationId();
+ if (!orgIds.contains(oid)) {
+ iter.remove();
+ } else {
+ if (orgId == 60) {
+ if (mpId != 56) {
+ iter.remove();
+ }
+ } else if (orgId == 65) {
+ if (mpId != 83 && mpId != 84) {
+ iter.remove();
+ }
+ }
+ }
+ }
+ }else {
+ params.put("orgIds", orgIds);
+ deviceList = deviceMapper.selectByMap(params);
+ }
+ // loadDeviceState(deviceList);
+ }
+ Example deviceExample = new Example(Device.class);//���������
+ Example.Criteria deviceCriteria = deviceExample.createCriteria();
+ deviceCriteria.orEqualTo("isDelete", Constants.IS_DELETE_FALSE);
+ List<Device> devicesInfo = deviceMapper.selectByExample(deviceExample);
+ Example monitorExample = new Example(MonitorPoint.class);//���������
+ Example.Criteria monitorCriteria = monitorExample.createCriteria();
+ monitorCriteria.orEqualTo("isDelete", Constants.IS_DELETE_FALSE);
+ List<MonitorPoint> monitorsInfo = monitorPointMapper.selectByExample(monitorExample);
+ for (Device d : deviceList) {
+ if (dv.contains(d.getDeviceVersionId())) {
+ d.setHasWindInfo(true);
+ } else {
+ d.setHasWindInfo(false);
+ }
+ for (Device temp : devicesInfo) {
+ if (d.getId().equals(temp.getId())) {
+ d.setState(temp.getState());
+ }
+ }
+ for (MonitorPoint mp : monitorsInfo) {
+ if (d.getMonitorPointId().equals(mp.getId())) {
+ d.setMonitorPoint(mp);
+ }
+ }
+ }
+ return deviceList;
+ }
+
+ /**
+ * ������������id��������������� ������������������
+ *
+ * @param orgId
+ * @param deviceName
+ * @param pageSize
+ * @param pageNo
+ * @return ���������������������
+ */
+ @Override
+ public PageResult query(Integer orgId, String deviceName, Integer pageSize, Integer pageNo) {
+ List<Integer> orgIds = orgMapper.selectLowerOrgIds(orgId);
+ if (!ObjectUtils.isEmpty(pageSize) && !ObjectUtils.isEmpty(pageNo)) {
+ PageHelper.startPage(pageNo, pageSize);
+ }
+ String state = null;
+ switch (deviceName) {
+ case "������":
+ state = "0";
+ deviceName = null;
+ break;
+ case "������":
+ state = "1";
+ deviceName = null;
+ break;
+ case "������":
+ state = "2";
+ deviceName = null;
+ break;
+ case "������":
+ state = "3";
+ deviceName = null;
+ break;
+ case "������":
+ state = "4";
+ deviceName = null;
+ break;
+ }
+ List<Device> list = deviceMapper.selectByOrgIdAndDevName(orgId, orgIds, state, deviceName);
+ //���redis������������
+ loadDeviceState(list);
+ if (list instanceof Page) {
+ return new PageResult(((Page) list).getTotal(), list);
+ }
+ return new PageResult(null, list);
+ }
+
+ /**
+ * ������������id������������id ������������������
+ *
+ * @param orgId
+ * @param mpId
+ * @param pageSize
+ * @param pageNo
+ * @return ���������������������
+ */
+ @Override
+ public PageResult query(Integer orgId, Integer mpId, Integer pageSize, Integer pageNo) {
+ List<Integer> orgIds = orgMapper.selectLowerOrgIds(orgId);
+ if (!ObjectUtils.isEmpty(pageSize) && !ObjectUtils.isEmpty(pageNo)) {
+ PageHelper.startPage(pageNo, pageSize);
+ }
+ List<Device> list = deviceMapper.selectByOrgIdAndMpId(orgId, orgIds, mpId);
+ //���redis������������
+ loadDeviceState(list);
+ if (list instanceof Page) {
+ return new PageResult(((Page) list).getTotal(), list);
+ }
+ return new PageResult(null, list);
+ }
+
+ private void loadDeviceState(List<Device> list) {
+ //���redis������������
+ list.stream().map(device -> {
+ String mac = device.getMac();
+ if (!StringUtils.isBlank(mac)) {
+ String state = getSateFromRedis(device.getMonitorPointId(), mac.toLowerCase());
+ device.setState(state);
+ } else {
+ device.setState(Constants.DEVICE_STATE_OFFLINE);
+ }
+ return device;
+ }).count();
+ }
+
+ private String getSateFromRedis(Integer mpId, String mac) {
+
+ Map<String, String> stateMap = getStateMapFromRedis(mpId, mac);
+ String state = null;
+ if (stateMap != null) {
+ state = stateMap.get("state");
+ }
+ state = state == null ? Constants.DEVICE_STATE_OFFLINE : state;
+ return state;
+ }
+
+ public Map<String, String> getStateMapFromRedis(Integer mpId, String mac) {
+ StringBuilder key = new StringBuilder();
+ //������key
+ key.append("state_").append(mpId).append("_").append(mac);
+ return redisUtils.get(key.toString(), new TypeReference<Map<String, String>>() {
+ });
+ }
+
+ private Device getDeviceWithOrgIdsByMac(String mac) {
+ String key = "device_" + mac;
+ Device device = redisUtils.get(key, Device.class);
+ if (device == null) {
+ device = deviceMapper.selectWithOrgIdsByMac(mac);
+ if (device != null) {
+ redisUtils.set(key, device);
+ }
+ }
+ return device;
+ }
+
+ /**
+ * ������������������������������
+ * ������ redis ���������������,���������������������������������������������task������
+ *
+ * @param mac
+ */
+ private void refreshDeviceInRedis(String mac) {
+ if (!StringUtils.isBlank(mac)) {
+ String key = getDeviceKey(mac);
+ redisUtils.remove(key);
+ } else {
+ log.warn("param mac is null in method [refreshDeviceInRedis]");
+ }
+ }
+
+ @Override
+ public int countByExample(PageBean pageBean) {
+ Example example = ExampleUtil.generateExample(ENTITY_CLASS, pageBean);
+ TkMybatisUtils.addDeletesToExample(example);
+ return deviceMapper.selectCountByExample(example);
+ }
+
+ @Override
+ public PageBean queryByPageBean(PageBean pageBean) {
+ Example example = ExampleUtil.generateExample(ENTITY_CLASS, pageBean);
+// addDeletesToExample(example);
+ if (pageBean.getPageSize() > 0) {
+ PageHelper.startPage(pageBean.getPageIndex(), pageBean.getPageSize());
+ }
+ List<Device> deviceList = deviceMapper.selectWithRelationData(example);
+ return new PageBean(deviceList);
+ }
+
+ @Override
+ public void deleteByIds(Integer[] ids) {
+ Device device = new Device();
+ device.setIsDelete(Constants.IS_DELETE_TRUE);
+ if (ids != null && ids.length > 0) {
+ Example example = new Example(ENTITY_CLASS);
+ example.or().andIn("id", Arrays.asList(ids));
+ if (ids.length == 1) {
+ device.setId(ids[0]);
+ deviceMapper.updateByPrimaryKeySelective(device);
+ } else {
+ deviceMapper.updateByExampleSelective(device, example);
+ }
+ List<Device> deviceList = deviceMapper.selectByExample(example);
+ List<String> adjustAndDeviceKeys = deviceList.stream().collect(
+ ArrayList<String>::new,
+ (list, dev) -> {
+ if (!StringUtils.isBlank(dev.getMac())) {
+ list.add("device_" + dev.getMac());
+ list.add("adjust_" + dev.getMac());
+ }
+ },
+ (oList, nList) -> {
+ oList.addAll(nList);
+ }
+ );
+ redisUtils.remove(adjustAndDeviceKeys.toArray(new String[adjustAndDeviceKeys.size()]));
+ }
+ }
+
+ @Override
+ @Transactional
+ public void addOrModify(Device device) {
+ try {
+ //mac ���������
+ if (!StringUtils.isBlank(device.getMac())) {
+ device.setMac(device.getMac().toLowerCase());
+ }
+ if (device.getId() != null) {
+ deviceMapper.updateByPrimaryKeySelective(device);
+ } else {
+ Device deviceQuery = new Device();
+ deviceQuery.setMac(device.getMac());
+ Device deviceResult = deviceMapper.selectOne(deviceQuery);
+ if (deviceResult != null) {
+ device.setId(deviceResult.getId());
+ deviceMapper.updateByPrimaryKeySelective(device);
+ } else {
+ device.setState(Constants.DEVICE_STATE_OFFLINE);
+ device.setIsDelete(Constants.IS_DELETE_FALSE);
+ deviceMapper.insertSelective(device);
+ }
+ }
+ //������redis���������������
+ refreshDeviceInRedis(device.getMac());
+ } catch (Exception ex) {
+ throw ex;
+ }
+ }
+
+ @Override
+ public List<Map> countByTimes(Date start, Date end, String format) {
+ if (start == null || end == null || StringUtils.isBlank(format)) {
+ log.error("some params is null");
+ throw new BusinessException("some params is null");
+ }
+ return deviceMapper.countByTimes(start, end, format);
+ }
+
+ @Override
+ public List<Device> getDevicesByMonitorPointId(Integer monitorPointId) {
+ Device device = new Device();
+ device.setMonitorPointId(monitorPointId);
+ device.setIsDelete(Constants.IS_DELETE_FALSE);
+ List<Device> devices = deviceMapper.select(device);
+ for (Device device2 : devices) {
+ DeviceProperty deviceProperty = devicePropertyMapper.selectByPrimaryKey(device2.getId());
+ device2.setDeviceProperty(deviceProperty);
+ }
+ return devices;
+ }
+
+ /**
+ * ������map{mac������state���}
+ *
+ * @param macList
+ * @return
+ */
+ @Override
+ public List<Map<String, String>> queryDevicesState(List<String> macList, Boolean withData) {
+ List<Map<String, String>> list = macList.stream().map(mac -> {
+ Map<String, String> resultMap = new HashMap<>();
+ if (!StringUtils.isBlank(mac)) {
+ mac = mac.toLowerCase();
+ Device device = getDeviceWithOrgIdsByMac(mac);
+ Map<String, String> stateMap = getStateMapFromRedis(device.getMonitorPointId(), mac);
+ if (!MapUtils.isEmpty(stateMap)) {
+ resultMap.putAll(stateMap);
+ } else {
+ resultMap.put("state", Constants.DEVICE_STATE_OFFLINE);
+ resultMap.put("mac", mac);
+ }
+ //������data
+ if (BooleanUtils.isTrue(withData)) {
+ String dataKey = "data_" + mac;
+ Map<String, String> dataMap = redisUtils.get(dataKey, new TypeReference<Map<String, String>>() {
+ });
+ if (!MapUtils.isEmpty(dataMap)) {
+ resultMap.putAll(dataMap);
+ }
+ }
+ }
+ return resultMap;
+ }).collect(Collectors.toList());
+ return list;
+ }
+
+ @Override
+ public Device queryById(Integer id) {
+ return deviceMapper.selectByPrimaryKey(id);
+ }
+
+ @Override
+ public List<Device> getDevicesByProfessionId(Map<String, Object> parameters) {
+
+ return deviceMapper.getDevicesByProfession(parameters);
+ }
+
+ @Override
+ public List<Device> getDevicesByOrganizationId(Map<String, Object> parameters) {
+ ValidateUtil.notNull(parameters.get("organizationId"), "param.is.null");
+ return deviceMapper.getDevicesByOrganizationId(parameters);
+ }
+
+ @Override
+ public Map<String, Long> queryDeviceStateSummary(@NotNull Integer orgId) {
+ Map<String, Object> params = new HashMap<>();
+ if (!dictionaryDataMapper.isSupperOrgId(orgId)) {
+ List<Integer> orgIds = organizationMapper.selectLowerOrgIds(orgId);
+ params.put("orgIds", orgIds);
+ }
+ List<Map<String, Object>> list = deviceMapper.getDeviceStatesByAccount(params);
+ Long all = 0L, normal = 0L, abnormal = 0L, stop = 0L;
+ for (Map<String, Object> map : list) {
+ Long count = (Long) map.get("count");
+ all += count;
+ switch (Integer.valueOf((String) map.get("state"))) {
+ case 0:
+ normal = count;
+ break;
+ case 4:
+ stop = count;
+ break;
+ default:
+ abnormal += count;
+ }
+ }
+ Map<String, Long> result = new HashMap<>();
+ result.put("all", all);
+ result.put("normal", normal);
+ result.put("abnormal", abnormal);
+ result.put("stop", stop);
+ return result;
+ }
+
+ @Resource
+ private DevicePropertyMapper devicePropertyMapper;
+
+ @Override
+ @Transactional
+ public void saveOrUpdate(Device device, DeviceProperty deviceProperty) {
+ device.setMac(device.getMac().toLowerCase());
+ if (ObjectUtils.isEmpty(device.getId())) {
+ device.setState(Constants.DEVICE_STATE_OFFLINE);
+ device.setIsDelete(Constants.IS_DELETE_FALSE);
+ deviceMapper.insertSelective(device);
+ deviceProperty.setId(device.getId());
+ } else {
+ deviceMapper.updateByPrimaryKeySelective(device);
+ devicePropertyMapper.deleteByPrimaryKey(deviceProperty);
+ }
+ devicePropertyMapper.insertSelective(deviceProperty);
+ refreshDeviceInRedis(device.getMac());
+
+ }
+
+ @Override
+ public PageBean getDeviceList(PageBean pageBean) {
+ Example example = ExampleUtil.generateExample(ENTITY_CLASS, pageBean);
+ if (pageBean.getPageSize() > 0) {
+ PageHelper.startPage(pageBean.getPageIndex(), pageBean.getPageSize());
+ }
+ List<Device> deviceList = deviceMapper.getDeviceList(example);
+ return new PageBean(deviceList);
+ }
+
+ @Override
+ public void offLinToMaintenance(Map<String, Object> parameters) {
+ ValidateUtil.notNull(parameters.get("id"), "param.is.null");
+ ValidateUtil.notNull(parameters.get("old_state"), "param.is.null");
+ ValidateUtil.notNull(parameters.get("new_state"), "param.is.null");
+ int count = 0;
+ if (Constants.DEVICE_STATE_OFFLINE.equals(parameters.get("old_state")) && Constants.DEVICE_STATE_MAINTENANCE.equals(parameters.get("new_state"))) {
+ Device device = new Device();
+ Example example = new Example(ENTITY_CLASS);
+ example.and().andEqualTo("id", new Integer(parameters.get("id").toString())).andEqualTo("state", Constants.DEVICE_STATE_OFFLINE);
+ device.setState(Constants.DEVICE_STATE_MAINTENANCE);
+ count = deviceMapper.updateByExampleSelective(device, example);
+ }
+ if (count == 0) {
+ throw new BusinessException("������������������");
+ }
+ }
+
+ @Override
+ public void saveOrUpdate4Mobile(Device device, DeviceProperty deviceProperty) {
+ device.setMac(device.getMac().toLowerCase());
+ Device selectDevice = new Device();
+ selectDevice.setMac(device.getMac());
+ selectDevice = deviceMapper.selectOne(selectDevice);
+ if (ObjectUtils.isEmpty(selectDevice)) {
+ device.setState(Constants.DEVICE_STATE_OFFLINE);
+ device.setIsDelete(Constants.IS_DELETE_FALSE);
+ deviceMapper.insertSelective(device);
+ deviceProperty.setId(device.getId());
+ devicePropertyMapper.insertSelective(deviceProperty);
+ } else {
+ device.setId(selectDevice.getId());
+ deviceMapper.updateByPrimaryKeySelective(device);
+ deviceProperty.setId(selectDevice.getId());
+ devicePropertyMapper.selectByPrimaryKey(selectDevice.getId());
+ if (ObjectUtils.isEmpty(devicePropertyMapper.selectByPrimaryKey(deviceProperty.getId()))) {
+ devicePropertyMapper.insertSelective(deviceProperty);
+ } else {
+ devicePropertyMapper.updateByPrimaryKeySelective(deviceProperty);
+ }
+
+ }
+ refreshDeviceInRedis(device.getMac());
+
+
+ }
+
+ @Override
+ public String getLimitDataByDevice(Map<String, Object> parameters) {
+ // TODO Auto-generated method stub
+ return deviceMapper.getLimitDataByDevice(parameters);
+ }
+
+ //������������������������������mac���������������������������������������������
+ @Override
+ public Device getDeviceByLongitudeAsc(String mac) {
+ Example example = new Example(Device.class);
+ example.setOrderByClause("longitude ASC");
+ List<Device> deviceList = deviceMapper.selectByExample(example);
+ for (int i = 0; i < deviceList.size(); i++) {
+ if (mac.equals(deviceList.get(i).getMac())) {
+ Device deviceSecond = deviceList.get(i + 1);
+ return deviceSecond;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public List<String> getMacsByOrganizationId(List<Object> organizationIdList) {
+ return deviceMapper.getMacsByOrganizationId(organizationIdList);
+ }
+
+ @Override
+ public List<Device> getDeviceById1(int id) {
+ return deviceMapper.getDeviceById1(id);
+ }
+
+ @Override
+ public List<Device> getDeviceById2(int id) {
+ return deviceMapper.getDeviceById2(id);
+ }
+
+ @Override
+ public List<Device> getDeviceById3(int id) {
+ return deviceMapper.getDeviceById3(id);
+ }
+
+ @Override
+ public List<Device> queryDevice(Map<String, Object> params) {
+ List<Integer> dv = deviceMapper.getHasWindDirAndWindSpeedDeviceVersion();
+ Object orgIdObj = params.get("orgId");
+ List<Device> deviceList = null;
+ if (orgIdObj != null) {
+ Integer orgId = Integer.parseInt(orgIdObj.toString());
+ List<Integer> orgIds = orgMapper.selectLowerOrgIds(orgId);
+ params.put("orgIds", orgIds);
+ deviceList = deviceMapper.selectDevicesAll(params);
+ }
+ List<Device> deviceListHasWind = new ArrayList<>();
+ for (Device d : deviceList) {
+ if (dv.contains(d.getDeviceVersionId())) {
+ deviceListHasWind.add(d);
+ }
+ }
+ return deviceListHasWind;
+ }
+
+ @Override
+ public Map<String, Object> getAllFieldByMac(Map<String, Object> parameters) {
+ Map<String, Object> deviceMap = deviceMapper.selectAllFieldByMac(parameters);
+ return deviceMap;
+ }
+
+ @Override
+ public List<DeviceAndWind> getAllDevice() {
+ return deviceMapper.getAllDevice();
+ }
+
+ @Override
+ public List<String> getAllMac() {
+ return deviceMapper.getAllMac();
+ }
+
+ @Override
+ public Device byMacGetDevice(String mac) {
+ return deviceMapper.byMacGetDevice(mac);
+ }
+
+ @Override
+ public List byMonitorIdGetDeviceAndWind(String id, String tab) {
+ List<DeviceAndWind> deviceAndWinds = deviceMapper.byMonitorIdGetDeviceAndWind(Integer.parseInt(id), tab);
+ System.out.println(deviceAndWinds);
+ System.out.println(deviceAndWinds);
+ List loList = new ArrayList();
+ List laList = new ArrayList();
+ Double U = 0.0;
+ Double V = 0.0;
+ List list = new ArrayList();
+ for (DeviceAndWind andWind : deviceAndWinds) {
+ Double lo = andWind.getLongitude();
+ Double la = andWind.getLatitude();
+ List tranlist = LatLngTransformation.Convert_BD09_To_GCJ02(la, lo);
+ Double transLo = (Double) tranlist.get(0);
+ Double transLa = (Double) tranlist.get(1);
+ loList.add(transLo);
+ laList.add(transLa);
+ }
+ Double loma = 0.0;
+ Double lomi = 0.0;
+ Double lama = 0.0;
+ Double lami = 0.0;
+ if (loList.size() > 0) {
+ loma = (Double) Collections.max(loList);
+ lomi = (Double) Collections.min(loList);
+ }
+ if (laList.size() > 0) {
+ lama = (Double) Collections.max(laList);
+ lami = (Double) Collections.min(laList);
+ }
+ Map laLaMap = new HashMap();
+ laLaMap.put("maxLo", loma);
+ laLaMap.put("minLo", lomi);
+ laLaMap.put("maxLa", lama);
+ laLaMap.put("minLa", lami);
+
+ Double lo1 = lomi - 250 * 0.00001141;
+ Double lo2 = loma + 250 * 0.00001141;
+ Double la2 = lami - 250 * 0.00000899;
+ Double la1 = lama + 250 * 0.00000899;
+
+ Double dx = 0.00001141 * 20;
+ Double dy = 0.00000899 * 20;
+ int nx = (int) Math.floor((lo2 - lo1) / dx);
+ int ny = (int) Math.floor((la1 - la2) / dy);
+ String header1 = "\"" + "header" + "\"" + ": " + "{" + "\"" + "parameterUnit" + "\"" + ": " + "\"" + "m/s" + "\"" + ", " + "\"" + "parameterNumber" + "\"" + ": " + 2 +
+ ", " + "\"" + "dx" + "\"" + ": " + dx + ", " + "\"" + "dy" + "\"" + ": " + dy +
+ ", " + "\"" + "parameterNumberName" + "\"" + ": " + "\"" + "eastward_wind" + "\"" + ", " + "\"" + "la1" + "\"" + ": " + la1 + ", " + "\"" + "la2" + "\"" + ": " + la2 +
+ ", " + "\"" + "parameterCategory" + "\"" + ": " + 2 + ", " + "\"" + "lo1" + "\"" + ": " + lo1 + ", " + "\"" + "lo2" + "\"" + ": " + lo2 +
+ ", " + "\"" + "nx" + "\"" + ": " + nx + ", " + "\"" + "ny" + "\"" + ": " + ny + ", " + "\"" + "refTime" + "\"" + ": " + "\"" + "2020-07-22 23:00:00" + "\"" + "}";
+
+ String header2 = "\"" + "header" + "\"" + ": " + "{" + "\"" + "parameterUnit" + "\"" + ": " + "\"" + "m/s" + "\"" + ", " + "\"" + "parameterNumber" + "\"" + ": " + 3 +
+ ", " + "\"" + "dx" + "\"" + ": " + dx + ", " + "\"" + "dy" + "\"" + ": " + dy +
+ ", " + "\"" + "parameterNumberName" + "\"" + ": " + "\"" + "eastward_wind" + "\"" + ", " + "\"" + "la1" + "\"" + ": " + la1 + ", " + "\"" + "la2" + "\"" + ": " + la2 +
+ ", " + "\"" + "parameterCategory" + "\"" + ": " + 2 + ", " + "\"" + "lo1" + "\"" + ": " + lo1 + ", " + "\"" + "lo2" + "\"" + ": " + lo2 +
+ ", " + "\"" + "nx" + "\"" + ": " + nx + ", " + "\"" + "ny" + "\"" + ": " + ny + ", " + "\"" + "refTime" + "\"" + ": " + "\"" + "2020-07-22 23:00:00" + "\"" + "}";
+
+ List<Double> uList = new ArrayList<Double>();
+ List<Double> vList = new ArrayList<Double>();
+ int x = 0;
+ int y = 0;
+ List<Map> mapList = new ArrayList<Map>();
+
+ for (int j = 0; j < deviceAndWinds.size(); j++) {
+ Map<String, Double> map = new HashMap<String, Double>();
+ Double windDir = deviceAndWinds.get(j).getWindDir();
+
+ Double windSpeed = deviceAndWinds.get(j).getWindSpeed();
+ if (windDir == null) {
+ windDir = 0.0;
+ windSpeed = 0.0;
+ }
+ Double tvoc = deviceAndWinds.get(j).getTVoc();
+
+ List tranlist = LatLngTransformation.Convert_BD09_To_GCJ02(deviceAndWinds.get(j).getLatitude(), deviceAndWinds.get(j).getLongitude());
+ Double transLo = (Double) tranlist.get(0);
+ Double transLa = (Double) tranlist.get(1);
+ if (tvoc == null) {
+ tvoc = 0.0;
+ }
+ Double dir = (270.0 - (windDir+180.0) * Math.PI / 180.0);
+
+ U = windSpeed * Math.cos(dir);
+ V = windSpeed * Math.sin(dir);
+ map.put("lo", transLo);
+ map.put("la", transLa);
+ map.put("U", U);
+ map.put("V", V);
+ mapList.add(map);
+ }
+ for (int i = 0; i < mapList.size(); i++) {
+ Double lo = (Double) mapList.get(i).get("lo");
+ Double la = (Double) mapList.get(i).get("la");
+ x = (int) Math.floor((lo - lo1) / dx);
+ y = Math.abs((int) Math.floor((la - la1) / dy));
+ //y=Math.floor(Math.abs(la-la1)/dy);
+ U = (Double) mapList.get(i).get("U");
+ V = (Double) mapList.get(i).get("V");
+ if (i == 0) {
+ for (int j = 0; j < nx * ny; j++) {
+ uList.add(0.0);
+ vList.add(0.0);
+ }
+ }
+ for (int j = 0; j < nx * ny; j++) {
+ if (i == 0) {
+ if ((y >= 2 && j == (y) * nx + x)) {
+ int k;
+ for (k = j - 2 * nx; k <= j + 2 * nx; k = k + nx) {
+ uList.set(k, U);
+ uList.set(k - 1, U);
+ uList.set(k - 2, U);
+ uList.set(k + 1, U);
+ uList.set(k + 2, U);
+ vList.set(k, V);
+ vList.set(k - 1, V);
+ vList.set(k - 2, V);
+ vList.set(k + 1, V);
+ vList.set(k + 2, V);
+ }
+ }
+ } else {
+ if (y >= 1 && j == y * nx + x) {
+ int k;
+ for (k = j - 2 * nx; k <= j + 2 * nx; ) {
+ uList.set(k - 1, U);
+ uList.set(k - 2, U);
+ uList.set(k + 1, U);
+ uList.set(k + 2, U);
+ vList.set(k - 1, V);
+ vList.set(k - 2, V);
+ vList.set(k + 1, V);
+ vList.set(k + 2, V);
+ k = k + nx;
+ }
+ uList.set(j, U);
+ vList.set(j, V);
+ }
+ }
+ }
+ }
+ String uData = "\"" + "data" + "\"" + ": " + uList;
+ String vData = "\"" + "data" + "\"" + ": " + vList;
+ String s1 = "[" + "{" + header1 + ", " + uData + "}" + ", " + "{" + header2 + ", " + vData + "}" + "]";
+ JSONArray jsonArray = JSONArray.parseArray(s1);
+ MonitorPoint monitorPoint = monitorPointMapper.byIdGetMonitorPoint(Integer.parseInt(id));
+ Double monitorLo = monitorPoint.getLongitude();
+ Double monitorLa = monitorPoint.getLatitude();
+ List transList = LatLngTransformation.Convert_BD09_To_GCJ02(monitorLa, monitorLo);
+ Double transLo = (Double) transList.get(0);
+ Double transLa = (Double) transList.get(1);
+ list.add(jsonArray);
+ list.add(transLo);
+ list.add(transLa);
+ list.add(laLaMap);
+ return list;
+ }
+
+ @Override
+ public List byMonitorIdGetDeviceAndWindSpecial(String id, String tab) {
+ MonitorPoint monitorPoint = monitorPointMapper.byIdGetMonitorPoint(Integer.parseInt(id));
+ Integer areaCode = monitorPoint.getAreaCode();
+ String townCode = monitorPoint.getTownCode() + "";
+ int monitorPointId = monitorPoint.getId();
+ Map<String, Object> parm = new HashMap<>();
+ List<DeviceAndWind> deviceAndWinds = new ArrayList<>();
+ Double loma = 0.0;
+ Double lomi = 0.0;
+ Double lama = 0.0;
+ Double lami = 0.0;
+
+ int length = 1;
+ int perdlen = 1;
+ if (areaCode == 320581) {
+ parm.put("areaCode", areaCode);
+ List<Device> deviceList = deviceMapper.getDeviceByCode(parm);
+ for (Device d : deviceList) {
+ String mac = d.getMac();
+ DeviceAndWind deviceAndWind = deviceMapper.byMacGetDeviceAndWind(mac, tab);
+ if (deviceAndWind != null) {
+ deviceAndWinds.add(deviceAndWind);
+ }
+ }
+ length = 8000;
+ perdlen = 2200;
+ } else if ((areaCode == 320583) && (townCode.equals("320583108000"))) {
+ parm.put("townCode", townCode);
+ List<Device> deviceList = deviceMapper.getDeviceByCode(parm);
+ for (Device d : deviceList) {
+ String mac = d.getMac();
+ DeviceAndWind deviceAndWind = deviceMapper.byMacGetDeviceAndWind(mac, tab);
+ if (deviceAndWind != null) {
+ deviceAndWinds.add(deviceAndWind);
+ }
+ }
+ length = 2000;
+ perdlen = 280;
+ } else if (monitorPointId == 35) {
+ DeviceAndWind deviceAndWind = deviceMapper.getDeviceAndWindByMac("898607b0101730392253", tab);
+ DeviceAndWind deviceAndWind1 = deviceMapper.getDeviceAndWindByMac("p5dnd7a0392083", tab);
+ deviceAndWinds.add(deviceAndWind);
+ deviceAndWinds.add(deviceAndWind1);
+ length = 2000;
+ perdlen = 50;
+
+ } else {
+ deviceAndWinds = deviceMapper.byMonitorIdGetDeviceAndWind(Integer.parseInt(id), tab);
+ length = 2000;
+ perdlen = 80;
+ }
+ List loList = new ArrayList();
+ List laList = new ArrayList();
+ Double U = 0.0;
+ Double V = 0.0;
+ List list = new ArrayList();
+ for (DeviceAndWind andWind : deviceAndWinds) {
+ Double lo = andWind.getLongitude();
+ Double la = andWind.getLatitude();
+ List tranlist = LatLngTransformation.Convert_BD09_To_GCJ02(la, lo);
+ Double transLo = (Double) tranlist.get(0);
+ Double transLa = (Double) tranlist.get(1);
+ loList.add(transLo);
+ laList.add(transLa);
+ }
+
+ if (loList.size() > 0) {
+ loma = (Double) Collections.max(loList);
+ lomi = (Double) Collections.min(loList);
+ }
+ if (laList.size() > 0) {
+ lama = (Double) Collections.max(laList);
+ lami = (Double) Collections.min(laList);
+ }
+ Map laLaMap = new HashMap();
+ laLaMap.put("maxLo", loma);
+ laLaMap.put("minLo", lomi);
+ laLaMap.put("maxLa", lama);
+ laLaMap.put("minLa", lami);
+
+ Double lo1 = lomi - length * 0.00001141;
+ Double lo2 = loma + length * 0.00001141;
+ Double la2 = lami - length * 0.00000899;
+ Double la1 = lama + length * 0.00000899;
+
+ Double dx = 0.00001141 * perdlen;
+ Double dy = 0.00000899 * perdlen;
+ int nx = (int) Math.floor((lo2 - lo1) / dx);
+ int ny = (int) Math.floor((la1 - la2) / dy);
+ String header1 = "\"" + "header" + "\"" + ": " + "{" + "\"" + "parameterUnit" + "\"" + ": " + "\"" + "m/s" + "\"" + ", " + "\"" + "parameterNumber" + "\"" + ": " + 2 +
+ ", " + "\"" + "dx" + "\"" + ": " + dx + ", " + "\"" + "dy" + "\"" + ": " + dy +
+ ", " + "\"" + "parameterNumberName" + "\"" + ": " + "\"" + "eastward_wind" + "\"" + ", " + "\"" + "la1" + "\"" + ": " + la1 + ", " + "\"" + "la2" + "\"" + ": " + la2 +
+ ", " + "\"" + "parameterCategory" + "\"" + ": " + 2 + ", " + "\"" + "lo1" + "\"" + ": " + lo1 + ", " + "\"" + "lo2" + "\"" + ": " + lo2 +
+ ", " + "\"" + "nx" + "\"" + ": " + nx + ", " + "\"" + "ny" + "\"" + ": " + ny + ", " + "\"" + "refTime" + "\"" + ": " + "\"" + "2020-07-22 23:00:00" + "\"" + "}";
+
+ String header2 = "\"" + "header" + "\"" + ": " + "{" + "\"" + "parameterUnit" + "\"" + ": " + "\"" + "m/s" + "\"" + ", " + "\"" + "parameterNumber" + "\"" + ": " + 3 +
+ ", " + "\"" + "dx" + "\"" + ": " + dx + ", " + "\"" + "dy" + "\"" + ": " + dy +
+ ", " + "\"" + "parameterNumberName" + "\"" + ": " + "\"" + "eastward_wind" + "\"" + ", " + "\"" + "la1" + "\"" + ": " + la1 + ", " + "\"" + "la2" + "\"" + ": " + la2 +
+ ", " + "\"" + "parameterCategory" + "\"" + ": " + 2 + ", " + "\"" + "lo1" + "\"" + ": " + lo1 + ", " + "\"" + "lo2" + "\"" + ": " + lo2 +
+ ", " + "\"" + "nx" + "\"" + ": " + nx + ", " + "\"" + "ny" + "\"" + ": " + ny + ", " + "\"" + "refTime" + "\"" + ": " + "\"" + "2020-07-22 23:00:00" + "\"" + "}";
+
+ List<Double> uList = new ArrayList<Double>();
+ List<Double> vList = new ArrayList<Double>();
+ int x = 0;
+ int y = 0;
+ List<Map> mapList = new ArrayList<Map>();
+
+ for (int j = 0; j < deviceAndWinds.size(); j++) {
+ Map<String, Double> map = new HashMap<String, Double>();
+ Double windDir = deviceAndWinds.get(j).getWindDir();
+ Double windSpeed = deviceAndWinds.get(j).getWindSpeed();
+ if (windDir == null) {
+ windDir = 0.0;
+ windSpeed = 0.0;
+ }
+ Double tvoc = deviceAndWinds.get(j).getTVoc();
+
+ List tranlist = LatLngTransformation.Convert_BD09_To_GCJ02(deviceAndWinds.get(j).getLatitude(), deviceAndWinds.get(j).getLongitude());
+ Double transLo = (Double) tranlist.get(0);
+ Double transLa = (Double) tranlist.get(1);
+ if (tvoc == null) {
+ tvoc = 0.0;
+ }
+ Double dir = (270.0 + (windDir+180.0) * Math.PI / 180.0);
+
+ U = windSpeed * Math.cos(dir);
+ V = windSpeed * Math.sin(dir);
+ map.put("lo", transLo);
+ map.put("la", transLa);
+ map.put("U", U);
+ map.put("V", V);
+ mapList.add(map);
+ }
+ for (int i = 0; i < mapList.size(); i++) {
+ Double lo = (Double) mapList.get(i).get("lo");
+ Double la = (Double) mapList.get(i).get("la");
+ x = (int) Math.floor((lo - lo1) / dx);
+ y = Math.abs((int) Math.floor((la - la1) / dy));
+ //y=Math.floor(Math.abs(la-la1)/dy);
+ U = (Double) mapList.get(i).get("U");
+ V = (Double) mapList.get(i).get("V");
+ if (i == 0) {
+ for (int j = 0; j < nx * ny; j++) {
+ uList.add(0.0);
+ vList.add(0.0);
+ }
+ }
+ for (int j = 0; j < nx * ny; j++) {
+ if (i == 0) {
+ if ((y >= 2 && j == (y) * nx + x)) {
+ int k;
+ for (k = j - 2 * nx; k <= j + 2 * nx; k = k + nx) {
+ uList.set(k, U);
+ uList.set(k - 1, U);
+ uList.set(k - 2, U);
+ uList.set(k + 1, U);
+ uList.set(k + 2, U);
+ vList.set(k, V);
+ vList.set(k - 1, V);
+ vList.set(k - 2, V);
+ vList.set(k + 1, V);
+ vList.set(k + 2, V);
+ }
+ }
+ } else {
+ if (y >= 1 && j == y * nx + x) {
+ int k;
+ for (k = j - 2 * nx; k <= j + 2 * nx; ) {
+ uList.set(k - 1, U);
+ uList.set(k - 2, U);
+ uList.set(k + 1, U);
+ uList.set(k + 2, U);
+ vList.set(k - 1, V);
+ vList.set(k - 2, V);
+ vList.set(k + 1, V);
+ vList.set(k + 2, V);
+ k = k + nx;
+ }
+ uList.set(j, U);
+ vList.set(j, V);
+ }
+ }
+ }
+ }
+ String uData = "\"" + "data" + "\"" + ": " + uList;
+ String vData = "\"" + "data" + "\"" + ": " + vList;
+ String s1 = "[" + "{" + header1 + ", " + uData + "}" + ", " + "{" + header2 + ", " + vData + "}" + "]";
+ JSONArray jsonArray = JSONArray.parseArray(s1);
+
+ Double monitorLo = monitorPoint.getLongitude();
+ Double monitorLa = monitorPoint.getLatitude();
+ List transList = LatLngTransformation.Convert_BD09_To_GCJ02(monitorLa, monitorLo);
+ Double transLo = (Double) transList.get(0);
+ Double transLa = (Double) transList.get(1);
+
+ list.add(jsonArray);
+ list.add(transLo);
+ list.add(transLa);
+ list.add(laLaMap);
+ return list;
+ }
+
+ @Override
+ public List<Device> getDeviceByCodeAndId(String code, String id) {
+ return deviceMapper.getDeviceByCodeAndId(code, id);
+ }
+
+ @Override
+ public String byMacGetOrgId(String mac) {
+ return deviceMapper.byMacGetOrgId(mac);
+ }
+
+ @Override
+ public List<Device> getDevice(String macOrName) {
+ return deviceMapper.getDevice(macOrName);
+ }
+
+ @Override
+ public List<Device> getDeviceByCode() {
+ return deviceMapper.getDeviceByCityCode();
+ }
+
+}
diff --git a/src/main/java/com/moral/service/impl/HistoryHourlyServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryHourlyServiceImpl.java
index b9d2711..a0c6711 100644
--- a/src/main/java/com/moral/service/impl/HistoryHourlyServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/HistoryHourlyServiceImpl.java
@@ -117,23 +117,23 @@
}
@Override
- public String getTVOCByMac(String mac, String time, String sensor) {
- return historyHourlyMapper.getTVOCByMac(mac, time, sensor);
+ public String getTVOCByMac(String mac,String time,String sensor) {
+ return historyHourlyMapper.getTVOCByMac(mac,time,sensor);
}
@Override
public String getPressureByMac(String mac, String time) {
- return historyHourlyMapper.getPressureByMac(mac, time);
+ return historyHourlyMapper.getPressureByMac(mac,time);
}
@Override
- public Map<String, Object> getDataByMac(String mac, String time) {
- return historyHourlyMapper.getDataByMac(mac, time);
+ public Map<String,Object> getDataByMac(String mac, String time) {
+ return historyHourlyMapper.getDataByMac(mac,time);
}
@Override
public List<Map<String, Object>> getDataByTimeSlot(String mac, String startTime, String endTime) throws Exception {
- List<Map<String, Object>> resultMap = historyHourlyMapper.getDataByTimeSlot(mac, startTime, endTime);
+ List<Map<String, Object>> resultMap = historyHourlyMapper.getDataByTimeSlot(mac,startTime,endTime);
return resultMap;
}
@@ -144,10 +144,10 @@
String time = param.get("time").toString();
String[] times = time.split("���");
- String time1 = times[0].substring(0, 8);
- for (int i = 0; i < times.length; i++) {
- if (i != 0) {
- times[i] = time1 + "" + times[i];
+ String time1=times[0].substring(0,8);
+ for (int i = 0; i <times.length ; i++) {
+ if (i!=0){
+ times[i]=time1+""+times[i];
}
}
List<List> lists = new ArrayList<List>();
@@ -165,7 +165,7 @@
list.remove(0);
/*������1-2���������������������������������1���������������������������2���������������������1-24���
- * ���24���������������������������������������������������������������*/
+ * ���24���������������������������������������������������������������*/
/*������������start----------------------------------------------------------------*/
if (list.size() == 23) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -180,10 +180,10 @@
//������������2020-11-16���������������������������17���0������������������������������������������2020-11-17---2020-11-18
List<Map> nextDayList = historyHourlyMapper.getDataByMacAndTime(mac, sensor, startTime, endTime);
- if (!ObjectUtils.isEmpty(nextDayList)) {
- perTime = perTime.replaceAll(" 00:00:00", " 24");
+ if(!ObjectUtils.isEmpty(nextDayList)){
+ perTime=perTime.replaceAll(" 00:00:00"," 24");
Map<String, Object> datas = nextDayList.get(0);
- datas.put("time", perTime);
+ datas.put("time",perTime);
list.add(datas);
}
}
@@ -191,23 +191,23 @@
List<Map> newList = new ArrayList<Map>();
for (int i = 0; i <= 24; i++) {
- Map map = new HashMap();
+ Map map=new HashMap();
if (i < 10) {
- map.put("time", "0" + i);
- map.put(sensor, "");
+ map.put("time","0"+i);
+ map.put(sensor,"");
newList.add(map);
- } else {
- map.put("time", "" + i);
- map.put(sensor, "");
+ }else {
+ map.put("time",""+i);
+ map.put(sensor,"");
newList.add(map);
}
}
if (list.size() <= 24 && list.size() >= 0) {
- for (int i = 0; i < list.size(); i++) {
+ for (int i = 0; i <list.size() ; i++) {
String timeS = list.get(i).get("time").toString().substring(11, 13);
for (Map map : newList) {
- if (timeS.equals(map.get("time"))) {
- map.replace(sensor, "", list.get(i).get(sensor));
+ if (timeS.equals(map.get("time"))){
+ map.replace(sensor,"",list.get(i).get(sensor));
}
}
}
@@ -245,13 +245,13 @@
/*for (int i = 0; i <perList.size() ; i++) {
perList.get(i).replace("time",perList.get(i).get("time"),(Integer) perList.get(i).get("time")+1);
}*/
- int j = 0;
- for (int i = 0; i < perList.size(); i++) {
- if (!((List) perList.get(i).get("values")).get(0).equals("")) {
- j = 1;
+ int j=0;
+ for (int i = 0; i <perList.size() ; i++) {
+ if (!((List)perList.get(i).get("values")).get(0).equals("")){
+ j=1;
}
}
- if (j == 0) {
+ if (j==0){
perList.clear();
}
return perList;
@@ -261,58 +261,58 @@
public List<Map> getDataAvbByMIdAndTime(String mId, String startTime, String endTime) {
List<Device> devicesByMonitorPointId = deviceService.getDevicesByMonitorPointId(Integer.valueOf(mId));
List<List> lists = new ArrayList<>();
- List<List<Map<String, String>>> listArrayList = new ArrayList<>();
+ List<List<Map<String,String>>> listArrayList = new ArrayList<>();
List<Map<String, Object>> dataAvbByMIdAndTime = historyHourlyMapper.getDataAvbByMIdAndTime(mId, startTime, endTime);
List<Map> mapList = new ArrayList<>();
for (Map<String, Object> stringStringMap : dataAvbByMIdAndTime) {
- Map<String, String> map = new HashMap();
+ Map<String,String> map = new HashMap();
String s = stringStringMap.get("O3").toString();
Object time = stringStringMap.get("time");
- map.put("O3", s);
- map.put("time", time.toString());
+ map.put("O3",s);
+ map.put("time",time.toString());
mapList.add(map);
}
- if (mapList.size() >= 8) {
- List<Map<String, String>> mapList1 = new ArrayList<>();
- for (int i = 7; i <= mapList.size() - 1; i++) {
- if (mapList.get(i).get("O3") != null) {
- List<Integer> numList = new ArrayList();
- Map<String, String> O3_8 = new HashMap<>();
- for (int j = i; j <= mapList.size(); j--) {
- if (j < 0) {
- break;
- }
- numList.add(j);
- if (numList.size() == 8) {
- List e15 = new ArrayList();
- for (int k = 0; k < numList.size(); k++) {
- String value = mapList.get(Integer.valueOf(numList.get(k))).get("O3").toString();
- e15.add(value);
- }
- double sum = 0;
- for (Object o : e15) {
- sum = sum + Double.parseDouble(o.toString());
- }
- Double avg1 = sum / e15.size();
- int timeOfHour = numList.get(0);
- if (timeOfHour == 23) {
- timeOfHour = 0;
- } else {
- timeOfHour = timeOfHour + 1;
- }
- O3_8.put("time", String.valueOf(timeOfHour));
- O3_8.put("O3-8h", String.valueOf(avg1));
- mapList1.add(O3_8);
- } else {
- continue;
- }
+ if (mapList.size()>=8){
+ List<Map<String,String>> mapList1 = new ArrayList<>();
+ for (int i = 7; i <=mapList.size()-1 ; i++) {
+ if (mapList.get(i).get("O3")!=null){
+ List<Integer> numList = new ArrayList();
+ Map<String,String> O3_8 = new HashMap<>();
+ for (int j =i; j<= mapList.size(); j--) {
+ if (j<0){
+ break;
}
- }
- listArrayList.add(mapList1);
+ numList.add(j);
+ if (numList.size()==8){
+ List e15 = new ArrayList();
+ for (int k = 0; k <numList.size() ; k++) {
+ String value = mapList.get(Integer.valueOf(numList.get(k))).get("O3").toString();
+ e15.add(value);
+ }
+ double sum =0;
+ for (Object o : e15) {
+ sum=sum+Double.parseDouble(o.toString());
+ }
+ Double avg1 = sum/e15.size();
+ int timeOfHour = numList.get(0);
+ if (timeOfHour==23){
+ timeOfHour=0;
+ }else {
+ timeOfHour=timeOfHour+1;
+ }
+ O3_8.put("time", String.valueOf(timeOfHour));
+ O3_8.put("O3-8h", String.valueOf(avg1));
+ mapList1.add(O3_8);
+ }else {
+ continue;
+ }
}
+ }
+ listArrayList.add(mapList1);
}
- Double maxO3 = 0.0;
- if (listArrayList.size() > 0) {
+ }
+ Double maxO3=0.0;
+ if(listArrayList.size()>0){
List<Map<String, String>> mapList1 = listArrayList.get(0);
List<Double> O3List = new ArrayList();
for (Map<String, String> stringStringMap : mapList1) {
@@ -320,67 +320,67 @@
}
maxO3 = Collections.max(O3List);
- for (int i = 0; i < dataAvbByMIdAndTime.size(); i++) {
- dataAvbByMIdAndTime.get(i).put("O3-8h", null);
- int time = Integer.parseInt(((Object) dataAvbByMIdAndTime.get(i).get("time")).toString().substring(11, 13));
- for (int j = 0; j < mapList1.size(); j++) {
- int time1 = Integer.parseInt(mapList1.get(j).get("time").toString());
- if (time == time1) {
+ for (int i = 0; i <dataAvbByMIdAndTime.size() ; i++) {
+ dataAvbByMIdAndTime.get(i).put("O3-8h",null);
+ int time = Integer.parseInt(((Object)dataAvbByMIdAndTime.get(i).get("time")).toString().substring(11,13)) ;
+ for (int j = 0; j <mapList1.size() ; j++) {
+ int time1 = Integer.parseInt(mapList1.get(j).get("time").toString()) ;
+ if (time==time1){
Double O3_8h = Double.parseDouble(mapList1.get(j).get("O3-8h").toString());
- dataAvbByMIdAndTime.get(i).put("O3-8h", new BigDecimal(O3_8h).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue());
+ dataAvbByMIdAndTime.get(i).put("O3-8h",new BigDecimal(O3_8h).setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue());
}
}
}
}
Map<String, Object> dailyAvgData = historyMapper.getDailyAvgData(mId, startTime);
- if (dailyAvgData != null) {
- dailyAvgData.put("maxO3-8h", new BigDecimal(maxO3).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue());
- dailyAvgData.put("time", startTime);
+ if (dailyAvgData!=null){
+ dailyAvgData.put("maxO3-8h",new BigDecimal(maxO3).setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue());
+ dailyAvgData.put("time",startTime);
}
- if (dataAvbByMIdAndTime.size() > 24) {
- for (int i = 0; i < dataAvbByMIdAndTime.size() - 1; i++) {
- Map<String, Object> map = dataAvbByMIdAndTime.get(i);
+ if (dataAvbByMIdAndTime.size()>24){
+ for (int i = 0; i <dataAvbByMIdAndTime.size()-1 ; i++) {
+ Map<String, Object> map =dataAvbByMIdAndTime.get(i);
Map<String, Object> map1 = AQICalculation2.hourlyAQI(map);
- dataAvbByMIdAndTime.get(i).put("AQI", Double.parseDouble(map1.get("AQI").toString()));
- if (Double.parseDouble(map1.get("AQI").toString()) >= 50) {
+ dataAvbByMIdAndTime.get(i).put("AQI",Double.parseDouble(map1.get("AQI").toString()));
+ if (Double.parseDouble(map1.get("AQI").toString())>=50){
String name = map1.get("maxSensor").toString();
- dataAvbByMIdAndTime.get(i).put("���������������", name);
- } else {
- dataAvbByMIdAndTime.get(i).put("���������������", "-");
+ dataAvbByMIdAndTime.get(i).put("���������������",name);
+ }else {
+ dataAvbByMIdAndTime.get(i).put("���������������","-");
}
}
- } else {
- for (int i = 0; i < dataAvbByMIdAndTime.size(); i++) {
- Map<String, Object> map = dataAvbByMIdAndTime.get(i);
+ }else {
+ for (int i = 0; i <dataAvbByMIdAndTime.size() ; i++) {
+ Map<String, Object> map =dataAvbByMIdAndTime.get(i);
Map<String, Object> map1 = AQICalculation2.hourlyAQI(map);
- dataAvbByMIdAndTime.get(i).put("AQI", Double.parseDouble(map1.get("AQI").toString()));
- if (Double.parseDouble(map1.get("AQI").toString()) >= 50) {
+ dataAvbByMIdAndTime.get(i).put("AQI",Double.parseDouble(map1.get("AQI").toString()));
+ if (Double.parseDouble(map1.get("AQI").toString())>=50){
String name = map1.get("maxSensor").toString();
- dataAvbByMIdAndTime.get(i).put("���������������", name);
- } else {
- dataAvbByMIdAndTime.get(i).put("���������������", "-");
+ dataAvbByMIdAndTime.get(i).put("���������������",name);
+ }else {
+ dataAvbByMIdAndTime.get(i).put("���������������","-");
}
}
}
Map<String, Object> dayAQI = AQICalculation2.dayAQI(dailyAvgData);
- dailyAvgData.put("���������������", dayAQI.get("maxSensor"));
- dailyAvgData.put("AQI", dayAQI.get("AQI"));
- dataAvbByMIdAndTime.add(dataAvbByMIdAndTime.size(), dailyAvgData);
+ dailyAvgData.put("���������������",dayAQI.get("maxSensor"));
+ dailyAvgData.put("AQI",dayAQI.get("AQI"));
+ dataAvbByMIdAndTime.add(dataAvbByMIdAndTime.size(),dailyAvgData);
List<Map> finalList = new ArrayList<>();
- for (int i = 0; i < dataAvbByMIdAndTime.size(); i++) {
+ for (int i = 0; i <dataAvbByMIdAndTime.size() ; i++) {
Map timeAndDate = new HashMap();
- if (i != dataAvbByMIdAndTime.size() - 1) {
- String time = dataAvbByMIdAndTime.get(i).get("time").toString().substring(11, 13);
+ if (i!=dataAvbByMIdAndTime.size()-1){
+ String time = dataAvbByMIdAndTime.get(i).get("time").toString().substring(11,13);
dataAvbByMIdAndTime.get(i).remove("time");
- timeAndDate.put("time", time);
- timeAndDate.put("data", dataAvbByMIdAndTime.get(i));
+ timeAndDate.put("time",time);
+ timeAndDate.put("data",dataAvbByMIdAndTime.get(i));
finalList.add(timeAndDate);
- } else {
- String time = dataAvbByMIdAndTime.get(i).get("time").toString().substring(0, 11);
+ }else {
+ String time = dataAvbByMIdAndTime.get(i).get("time").toString().substring(0,11);
dataAvbByMIdAndTime.get(i).remove("time");
- timeAndDate.put("time", time);
- timeAndDate.put("data", dataAvbByMIdAndTime.get(i));
+ timeAndDate.put("time",time);
+ timeAndDate.put("data",dataAvbByMIdAndTime.get(i));
finalList.add(timeAndDate);
}
}
diff --git a/src/main/java/com/moral/service/impl/HistoryServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryServiceImpl.java
index 343cdd3..3f5d6d6 100644
--- a/src/main/java/com/moral/service/impl/HistoryServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/HistoryServiceImpl.java
@@ -75,15 +75,19 @@
accountService.setOrgIdsByAccount(parameters);
LocalDateTime time = LocalDateTime.now();
// ������������ -10������
- parameters.put("start", time.minusMinutes(10));
+ LocalDateTime start = time.minusMinutes(10);
+ parameters.put("start", start);
// ������������ -5������
- parameters.put("end", time.minusMinutes(5));
+ LocalDateTime end = time.minusMinutes(5);
+ parameters.put("end", end);
List<Sensor> Sensors = sensorMapper.getSensorsByCriteria(parameters);
List<String> sensorKeys = new ArrayList<String>();
for (Sensor sensor : Sensors) {
sensorKeys.add(sensor.getSensorKey());
}
parameters.put("sensorKeys", sensorKeys);
+ DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyyMM");
+ parameters.put("timeUnits", "minutely_" + df.format(start));
List<Map<String, Object>> list = historyMapper.getAreaAllDataByAccount(parameters);
resultMap.putAll(list.get(0));
return resultMap;
@@ -105,6 +109,7 @@
List<String> sensorKeys = new ArrayList<String>();
sensorKeys.add(macKey.toString());
parameters.put("sensorKeys", sensorKeys);
+ parameters.put("timeUnits", "hourly");
List<Map<String, Object>> list = historyMapper.getAreaAllDataByAccount(parameters);
for (Map<String, Object> map : list) {
@@ -115,11 +120,16 @@
@Override
public String queryValueByMacAndTime(String mac, Date time) {
- return historyMapper.selectValueByMacAndTime(mac, time);
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+ String timeUnits = sdf.format(time);
+ return historyMapper.selectValueByMacAndTime(mac, time, timeUnits);
}
- public String getValueByMacAndTime(String mac, String time,String time1) {
- return historyMapper.getValueByMacAndTime(mac, time,time1);
+
+ public String getValueByMacAndTime(String mac, String time, String time1) {
+ String timeUnits = time1.substring(0, 10).replace("-", "");
+ return historyMapper.getValueByMacAndTime(mac, time, time1, timeUnits);
}
+
@Override
public List<Map<String, Object>> getRegionRankingData(Map<String, Object> parameters) {
ValidateUtil.notNull(parameters.get("regionCode"), "param.is.null");
@@ -152,10 +162,12 @@
parameters.put("nextLevel", nextLevel);
LocalDate localDate = LocalDate.now();
+ DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyyMM");
Object timeType = parameters.get("timeType");
+
String table = "history";
- String column = "value";
- if ("month".equals(timeType)) {
+ String column = "json";
+ /*if ("month".equals(timeType)) {
if (1 != localDate.getDayOfMonth()) {
table = "history_daily";
column = "json";
@@ -167,7 +179,19 @@
parameters.put("start", LocalDateTime.now().truncatedTo(ChronoUnit.HOURS));
} else {
parameters.put("start", LocalDateTime.now().minusMinutes(5));
+ }*/
+
+ if ("month".equals(timeType)) {
+ table = "history_daily";
+ parameters.put("start", localDate.with(TemporalAdjusters.firstDayOfMonth()));
+ } else if ("day".equals(timeType)) {
+ table = "history_hourly";
+ parameters.put("start", localDate);
+ } else if ("hour".equals(timeType)) {
+ table = "history_minutely_" + df.format(localDate);
+ parameters.put("start", LocalDateTime.now().truncatedTo(ChronoUnit.HOURS));
}
+
parameters.put("table", table);
parameters.put("column", column);
@@ -178,7 +202,6 @@
}
accountService.setOrgIdsByAccount(parameters);
-
List<Map<String, Object>> result = historyMapper.getRegionRankingData(parameters);
for (Map<String, Object> map : result) {
if (ObjectUtils.isEmpty(map.get("avg"))) {
@@ -252,6 +275,10 @@
ValidateUtil.notNull(parameters.get("deviceId"), "param.is.null");
List<Map<String, Object>> sensors = sensorMapper.getSensorsByDeviceVersionId(parameters);
parameters.put("size", 1);
+ Date date = new Date();
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+ String timeUnits = sdf.format(date);
+ parameters.put("timeUnits", timeUnits);
List<Map<String, Object>> values = historyMapper.getValueByMacAndSize(parameters);
JSONObject map = null;
if (!ObjectUtils.isEmpty(values)) {
@@ -291,6 +318,10 @@
ValidateUtil.notNull(parameters.get("mac"), "param.is.null");
ValidateUtil.notNull(parameters.get("size"), "param.is.null");
parameters.put("size", Integer.valueOf(parameters.remove("size").toString()));
+ Date date = new Date();
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+ String timeUnits = sdf.format(date);
+ parameters.put("timeUnits", timeUnits);
List<Map<String, Object>> values = historyMapper.getValueByMacAndSize(parameters);
Map<String, Object> sensorUnits = getSensorUnitByDeviceMac(parameters);
for (Map<String, Object> value : values) {
@@ -333,6 +364,9 @@
parameters.put("end", end);
parameters.put("sensorKeys", Arrays.asList(((String) sensorKey).split(",")));
accountService.setOrgIdsByAccount(parameters);
+ DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyyMMdd");
+ //���history������������������
+ parameters.put("timeUnits", df.format(start));
Map<String, Object> result = historyMapper.getActualDataByRegion(parameters);
if (ObjectUtils.isEmpty(result)) {
result = new HashMap<String, Object>();
@@ -372,7 +406,9 @@
int startHour = endHour - 1;
startTime = localDate + " " + startHour + ":00:00";
}
- Map<String, Object> map = historyMapper.getAVGValueByMacAndTimeslot(mac, startTime, endTime);
+ //���������history������������������
+ String timeUnits = startTime.substring(0, 10).replace("-", "");
+ Map<String, Object> map = historyMapper.getAVGValueByMacAndTimeslot(mac, startTime, endTime, timeUnits);
Map<String, Object> returnMap = new HashMap<>();
if (map.isEmpty()) {
returnMap.put("AQI", "N/V");
@@ -386,7 +422,7 @@
returnMap = AQICalculation.hourlyAQI(AQIMap);
}
long aqi = Math.round(Double.valueOf(returnMap.get("AQI").toString()));
- returnMap.put("AQI",aqi);
+ returnMap.put("AQI", aqi);
return returnMap;
}
@@ -436,10 +472,31 @@
Date end = rightNow.getTime();
String endTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(end);
String before5Time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(beforeD); // ������������������
-
String sensor = parameters.get("sensor").toString();
- List<Map<String, Object>> result = historyMapper.getAVGSensorRankByMonitorPointIdList(sensor, monitorPointIdList, before5Time, endTime);
- return result;
+ String timeUnits1 = before5Time.substring(0, 10).replace("-", "");
+ List<Map<String, Object>> result1 = historyMapper.getAVGSensorRankByMonitorPointIdList(sensor, monitorPointIdList, before5Time, endTime, timeUnits1);
+ String timeUnits2 = before5Time.substring(0, 10).replace("-", "");
+ List<Map<String, Object>> result2 = historyMapper.getAVGSensorRankByMonitorPointIdList(sensor, monitorPointIdList, before5Time, endTime, timeUnits2);
+ if (result1.isEmpty()) {
+ return result2;
+ } else if (result2.isEmpty()) {
+ return result1;
+ } else {
+ for (Map<String, Object> map1 : result1) {
+ Object name1 = map1.get("name");
+ double value1 = Double.parseDouble(map1.get("sensor").toString());
+ double avg = 0.0;
+ for (Map<String, Object> map2 : result2) {
+ Object name2 = map2.get("name");
+ double value2 = Double.parseDouble(map2.get("sensor").toString());
+ if (name1.equals(name2)) {
+ avg = (value1 + value2) / 2;
+ map1.put("sensor", avg);
+ }
+ }
+ }
+ }
+ return result1;
}
@Override
@@ -459,7 +516,10 @@
int startHour = endHour - 1;
startTime = localDate + " " + startHour + ":00:00";
}
- Map<String, Object> map = historyMapper.getMonitorPointAVGValueByMonitorPointIdAndTimeslot(monitor_point_id, startTime, endTime);
+ //���������history������������������
+ String timeUnits = startTime.substring(0, 10).replace("-", "");
+
+ Map<String, Object> map = historyMapper.getMonitorPointAVGValueByMonitorPointIdAndTimeslot(monitor_point_id, startTime, endTime, timeUnits);
Map<String, Object> returnMap = new HashMap<>();
if (map.isEmpty()) {
returnMap.put("AQI", "N/V");
@@ -494,20 +554,20 @@
}
parameters.put("sensorKeys", sensorKeys);
List<Map<String, Object>> listMap = null;
- if (today.compareTo(startTimeDay) == 0) {
+ /*if (today.compareTo(startTimeDay) == 0) {
listMap = historyMapper.listGetSensorData(parameters);
- }
+ }*/
+ //if (CollectionUtils.isEmpty(listMap)) {
+ listMap = historyMapper.getCarSensorData(parameters);
if (CollectionUtils.isEmpty(listMap)) {
- listMap = historyMapper.getCarSensorData(parameters);
- if (CollectionUtils.isEmpty(listMap)) {
- if (year <= 2019) {
- listMap = historyMinutelyMapper.getSensorData(parameters);
- } else {
- parameters.put("yearAndMonth", yearAndMonth);
- listMap = historyMinutelyMapper.getSensorData2020(parameters);
- }
+ if (year <= 2019) {
+ listMap = historyMinutelyMapper.getSensorData(parameters);
+ } else {
+ parameters.put("yearAndMonth", yearAndMonth);
+ listMap = historyMinutelyMapper.getSensorData2020(parameters);
}
}
+ //}
List<List<Map<String, Object>>> listMaps = new ArrayList<>();
List<Map<String, Object>> listMapAvg = new ArrayList<>();
List<Map<String, Object>> listMapMin = new ArrayList<>();
@@ -651,8 +711,8 @@
}
@Override
- public String getJsonData(String mac, String time,String table) {
- return historyMapper.getJsonData(mac,time,table);
+ public String getJsonData(String mac, String time, String table) {
+ return historyMapper.getJsonData(mac, time, table);
}
}
diff --git a/src/main/java/com/moral/service/impl/SensorServiceImpl.java b/src/main/java/com/moral/service/impl/SensorServiceImpl.java
index 85e0fd8..f56f048 100644
--- a/src/main/java/com/moral/service/impl/SensorServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/SensorServiceImpl.java
@@ -118,6 +118,11 @@
}
@Override
+ public List<Map<String, Object>> getSensorByDId(String id) {
+ List<Map<String, Object>> list = sensorMapper.getSensorByDId(id);
+ return list;
+ }
+ @Override
public List<Map<String, Object>> getSensorByMonitorPointId(String monitor_point_id) {
List<Map<String, Object>> list = sensorMapper.getSensorByMonitorPointId(monitor_point_id);
return list;
diff --git a/src/main/resources/mapper/HistoryHourlyMapper.xml b/src/main/resources/mapper/HistoryHourlyMapper.xml
index b1896e9..3d5ca95 100644
--- a/src/main/resources/mapper/HistoryHourlyMapper.xml
+++ b/src/main/resources/mapper/HistoryHourlyMapper.xml
@@ -100,7 +100,12 @@
</select>
<select id="getDataByMacAndTime" resultType="java.util.Map">
- SELECT DATE_FORMAT(`time`,'%Y-%m-%d %H:%i:%s') as `time`,json->'$.${sensor}[0]' as ${sensor} FROM `history_hourly` where `mac`=#{mac} and `time`>=#{startTime} and `time`<#{endTime}
+ SELECT DATE_FORMAT(`time`,'%Y-%m-%d %H:%i:%s') as `time`,
+ json->'$.${sensor}[0]' as ${sensor}
+ FROM `history_hourly`
+ where `mac`=#{mac}
+ and `time`>=#{startTime}
+ and `time`<#{endTime}
</select>
<select id="getDataByMacAndTime1" resultType="java.util.Map">
SELECT DATE_FORMAT(`time`,'%Y-%m-%d %H:%i:%s') as `time`,json->'$.${sensor}[0]' as ${sensor} FROM `history_hourly` where `mac`=#{mac} and `time`>=#{startTime} and `time`<![CDATA[<]]>#{endTime}
diff --git a/src/main/resources/mapper/HistoryMapper.xml b/src/main/resources/mapper/HistoryMapper.xml
index 47b11ab..0fd5fcf 100644
--- a/src/main/resources/mapper/HistoryMapper.xml
+++ b/src/main/resources/mapper/HistoryMapper.xml
@@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.moral.mapper.HistoryMapper">
<select id="selectValueByMacAndTime" resultType="java.lang.String">
- select `value` from history
+ select `value` from history_${timeUnits}
where time = #{time} and mac = #{mac}
limit 0,1
</select>
@@ -13,10 +13,10 @@
d.`name`,
</if>
<foreach collection="sensorKeys" separator="," item="sensorKey">
- AVG(h.`value` ->'$.${sensorKey}[0]') AS '${sensorKey}'
+ AVG(h.`value` ->'$.${sensorKey}') AS '${sensorKey}'
</foreach>
FROM
- history h,
+ history_${timeUnits} h,
device d,
monitor_point mp
WHERE
@@ -132,7 +132,7 @@
value,
time
FROM
- history
+ history_${timeUnits}
WHERE
mac = #{mac}
ORDER BY
@@ -143,10 +143,10 @@
<select id="getActualDataByRegion" resultType="java.util.Map">
SELECT
<foreach collection="sensorKeys" separator="," item="sensorKey">
- MAX( `value` ->> '$.${sensorKey}' ) * 1 AS '${sensorKey}'
+ MAX( `value` -> '$.${sensorKey}' ) * 1 AS '${sensorKey}'
</foreach>
FROM
- history h ,
+ history_${timeUnits} h ,
device d,
monitor_point mp
<where>
@@ -165,9 +165,10 @@
<select id="getAVGValueByMacAndTimeslot" resultType="java.util.Map">
SELECT AVG(JSON_EXTRACT(value,'$.e1[0]')) e1,AVG(JSON_EXTRACT(value,'$.e2[0]')) e2,AVG(JSON_EXTRACT(value,'$.e10[0]')) e10,AVG(JSON_EXTRACT(value,'$.e11[0]')) e11,AVG(JSON_EXTRACT(value,'$.e16[0]')) e16,AVG(JSON_EXTRACT(value,'$.e15[0]')) e15
- FROM history
+ FROM history_${timeUnits}
WHERE mac = #{mac}
- AND time BETWEEN #{starttime} AND #{endtime}
+ AND time >= #{starttime}
+ AND time <![CDATA[<]]> #{endtime}
</select>
<!-- ���������sensor������������ -->
@@ -196,7 +197,7 @@
<select id="getAVGSensorRankByMonitorPointIdList" resultType="java.util.Map">
SELECT mp.name, AVG(JSON_EXTRACT(h.value,'$.${sensor}[0]')) sensor
- FROM device d, history h, monitor_point mp
+ FROM device d, history_${timeUnits} h, monitor_point mp
WHERE d.mac=h.mac
And mp.id=d.monitor_point_id
AND d.monitor_point_id IN
@@ -210,10 +211,11 @@
<select id="getMonitorPointAVGValueByMonitorPointIdAndTimeslot" resultType="java.util.Map">
SELECT AVG(JSON_EXTRACT(value,'$.e1[0]')) e1,AVG(JSON_EXTRACT(value,'$.e2[0]')) e2,AVG(JSON_EXTRACT(value,'$.e10[0]')) e10,AVG(JSON_EXTRACT(value,'$.e11[0]')) e11,AVG(JSON_EXTRACT(value,'$.e16[0]')) e16,AVG(JSON_EXTRACT(value,'$.e15[0]')) e15
- FROM device d,history h
+ FROM device d,history_${timeUnits} h
WHERE d.monitor_point_id = #{monitor_point_id}
AND d.mac = h.mac
- AND h.time BETWEEN #{starttime} AND #{endtime}
+ AND h.time >= #{starttime}
+ AND h.time <![CDATA[<]]> #{endtime}
</select>
<!-- ���������sensor������ -->
@@ -292,14 +294,15 @@
select `json` from ${table}
where time = #{time} and mac = #{mac}
</select>
+
<select id="getValueByMacAndTime" resultType="java.lang.String">
- select `value` from history
+ select `value` from history_${timeUnits}
where mac = #{mac} and time >= #{time1} and time <=#{time}
limit 0,1
</select>
<select id="getDailyAvgData" resultType="java.util.Map">
SELECT AVG(hd.json->"$.e1[0]") as `PM2_5`,AVG(hd.json->"$.e2[0]") as 'PM10',AVG(hd.json->"$.e10[0]") as 'CO',
- AVG(hd.json->"$.e11[0]") as 'SO2',AVG(hd.json->"$.e16[0]") as 'NO2',AVG(hd.json->"$.e15[0]") as 'O3-day'
+ AVG(hd.json->"$.e11[0]") as 'SO2',AVG(hd.json->"$.e16[0]") as 'NO2',AVG(hd.json->"$.e15[0]") as 'O3_day'
FROM `history_daily` hd,monitor_point mt,device d where mt.id=d.monitor_point_id
and d.mac=hd.mac and mt.id=#{mId} and time=#{time}
</select>
diff --git a/src/main/resources/mapper/SensorMapper.xml b/src/main/resources/mapper/SensorMapper.xml
index be66b3f..74a078e 100644
--- a/src/main/resources/mapper/SensorMapper.xml
+++ b/src/main/resources/mapper/SensorMapper.xml
@@ -137,6 +137,15 @@
AND d.id = #{id}
</select>
+ <select id="getSensorByDId" resultType="java.util.Map">
+ SELECT DISTINCT d.monitor_point_id,s.*
+ FROM device d,device_version dv,device_version_sensor dvs,sensor s
+ WHERE d.device_version_id = dvs.device_version_id
+ AND dvs.sensor_id = s.id
+ AND d.id = #{id}
+ </select>
+
+
<select id="getSensorByMonitorPointId" resultType="java.util.Map">
SELECT DISTINCT s.sensor_key sensorKey,s.unit,s.name,s.description,s.id
FROM device d,device_version dv,device_version_sensor dvs,sensor s
--
Gitblit v1.8.0