From 00e38ff225eb948f5234934afc01aa54c94e0de6 Mon Sep 17 00:00:00 2001 From: 于紫祥_1901 <email@yuzixiang_1910> Date: Sat, 10 Oct 2020 11:29:36 +0800 Subject: [PATCH] update --- src/main/java/com/moral/service/impl/OrganizationLayoutServiceImpl.java | 147 +++++++++++++++++++++++++++++++++++++----------- 1 files changed, 113 insertions(+), 34 deletions(-) diff --git a/src/main/java/com/moral/service/impl/OrganizationLayoutServiceImpl.java b/src/main/java/com/moral/service/impl/OrganizationLayoutServiceImpl.java index 304ff2c..d4814ad 100644 --- a/src/main/java/com/moral/service/impl/OrganizationLayoutServiceImpl.java +++ b/src/main/java/com/moral/service/impl/OrganizationLayoutServiceImpl.java @@ -1,8 +1,19 @@ package com.moral.service.impl; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +import javax.annotation.Resource; + import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; -import com.moral.entity.*; +import com.moral.entity.DictionaryData; +import com.moral.entity.OrganizationLayout; +import com.moral.entity.OrganizationSensorUnit; +import com.moral.entity.Sensor; +import com.moral.entity.SensorUnit; import com.moral.entity.layout.RealTimeDeviceLayout; import com.moral.entity.layout.RtdLayoutUpload; import com.moral.entity.layout.SensorComb; @@ -11,15 +22,10 @@ import com.moral.mapper.OrganizationSensorUnitMapper; import com.moral.mapper.SensorMapper; import com.moral.service.OrganizationLayoutService; + import org.springframework.data.annotation.Transient; import org.springframework.stereotype.Service; 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.stream.Collectors; @Service public class OrganizationLayoutServiceImpl implements OrganizationLayoutService{ @@ -29,30 +35,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) { @@ -85,9 +95,7 @@ List<OrganizationLayout> defaultMonitorItems = orgLayoutMapper.selectByExample(example); List<SensorComb> defaultSensorCombList = defaultMonitorItems.stream().map( item-> { - SensorComb sensorComb = new SensorComb(); - sensorComb.setSensorKey(item.getPagePositionValue()); - sensorComb.setIndex(item.getPagePositionIndex()); + SensorComb sensorComb = SensorComb.generate(item); return sensorComb; } ).collect(Collectors.toList()); @@ -100,9 +108,7 @@ List<OrganizationLayout> coreMonitorItems = orgLayoutMapper.selectByExample(example); List<SensorComb> coreSensorCombList = coreMonitorItems.stream().map( item-> { - SensorComb sensorComb = new SensorComb(); - sensorComb.setSensorKey(item.getPagePositionValue()); - sensorComb.setIndex(item.getPagePositionIndex()); + SensorComb sensorComb = SensorComb.generate(item); return sensorComb; } ).collect(Collectors.toList()); @@ -115,9 +121,7 @@ List<OrganizationLayout> fixedMonitorItems = orgLayoutMapper.selectByExample(example); List<SensorComb> fixedSensorCombList = fixedMonitorItems.stream().map( item-> { - SensorComb sensorComb = new SensorComb(); - sensorComb.setSensorKey(item.getPagePositionValue()); - sensorComb.setIndex(item.getPagePositionIndex()); + SensorComb sensorComb = SensorComb.generate(item); return sensorComb; } ).collect(Collectors.toList()); @@ -144,10 +148,11 @@ for (Sensor sensor :sensorList) { if(sensor.getSensorKey()!=null &&sensor.getSensorKey().equals(sensorComb.getSensorKey())){ - sensorComb.setName(sensor.getDescription()); - sensorComb.setSensorId(sensor.getId()); - sensorComb.setSourceUnit(sensor.getUnit()); - sensorComb.setTargetUnit(sensor.getUnit()); + sensorComb.setSensor(sensor); +// sensorComb.setName(sensor.getDescription()); +// sensorComb.setSensorId(sensor.getId()); +// sensorComb.setSourceUnit(sensor.getUnit()); +// sensorComb.setTargetUnit(sensor.getUnit()); } } } @@ -216,12 +221,85 @@ public RealTimeDeviceLayout queryRtdLayoutWithUnit(Integer orgId, Integer versionNo) { String pageType = getPageType(versionNo); if(queryPageConfigCountByOrgId(orgId,pageType) == 0 ){ - orgId = dataMapper.selectSupperOrgId(); + // orgId = dataMapper.selectSupperOrgId(); + orgId = 0; } RealTimeDeviceLayout rtdLayout = queryRealTimeDeviceLayout(orgId,versionNo); 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) { + RealTimeDeviceLayout rtdLayout = null; + if(versionNos.size() == 1) { + Integer versionNo = versionNos.get(0); + rtdLayout = queryRtdLayoutWithUnit(orgId,versionNo); + } else { + 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 ) { + rtdLayout = queryRtdLayoutWithUnit(orgId,resultVersion); + if (rtdLayout !=null) { + List<Sensor> sensorList = sensorMapper.selectByVersionNos(versionNos); + List<SensorComb> allMonitorItems = new ArrayList<>(); + allMonitorItems.addAll(rtdLayout.getDefaultMonitorItems()); + allMonitorItems.addAll(rtdLayout.getCoreMonitorItems()); + if(allMonitorItems.size()>0 && sensorList!=null) { + List<SensorComb> sensrCombPatchs = new ArrayList<>(); + List<String> fixedItems = getFixedItemKeys(); + sensorList + // ��������������� + .stream().filter( + item -> { + return !fixedItems.stream().anyMatch( + key-> key.equals(item.getSensorKey()) + ); + } + ).collect(Collectors.toList()).forEach(sensor -> { + boolean isPath = !allMonitorItems.stream().anyMatch( + sensorComb -> sensorComb.getSensorId() ==sensor.getId() + ); + if(isPath) { + SensorComb sensorComb = SensorComb.generate(sensor); + sensrCombPatchs.add(sensorComb); + } + }); + if( sensrCombPatchs.size() > 0 ) { + RealTimeDeviceLayout rtdLayoutTemp = new RealTimeDeviceLayout(); + rtdLayoutTemp.setDefaultMonitorItems(sensrCombPatchs); + loadUnitToComb(orgId,rtdLayoutTemp); + rtdLayout.getDefaultMonitorItems() + .addAll(rtdLayoutTemp.getDefaultMonitorItems()); + } + } + } + } + } + + return rtdLayout; + } + // ��������������������������������� private void loadUnitToComb(Integer orgId,RealTimeDeviceLayout rtdLayout) { List<SensorComb> allList = new ArrayList<>(); @@ -234,8 +312,9 @@ SensorUnit sensorUnit = orgUnit.getSensorUnit(); if( sensorUnit!=null && sensorUnit.getSensorId() !=null) { if(sensorUnit.getSensorId() == item.getSensorId()) { - item.setTargetUnit(sensorUnit.getName()); - item.setEvaluator(sensorUnit.getRules()); + item.setUnit(sensorUnit); +// item.setTargetUnit(sensorUnit.getName()); +// item.setEvaluator(sensorUnit.getRules()); } } } -- Gitblit v1.8.0