From d32fa50fca18a3fff89b9ec22deaa3d964ddd19b Mon Sep 17 00:00:00 2001
From: fengxiang <110431245@qq.com>
Date: Wed, 27 Jun 2018 12:34:27 +0800
Subject: [PATCH] 大屏布局监控点 返回配置数据

---
 src/main/java/com/moral/service/OrganizationLayoutService.java          |    2 
 src/main/java/com/moral/service/impl/OrganizationLayoutServiceImpl.java |  104 ++++++++++++++++++++++++++++++----
 src/main/resources/mapper/SensorMapper.xml                              |   24 +++++++
 src/main/java/com/moral/mapper/SensorMapper.java                        |    5 +
 src/main/java/com/moral/controller/ScreenController.java                |   14 ++++
 5 files changed, 135 insertions(+), 14 deletions(-)

diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java
index 10915d3..16dc30f 100644
--- a/src/main/java/com/moral/controller/ScreenController.java
+++ b/src/main/java/com/moral/controller/ScreenController.java
@@ -108,6 +108,8 @@
 	private AlarmDailyService alarmDailyService;
 	@Resource
 	private OrganizationLayoutService orgLayoutService;
+	@Resource
+	private  DeviceVersionService dviceVersionService;
 	/**
 	 * Screen login. ������������
 	 * 
@@ -594,6 +596,18 @@
 				return  ResultBean.fail();
 			}
 
+		} else {
+			MonitorPoint monitorPoint = monitorPointService.queryMonitorPointById(Integer.parseInt(primaryKey));
+			List<DeviceVersion> versionList = deviceVersionService.queryByOrgId(monitorPoint.getOrganizationId());
+			if(versionList.size() > 0) {
+			List<Integer> versionNolist =	versionList.stream().map(item -> {
+					return  item.getVersion();
+				}).collect(Collectors.toList());
+				rtdLayout = orgLayoutService.queryRtdLayoutWithUnit(monitorPoint.getOrganizationId(),versionNolist);
+				if(rtdLayout == null) {
+					return ResultBean.fail();
+				}
+			}
 		}
 		return new ResultBean(rtdLayout);
 	}
diff --git a/src/main/java/com/moral/mapper/SensorMapper.java b/src/main/java/com/moral/mapper/SensorMapper.java
index c7f4ded..fa1d9b8 100644
--- a/src/main/java/com/moral/mapper/SensorMapper.java
+++ b/src/main/java/com/moral/mapper/SensorMapper.java
@@ -2,6 +2,7 @@
 
 import com.moral.common.mapper.BaseMapper;
 import com.moral.entity.Sensor;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
@@ -9,7 +10,9 @@
 public interface SensorMapper extends BaseMapper<Sensor> {
     List<Sensor> selectByVersionId(Integer deviceVersionId);
 
-    List<Sensor> selectByVersionNo(Integer deviceVersionId);
+    List<Sensor> selectByVersionNo(Integer deviceVersionNo);
+
+    List<Sensor> selectByVersionNos(@Param("versionNos") List<Integer> versionNos);
 
     List<Sensor> selectByOrgId(Integer organizationId);
 
diff --git a/src/main/java/com/moral/service/OrganizationLayoutService.java b/src/main/java/com/moral/service/OrganizationLayoutService.java
index 9f15695..e84e65d 100644
--- a/src/main/java/com/moral/service/OrganizationLayoutService.java
+++ b/src/main/java/com/moral/service/OrganizationLayoutService.java
@@ -17,4 +17,6 @@
     void  deleteRtdLayout(Integer orgId, Integer version);
 
     RealTimeDeviceLayout queryRtdLayoutWithUnit(Integer orgId, Integer versionNo);
+
+    RealTimeDeviceLayout queryRtdLayoutWithUnit(Integer orgId, List<Integer> versionNos);
 }
diff --git a/src/main/java/com/moral/service/impl/OrganizationLayoutServiceImpl.java b/src/main/java/com/moral/service/impl/OrganizationLayoutServiceImpl.java
index 304ff2c..067caf3 100644
--- a/src/main/java/com/moral/service/impl/OrganizationLayoutServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/OrganizationLayoutServiceImpl.java
@@ -16,9 +16,9 @@
 import tk.mybatis.mapper.entity.Example;
 
 import javax.annotation.Resource;
-import javax.naming.Name;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 import java.util.stream.Collectors;
 
 @Service
@@ -29,30 +29,34 @@
     OrganizationLayoutMapper orgLayoutMapper;
     @Resource
     OrganizationSensorUnitMapper orgUnitMapper;
-    private static String pageLayoutFixedItems = "page_layout_fixed_items";
+    private static String page_layout_fixed_items = "page_layout_fixed_items";
+    private static String page_layout_versions_sort = "page_layout_versions_sort";
     @Resource
     DictionaryDataMapper dataMapper;
-    private DictionaryData queryDictionaryData(String dictDataKey) {
+    private Optional<String> queryDictionaryDataValue(String dictDataKey) {
         DictionaryData query = new DictionaryData();
         query.setDictDataKey(dictDataKey);
         List<DictionaryData> dataList = dataMapper.select(query);
         List<String> fixedItemKeys = new ArrayList<>();
+        String json  = null;
         if(dataList.size()>0) {
-            return  dataList.get(0);
+            DictionaryData data = dataList.get(0);
+            json = data.getDictDataValue() != null ? data.getDictDataValue().toString() : null;
         }
-        return  null;
+        return Optional.of(json);
     }
     @Override
     public List<String> getFixedItemKeys() {
-        DictionaryData dictionaryData = queryDictionaryData(pageLayoutFixedItems);
+        Optional jsonString = queryDictionaryDataValue(page_layout_fixed_items);
         List<String> fixedItemKeys = new ArrayList<>();
-            if(dictionaryData!=null && dictionaryData.getDictDataValue()!=null ) {
-                List<String> keyList  = JSON.parseObject(dictionaryData.getDictDataValue().toString(),
-                        new TypeReference<List<String>>(){});
-                if(keyList!=null) {
-                    fixedItemKeys.addAll(keyList);
-                }
+        if(jsonString.isPresent()) {
+            List<String> keyList  = JSON.parseObject(jsonString.get().toString(),
+                    new TypeReference<List<String>>(){});
+            if(keyList!=null) {
+                fixedItemKeys.addAll(keyList);
             }
+        }
+
         return fixedItemKeys;
     }
     public Integer queryPageConfigCountByOrgId(Integer orgId,String pageType) {
@@ -222,6 +226,82 @@
         loadUnitToComb(orgId,rtdLayout);
         return  rtdLayout;
     }
+   private List<Integer> getVersionNosSort() {
+         List<Integer> versionNoList = new ArrayList<>();
+         Optional<String> jsonString = queryDictionaryDataValue(page_layout_versions_sort);
+         if( jsonString.isPresent() ) {
+             versionNoList = JSON.parseArray(jsonString.get(),Integer.class);
+         }
+         return  versionNoList;
+   }
+    @Override
+    public RealTimeDeviceLayout queryRtdLayoutWithUnit(Integer orgId, List<Integer> versionNos) {
+
+        List<Integer> versionNosSort = getVersionNosSort();
+        Integer resultVersion = null;
+        for( int num =0 ; num < versionNosSort.size(); num++ ) {
+            Integer version =versionNosSort.get(num);
+            for (Integer ver:versionNos) {
+                if(ver == version) {
+                    resultVersion = ver;
+                    versionNos.remove(ver);
+                    break;
+                }
+            }
+            if(resultVersion!=null) {
+                break;
+            }
+        }
+        if(resultVersion != null ) {
+            String pageType = getPageType(resultVersion);
+            if(queryPageConfigCountByOrgId(orgId,pageType) == 0 ){
+                orgId = dataMapper.selectSupperOrgId();
+            }
+            RealTimeDeviceLayout rtdLayout = queryRealTimeDeviceLayout(orgId,resultVersion);
+            if (rtdLayout !=null) {
+                List<Sensor> sensorList = sensorMapper.selectByVersionNos(versionNos);
+                List<SensorComb> sensorCombList = sensorList.stream().map(
+                        item -> {
+                            SensorComb sensorComb = new SensorComb();
+                            sensorComb.setSensorId(item.getId());
+                            sensorComb.setSensorKey(item.getSensorKey());
+                            sensorComb.setName(item.getDescription());
+                            sensorComb.setSourceUnit(item.getUnit());
+                            sensorComb.setTargetUnit(item.getUnit());
+                            return  sensorComb;
+                        }
+                ).collect(Collectors.toList());
+                List<SensorComb> allMonitorItems =  new ArrayList<>();
+                allMonitorItems.addAll(rtdLayout.getDefaultMonitorItems());
+                allMonitorItems.addAll(rtdLayout.getCoreMonitorItems());
+                if(allMonitorItems.size()>0 && sensorCombList!=null) {
+                    List<SensorComb> sensrCombPatchs =  new ArrayList<>();
+                    sensorCombList
+                            // ���������������
+                    .stream().filter(
+                        item -> {
+                             List<String> fixedItems = getFixedItemKeys();
+                             return !fixedItems.stream().anyMatch(
+                                     key-> key.equals(item.getSensorKey())
+                             );
+                        }
+                    ).collect(Collectors.toList()).forEach(item -> {
+                        boolean isPath = !allMonitorItems.stream().anyMatch(
+                                sensorComb -> sensorComb.getSensorId() == item.getSensorId()
+                        );
+                        if(isPath) {
+                            sensrCombPatchs.add(item);
+                        }
+                    });
+                    rtdLayout.getDefaultMonitorItems().addAll(sensrCombPatchs);
+                    loadUnitToComb(orgId,rtdLayout);
+                    return  rtdLayout;
+                }
+            }
+        }
+        return null;
+    }
+
     // ���������������������������������
     private void loadUnitToComb(Integer orgId,RealTimeDeviceLayout rtdLayout) {
         List<SensorComb> allList = new ArrayList<>();
diff --git a/src/main/resources/mapper/SensorMapper.xml b/src/main/resources/mapper/SensorMapper.xml
index 2137105..5eddf7b 100644
--- a/src/main/resources/mapper/SensorMapper.xml
+++ b/src/main/resources/mapper/SensorMapper.xml
@@ -34,7 +34,29 @@
 	   and dvs.device_version_id in
 		  (
 			  select dev.id from device_version dev
-	  		  where dev.version = #{versionNo,jdbcType=INTEGER}
+	  		  where dev.version = #{deviceVersionNo,jdbcType=INTEGER}
+		  )
+    )
+  </select>
+  <select id="selectByVersionNos" resultMap="BaseResultMap" parameterType="java.util.List" >
+    select
+    <include refid="Base_Column_List" />
+    from sensor sen
+    where EXISTS
+    (  select id
+       from device_version_sensor dvs
+       where sen.id = dvs.sensor_id
+	   and dvs.device_version_id in
+		  (
+			  select dev.id from device_version dev
+	  		   <where>
+				   <if test="versionNos!=null and versionNos.size() > 0">
+					dev.version in
+					  <foreach collection="versionNos" item="versionNo" open="(" close=")" separator=",">
+							 #{versionNo,jdbcType=INTEGER}
+					  </foreach>
+				   </if>
+			  </where>
 		  )
     )
   </select>

--
Gitblit v1.8.0