Quellcode durchsuchen

环境检测仪表----数据表

hxf vor 1 Jahr
Ursprung
Commit
df77b1e61f

+ 271 - 279
wps-biz/src/main/java/com/jiayue/biz/conf/Channel.java

@@ -1,152 +1,144 @@
-//package com.jiayue.biz.conf;
-//
-//import cn.hutool.core.date.DateTime;
-//import cn.hutool.core.thread.ThreadFactoryBuilder;
-//import com.jiayue.biz.domain.PointAttribute;
-//import com.jiayue.biz.domain.TunnelInfo;
-//import com.jiayue.biz.domain.WindTowerInfo;
-//import com.jiayue.biz.service.PointAttributeService;
-//import com.jiayue.biz.service.TunnelInfoService;
-//import com.jiayue.biz.service.WindTowerInfoService;
-//import com.jiayue.biz.service.impl.PointAttributeServiceImpl;
-//import com.jiayue.biz.service.impl.WindTowerDataParentTableServiceImpl;
-//import com.jiayue.biz.util.CalculationUtil;
-//import com.jiayue.common.annotation.Log;
-//import com.jiayue.common.utils.DateUtil;
-//import io.netty.channel.ChannelFuture;
-//import lombok.AllArgsConstructor;
-//import lombok.extern.slf4j.Slf4j;
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import org.springframework.scheduling.annotation.Scheduled;
-//import wei.yigulu.modbus.domain.FunctionCode;
-//import wei.yigulu.modbus.domain.Obj4RequestRegister;
-//import wei.yigulu.modbus.domain.datatype.IModbusDataType;
-//import wei.yigulu.modbus.domain.datatype.ModbusDataTypeEnum;
-//import wei.yigulu.modbus.domain.datatype.NumericModbusData;
-//import wei.yigulu.modbus.exceptiom.ModbusException;
-//import wei.yigulu.modbus.netty.ModbusTcpMasterBuilder;
-//import wei.yigulu.modbus.utils.ModbusRequestDataUtils;
-//
-//import java.math.BigDecimal;
-//import java.util.*;
-//import java.util.concurrent.ExecutorService;
-//import java.util.concurrent.SynchronousQueue;
-//import java.util.concurrent.ThreadPoolExecutor;
-//import java.util.concurrent.TimeUnit;
-//import java.util.stream.Collectors;
-//
-////@Configuration
-//@AllArgsConstructor
-//@Slf4j
-//public class Channel {
-//    private final
-//    TunnelInfoService tunnelInfoService;
-//
-//    private final
-//    PointAttributeService pointAttributeService;
-//
-//    private final
-//    WindTowerDataParentTableServiceImpl windTowerDataParentTableService;
-//    private final
-//    WindTowerInfoService windTowerInfoService;
-//
-//
-//    private final ExecutorService calculatorThread = new ThreadPoolExecutor(15, 1000,
-//            60L, TimeUnit.SECONDS, new SynchronousQueue<>(), new ThreadFactoryBuilder().setNamePrefix("MyRecurringTaskThread-").build());
-//
-//
-//    private HashMap<String, ModbusTcpMasterBuilder> masterMap;
-//
-//
-////    @Bean
-//    public void timingTunnel() {
-//        List<TunnelInfo> tunnelInfoList = tunnelInfoService.list();
-//        tunnelInfoList.clear();
-//        TunnelInfo tunnelInfo1 = new TunnelInfo();
-//        TunnelInfo tunnelInfo2 = new TunnelInfo();
-//        tunnelInfo1.setDataFormat("CDAB");
-////        tunnelInfo1.setIp("192.168.10.75");
-//        tunnelInfo1.setIp("192.168.1.206");
-//        tunnelInfo1.setPort(502);
-//        tunnelInfo1.setStationId("七台河3005");
-//        tunnelInfo1.setEquipmentNo("3005");
-////        tunnelInfo1.setStationId("虎林15244");
-////        tunnelInfo1.setEquipmentNo("15244");
-//
-//        tunnelInfo2.setDataFormat("CDAB");
-//        tunnelInfo2.setIp("192.168.10.75");
-//        tunnelInfo2.setPort(502);
-//        tunnelInfo2.setStationId("虎林15244");
-//        tunnelInfo2.setEquipmentNo("15244");
-//        tunnelInfoList.add(tunnelInfo1);
-//        tunnelInfoList.add(tunnelInfo2);
-//        for (TunnelInfo tunnelInfo : tunnelInfoList) {
-//            ModbusTcpMasterBuilder master = start(tunnelInfo);
-//            masterMap.put(tunnelInfo.getStationId(), master);
-//
-//        }
-//    }
-//
-//    //创建线程
-//    public ModbusTcpMasterBuilder start(TunnelInfo tunnelInfo) {
-//        //创建通道后    对通道map 进行  采集数据
-//        //获取场站id   形成map
-//        ModbusTcpMasterBuilder master = new ModbusTcpMasterBuilder(tunnelInfo.getIp(), tunnelInfo.getPort());
-//        master.getConfigInfoMap().put("stationId", tunnelInfo.getStationId());
-//        //create  会阻塞线程
-//        calculatorThread.execute(master::create);
-//        master.isConnected();
-//        return master;
-//    }
-//
-//    //关闭通道移除连接
-//    public void stop(String stationId) {
-//        if (masterMap.get(stationId).isConnected()) {
-//            masterMap.get(stationId).stop();
-//            masterMap.remove(stationId);
-//        }
-//    }
-//
-////    @Scheduled(cron = "0 0/5 * * * ? ")
-//    public void tunnel() {
-//        List<TunnelInfo> tunnelInfoList = tunnelInfoService.list();
-//        List<PointAttribute> attributeList = pointAttributeService.list();
-//        String time = DateUtil.format(DateUtil.date(), "yyyy-MM-dd HH:mm");
-//        for (Map.Entry<String, ModbusTcpMasterBuilder> masterBuilderEntry : masterMap.entrySet()) {
-//            //获取通道map中的key
-//            String stationId = masterBuilderEntry.getKey();
-//            //风速层高
-//            HashSet<Integer> wsHeightSet = new HashSet<>();
-//            //风向层高
-//            HashSet<Integer> wdHeightSet = new HashSet<>();
-//            //根据通道key获取ip端口号等数据
-//            List<TunnelInfo> tunnelist = tunnelInfoList.stream().filter(t -> t.getStationId().equals(stationId)).collect(Collectors.toList());
-//            TunnelInfo tunnelInfo;
-//            if (!tunnelist.isEmpty()) {
-//                tunnelInfo = tunnelist.get(0);
-//            } else {
-//                //如果此通道不存在 关闭通道
-//                this.stop(stationId);
-//                continue;
-//            }
-//            //根据通道key获取点表数据
-//            List<PointAttribute> pointAttributeList = attributeList.stream().filter(a -> a.getStationId().equals(stationId)).collect(Collectors.toList());
-//            //拿到所有点位
-//            List<Integer> points = pointAttributeList.stream().map(PointAttribute::getPoint).collect(Collectors.toList());
-//            Map<Integer, ModbusDataTypeEnum> pointTypeMap = new HashMap<>();
-//            for (Integer point : points) {
-//                //点位以及点位类型存入map
-//                pointTypeMap.put(point, ModbusDataTypeEnum.valueOf(tunnelInfo.getDataFormat()));
-//            }
-//
-//            //获取连接
-//            ModbusTcpMasterBuilder master = masterBuilderEntry.getValue();
-//            //获取点位信息map
-//            Map<String, Integer> stringStringBuilderMap = savePoints(pointAttributeList, wsHeightSet, wdHeightSet);
+package com.jiayue.biz.conf;
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.thread.ThreadFactoryBuilder;
+import com.jiayue.biz.domain.PointAttribute;
+import com.jiayue.biz.domain.TunnelInfo;
+import com.jiayue.biz.service.PointAttributeService;
+import com.jiayue.biz.service.TunnelInfoService;
+import com.jiayue.biz.service.impl.PointAttributeServiceImpl;
+import com.jiayue.biz.util.CalculationUtil;
+import com.jiayue.common.annotation.Log;
+import com.jiayue.common.utils.DateUtil;
+import io.netty.channel.ChannelFuture;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.Scheduled;
+import wei.yigulu.modbus.domain.FunctionCode;
+import wei.yigulu.modbus.domain.Obj4RequestRegister;
+import wei.yigulu.modbus.domain.datatype.IModbusDataType;
+import wei.yigulu.modbus.domain.datatype.ModbusDataTypeEnum;
+import wei.yigulu.modbus.domain.datatype.NumericModbusData;
+import wei.yigulu.modbus.exceptiom.ModbusException;
+import wei.yigulu.modbus.netty.ModbusTcpMasterBuilder;
+import wei.yigulu.modbus.utils.ModbusRequestDataUtils;
+
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.SynchronousQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+
+//@Configuration
+@AllArgsConstructor
+@Slf4j
+public class Channel {
+    private final
+    TunnelInfoService tunnelInfoService;
+
+    private final
+    PointAttributeService pointAttributeService;
+
+
+    private final ExecutorService calculatorThread = new ThreadPoolExecutor(15, 1000,
+            60L, TimeUnit.SECONDS, new SynchronousQueue<>(), new ThreadFactoryBuilder().setNamePrefix("MyRecurringTaskThread-").build());
+
+
+    private HashMap<String, ModbusTcpMasterBuilder> masterMap;
+
+
+//    @Bean
+    public void timingTunnel() {
+        List<TunnelInfo> tunnelInfoList = tunnelInfoService.list();
+        tunnelInfoList.clear();
+        TunnelInfo tunnelInfo1 = new TunnelInfo();
+        TunnelInfo tunnelInfo2 = new TunnelInfo();
+        tunnelInfo1.setDataFormat("CDAB");
+//        tunnelInfo1.setIp("192.168.10.75");
+        tunnelInfo1.setIp("192.168.1.206");
+        tunnelInfo1.setPort(502);
+        tunnelInfo1.setStationId("七台河3005");
+        tunnelInfo1.setEquipmentNo("3005");
+//        tunnelInfo1.setStationId("虎林15244");
+//        tunnelInfo1.setEquipmentNo("15244");
+
+        tunnelInfo2.setDataFormat("CDAB");
+        tunnelInfo2.setIp("192.168.10.75");
+        tunnelInfo2.setPort(502);
+        tunnelInfo2.setStationId("虎林15244");
+        tunnelInfo2.setEquipmentNo("15244");
+        tunnelInfoList.add(tunnelInfo1);
+        tunnelInfoList.add(tunnelInfo2);
+        for (TunnelInfo tunnelInfo : tunnelInfoList) {
+            ModbusTcpMasterBuilder master = start(tunnelInfo);
+            masterMap.put(tunnelInfo.getStationId(), master);
+
+        }
+    }
+
+    //创建线程
+    public ModbusTcpMasterBuilder start(TunnelInfo tunnelInfo) {
+        //创建通道后    对通道map 进行  采集数据
+        //获取场站id   形成map
+        ModbusTcpMasterBuilder master = new ModbusTcpMasterBuilder(tunnelInfo.getIp(), tunnelInfo.getPort());
+        master.getConfigInfoMap().put("stationId", tunnelInfo.getStationId());
+        //create  会阻塞线程
+        calculatorThread.execute(master::create);
+        master.isConnected();
+        return master;
+    }
+
+    //关闭通道移除连接
+    public void stop(String stationId) {
+        if (masterMap.get(stationId).isConnected()) {
+            masterMap.get(stationId).stop();
+            masterMap.remove(stationId);
+        }
+    }
+
+//    @Scheduled(cron = "0 0/5 * * * ? ")
+    public void tunnel() {
+        List<TunnelInfo> tunnelInfoList = tunnelInfoService.list();
+        List<PointAttribute> attributeList = pointAttributeService.list();
+        String time = DateUtil.format(DateUtil.date(), "yyyy-MM-dd HH:mm");
+        for (Map.Entry<String, ModbusTcpMasterBuilder> masterBuilderEntry : masterMap.entrySet()) {
+            //获取通道map中的key
+            String stationId = masterBuilderEntry.getKey();
+            //风速层高
+            HashSet<Integer> wsHeightSet = new HashSet<>();
+            //风向层高
+            HashSet<Integer> wdHeightSet = new HashSet<>();
+            //根据通道key获取ip端口号等数据
+            List<TunnelInfo> tunnelist = tunnelInfoList.stream().filter(t -> t.getStationId().equals(stationId)).collect(Collectors.toList());
+            TunnelInfo tunnelInfo;
+            if (!tunnelist.isEmpty()) {
+                tunnelInfo = tunnelist.get(0);
+            } else {
+                //如果此通道不存在 关闭通道
+                this.stop(stationId);
+                continue;
+            }
+            //根据通道key获取点表数据
+            List<PointAttribute> pointAttributeList = attributeList.stream().filter(a -> a.getStationId().equals(stationId)).collect(Collectors.toList());
+            //拿到所有点位
+            List<Integer> points = pointAttributeList.stream().map(PointAttribute::getPoint).collect(Collectors.toList());
+            Map<Integer, ModbusDataTypeEnum> pointTypeMap = new HashMap<>();
+            for (Integer point : points) {
+                //点位以及点位类型存入map
+                pointTypeMap.put(point, ModbusDataTypeEnum.valueOf(tunnelInfo.getDataFormat()));
+            }
+
+            //获取连接
+            ModbusTcpMasterBuilder master = masterBuilderEntry.getValue();
+            //获取点位信息map
+            Map<String, Integer> stringStringBuilderMap = savePoints(pointAttributeList, wsHeightSet, wdHeightSet);
 //            WindTowerInfo windTowerInfo = new WindTowerInfo();
-//            //判断是否存在此塔
+            //判断是否存在此塔
 //            boolean emptyOfEntity = windTowerInfoService.lambdaQuery().eq(WindTowerInfo::getEquipmentNo, tunnelInfo.getEquipmentNo()).list().isEmpty();
 //            if (emptyOfEntity) {
 //                StringBuilder wsHeightStr = new StringBuilder();
@@ -174,135 +166,135 @@
 //                windTowerInfo.setType("2");
 //                windTowerInfoService.save(windTowerInfo);
 //            }
-//            // 例如: key:wsAve val:数据
-//            HashMap<String, BigDecimal> pointMap = new HashMap<>();
-//            //分解成Obj4RequestCoil
-//            List<Obj4RequestRegister> obj4RequestRegisters = null;
-//            try {
-//                obj4RequestRegisters = ModbusRequestDataUtils.splitModbusRequest(pointTypeMap, 1, FunctionCode.READ_HOLDING_REGISTERS);
-//                for (Obj4RequestRegister obj4RequestRegister : obj4RequestRegisters) {
-//                    Map<Integer, IModbusDataType> registerData = ModbusRequestDataUtils.getRegisterData(master, obj4RequestRegister);
-//                    if(!registerData.isEmpty()){
-//                        for (Map.Entry<Integer, IModbusDataType> typeEntry : registerData.entrySet()) {
-//                            for (Map.Entry<String, Integer> entry : stringStringBuilderMap.entrySet()) {
-//                                if (typeEntry.getKey().equals(entry.getValue())) {
-//                                    log.info("点位:{}-----数值:{}",typeEntry.getKey(),((NumericModbusData) typeEntry.getValue()).getValue());
-//                                    //点位一致 置换value
-//                                    pointMap.put(entry.getKey(), ((NumericModbusData) typeEntry.getValue()).getValue());
-//                                }
-//                            }
-//                        }
-//                    }
-//
-//                }
-//            } catch (ModbusException e) {
-//                log.info(e.getMsg());
-//                throw new RuntimeException(e);
-//            }
-//            wsHeightSet.addAll(wdHeightSet);
+            // 例如: key:wsAve val:数据
+            HashMap<String, BigDecimal> pointMap = new HashMap<>();
+            //分解成Obj4RequestCoil
+            List<Obj4RequestRegister> obj4RequestRegisters = null;
+            try {
+                obj4RequestRegisters = ModbusRequestDataUtils.splitModbusRequest(pointTypeMap, 1, FunctionCode.READ_HOLDING_REGISTERS);
+                for (Obj4RequestRegister obj4RequestRegister : obj4RequestRegisters) {
+                    Map<Integer, IModbusDataType> registerData = ModbusRequestDataUtils.getRegisterData(master, obj4RequestRegister);
+                    if(!registerData.isEmpty()){
+                        for (Map.Entry<Integer, IModbusDataType> typeEntry : registerData.entrySet()) {
+                            for (Map.Entry<String, Integer> entry : stringStringBuilderMap.entrySet()) {
+                                if (typeEntry.getKey().equals(entry.getValue())) {
+                                    log.info("点位:{}-----数值:{}",typeEntry.getKey(),((NumericModbusData) typeEntry.getValue()).getValue());
+                                    //点位一致 置换value
+                                    pointMap.put(entry.getKey(), ((NumericModbusData) typeEntry.getValue()).getValue());
+                                }
+                            }
+                        }
+                    }
+
+                }
+            } catch (ModbusException e) {
+                log.info(e.getMsg());
+                throw new RuntimeException(e);
+            }
+            wsHeightSet.addAll(wdHeightSet);
 //            windTowerDataParentTableService.saveDataForTunnel(pointMap, wsHeightSet,tunnelInfo.getEquipmentNo(),time);
-//        }
-//    }
-//
-//
-//    //获取点表所对应数据
-//    public Map<String, Integer> savePoints(List<PointAttribute> channelPoints, HashSet<Integer> wsHeightSet, HashSet<Integer> wdHeightSet) {
-//        //如果数据库没有此测风塔 读取点表信息增加塔表
-//        HashMap<String, Integer> dataMap = new HashMap<>();
-//        for (PointAttribute channelPoint : channelPoints) {
-//            if(channelPoint.getUnit() == null){
-//                channelPoint.setUnit("");
-//            }
-//            if ((channelPoint.getUnit().equals("y") || channelPoint.getUnit().equals("Y")) && channelPoint.getMeaning().contains("年")) {
-//                dataMap.put("yyyy", channelPoint.getPoint());
-//            } else if ((channelPoint.getUnit().equals("y") || channelPoint.getMeaning().equals("Y")) && channelPoint.getMeaning().contains("月")) {
-//                dataMap.put("MM", channelPoint.getPoint());
-//            } else if (channelPoint.getUnit().equals("d") && channelPoint.getMeaning().contains("日")) {
-//                dataMap.put("dd", channelPoint.getPoint());
-//            } else if (channelPoint.getUnit().equals("h") && channelPoint.getMeaning().contains("时")) {
-//                dataMap.put("HH", channelPoint.getPoint());
-//            } else if (channelPoint.getUnit().equals("m") && channelPoint.getMeaning().contains("分")) {
-//                dataMap.put("mm", channelPoint.getPoint());
-//            }  else if (channelPoint.getMeaning().contains("纬")) {
-//                dataMap.put("latitude", channelPoint.getPoint());
-//            } else if (channelPoint.getMeaning().contains("经")) {
-//                dataMap.put("longitude", channelPoint.getPoint());
-//            } else if (channelPoint.getMeaning().contains("海拔")) {
-//                dataMap.put("elevation", channelPoint.getPoint());
-//            } else if (channelPoint.getMeaning().contains("电压")) {
-//                String status = status(channelPoint.getMeaning());
-//                dataMap.put("v" + status, channelPoint.getPoint());
-//            } else {
-//                String dataType = dataType(channelPoint.getMeaning(), wsHeightSet, wdHeightSet);
-//                if (!dataType.equals("")) {
-//                    dataMap.put(dataType, channelPoint.getPoint());
-//                }
-//            }
-//
-//        }
-//        return dataMap;
-//    }
-//
-//
-//    public String dataType(String str, HashSet<Integer> wsHeightSet, HashSet<Integer> wdHeightSet) {
-//        String typeStr = "";
-//        int index;
-//        if (!str.contains("米") && !str.contains("m")) {
-//            return "";
-//        }
-//        if (str.contains("米")) {
-//            index = str.indexOf("米");
-//        } else {
-//            index = str.indexOf("m");
-//        }
-//        //截取风速
-//        String dataStr = str.substring(0, index);
-//        Integer height = Integer.valueOf(CalculationUtil.getNumberFromString(dataStr));
-//        String dataType = "";
-//        typeStr = status(str);
-//
-//        if (str.contains("风速") && !str.contains("风向")) {
-//            dataType = "ws";
-//            wsHeightSet.add(height);
-//        } else if (str.contains("风向")) {
-//            dataType = "wd";
-//            wdHeightSet.add(height);
-//        } else if (str.contains("湿度")) {
-//            dataType = "rh";
-//            return dataType + typeStr;
-//        } else if (str.contains("温度")) {
-//            dataType = "t";
-//            return dataType + typeStr;
-//        } else if (str.contains("气压") || str.contains("压力")) {
-//            dataType = "pa";
-//            return dataType + typeStr;
-//        }
-//        return dataType + typeStr + height;
-//    }
-//
-//    public String status(String str) {
-//        String typeStr = "";
-//        if (str.contains("平均值") && !str.contains("G")) {
-//            typeStr = "Ave";
-//        } else if (str.contains("方差") || str.contains("标准偏差") || str.contains("标准差")) {
-//            typeStr = "Sta";
-//        } else if (str.contains("最大值") && !str.contains("极大")) {
-//            typeStr = "Max";
-//        } else if (str.contains("最小值")) {
-//            typeStr = "Min";
-//        } else if (str.contains("瞬时")) {
-//            typeStr = "Inst";
-//        } else if (str.contains("极大")) {
-//            typeStr = "Great";
-//        } else if (str.contains("Gust") || str.contains("GUST")) {
-//            typeStr = "Gust";
-//        } else if (str.contains("风速") && str.contains("风向")) {
-//            typeStr = "OnWs";
-//        } else if (str.contains("实时")) {
-//            typeStr = "Now";
-//        }
-//        return typeStr;
-//    }
-//
-//
-//}
+        }
+    }
+
+
+    //获取点表所对应数据
+    public Map<String, Integer> savePoints(List<PointAttribute> channelPoints, HashSet<Integer> wsHeightSet, HashSet<Integer> wdHeightSet) {
+        //如果数据库没有此测风塔 读取点表信息增加塔表
+        HashMap<String, Integer> dataMap = new HashMap<>();
+        for (PointAttribute channelPoint : channelPoints) {
+            if(channelPoint.getUnit() == null){
+                channelPoint.setUnit("");
+            }
+            if ((channelPoint.getUnit().equals("y") || channelPoint.getUnit().equals("Y")) && channelPoint.getMeaning().contains("年")) {
+                dataMap.put("yyyy", channelPoint.getPoint());
+            } else if ((channelPoint.getUnit().equals("y") || channelPoint.getMeaning().equals("Y")) && channelPoint.getMeaning().contains("月")) {
+                dataMap.put("MM", channelPoint.getPoint());
+            } else if (channelPoint.getUnit().equals("d") && channelPoint.getMeaning().contains("日")) {
+                dataMap.put("dd", channelPoint.getPoint());
+            } else if (channelPoint.getUnit().equals("h") && channelPoint.getMeaning().contains("时")) {
+                dataMap.put("HH", channelPoint.getPoint());
+            } else if (channelPoint.getUnit().equals("m") && channelPoint.getMeaning().contains("分")) {
+                dataMap.put("mm", channelPoint.getPoint());
+            }  else if (channelPoint.getMeaning().contains("纬")) {
+                dataMap.put("latitude", channelPoint.getPoint());
+            } else if (channelPoint.getMeaning().contains("经")) {
+                dataMap.put("longitude", channelPoint.getPoint());
+            } else if (channelPoint.getMeaning().contains("海拔")) {
+                dataMap.put("elevation", channelPoint.getPoint());
+            } else if (channelPoint.getMeaning().contains("电压")) {
+                String status = status(channelPoint.getMeaning());
+                dataMap.put("v" + status, channelPoint.getPoint());
+            } else {
+                String dataType = dataType(channelPoint.getMeaning(), wsHeightSet, wdHeightSet);
+                if (!dataType.equals("")) {
+                    dataMap.put(dataType, channelPoint.getPoint());
+                }
+            }
+
+        }
+        return dataMap;
+    }
+
+
+    public String dataType(String str, HashSet<Integer> wsHeightSet, HashSet<Integer> wdHeightSet) {
+        String typeStr = "";
+        int index;
+        if (!str.contains("米") && !str.contains("m")) {
+            return "";
+        }
+        if (str.contains("米")) {
+            index = str.indexOf("米");
+        } else {
+            index = str.indexOf("m");
+        }
+        //截取风速
+        String dataStr = str.substring(0, index);
+        Integer height = Integer.valueOf(CalculationUtil.getNumberFromString(dataStr));
+        String dataType = "";
+        typeStr = status(str);
+
+        if (str.contains("风速") && !str.contains("风向")) {
+            dataType = "ws";
+            wsHeightSet.add(height);
+        } else if (str.contains("风向")) {
+            dataType = "wd";
+            wdHeightSet.add(height);
+        } else if (str.contains("湿度")) {
+            dataType = "rh";
+            return dataType + typeStr;
+        } else if (str.contains("温度")) {
+            dataType = "t";
+            return dataType + typeStr;
+        } else if (str.contains("气压") || str.contains("压力")) {
+            dataType = "pa";
+            return dataType + typeStr;
+        }
+        return dataType + typeStr + height;
+    }
+
+    public String status(String str) {
+        String typeStr = "";
+        if (str.contains("平均值") && !str.contains("G")) {
+            typeStr = "Ave";
+        } else if (str.contains("方差") || str.contains("标准偏差") || str.contains("标准差")) {
+            typeStr = "Sta";
+        } else if (str.contains("最大值") && !str.contains("极大")) {
+            typeStr = "Max";
+        } else if (str.contains("最小值")) {
+            typeStr = "Min";
+        } else if (str.contains("瞬时")) {
+            typeStr = "Inst";
+        } else if (str.contains("极大")) {
+            typeStr = "Great";
+        } else if (str.contains("Gust") || str.contains("GUST")) {
+            typeStr = "Gust";
+        } else if (str.contains("风速") && str.contains("风向")) {
+            typeStr = "OnWs";
+        } else if (str.contains("实时")) {
+            typeStr = "Now";
+        }
+        return typeStr;
+    }
+
+
+}

