From 49875151be4b427935fcb3d60696e99ba9d2e1ad Mon Sep 17 00:00:00 2001
From: kaiyu <404897439@qq.com>
Date: Thu, 01 Jul 2021 16:58:03 +0800
Subject: [PATCH] screen-manage                      添加根据组织id和地区码获取设备接口

---
 screen-api/src/main/java/com/moral/api/exception/GlobalExceptionHandler.java       |   10 +
 screen-api/src/main/java/com/moral/api/pojo/form/device/MonitorPointQueryForm.java |   30 +++
 screen-api/src/main/java/com/moral/api/pojo/vo/device/DeviceVO.java                |   37 +++
 screen-api/src/main/java/com/moral/api/interceptor/WebInterceptor.java             |   17 -
 screen-api/src/main/java/com/moral/api/controller/MonitorPointController.java      |   53 +++++
 screen-api/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java   |   67 ++++++
 screen-api/src/main/java/com/moral/api/entity/MonitorPoint.java                    |  108 ++++++++++
 screen-api/src/main/java/com/moral/api/mapper/MonitorPointMapper.java              |   16 +
 screen-api/src/main/java/com/moral/api/pojo/vo/alarm/AlarmLevelVO.java             |    2 
 screen-api/src/main/java/com/moral/api/pojo/vo/monitorPoint/MonitorPointVO.java    |   41 ++++
 screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java         |   16 +
 screen-api/src/main/java/com/moral/api/service/MonitorPointService.java            |   28 ++
 screen-api/src/main/java/com/moral/api/service/DeviceService.java                  |    4 
 screen-api/src/main/java/com/moral/api/service/OrganizationService.java            |   10 +
 screen-api/src/main/java/com/moral/api/controller/AlarmController.java             |    2 
 screen-api/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java   |   38 +++
 screen-api/src/main/java/com/moral/api/pojo/vo/monitorPoint/MonitorPointsVO.java   |   52 +++++
 screen-api/src/main/resources/mapper/MonitorPointMapper.xml                        |   22 ++
 screen-api/src/main/java/com/moral/api/kafka/consumer/SecondDataConsumer.java      |    4 
 19 files changed, 540 insertions(+), 17 deletions(-)

diff --git a/screen-api/src/main/java/com/moral/api/controller/AlarmController.java b/screen-api/src/main/java/com/moral/api/controller/AlarmController.java
index 889c653..a745ce8 100644
--- a/screen-api/src/main/java/com/moral/api/controller/AlarmController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/AlarmController.java
@@ -33,7 +33,7 @@
     OrganizationUnitAlarmService organizationUnitAlarmService;
 
     @GetMapping("queryAlarmByMac")
