From b284d078f196af80a105dc3bcb610d8ed37d9251 Mon Sep 17 00:00:00 2001
From: ZhuDongming <773644075@qq.com>
Date: Fri, 08 Nov 2019 11:49:29 +0800
Subject: [PATCH] update

---
 src/main/java/com/moral/controller/RoleController.java             |   28 ++++++
 src/main/java/com/moral/service/RoleService.java                   |    6 +
 src/main/java/com/moral/service/impl/RoleServiceImpl.java          |   43 ++++++++++
 src/main/webapp/view/pollutionsource.jsp                           |    8 +-
 src/main/java/com/moral/mapper/HistoryHourlyMapper.java            |    4 +
 src/main/java/com/moral/service/HistoryHourlyService.java          |    4 +
 src/main/resources/mapper/HistoryHourlyMapper.xml                  |   39 +++++++++
 src/main/java/com/moral/controller/ScreenController.java           |    6 +
 src/main/java/com/moral/service/impl/HistoryHourlyServiceImpl.java |   50 ++++++++++++
 9 files changed, 180 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/moral/controller/RoleController.java b/src/main/java/com/moral/controller/RoleController.java
index 1d5c462..a69b41b 100644
--- a/src/main/java/com/moral/controller/RoleController.java
+++ b/src/main/java/com/moral/controller/RoleController.java
@@ -1,8 +1,11 @@
 package com.moral.controller;
 
+import java.util.List;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.CrossOrigin;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -11,7 +14,6 @@
 import com.moral.common.bean.PageBean;
 import com.moral.common.bean.ResultBean;
 import com.moral.entity.Role;
-import com.moral.service.ChannelService;
 import com.moral.service.RoleService;
 
 @RestController
@@ -21,6 +23,11 @@
 
     @Autowired
     RoleService roleService;
+
+    @GetMapping("page-list")
+    public PageBean pageList(PageBean pageBean) {
+        return roleService.queryByPageBean(pageBean);
+    }
 
     @GetMapping("count-by-example")
     public ResultBean<Integer> countByExample(PageBean pageBean){
@@ -46,4 +53,23 @@
         return resultBean;
     }
 
+    @GetMapping("get-role-ids")
+    public List<Integer> getRoleIds(int accountId){
+        return roleService.getRoleIds(accountId);
+    }
+
+    @PostMapping("allot-role/{id}")
+    public ResultBean allotRole(@PathVariable("id") Integer accountId, @RequestBody Integer [] roleIds){
+        ResultBean resultBean = new ResultBean();
+        if(accountId==null){
+            resultBean.setCode(ResultBean.NO_PERMISSION);
+            resultBean.setMessage("������ID���������null");
+            return resultBean;
+        }else{
+            roleService.allotRole(accountId,roleIds);
+            resultBean.setCode(ResultBean.SUCCESS);
+        }
+        return resultBean;
+    }
+
 }
diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java
index 2fa0196..9a4183f 100644
--- a/src/main/java/com/moral/controller/ScreenController.java
+++ b/src/main/java/com/moral/controller/ScreenController.java
@@ -21,6 +21,7 @@
 import java.util.stream.Collectors;
 
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections.MapUtils;
 import org.apache.commons.net.ftp.FTPClient;
 import org.apache.log4j.Logger;
 import org.dom4j.Document;
@@ -1210,7 +1211,10 @@
         LocalDateTime timeLocalDateTime = LocalDateTime.parse(time, dateTimeFormatter);
         int month = timeLocalDateTime.getMonth().getValue();
         Point dirPoint = historyHourlyService.getDirPoint(parameters);
-        Map<String, Object> getPollutionSourceData = historyHourlyService.getPollutionSourceData(parameters);
+        Map<String, Object> getPollutionSourceData = historyHourlyService.getPollutionSourceDataByHour(parameters);
+        if (MapUtils.isEmpty(getPollutionSourceData)) {
+            getPollutionSourceData = historyHourlyService.getPollutionSourceDataAll(parameters);
+        }
         String mac = parameters.get("mac").toString();
         Device device = deviceService.getDeviceByMac(mac, false);
         JSONObject params = new JSONObject();