+ 15 - 0
wps-biz/src/main/java/com/jiayue/biz/controller/WeatherLookController.java

@@ -0,0 +1,15 @@
+package com.jiayue.biz.controller;
+
+import com.jiayue.common.core.controller.BaseController;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/weatherLook")
+public class WeatherLookController extends BaseController {
+
+
+}

+ 19 - 0
wps-biz/src/main/java/com/jiayue/biz/domain/EnvironmentalData.java

@@ -0,0 +1,19 @@
+package com.jiayue.biz.domain;
+
+import lombok.Data;
+
+import java.sql.Timestamp;
+
+@Data
+public class EnvironmentalData {
+    private Timestamp ts;
+    private Float ws;
+    private Float wd;
+    private Float t;
+    private Float rh;
+    private Float pa;
+    //环境检测仪编号
+    private String weatherLookNo;
+
+
+}

+ 0 - 54
wps-biz/src/main/java/com/jiayue/biz/domain/EquipmentAttribute.java

@@ -1,54 +0,0 @@
-package com.jiayue.biz.domain;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import lombok.experimental.Accessors;
-import com.jiayue.common.annotation.Excel;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-import java.util.Date;
-import java.math.BigDecimal;
-
-/**
- * 数据类型对象 equipment_attribute
- *
- * @author L.ym
- * @date 2022-05-23
- */
-@Data
-@NoArgsConstructor
-@Accessors(chain = true)
-@TableName("equipment_attribute")
-public class EquipmentAttribute implements Serializable {
-
-	private static final long serialVersionUID = 1L;
-
-
-    /** 主键ID */
-    @TableId(type = IdType.ASSIGN_UUID)
-    private String id;
-
-    /** 属性的定义 */
-    @Excel(name = "属性的定义")
-    private String explanation;
-
-    /** 属性所对应的的类的属性 */
-    @Excel(name = "属性所对应的的类的属性")
-    private String fieldName;
-
-    /** 计量单位 */
-    @Excel(name = "计量单位")
-    private String measurementUnits;
-
-    /** 设备类型 */
-    @Excel(name = "设备类型")
-    private String equipmentType;
-
-
-    /** 属性作用 */
-    @Excel(name = "属性作用")
-    private String attributeFunction;
-}

