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