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