-    public ResultMessage queryByMac(String mac){
+    public ResultMessage queryAlarmByMac(String mac){
         List<Sensor> sensors = organizationUnitAlarmService.queryAlarmLevel(mac);
         AlarmLevelVO vo = AlarmLevelVO.convert(sensors);
         return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(), ResponseCodeEnum.SUCCESS.getMsg(), vo);
diff --git a/screen-api/src/main/java/com/moral/api/controller/MonitorPointController.java b/screen-api/src/main/java/com/moral/api/controller/MonitorPointController.java
new file mode 100644
index 0000000..8eb74e9
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/controller/MonitorPointController.java
@@ -0,0 +1,53 @@
+package com.moral.api.controller;
+
+import com.moral.api.entity.MonitorPoint;
+import com.moral.api.pojo.form.device.MonitorPointQueryForm;
+import com.moral.api.pojo.vo.monitorPoint.MonitorPointsVO;
+import com.moral.api.service.MonitorPointService;
+import com.moral.api.service.OrganizationService;
+import com.moral.constant.ResponseCodeEnum;
+import com.moral.constant.ResultMessage;
+import io.swagger.annotations.Api;
+import lombok.extern.slf4j.Slf4j;
+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.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @ClassName DeviceController
+ * @Description TODO
+ * @Author ���������
+ * @Date 2021/7/1 9:24
+ * @Version TODO
+ **/
+@Slf4j
+@Api(tags = {"������������"})
+@RestController
+@CrossOrigin(origins = "*", maxAge = 3600)
+@RequestMapping("/monitorPoint")
+public class MonitorPointController {
+
+    @Autowired
+    MonitorPointService monitorPointService;
+
+    @GetMapping("queryMonitorPoints")
+    public ResultMessage queryMonitorPointsAndDevices(MonitorPointQueryForm form){
+        //������������������������
+        if (!form.valid())
+            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
+                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+        //������������������
+        List<MonitorPoint> monitorPoints = monitorPointService.query(form);
+
+        //������������������
+        MonitorPointsVO vo = MonitorPointsVO.convert(monitorPoints);
+
+        return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(), ResponseCodeEnum.SUCCESS.getMsg(), vo);
+    }
+
+
+}
diff --git a/screen-api/src/main/java/com/moral/api/entity/MonitorPoint.java b/screen-api/src/main/java/com/moral/api/entity/MonitorPoint.java
new file mode 100644
index 0000000..efbf0c8
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/entity/MonitorPoint.java
@@ -0,0 +1,108 @@
+package com.moral.api.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author moral
+ * @since 2021-07-01
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class MonitorPoint extends Model<MonitorPoint> {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ������
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * ���������
+     */
+    private String name;
+
+    /**
+     * ������
+     */
+    private Double longitude;
+
+    /**
+     * ������
+     */
+    private Double latitude;
+
+    /**
+     * ���������
+     */
+    private Integer provinceCode;
+
+    /**
+     * ���������������
+     */
+    private Integer cityCode;
+
+    /**
+     * ���/���/���������
+     */
+    private Integer areaCode;
+
+    /**
+     * ������������
+     */
+    private String address;
+
+    /**
+     * ������id
+     */
+    private Integer organizationId;
+
+    /**
+     * ������������
+     */
+    private Date createTime;
+
+    /**
+     * ������������
+     */
+    private Date updateTime;
+
+    /**
+     * ���������������
+     */
+    private String isDelete;
+
+    /**
+     * ������
+     */
+    @TableField(value = "`desc`")
+    private String desc;
+
+    /*
+    * ������������
+    * */
+    @TableField(exist = false)
+    private List<Device> devices;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}
diff --git a/screen-api/src/main/java/com/moral/api/exception/GlobalExceptionHandler.java b/screen-api/src/main/java/com/moral/api/exception/GlobalExceptionHandler.java
index dd4bddf..4cd4759 100644
--- a/screen-api/src/main/java/com/moral/api/exception/GlobalExceptionHandler.java
+++ b/screen-api/src/main/java/com/moral/api/exception/GlobalExceptionHandler.java
@@ -3,6 +3,7 @@
 import com.moral.constant.Constants;
 import com.moral.constant.ResponseCodeEnum;
 import com.moral.constant.ResultMessage;
+import com.moral.exception.TokenException;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.ControllerAdvice;
@@ -35,4 +36,13 @@
         return ResultMessage.fail(ResponseCodeEnum.FAIL.getCode(), "������������������������");
     }
 
+    /**
+     * ������TokenException������
+     */
+    @ExceptionHandler({TokenException.class})
+    @ResponseBody
+    @ResponseStatus(HttpStatus.OK)
+    public ResultMessage handleTokenException(TokenException ex) {
+        return ResultMessage.fail(ex.getCode(),ex.getMsg());
+    }
 }
diff --git a/screen-api/src/main/java/com/moral/api/interceptor/WebInterceptor.java b/screen-api/src/main/java/com/moral/api/interceptor/WebInterceptor.java
index 90feb05..b0d6ed1 100644
--- a/screen-api/src/main/java/com/moral/api/interceptor/WebInterceptor.java
+++ b/screen-api/src/main/java/com/moral/api/interceptor/WebInterceptor.java
@@ -14,21 +14,12 @@
 
     @Override
     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
-        if (!(handler instanceof HandlerMethod)) {
+        /*if (!(handler instanceof HandlerMethod)) {
             return true;
-        }
+        }*/
         String token = request.getHeader("token");
-        if (token == null) {
-            return false;
-        }
-        try {
-            //������token
-            TokenUtils.checkToken(token);
-            //������token
-            TokenUtils.extendTokenTime(token);
-        } catch (Exception e) {
-            return false;
-        }
+        TokenUtils.checkToken(token);
+        //TokenUtils.extendTokenTime(token);
         return true;
     }
 }
