于紫祥_1901
2020-12-24 f28149d8183a62f87fa9c8df9ae589070d83f612
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 java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
@Service
public class OrganizationLayoutServiceImpl implements OrganizationLayoutService{
@@ -89,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());
@@ -104,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());
@@ -119,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());
@@ -148,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());
                  }
              }
        }
@@ -220,7 +221,8 @@
    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);
@@ -236,70 +238,66 @@
   }
    @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);
        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) {
                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;
            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());
                        }
                ).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;
        return rtdLayout;
    }
    // 装载单位信息到布局配置
@@ -314,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());
                        }
                  }
              }