From 5c873b71783bc023989809956dabdbd5fa82dd41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E9=98=BF=E9=BE=99?= Date: Mon, 15 Aug 2022 11:19:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A7=E5=B1=8F=E5=B1=95=E7=A4=BA=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E5=9C=B0=E5=9B=BE=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iot/controller/BigScreenController.java | 40 + .../com/ruoyi/iot/domain/AreaCityGeo.java | 76 ++ .../java/com/ruoyi/iot/domain/Device.java | 33 + .../ruoyi/iot/mapper/AreaCityGeoMapper.java | 20 + .../com/ruoyi/iot/mapper/DeviceMapper.java | 15 + .../model/bigscreen/dto/TotalDeviceArea.java | 29 + .../model/bigscreen/vo/BigScreenMapReqVo.java | 19 + .../bigscreen/vo/BigScreenMapRespVo.java | 23 + .../ruoyi/iot/service/IBigScreenService.java | 17 + .../service/impl/BigScreenServiceImpl.java | 39 + .../iot/service/impl/DeviceServiceImpl.java | 32 +- .../mapper/iot/AreaCityGeoMapper.xml | 21 + .../resources/mapper/iot/DeviceMapper.xml | 26 + vue/src/views/bigScreen/indexs/center-map.vue | 713 +++++++++--------- 14 files changed, 753 insertions(+), 350 deletions(-) create mode 100644 springboot/wumei-iot/src/main/java/com/ruoyi/iot/controller/BigScreenController.java create mode 100644 springboot/wumei-iot/src/main/java/com/ruoyi/iot/domain/AreaCityGeo.java create mode 100644 springboot/wumei-iot/src/main/java/com/ruoyi/iot/mapper/AreaCityGeoMapper.java create mode 100644 springboot/wumei-iot/src/main/java/com/ruoyi/iot/model/bigscreen/dto/TotalDeviceArea.java create mode 100644 springboot/wumei-iot/src/main/java/com/ruoyi/iot/model/bigscreen/vo/BigScreenMapReqVo.java create mode 100644 springboot/wumei-iot/src/main/java/com/ruoyi/iot/model/bigscreen/vo/BigScreenMapRespVo.java create mode 100644 springboot/wumei-iot/src/main/java/com/ruoyi/iot/service/IBigScreenService.java create mode 100644 springboot/wumei-iot/src/main/java/com/ruoyi/iot/service/impl/BigScreenServiceImpl.java create mode 100644 springboot/wumei-iot/src/main/resources/mapper/iot/AreaCityGeoMapper.xml diff --git a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/controller/BigScreenController.java b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/controller/BigScreenController.java new file mode 100644 index 00000000..3355ef9e --- /dev/null +++ b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/controller/BigScreenController.java @@ -0,0 +1,40 @@ +package com.ruoyi.iot.controller; + +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.iot.model.bigscreen.vo.BigScreenMapReqVo; +import com.ruoyi.iot.service.IBigScreenService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + + +/** + * 设备告警Controller + * + * @author long + * @date 2022-01-13 + */ +@RestController +@RequestMapping("/iot/big/screen") +public class BigScreenController extends BaseController +{ + private final IBigScreenService bigScreenService; + + @Autowired + public BigScreenController(IBigScreenService bigScreenService) { + this.bigScreenService = bigScreenService; + } + + /** + * 大屏首页 地图 + */ + @PostMapping("/map") + public AjaxResult index(@RequestBody BigScreenMapReqVo reqVo) + { + return AjaxResult.success(bigScreenService.map(reqVo)); + } + +} diff --git a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/domain/AreaCityGeo.java b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/domain/AreaCityGeo.java new file mode 100644 index 00000000..6b24403c --- /dev/null +++ b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/domain/AreaCityGeo.java @@ -0,0 +1,76 @@ +package com.ruoyi.iot.domain; + +/** + * @author sunalong + */ +public class AreaCityGeo { + private String id; + + private String pid; + + private String deep; + + private String name; + + private String extPath; + + private Object geo; + + private Object polygon; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getPid() { + return pid; + } + + public void setPid(String pid) { + this.pid = pid; + } + + public String getDeep() { + return deep; + } + + public void setDeep(String deep) { + this.deep = deep; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getExtPath() { + return extPath; + } + + public void setExtPath(String extPath) { + this.extPath = extPath; + } + + public Object getGeo() { + return geo; + } + + public void setGeo(Object geo) { + this.geo = geo; + } + + public Object getPolygon() { + return polygon; + } + + public void setPolygon(Object polygon) { + this.polygon = polygon; + } +} \ No newline at end of file diff --git a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/domain/Device.java b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/domain/Device.java index c88d0a86..9fc018c9 100644 --- a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/domain/Device.java +++ b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/domain/Device.java @@ -69,6 +69,15 @@ public class Device extends BaseEntity /** 设备影子 */ private Integer isShadow; + /** 设备省 */ + private String province; + + /** 设备市 */ + private String city; + + /** 设备区 */ + private String county; + /** 设备所在地址 */ @Excel(name = "设备所在地址") private String networkAddress; @@ -334,6 +343,30 @@ public class Device extends BaseEntity return activeTime; } + public String getProvince() { + return province; + } + + public void setProvince(String province) { + this.province = province; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + public String getCounty() { + return county; + } + + public void setCounty(String county) { + this.county = county; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) diff --git a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/mapper/AreaCityGeoMapper.java b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/mapper/AreaCityGeoMapper.java new file mode 100644 index 00000000..44e88ec4 --- /dev/null +++ b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/mapper/AreaCityGeoMapper.java @@ -0,0 +1,20 @@ +package com.ruoyi.iot.mapper; + +import com.ruoyi.iot.domain.AreaCityGeo; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * @author sunalong + */ +@Repository +public interface AreaCityGeoMapper { + /*** + * 根据坐标查询 + * @param point 坐标 + * @return 省市县 + */ + List selectAreaCityGeoByPoint(@Param("point")String point); +} \ No newline at end of file diff --git a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/mapper/DeviceMapper.java b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/mapper/DeviceMapper.java index 48f6632a..1699f5fd 100644 --- a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/mapper/DeviceMapper.java +++ b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/mapper/DeviceMapper.java @@ -4,6 +4,8 @@ import com.ruoyi.iot.domain.Device; import com.ruoyi.iot.model.*; import com.ruoyi.iot.model.ThingsModels.ThingsModelValuesInput; import com.ruoyi.iot.model.ThingsModels.ThingsModelValuesOutput; +import com.ruoyi.iot.model.bigscreen.dto.TotalDeviceArea; +import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; import java.util.List; @@ -197,4 +199,17 @@ public interface DeviceMapper */ public int resetDeviceStatus(String deviceNum); + /*** + * 分组所有设备省 + * @return 结果 + */ + List groupDeviceProvince(); + + /*** + * 分组所有设备city + * @param province 省 + * @return 结果 + */ + List groupDeviceCityByProvince(@Param("province") String province); + } diff --git a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/model/bigscreen/dto/TotalDeviceArea.java b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/model/bigscreen/dto/TotalDeviceArea.java new file mode 100644 index 00000000..2a6583ab --- /dev/null +++ b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/model/bigscreen/dto/TotalDeviceArea.java @@ -0,0 +1,29 @@ +package com.ruoyi.iot.model.bigscreen.dto; + + +/** + * @author sunalong + */ + +public class TotalDeviceArea { + private String name; + + private int value; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getValue() { + return value; + } + + public void setValue(int value) { + this.value = value; + } + +} diff --git a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/model/bigscreen/vo/BigScreenMapReqVo.java b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/model/bigscreen/vo/BigScreenMapReqVo.java new file mode 100644 index 00000000..b290eaf2 --- /dev/null +++ b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/model/bigscreen/vo/BigScreenMapReqVo.java @@ -0,0 +1,19 @@ +package com.ruoyi.iot.model.bigscreen.vo; + + +/** + * @author sunalong + */ +public class BigScreenMapReqVo { + + private String province; + + public String getProvince() { + return province; + } + + public void setProvince(String province) { + this.province = province; + } + +} diff --git a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/model/bigscreen/vo/BigScreenMapRespVo.java b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/model/bigscreen/vo/BigScreenMapRespVo.java new file mode 100644 index 00000000..079fdb61 --- /dev/null +++ b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/model/bigscreen/vo/BigScreenMapRespVo.java @@ -0,0 +1,23 @@ +package com.ruoyi.iot.model.bigscreen.vo; + + + +import com.ruoyi.iot.model.bigscreen.dto.TotalDeviceArea; + +import java.util.List; + +/** + * @author sunalong + */ +public class BigScreenMapRespVo { + + private List list; + + public List getList() { + return list; + } + + public void setList(List list) { + this.list = list; + } +} diff --git a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/service/IBigScreenService.java b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/service/IBigScreenService.java new file mode 100644 index 00000000..a3bdd22d --- /dev/null +++ b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/service/IBigScreenService.java @@ -0,0 +1,17 @@ +package com.ruoyi.iot.service; + + +import com.ruoyi.iot.model.bigscreen.vo.BigScreenMapReqVo; +import com.ruoyi.iot.model.bigscreen.vo.BigScreenMapRespVo; + +/** + * @author sunalong + */ +public interface IBigScreenService { + /*** + * 大屏 + * @param reqVo 请求 + * @return BigScreenRespVo + */ + BigScreenMapRespVo map(BigScreenMapReqVo reqVo); +} diff --git a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/service/impl/BigScreenServiceImpl.java b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/service/impl/BigScreenServiceImpl.java new file mode 100644 index 00000000..3e95308f --- /dev/null +++ b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/service/impl/BigScreenServiceImpl.java @@ -0,0 +1,39 @@ +package com.ruoyi.iot.service.impl; + + +import com.ruoyi.iot.mapper.DeviceMapper; +import com.ruoyi.iot.model.bigscreen.dto.TotalDeviceArea; +import com.ruoyi.iot.model.bigscreen.vo.BigScreenMapReqVo; +import com.ruoyi.iot.model.bigscreen.vo.BigScreenMapRespVo; +import com.ruoyi.iot.service.IBigScreenService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @author sunalong + */ +@Service +public class BigScreenServiceImpl implements IBigScreenService { + private final DeviceMapper deviceMapper; + + public BigScreenServiceImpl(DeviceMapper deviceMapper) { + this.deviceMapper = deviceMapper; + } + + @Override + public BigScreenMapRespVo map(BigScreenMapReqVo reqVo) { + String province = reqVo.getProvince(); + + List list; + if (StringUtils.isBlank(province)) { + list = deviceMapper.groupDeviceProvince(); + }else { + list = deviceMapper.groupDeviceCityByProvince(province); + } + BigScreenMapRespVo vo = new BigScreenMapRespVo(); + vo.setList(list); + return vo; + } +} diff --git a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/service/impl/DeviceServiceImpl.java b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/service/impl/DeviceServiceImpl.java index c815cd5e..c9eebd68 100644 --- a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/service/impl/DeviceServiceImpl.java +++ b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/service/impl/DeviceServiceImpl.java @@ -10,10 +10,7 @@ import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.http.HttpUtils; import com.ruoyi.common.utils.ip.IpUtils; -import com.ruoyi.iot.domain.Device; -import com.ruoyi.iot.domain.DeviceLog; -import com.ruoyi.iot.domain.DeviceUser; -import com.ruoyi.iot.domain.Product; +import com.ruoyi.iot.domain.*; import com.ruoyi.iot.mqtt.EmqxService; import com.ruoyi.iot.tdengine.service.ILogService; import com.ruoyi.iot.mapper.DeviceLogMapper; @@ -85,6 +82,9 @@ public class DeviceServiceImpl implements IDeviceService { @Lazy private EmqxService emqxService; + @Autowired + private com.ruoyi.iot.mapper.AreaCityGeoMapper areaCityGeoMapper; + /** * 查询设备 * @@ -765,6 +765,7 @@ public class DeviceServiceImpl implements IDeviceService { device.setProductId(null); device.setProductName(null); } + setArea(device); deviceMapper.updateDevice(device); // 设备取消禁用 if (oldDevice.getStatus() == 2 && device.getStatus() == 4) { @@ -891,10 +892,33 @@ public class DeviceServiceImpl implements IDeviceService { JSONObject location = baiduObject.getJSONObject("result").getJSONObject("location"); device.setLongitude(location.getBigDecimal("lng")); device.setLatitude(location.getBigDecimal("lat")); + + setArea(device); + System.out.println(device.getSerialNumber() + "- 设置经度:" + location.getBigDecimal("lng") + ",设置纬度:" + location.getBigDecimal("lat")); } } + private void setArea(Device device){ + try { + List areaList = areaCityGeoMapper.selectAreaCityGeoByPoint("POINT(" + device.getLongitude() + " " + device.getLatitude() + ")"); + if (areaList != null && areaList.size() == 3) { + String geoProvince = areaList.stream().filter(en -> en.getDeep().equals("0")).findFirst().get().getName(); + String geoCity = areaList.stream().filter(en -> en.getDeep().equals("1")).findFirst().get().getName(); + String geoCounty = areaList.stream().filter(en -> en.getDeep().equals("2")).findFirst().get().getName(); + device.setProvince(geoProvince); + if (geoProvince.equals(geoCity)) { + device.setCity(geoCounty); + } else { + device.setCity(geoCity); + device.setCounty(geoCounty); + } + } + }catch (Exception ex){ + + } + } + /** * 上报设备信息 * diff --git a/springboot/wumei-iot/src/main/resources/mapper/iot/AreaCityGeoMapper.xml b/springboot/wumei-iot/src/main/resources/mapper/iot/AreaCityGeoMapper.xml new file mode 100644 index 00000000..0a29c836 --- /dev/null +++ b/springboot/wumei-iot/src/main/resources/mapper/iot/AreaCityGeoMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + id, pid, deep, `name` + + + + \ No newline at end of file diff --git a/springboot/wumei-iot/src/main/resources/mapper/iot/DeviceMapper.xml b/springboot/wumei-iot/src/main/resources/mapper/iot/DeviceMapper.xml index 60e29dc7..6d2be355 100644 --- a/springboot/wumei-iot/src/main/resources/mapper/iot/DeviceMapper.xml +++ b/springboot/wumei-iot/src/main/resources/mapper/iot/DeviceMapper.xml @@ -322,6 +322,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" remark, img_url, summary, + province, + city, + county, #{deviceName}, @@ -351,6 +354,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{remark}, #{imgUrl}, #{summary}, + #{province}, + #{city}, + #{county}, @@ -384,6 +390,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" remark = #{remark}, img_url = #{imgUrl}, summary = #{summary}, + province = #{province}, + city = #{city}, + county = #{county}, where device_id = #{deviceId} @@ -397,6 +406,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" longitude = #{longitude}, latitude = #{latitude}, active_time = #{activeTime}, + province = #{province}, + city = #{city}, + county = #{county}, where serial_number = #{serialNumber} @@ -463,4 +475,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and group_id in(select group_id from iot_group where user_id = #{userId}) + + + + + + + + + + \ No newline at end of file diff --git a/vue/src/views/bigScreen/indexs/center-map.vue b/vue/src/views/bigScreen/indexs/center-map.vue index 589340ee..3d19f8fd 100644 --- a/vue/src/views/bigScreen/indexs/center-map.vue +++ b/vue/src/views/bigScreen/indexs/center-map.vue @@ -6,398 +6,419 @@
- -
- 中国 -
+ +
+ 中国 +
- +
\ No newline at end of file +