+ 41 - 0
wps-biz/src/main/java/com/jiayue/biz/domain/WeatherLook.java

@@ -0,0 +1,41 @@
+package com.jiayue.biz.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@TableName("weather_look")
+@Data
+public class WeatherLook {
+
+    /**
+     * id
+     */
+    private String id;
+    /**
+     * 环境监测仪名称
+     */
+    private String weatherLookName;
+    /**
+     * 环境监测仪编号
+     */
+    private String weatherLookNo;
+    /**
+     * 厂家
+     */
+    private String factory;
+    /**
+     * 经度
+     */
+    private BigDecimal longitude;
+    /**
+     * 纬度
+     */
+    private BigDecimal latitude;
+    /**
+     * 型号
+     */
+    private String modelNumber;
+
+}

+ 14 - 0
wps-biz/src/main/java/com/jiayue/biz/mapper/EnvironmentalDataMapper.java

@@ -0,0 +1,14 @@
+package com.jiayue.biz.mapper;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jiayue.biz.domain.EnvironmentalData;
+import org.apache.ibatis.annotations.Select;
+
+@DS("tdengine")
+public interface EnvironmentalDataMapper extends BaseMapper<EnvironmentalData> {
+
+    @Select("insert into environmental_${weatherLookNo} USING environmental_data TAGS(#{weatherLookNo}) values(#{ts},#{ws},#{wd},#{t},#{rh},#{pa})")
+    public void insertOne(EnvironmentalData environmentalData);
+
+}