diff --git a/screen-api/src/main/java/com/moral/api/kafka/consumer/SecondDataConsumer.java b/screen-api/src/main/java/com/moral/api/kafka/consumer/SecondDataConsumer.java
index 54fab17..b6d2030 100644
--- a/screen-api/src/main/java/com/moral/api/kafka/consumer/SecondDataConsumer.java
+++ b/screen-api/src/main/java/com/moral/api/kafka/consumer/SecondDataConsumer.java
@@ -26,13 +26,13 @@
     public void listen(ConsumerRecord<String, String> record , Consumer consumer) throws Exception {
         String messageStr = record.value();
         Map<String,String> message = (Map<String,String>)JSON.parse(messageStr);
-        System.out.println(message);
+        //System.out.println(message);
         CopyOnWriteArraySet<SingleDeviceServer> sockets = SingleDeviceServer.sockets;
         for (SingleDeviceServer socket : sockets) {
             //���������������������������socket
             socket.sendMessage(message.toString());
         }
-        System.out.println(message);
+       // System.out.println(message);
     }
 
     @Override
diff --git a/screen-api/src/main/java/com/moral/api/mapper/MonitorPointMapper.java b/screen-api/src/main/java/com/moral/api/mapper/MonitorPointMapper.java
new file mode 100644
index 0000000..9aa6d24
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/mapper/MonitorPointMapper.java
@@ -0,0 +1,16 @@
+package com.moral.api.mapper;
+
+import com.moral.api.entity.MonitorPoint;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper ������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-07-01
+ */
+public interface MonitorPointMapper extends BaseMapper<MonitorPoint> {
+
+}
diff --git a/screen-api/src/main/java/com/moral/api/pojo/form/device/MonitorPointQueryForm.java b/screen-api/src/main/java/com/moral/api/pojo/form/device/MonitorPointQueryForm.java
new file mode 100644
index 0000000..2ae2790
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/pojo/form/device/MonitorPointQueryForm.java
@@ -0,0 +1,30 @@
+package com.moral.api.pojo.form.device;
+
+import lombok.Data;
+import org.springframework.util.ObjectUtils;
+
+/**
+ * @ClassName QueryMonitorPointsAndDevicesForm
+ * @Description TODO
+ * @Author ���������
+ * @Date 2021/7/1 11:55
+ * @Version TODO
+ **/
+@Data
+public class MonitorPointQueryForm {
+    /*
+    * ������id
+    * */
+    Integer organizationId;
+
+    /*
+    * ������code
+    * */
+    Integer regionCode;
+
+    public boolean valid(){
+        if(ObjectUtils.isEmpty(organizationId)||ObjectUtils.isEmpty(regionCode))
+            return false;
+        return true;
+    }
+}
diff --git a/screen-api/src/main/java/com/moral/api/pojo/vo/alarm/AlarmLevelVO.java b/screen-api/src/main/java/com/moral/api/pojo/vo/alarm/AlarmLevelVO.java
index b1e2481..821f0a8 100644
--- a/screen-api/src/main/java/com/moral/api/pojo/vo/alarm/AlarmLevelVO.java
+++ b/screen-api/src/main/java/com/moral/api/pojo/vo/alarm/AlarmLevelVO.java
@@ -1,5 +1,6 @@
 package com.moral.api.pojo.vo.alarm;
 
+import com.fasterxml.jackson.annotation.JsonInclude;
 import com.moral.api.entity.Sensor;
 import lombok.Data;
 
@@ -15,6 +16,7 @@
  * @Version TODO
  **/
 @Data
