From 4ffcc9ca554e2b541d5e00c2d61d5835708e2190 Mon Sep 17 00:00:00 2001
From: xufenglei <xufenglei>
Date: Wed, 07 Nov 2018 10:14:23 +0800
Subject: [PATCH] 获取 组织下的监控点和设备数据

---
 src/main/java/com/moral/entity/MonitorPoint.java                  |    5 ++
 src/main/java/com/moral/service/MonitorPointService.java          |    2 +
 src/main/java/com/moral/service/impl/OrganizationServiceImpl.java |   32 ++++++++++-----
 src/main/java/com/moral/controller/ScreenController.java          |   14 +++++++
 src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java |   49 ++++++++++++++++++++++++
 5 files changed, 91 insertions(+), 11 deletions(-)

diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java
index f0c0f43..4be11b4 100644
--- a/src/main/java/com/moral/controller/ScreenController.java
+++ b/src/main/java/com/moral/controller/ScreenController.java
@@ -39,6 +39,7 @@
 import com.moral.common.bean.PageResult;
 import com.moral.common.bean.ResultBean;
 import com.moral.common.util.ValidateUtil;
+import com.moral.common.util.WebUtils;
 import com.moral.common.xml.Version;
 import com.moral.entity.alarm.AlarmSensorLevel;
 
@@ -759,4 +760,17 @@
 		Map<String, Object> map = qualityDailyService.getQualityCountDayByRegion(parameters);
 		return new ResultBean<Map<String, Object>>(map);
 	}
+
+	@GetMapping("monitorpoints-devices")
+	@ApiOperation(value = "���������������������������", notes = "���������������������������")
+	@ApiImplicitParams(value = {
+			@ApiImplicitParam(name = "organizationId",defaultValue = "8", value = "���������������������id", required = true, paramType = "query", dataType = "Integer"),
+			@ApiImplicitParam(name = "regionCode",defaultValue = "320583", value = "���������", required = true, paramType = "query", dataType = "String")
+	})
+	public ResultBean<List<MonitorPoint>> getMonitorPointsAndDevicesByRegion(HttpServletRequest request) throws Exception {
+		Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+		List<MonitorPoint> monitorPoints= monitorPointService.getMonitorPointsAndDevicesByRegion(parameters);
+		return new ResultBean<List<MonitorPoint>>(monitorPoints);
+	}
+
 }
diff --git a/src/main/java/com/moral/entity/MonitorPoint.java b/src/main/java/com/moral/entity/MonitorPoint.java
index c9dc40d..6decda3 100644
--- a/src/main/java/com/moral/entity/MonitorPoint.java
+++ b/src/main/java/com/moral/entity/MonitorPoint.java
@@ -1,5 +1,7 @@
 package com.moral.entity;
 
+import java.util.List;
+
 import javax.persistence.Id;
 import javax.persistence.Transient;
 
@@ -104,4 +106,7 @@
 
     private Long townCode;
     private Long villageCode;
+    
+    @Transient
+    private List<Device> devices;
 }
\ No newline at end of file
diff --git a/src/main/java/com/moral/service/MonitorPointService.java b/src/main/java/com/moral/service/MonitorPointService.java
index ad0afe4..ec68268 100644
--- a/src/main/java/com/moral/service/MonitorPointService.java
+++ b/src/main/java/com/moral/service/MonitorPointService.java
@@ -32,4 +32,6 @@
     List<Integer> queryVersionsById(Integer id);
 
     MonitorPoint queryMonitorPointById(Integer mpointId);
+
+	List<MonitorPoint> getMonitorPointsAndDevicesByRegion(Map<String, Object> parameters);
 }
diff --git a/src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java b/src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java
index e79b10e..10078a1 100644
--- a/src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java
@@ -3,8 +3,10 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 import javax.annotation.Resource;
@@ -14,11 +16,13 @@
 import com.moral.mapper.OrganizationMapper;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
 
 import com.github.pagehelper.PageHelper;
 import com.moral.common.bean.Constants;
 import com.moral.common.bean.PageBean;
 import com.moral.common.util.ExampleUtil;
+import com.moral.common.util.ParameterUtils;
 import com.moral.common.util.RedisUtils;
 import com.moral.common.util.StringUtils;
 import com.moral.common.util.ValidateUtil;
@@ -26,7 +30,9 @@
 import com.moral.entity.MonitorPoint;
 import com.moral.mapper.DeviceMapper;
 import com.moral.mapper.MonitorPointMapper;