+ 12 - 0
wps-biz/src/main/java/com/jiayue/biz/mapper/WeatherLookMapper.java

@@ -0,0 +1,12 @@
+package com.jiayue.biz.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jiayue.biz.domain.WeatherLook;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface WeatherLookMapper extends BaseMapper<WeatherLook> {
+
+
+
+}

+ 8 - 0
wps-biz/src/main/java/com/jiayue/biz/service/EnvironmentalDataService.java

@@ -0,0 +1,8 @@
+package com.jiayue.biz.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jiayue.biz.domain.EnvironmentalData;
+
+public interface EnvironmentalDataService extends IService<EnvironmentalData> {
+    void insertOne(EnvironmentalData environmentalData);
+}

+ 7 - 0
wps-biz/src/main/java/com/jiayue/biz/service/WeatherLookService.java

@@ -0,0 +1,7 @@
+package com.jiayue.biz.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jiayue.biz.domain.WeatherLook;
+
+public interface WeatherLookService extends IService<WeatherLook> {
+}

+ 16 - 0
wps-biz/src/main/java/com/jiayue/biz/service/impl/EnvironmentalDataServiceImpl.java

@@ -0,0 +1,16 @@
+package com.jiayue.biz.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jiayue.biz.domain.EnvironmentalData;
+import com.jiayue.biz.mapper.EnvironmentalDataMapper;
+import com.jiayue.biz.service.EnvironmentalDataService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class EnvironmentalDataServiceImpl extends ServiceImpl<EnvironmentalDataMapper,EnvironmentalData> implements EnvironmentalDataService {
+
+    public void insertOne(EnvironmentalData environmentalData){
+        baseMapper.insertOne(environmentalData);
+    }
+
+}