+@JsonInclude(JsonInclude.Include.NON_EMPTY)
 public class AlarmLevelVO {
     private Map<String,String> alarmLevel;
 
diff --git a/screen-api/src/main/java/com/moral/api/pojo/vo/device/DeviceVO.java b/screen-api/src/main/java/com/moral/api/pojo/vo/device/DeviceVO.java
new file mode 100644
index 0000000..4032f97
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/pojo/vo/device/DeviceVO.java
@@ -0,0 +1,37 @@
+package com.moral.api.pojo.vo.device;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.Data;
+
+/**
+ * @ClassName DeviceVO
+ * @Description TODO
+ * @Author ���������
+ * @Date 2021/7/1 14:18
+ * @Version TODO
+ **/
+@Data
+@JsonInclude(JsonInclude.Include.NON_EMPTY)
+public class DeviceVO {
+
+    private Integer id;
+
+    private Integer monitorPointId;
+
+    private Integer organizationId;
+
+    private Integer versionId;
+
+    private String name;
+
+    private String mac;
+
+    private String address;
+
+    private Double longitude;
+
+    private Double latitude;
+
+    private String state;
+
+}
diff --git a/screen-api/src/main/java/com/moral/api/pojo/vo/monitorPoint/MonitorPointVO.java b/screen-api/src/main/java/com/moral/api/pojo/vo/monitorPoint/MonitorPointVO.java
new file mode 100644
index 0000000..26e9236
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/pojo/vo/monitorPoint/MonitorPointVO.java
@@ -0,0 +1,41 @@
+package com.moral.api.pojo.vo.monitorPoint;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.moral.api.pojo.vo.device.DeviceVO;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @ClassName MonitorPointVO
+ * @Description TODO
+ * @Author ���������
+ * @Date 2021/7/1 14:28
+ * @Version TODO
+ **/
+@Data
+@JsonInclude(JsonInclude.Include.NON_EMPTY)
+public class MonitorPointVO {
+
+    private Integer id;
+
+    private Integer organizationId;
+
+    private String name;
+
+    private Double longitude;
+
+    private Double latitude;
+
+    private String state;
+
+    private Integer provinceCode;
+
+    private Integer cityCode;
+
+    private Integer areaCode;
+
+    private String address;
+
+    private List<DeviceVO> devices;
+}
diff --git a/screen-api/src/main/java/com/moral/api/pojo/vo/monitorPoint/MonitorPointsVO.java b/screen-api/src/main/java/com/moral/api/pojo/vo/monitorPoint/MonitorPointsVO.java
new file mode 100644
index 0000000..9f0d036
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/pojo/vo/monitorPoint/MonitorPointsVO.java
@@ -0,0 +1,52 @@
+package com.moral.api.pojo.vo.monitorPoint;
+
+import com.moral.api.entity.Device;
+import com.moral.api.entity.MonitorPoint;
+import com.moral.api.pojo.vo.device.DeviceVO;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @ClassName MonitorPointsVO
+ * @Description TODO
+ * @Author ���������
+ * @Date 2021/7/1 14:33
+ * @Version TODO
+ **/
+@Data
+public class MonitorPointsVO {
+
+    private List<MonitorPointVO> monitorPoints;
+
+    public static MonitorPointsVO convert(List<MonitorPoint> monitorPoints){
+        MonitorPointsVO monitorPointsVO = new MonitorPointsVO();
+        List<MonitorPointVO> monitorPointVOS = new ArrayList<>();
+        for (MonitorPoint monitorPoint : monitorPoints) {
+            MonitorPointVO monitorPointVO = new MonitorPointVO();
+            List<Device> devices = monitorPoint.getDevices();
+            List<DeviceVO> deviceVOS = new ArrayList<>();
+            for (Device device : devices) {
+                DeviceVO deviceVO = deviceConvert(device);
+                deviceVOS.add(deviceVO);
+            }
+            monitorPointVO.setName(monitorPoint.getName());
+            monitorPointVO.setLatitude(monitorPoint.getLatitude());
+            monitorPointVO.setLongitude(monitorPoint.getLongitude());
+            monitorPointVO.setDevices(deviceVOS);
+            monitorPointVOS.add(monitorPointVO);
+        }
+        monitorPointsVO.setMonitorPoints(monitorPointVOS);
+        return monitorPointsVO;
+    }
+
+    private static DeviceVO deviceConvert(Device device){
+        DeviceVO vo = new DeviceVO();
+        vo.setName(device.getName());
+        vo.setMac(device.getMac());
+        vo.setLatitude(device.getLatitude());
+        vo.setLongitude(device.getLongitude());
+        return vo;
+    }
+}
diff --git a/screen-api/src/main/java/com/moral/api/service/DeviceService.java b/screen-api/src/main/java/com/moral/api/service/DeviceService.java
index 2a674b4..53d8109 100644
--- a/screen-api/src/main/java/com/moral/api/service/DeviceService.java
+++ b/screen-api/src/main/java/com/moral/api/service/DeviceService.java
@@ -3,6 +3,8 @@
 import com.moral.api.entity.Device;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * <p>
  * ��������� ���������
@@ -12,5 +14,5 @@
  * @since 2021-06-28
  */
 public interface DeviceService extends IService<Device> {
-
+    List<Device> getDevicesByMonitorPointId(Integer monitorPointId);
 }
diff --git a/screen-api/src/main/java/com/moral/api/service/MonitorPointService.java b/screen-api/src/main/java/com/moral/api/service/MonitorPointService.java
new file mode 100644
index 0000000..0a2b9ef
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/service/MonitorPointService.java
@@ -0,0 +1,28 @@
+package com.moral.api.service;
+
+import com.moral.api.entity.MonitorPoint;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.moral.api.pojo.form.device.MonitorPointQueryForm;
+
+import java.util.List;
+
+/**
+ * <p>
+ * ���������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-07-01
+ */
+public interface MonitorPointService extends IService<MonitorPoint> {
+
+    /**
+    * @Description: ������������id���������������������������������
+            * @Param: [form]
+            * @return: java.util.List<com.moral.api.entity.MonitorPoint>
+            * @Author: ���������
+            * @Date: 2021/7/1
+            */
+    List<MonitorPoint> query(MonitorPointQueryForm form);
+}
+
diff --git a/screen-api/src/main/java/com/moral/api/service/OrganizationService.java b/screen-api/src/main/java/com/moral/api/service/OrganizationService.java
index ce292e1..03555b0 100644
--- a/screen-api/src/main/java/com/moral/api/service/OrganizationService.java
+++ b/screen-api/src/main/java/com/moral/api/service/OrganizationService.java
@@ -3,6 +3,8 @@
 import com.moral.api.entity.Organization;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * <p>
  * ��������� ���������
@@ -13,4 +15,12 @@
  */
 public interface OrganizationService extends IService<Organization> {
 
+    /**
+    * @Description: ������������������������������
+            * @Param: [id]
+            * @return: java.util.List<com.moral.api.entity.Organization>
+            * @Author: ���������
+            * @Date: 2021/7/1
+            */
+    List<Organization> getChildrenOrganizationsById(Integer id);
 }
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
index db46dc3..e103c8c 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
@@ -1,10 +1,15 @@
 package com.moral.api.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.moral.api.entity.Device;
 import com.moral.api.mapper.DeviceMapper;
 import com.moral.api.service.DeviceService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.moral.constant.Constants;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 /**
  * <p>
@@ -17,4 +22,15 @@
 @Service
 public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> implements DeviceService {
 
+    @Autowired
+    DeviceMapper deviceMapper;
+
+    @Override
+    public List<Device> getDevicesByMonitorPointId(Integer monitorPointId) {
+        QueryWrapper<Device> wrapper = new QueryWrapper();
+        wrapper.eq("is_delete", Constants.NOT_DELETE);
+        wrapper.eq("monitor_point_id",monitorPointId);
+        List<Device> devices = deviceMapper.selectList(wrapper);
+        return devices;
+    }
 }
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java
new file mode 100644
index 0000000..1b54467
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java
@@ -0,0 +1,67 @@
+package com.moral.api.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.moral.api.entity.Device;
+import com.moral.api.entity.MonitorPoint;
+import com.moral.api.entity.Organization;
+import com.moral.api.mapper.MonitorPointMapper;
+import com.moral.api.pojo.form.device.MonitorPointQueryForm;
+import com.moral.api.service.DeviceService;
+import com.moral.api.service.MonitorPointService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.moral.api.service.OrganizationService;
+import com.moral.constant.Constants;
+import com.moral.util.RegionCodeUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ *  ���������������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-07-01
+ */
+@Service
+public class MonitorPointServiceImpl extends ServiceImpl<MonitorPointMapper, MonitorPoint> implements MonitorPointService {
+
+    @Autowired
+    MonitorPointMapper monitorPointMapper;
+    @Autowired
+    OrganizationService organizationService;
+    @Autowired
+    DeviceService deviceService;
+
+    @Override
+    public List<MonitorPoint> query(MonitorPointQueryForm form) {
+        //������
+        Integer organizationId = form.getOrganizationId();
+        Integer regionCode = form.getRegionCode();
+        String region = RegionCodeUtils.regionCodeConvertToName(regionCode);
+        //���������������
+        List<Organization> childrenOrganization = organizationService.getChildrenOrganizationsById(organizationId);
+        List<Integer> organizationIds = new ArrayList<>();
+        for (Organization organization : childrenOrganization) {
+            organizationIds.add(organization.getId());
+        }
+        organizationIds.add(organizationId);
+        //������������
+        QueryWrapper<MonitorPoint> queryMonitorPointsWrapper = new QueryWrapper<>();
+        queryMonitorPointsWrapper.eq(region,regionCode);
+        queryMonitorPointsWrapper.in("organization_id",organizationIds);
+        queryMonitorPointsWrapper.eq("is_delete", Constants.NOT_DELETE);
+        List<MonitorPoint> monitorPoints = monitorPointMapper.selectList(queryMonitorPointsWrapper);
+        //���������������������������
+        for (MonitorPoint monitorPoint : monitorPoints) {
+            List<Device> devices = deviceService.getDevicesByMonitorPointId(monitorPoint.getId());
+            monitorPoint.setDevices(devices);
+        }
+        return monitorPoints;
+    }
+}
+
+
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java
index d612dff..f407aa4 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java
@@ -1,10 +1,17 @@
 package com.moral.api.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.moral.api.entity.Organization;
 import com.moral.api.mapper.OrganizationMapper;
 import com.moral.api.service.OrganizationService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.moral.constant.Constants;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
+
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * <p>
@@ -17,4 +24,35 @@
 @Service
 public class OrganizationServiceImpl extends ServiceImpl<OrganizationMapper, Organization> implements OrganizationService {
 
+    @Autowired
+    OrganizationMapper organizationMapper;
+
+    @Override
+    public List<Organization> getChildrenOrganizationsById(Integer id) {
+        List<Organization> childrenOrganization = new ArrayList<>();
+        recursionQueryChildren(id,childrenOrganization);
+        return childrenOrganization;
+    }
+
+    /**
+    * @Description: ���������������������������������������������������children���
+            * @Param: [parentId, children]
+            * @return: void
+            * @Author: ���������
+            * @Date: 2021/7/1
+            */
+    private void recursionQueryChildren(Integer parentId, List<Organization> children) {
+        QueryWrapper<Organization> queryWrapper = new QueryWrapper();
+        queryWrapper.eq("is_delete", Constants.NOT_DELETE);
+        queryWrapper.eq("parent_id", parentId);
+        List<Organization> organizations = organizationMapper.selectList(queryWrapper);
+        if (!ObjectUtils.isEmpty(organizations)) {
+            children.addAll(organizations);
+            for (Organization organization : organizations) {
+                recursionQueryChildren(organization.getId(), children);
+            }
+        } else {
+            return;
+        }
+    }
 }
diff --git a/screen-api/src/main/resources/mapper/MonitorPointMapper.xml b/screen-api/src/main/resources/mapper/MonitorPointMapper.xml
new file mode 100644
index 0000000..5e9c800
--- /dev/null
+++ b/screen-api/src/main/resources/mapper/MonitorPointMapper.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.moral.api.mapper.MonitorPointMapper">
+
+        <!-- ������������������������ -->
+        <resultMap id="BaseResultMap" type="com.moral.api.entity.MonitorPoint">
+                    <id column="id" property="id" />
+                    <result column="name" property="name" />
+                    <result column="longitude" property="longitude" />
+                    <result column="latitude" property="latitude" />
+                    <result column="province_code" property="provinceCode" />
+                    <result column="city_code" property="cityCode" />
+                    <result column="area_code" property="areaCode" />
+                    <result column="address" property="address" />
+                    <result column="organization_id" property="organizationId" />
+                    <result column="create_time" property="createTime" />
+                    <result column="update_time" property="updateTime" />
+                    <result column="is_delete" property="isDelete" />
+                    <result column="desc" property="desc" />
+        </resultMap>
+
+</mapper>
\ No newline at end of file

--
Gitblit v1.8.0