diff --git a/src/main/java/com/moral/mapper/HistoryHourlyMapper.java b/src/main/java/com/moral/mapper/HistoryHourlyMapper.java
index 9f684d6..2bdc6c9 100644
--- a/src/main/java/com/moral/mapper/HistoryHourlyMapper.java
+++ b/src/main/java/com/moral/mapper/HistoryHourlyMapper.java
@@ -5,4 +5,8 @@
 public interface HistoryHourlyMapper {
 
     Map<String, Object> getPollutionSourceData(Map<String, Object> parameters);
+
+    Map<String, Object> getPollutionSourceDataByHour(Map<String, Object> parameters);
+
+    Map<String, Object> getPollutionSourceDataAll(Map<String, Object> parameters);
 }
diff --git a/src/main/java/com/moral/service/HistoryHourlyService.java b/src/main/java/com/moral/service/HistoryHourlyService.java
index 71286d2..e6ca84a 100644
--- a/src/main/java/com/moral/service/HistoryHourlyService.java
+++ b/src/main/java/com/moral/service/HistoryHourlyService.java
@@ -7,5 +7,9 @@
 public interface HistoryHourlyService {
     Map<String, Object> getPollutionSourceData(Map<String, Object> parameters) throws Exception;
 
+    Map<String, Object> getPollutionSourceDataByHour(Map<String, Object> parameters) throws Exception;
+
+    Map<String, Object> getPollutionSourceDataAll(Map<String, Object> parameters) throws Exception;
+
     Point getDirPoint(Map<String, Object> parameters) throws Exception;
 }
diff --git a/src/main/java/com/moral/service/RoleService.java b/src/main/java/com/moral/service/RoleService.java
index 57e6acb..04c3180 100644
--- a/src/main/java/com/moral/service/RoleService.java
+++ b/src/main/java/com/moral/service/RoleService.java
@@ -15,5 +15,11 @@
 
     PageBean getRoleList(PageBean pageBean);
 
+    PageBean queryByPageBean(PageBean pageBean);
+
     void deleteByIds(Integer... ids);
+
+    List<Integer> getRoleIds(int accountId);
+
+    void allotRole(Integer accountId, Integer[] roleIds);
 }
diff --git a/src/main/java/com/moral/service/impl/HistoryHourlyServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryHourlyServiceImpl.java
index 2fabdce..01c42b7 100644
--- a/src/main/java/com/moral/service/impl/HistoryHourlyServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/HistoryHourlyServiceImpl.java
@@ -16,6 +16,7 @@
 import com.moral.service.DeviceService;
 import com.moral.service.HistoryHourlyService;
 import com.moral.service.SensorService;
+
 import javax.annotation.Resource;
 
 @Service
@@ -55,8 +56,55 @@
     }
 
     @Override