+ 14 - 0
wps-biz/src/main/java/com/jiayue/biz/service/impl/WeatherLookServiceImpl.java

@@ -0,0 +1,14 @@
+package com.jiayue.biz.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jiayue.biz.domain.WeatherLook;
+import com.jiayue.biz.mapper.WeatherLookMapper;
+import com.jiayue.biz.service.WeatherLookService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class WeatherLookServiceImpl extends ServiceImpl<WeatherLookMapper,WeatherLook> implements WeatherLookService {
+
+
+
+}

+ 18 - 0
wps-biz/src/main/java/com/jiayue/biz/util/CalculationUtil.java

@@ -0,0 +1,18 @@
+package com.jiayue.biz.util;
+
+public class CalculationUtil {
+
+    public static String getNumberFromString(String str) {
+        str = str.trim();
+        String str2 = "";
+        if (str != null && !"".equals(str)) {
+            for (int i = 0; i < str.length(); i++) {
+                if (str.charAt(i) >= 48 && str.charAt(i) <= 57) {
+                    str2 += str.charAt(i);
+                }
+            }
+        }
+        return str2;
+    }
+
+}

+ 2 - 2
wps-biz/src/main/resources/application-dev.yml

@@ -9,7 +9,7 @@ spring:
       primary: mysql #设置默认的数据源或者数据源组,默认值即为master
       datasource:
         mysql:
-          url: jdbc:mysql://192.168.1.205:3306/nerp-test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
+          url: jdbc:mysql://192.168.10.16:3306/wps?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
           #          url: jdbc:mysql://49.4.78.194:17136/nerp-test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
           #          url: jdbc:mysql://10.124.252.246:3306/nerp-db-v2?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
           username: root
@@ -58,7 +58,7 @@ spring:
                 config:
                   multi-statement-allow: true
         tdengine:
-          url: jdbc:TAOS://192.168.1.208:6030/nerp_db
+          url: jdbc:TAOS://192.168.10.16:6030/nerp_db
           #          url: jdbc:TAOS://10.124.252.246:6030/nerp_db
           #          url: jdbc:TAOS://49.4.78.194:17139/nerp_db
           username: root

+ 30 - 0
wps-biz/src/test/java/test.java

@@ -0,0 +1,30 @@
+import com.jiayue.WpsApplication;
+import com.jiayue.biz.domain.EnvironmentalData;
+import com.jiayue.biz.service.EnvironmentalDataService;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import java.sql.Timestamp;
+import java.util.Date;
+
+@SpringBootTest(classes = WpsApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
+public class test {
+
+    @Autowired
+    EnvironmentalDataService environmentalDataService;
+
+    @Test
+    public void test(){
+        EnvironmentalData environmentalData = new EnvironmentalData();
+        environmentalData.setTs(new Timestamp(new Date().getTime()));
+        environmentalData.setWs(1f);
+        environmentalData.setWd(1f);
+        environmentalData.setT(1f);
+        environmentalData.setRh(1f);
+        environmentalData.setPa(1f);
+        environmentalData.setWeatherLookNo("123");
+        environmentalDataService.insertOne(environmentalData);
+    }
+
+}