+import com.moral.service.DeviceService;
 import com.moral.service.MonitorPointService;
+import com.moral.service.OrganizationService;
 
 import tk.mybatis.mapper.entity.Example;
 import tk.mybatis.mapper.entity.Example.Criteria;
@@ -44,6 +50,12 @@
     @Resource
     DictionaryDataMapper dictionaryDataMapper;
 
+    @Resource
+    private DeviceService deviceService;
+    
+    @Resource
+    private OrganizationService organizationService;
+    
     private static Class ENTITY_CLASS = MonitorPoint.class;
     @Override
     public List<MonitorPoint> getMonitorPointsByAreaName(Map<String, Object> parameters) {
@@ -253,4 +265,41 @@
     public MonitorPoint queryMonitorPointById(Integer mpointId) {
         return  this.monitorPointMapper.selectByPrimaryKey(mpointId);
     }
+
+    @Override
+	public List<MonitorPoint> getMonitorPointsAndDevicesByRegion(Map<String, Object> parameters) {
+    	//������������
+		Object organizationId = parameters.remove("organizationId");
+		ValidateUtil.notNull(organizationId, "param.is.null");
+		ValidateUtil.notNull(parameters.get("regionCode"), "param.is.null");
+
+		//������������������
+		ParameterUtils.getRegionType4RegionCode(parameters);
+		
+		Example example = new Example(MonitorPoint.class);
+		Criteria criteria = example.createCriteria();
+		criteria.andEqualTo("isDelete", Constants.IS_DELETE_FALSE);
+		if (Constants.isNotSpecialOrgId(Integer.valueOf(organizationId.toString()))) {
+			//criteria.andEqualTo("organizationId", organizationId);
+			Set<Integer> organizationIds = organizationService.getChildOrganizationIds(Integer.valueOf(organizationId.toString()));
+			criteria.andIn("organizationId", organizationIds);
+		}
+		criteria.andEqualTo(parameters.get("regionType") + "Code", parameters.remove("regionCode"));
+		
+		//���������������������
+		List<MonitorPoint> monitorPoints = monitorPointMapper.selectByExample(example);
+		//���������������������������������
+		Iterator<MonitorPoint> iterator = monitorPoints.iterator();
+		while (iterator.hasNext()) {
+			MonitorPoint monitorPoint = iterator.next();
+			List<Device> devices = deviceService.getDevicesByMonitorPointId(monitorPoint.getId());
+			if (ObjectUtils.isEmpty(devices)) {
+				iterator.remove();
+			} else {
+				monitorPoint.setDevices(devices);
+			}
+			
+		}
+		return monitorPoints;
+	}
 }
diff --git a/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java b/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java
index 594bf60..da6e198 100644
--- a/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java
@@ -1,5 +1,21 @@
 package com.moral.service.impl;
 
+import static com.moral.common.bean.Constants.IS_DELETE_FALSE;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import javax.annotation.Resource;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.data.annotation.Transient;
+import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
+
 import com.alibaba.fastjson.JSON;
 import com.github.pagehelper.PageHelper;
 import com.moral.common.bean.Constants;
@@ -12,17 +28,9 @@
 import com.moral.mapper.OrganizationMapper;
 import com.moral.mapper.OrganizationRelationMapper;
 import com.moral.service.OrganizationService;
-import org.apache.commons.collections.CollectionUtils;
-import org.springframework.data.annotation.Transient;
-import org.springframework.stereotype.Service;
+
 import tk.mybatis.mapper.entity.Example;
 import tk.mybatis.mapper.entity.Example.Criteria;
-
-import javax.annotation.Resource;
-import java.util.*;
-import java.util.stream.Collectors;
-
-import static com.moral.common.bean.Constants.IS_DELETE_FALSE;
 
 @Service
 public class OrganizationServiceImpl implements OrganizationService {
@@ -118,8 +126,10 @@
     	relation.setChildId(organization.getId());
     	List<OrganizationRelation> relations =  organizationRelationMapper.select(relation);
     	if(CollectionUtils.isEmpty(relations)){
-    		relation.setParentId(organization.getParentId());
-			organizationRelationMapper.insert(relation);
+    		if (!ObjectUtils.isEmpty(organization.getParentId())) {
+    			relation.setParentId(organization.getParentId());
+    			organizationRelationMapper.insert(relation);
+			}
 		}else{
 				OrganizationRelation relationOfSelect = relations.get(0);
 				//���������������������������������������

--
Gitblit v1.8.0