+    public Map<String, Object> getPollutionSourceDataByHour(Map<String, Object> parameters) throws Exception {
+        List<Sensor> sensors = sensorMapper.getSensorsByMac(parameters);
+        List<String> sensorKeys = new ArrayList<>();
+        for (Sensor sensor : sensors) {
+            sensorKeys.add(sensor.getSensorKey());
+        }
+        parameters.put("sensorKeys", sensorKeys);
+        Map<String, Object> pollutionSourceData = historyHourlyMapper.getPollutionSourceDataByHour(parameters);
+        if (MapUtils.isNotEmpty(pollutionSourceData)) {
+            Map<String, String> sensorsMap = sensorService.getSensorsMap(parameters);
+            String selectSensorKey = parameters.get("sensorKey").toString();
+            for (Map.Entry<String, String> s : sensorsMap.entrySet()) {
+                if (selectSensorKey.equals(s.getKey())) {
+                    selectSensorKey = s.getValue();
+                }
+            }
+            pollutionSourceData.put("selectSensorKey", selectSensorKey);
+        }
+        return pollutionSourceData;
+    }
+
+    @Override
+    public Map<String, Object> getPollutionSourceDataAll(Map<String, Object> parameters) throws Exception {
+        List<Sensor> sensors = sensorMapper.getSensorsByMac(parameters);
+        List<String> sensorKeys = new ArrayList<>();
+        for (Sensor sensor : sensors) {
+            sensorKeys.add(sensor.getSensorKey());
+        }
+        parameters.put("sensorKeys", sensorKeys);
+        Map<String, Object> pollutionSourceData = historyHourlyMapper.getPollutionSourceDataAll(parameters);
+        if (MapUtils.isNotEmpty(pollutionSourceData)) {
+            Map<String, String> sensorsMap = sensorService.getSensorsMap(parameters);
+            String selectSensorKey = parameters.get("sensorKey").toString();
+            for (Map.Entry<String, String> s : sensorsMap.entrySet()) {
+                if (selectSensorKey.equals(s.getKey())) {
+                    selectSensorKey = s.getValue();
+                }
+            }
+            pollutionSourceData.put("selectSensorKey", selectSensorKey);
+        }
+        return pollutionSourceData;
+    }
+
+    @Override
     public Point getDirPoint(Map<String, Object> parameters) throws Exception {
-        Map<String, Object> pollutionSourceData = getPollutionSourceData(parameters);
+        Map<String, Object> pollutionSourceData = getPollutionSourceDataByHour(parameters);
+        if (MapUtils.isEmpty(pollutionSourceData)) {
+            pollutionSourceData = getPollutionSourceDataAll(parameters);
+        }
         String mac = parameters.get("mac").toString();
         Device device = deviceService.getDeviceByMac(mac, false);
         Point pointEnd = new Point();
diff --git a/src/main/java/com/moral/service/impl/RoleServiceImpl.java b/src/main/java/com/moral/service/impl/RoleServiceImpl.java
index 27ed222..11f35e8 100644
--- a/src/main/java/com/moral/service/impl/RoleServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/RoleServiceImpl.java
@@ -1,5 +1,6 @@
 package com.moral.service.impl;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
@@ -13,7 +14,10 @@
 import com.moral.common.bean.Constants;
 import com.moral.common.bean.PageBean;
 import com.moral.common.util.ExampleUtil;
+import com.moral.common.util.MyBatisBaseMapUtil;
+import com.moral.entity.AccountRole;
 import com.moral.entity.Role;
+import com.moral.mapper.AccountRoleMapper;
 import com.moral.mapper.RoleMapper;
 import com.moral.service.RoleService;
 import com.moral.util.TkMybatisUtils;
@@ -28,6 +32,9 @@
     @Resource
     RoleMapper roleMapper;
 
+    @Resource
+    AccountRoleMapper accountRoleMapper;
+
     @Override
     @Transactional
     public void addOrModify(Role role) {
@@ -35,7 +42,7 @@
             role.setUpdateTime(new Date());
             role.setUpdateUser(role.getUpdateUser());
             if (role.getId() != null) {
-                roleMapper.updateByPrimaryKey(role);
+                roleMapper.updateByPrimaryKeySelective(role);
             } else {
                 Role roleQuery = new Role();
                 roleQuery.setRoleCode(role.getRoleCode());
@@ -87,4 +94,38 @@
         roleMapper.updateByExampleSelective(role, example);
     }
 
+    @Override
+    public List<Integer> getRoleIds(int accountId) {
+        AccountRole accountRole = new AccountRole();
+        accountRole.setAccountId(accountId);
+        List<AccountRole> accountRoleList = accountRoleMapper.select(accountRole);
+        List<Integer> roleIds = new ArrayList<>();
+        for(AccountRole accRole:accountRoleList ){
+            roleIds.add(accRole.getRoleId());
+        }
+        return roleIds;
+    }
+
+    @Override
+    public void allotRole(Integer accountId, Integer[] roleIds) {
+        Example example = new Example(AccountRole.class);
+        example.or().andEqualTo("accountId",accountId);
+        accountRoleMapper.deleteByExample(example);
+        if(roleIds!=null && roleIds.length >0){
+            List<AccountRole> accountRoleList = new ArrayList<>();
+            for(int roleId:roleIds){
+                AccountRole accountRole = new AccountRole();
+                accountRole.setAccountId(accountId);
+                accountRole.setRoleId(roleId);
+                accountRoleList.add(accountRole);
+            }
+            accountRoleMapper.insertList(accountRoleList);
+        }
+    }
+
+    @Override
+    public PageBean<Role> queryByPageBean(PageBean pageBean){
+        return MyBatisBaseMapUtil.queryPage(roleMapper,pageBean,ENTITY_CLASS);
+    }
+
 }
diff --git a/src/main/resources/mapper/HistoryHourlyMapper.xml b/src/main/resources/mapper/HistoryHourlyMapper.xml
index 599bac1..8f5404c 100644
--- a/src/main/resources/mapper/HistoryHourlyMapper.xml
+++ b/src/main/resources/mapper/HistoryHourlyMapper.xml
@@ -17,4 +17,43 @@
             </if>
         </where>
     </select>
+
+    <select id="getPollutionSourceDataByHour" resultType="java.util.Map">
+        SELECT
+        DATE_FORMAT(time,'%Y-%m-%d %H') time,
+        <foreach collection="sensorKeys" separator="," item="sensorKey">
+            AVG(h.value ->'$.${sensorKey}') AS '${sensorKey}'
+        </foreach>
+        FROM
+        history h
+        <where>
+            <if test="mac!=null">
+                and h.mac=#{mac}
+            </if>
+        </where>
+        GROUP BY
+        DATE_FORMAT(time,'%Y-%m-%d %H')
+        <if test="time!=null">
+        having time=DATE_FORMAT(DATE_SUB(#{time}, INTERVAL 1 HOUR),'%Y-%m-%d %H')
+        </if>
+    </select>
+
+    <select id="getPollutionSourceDataAll" resultType="java.util.Map">
+    SELECT
+    DATE_FORMAT(time,'%Y-%m-%d %H') time,
+    <foreach collection="sensorKeys" separator="," item="sensorKey">
+        AVG(h.value ->'$.${sensorKey}') AS '${sensorKey}'
+    </foreach>
+    FROM
+    history h
+    <where>
+        <if test="mac!=null">
+            and h.mac=#{mac}
+        </if>
+    </where>
+    GROUP BY
+    DATE_FORMAT(time,'%Y-%m-%d %H')
+    order by time desc
+    limit 0,1
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/webapp/view/pollutionsource.jsp b/src/main/webapp/view/pollutionsource.jsp
index c40246d..b9a9f7b 100644
--- a/src/main/webapp/view/pollutionsource.jsp
+++ b/src/main/webapp/view/pollutionsource.jsp
@@ -162,10 +162,10 @@
     var marker = new BMap.Marker(point, {icon: icon, offset: new BMap.Size(0, -20)});
     map.addOverlay(marker);
     map.centerAndZoom(point, 16);
-    if (!$.isEmptyObject(dirPoint) && !$.isEmptyObject(getPollutionSourceData) && typeof (getPollutionSourceData["e6"]) != "undefined" && typeof (getPollutionSourceData["e7"]) != "undefined" && typeof (getPollutionSourceData["e18"]) != "undefined" && typeof (getPollutionSourceData["e23"]) != "undefined" && getPollutionSourceData["e18"] > 0.03) {
+    if (!$.isEmptyObject(dirPoint) && !$.isEmptyObject(getPollutionSourceData) && typeof (getPollutionSourceData["e6"]) != "undefined" && typeof (getPollutionSourceData["e7"]) != "undefined" && typeof (getPollutionSourceData["e18"]) != "undefined" && typeof (getPollutionSourceData["e23"]) != "undefined") {
         var windSpeed = parseFloat(getPollutionSourceData["e18"]);
         var windDir = parseFloat(getPollutionSourceData["e23"]);
-        var distance = windSpeed * 3600;
+        var distance = windSpeed * 3600>108? windSpeed * 3600:108;
         var winDirStart = 255 - windDir;
         var winDirEnd = 285 - windDir;
         var marker1 = new BMap.Marker(EOffsetBearing(dirPoint, distance * 0.15, winDirStart), {
@@ -192,7 +192,7 @@
 
     $("#show").one('click', function () {
         setTimeout(function () {
-            if ($.isEmptyObject(dirPoint) || $.isEmptyObject(getPollutionSourceData) || typeof (getPollutionSourceData["e6"]) == "undefined" || typeof (getPollutionSourceData["e7"]) == "undefined" || typeof (getPollutionSourceData["e18"]) == "undefined" || typeof (getPollutionSourceData["e23"]) == "undefined" || getPollutionSourceData["e18"] <= 0.03) {
+            if ($.isEmptyObject(dirPoint) || $.isEmptyObject(getPollutionSourceData) || typeof (getPollutionSourceData["e6"]) == "undefined" || typeof (getPollutionSourceData["e7"]) == "undefined" || typeof (getPollutionSourceData["e18"]) == "undefined" || typeof (getPollutionSourceData["e23"]) == "undefined") {
                 showNoData();
             } else {
                 var humidity = parseFloat(getPollutionSourceData["e6"]);
@@ -213,7 +213,7 @@
                 });
                 map.addOverlay(lab);
 
-                var distance = windSpeed * 3600;
+                var distance = windSpeed * 3600>108? windSpeed * 3600:108;
                 var winDirStartLeft = 240 - windDir;
                 var winDirEndLeft = 250 - windDir;
                 var winDirStartMiddle = 250 - windDir;

--
Gitblit v1.8.0