Browse Source

代码更新

wangchangsheng 2 years ago
parent
commit
af7af41ad2
17 changed files with 2208 additions and 6 deletions
  1. 4 0
      web/backmanagerconfig/pom.xml
  2. 44 0
      web/backmanagerconfig/src/main/java/com/gyee/backconfig/common/cache/RedisAutoConfiguration.java
  3. 46 0
      web/backmanagerconfig/src/main/java/com/gyee/backconfig/common/cache/RedisConfig.java
  4. 3 1
      web/backmanagerconfig/src/main/java/com/gyee/backconfig/controller/IndicatorsController.java
  5. 24 0
      web/backmanagerconfig/src/main/java/com/gyee/backconfig/controller/WindpowerstationController.java
  6. 3 1
      web/backmanagerconfig/src/main/java/com/gyee/backconfig/service/auto/IStandardpointService.java
  7. 7 0
      web/backmanagerconfig/src/main/java/com/gyee/backconfig/service/auto/IWindpowerstationService.java
  8. 49 0
      web/backmanagerconfig/src/main/java/com/gyee/backconfig/service/auto/RedisService.java
  9. 67 1
      web/backmanagerconfig/src/main/java/com/gyee/backconfig/service/auto/impl/IndicatorsServiceImpl.java
  10. 125 0
      web/backmanagerconfig/src/main/java/com/gyee/backconfig/service/auto/impl/RedisServiceImpl.java
  11. 14 3
      web/backmanagerconfig/src/main/java/com/gyee/backconfig/service/auto/impl/StandardpointServiceImpl.java
  12. 34 0
      web/backmanagerconfig/src/main/java/com/gyee/backconfig/service/auto/impl/WindpowerstationServiceImpl.java
  13. 1258 0
      web/backmanagerconfig/src/main/java/com/gyee/backconfig/util/realtimedate/EdosUtil.java
  14. 38 0
      web/backmanagerconfig/src/main/java/com/gyee/backconfig/util/realtimedate/ErrorRequest.java
  15. 232 0
      web/backmanagerconfig/src/main/java/com/gyee/backconfig/util/realtimedate/IEdosUtil.java
  16. 206 0
      web/backmanagerconfig/src/main/java/com/gyee/backconfig/util/realtimedate/JsonObjectHelper.java
  17. 54 0
      web/backmanagerconfig/src/main/java/com/gyee/backconfig/vo/WindpowerstationAdmVo.java

+ 4 - 0
web/backmanagerconfig/pom.xml

@@ -54,6 +54,10 @@
             <artifactId>hutool-all</artifactId>
             <version>5.1.1</version>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.data</groupId>
+            <artifactId>spring-data-redis</artifactId>
+        </dependency>
     </dependencies>
     <build>
         <plugins>

+ 44 - 0
web/backmanagerconfig/src/main/java/com/gyee/backconfig/common/cache/RedisAutoConfiguration.java

@@ -0,0 +1,44 @@
+package com.gyee.backconfig.common.cache;
+
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisOperations;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.StringRedisTemplate;
+
+import java.net.UnknownHostException;
+
+@Configuration
+@ConditionalOnClass(RedisOperations.class)
+@EnableConfigurationProperties(RedisProperties.class)
+public class RedisAutoConfiguration {
+
+
+    @Bean
+    @ConditionalOnMissingBean(name = "redisTemplate")
+    public RedisTemplate<Object, Object> redisTemplate(
+            RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
+        RedisTemplate<Object, Object> template = new RedisTemplate<>();
+        template.setConnectionFactory(redisConnectionFactory);
+        return template;
+
+    }
+
+
+    @Bean
+    @ConditionalOnMissingBean
+    public StringRedisTemplate stringRedisTemplate(
+            RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
+        StringRedisTemplate template = new StringRedisTemplate();
+        template.setConnectionFactory(redisConnectionFactory);
+        return template;
+
+    }
+
+
+}

+ 46 - 0
web/backmanagerconfig/src/main/java/com/gyee/backconfig/common/cache/RedisConfig.java

@@ -0,0 +1,46 @@
+package com.gyee.backconfig.common.cache;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+
+/**
+
+/**
+ *@ClassName RedisConfig
+ *@Description TODO
+ *@Author 谢生杰
+ *@Date 2020/9/14 10:42
+ *@Version 1.0
+ **/
+@Configuration
+public class RedisConfig {
+    @Bean
+    @SuppressWarnings("all")
+    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
+        RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
+        template.setConnectionFactory(factory);
+        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
+        ObjectMapper om = new ObjectMapper();
+        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
+        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
+        jackson2JsonRedisSerializer.setObjectMapper(om);
+        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
+        // key采用String的序列化方式
+        template.setKeySerializer(stringRedisSerializer);
+        // hash的key也采用String的序列化方式
+        template.setHashKeySerializer(stringRedisSerializer);
+        // value序列化方式采用jackson
+        template.setValueSerializer(jackson2JsonRedisSerializer);
+        // hash的value序列化方式采用jackson
+        template.setHashValueSerializer(jackson2JsonRedisSerializer);
+        template.afterPropertiesSet();
+        return template;
+    }
+}

+ 3 - 1
web/backmanagerconfig/src/main/java/com/gyee/backconfig/controller/IndicatorsController.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.gyee.backconfig.config.R;
 import com.gyee.backconfig.model.auto.Indicators;
 import com.gyee.backconfig.service.auto.IIndicatorsService;
+import com.gyee.common.model.PointData;
 import com.gyee.common.model.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -70,6 +71,8 @@ public class IndicatorsController {
             return R.error().data("查询失败!");
         }
 
+
+
     }
 
 
@@ -122,5 +125,4 @@ public class IndicatorsController {
         }
     }
 
-
 }

+ 24 - 0
web/backmanagerconfig/src/main/java/com/gyee/backconfig/controller/WindpowerstationController.java

@@ -7,6 +7,7 @@ import com.gyee.backconfig.config.R;
 import com.gyee.backconfig.model.auto.Windpowerstation;
 import com.gyee.backconfig.service.BackConfigService;
 import com.gyee.backconfig.service.auto.IWindpowerstationService;
+import com.gyee.backconfig.vo.WindpowerstationAdmVo;
 import com.gyee.backconfig.vo.Windpowerstationvo;
 import com.gyee.common.model.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -32,6 +33,8 @@ public class WindpowerstationController {
     @Autowired
     private IWindpowerstationService windpowerstationService;
 
+
+
     @GetMapping("/listByPage")
     @ResponseBody
     @CrossOrigin(origins = "*", maxAge = 3600)
@@ -212,4 +215,25 @@ public class WindpowerstationController {
 
     }
 
+
+    /**
+     * 查询
+     * @param regionid
+     * @param companyid
+     * @return
+     */
+    @GetMapping(value = "/List")
+    public R findList(
+                      @RequestParam(value = "regionid",required = false) String regionid,
+                      @RequestParam(value = "companyid",required = false) String companyid){
+        List<WindpowerstationAdmVo> list = windpowerstationService.getList(regionid,companyid);
+        if (null != list){
+            return R.ok().data(list);
+        }else {
+            return R.error().data("查询失败!");
+        }
+    }
+
+
+
 }

+ 3 - 1
web/backmanagerconfig/src/main/java/com/gyee/backconfig/service/auto/IStandardpointService.java

@@ -25,10 +25,12 @@ public interface IStandardpointService extends IService<Standardpoint> {
 
     boolean  removeByIds(String ids);
 
-    List<Standardpoint> list(String[] points);
+    List<Standardpoint> list(String[] uniformcodes);
 
     String getPointCode(String type);
 
+    List<Standardpoint> list(String uniformcode);
+
 
 
 

+ 7 - 0
web/backmanagerconfig/src/main/java/com/gyee/backconfig/service/auto/IWindpowerstationService.java

@@ -3,6 +3,7 @@ package com.gyee.backconfig.service.auto;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.gyee.backconfig.model.auto.Windpowerstation;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.gyee.backconfig.vo.WindpowerstationAdmVo;
 
 import java.util.List;
 
@@ -29,5 +30,11 @@ public interface IWindpowerstationService extends IService<Windpowerstation> {
     List<Windpowerstation> getList(String companyid);
 
 
+    List<WindpowerstationAdmVo> getList(String regionid, String companyid);
+
+
+
+
+
 
 }

+ 49 - 0
web/backmanagerconfig/src/main/java/com/gyee/backconfig/service/auto/RedisService.java

@@ -0,0 +1,49 @@
+package com.gyee.backconfig.service.auto;
+
+public interface RedisService {
+
+    /**
+     * set存数据
+     * @param key
+     * @param value
+     * @return
+     */
+    boolean set(String key, String value);
+
+    /**
+     * get获取数据
+     * @param key
+     * @return
+     */
+    String get(String key);
+
+//    void getList(String key,int start,int end);
+
+    /**
+     * 设置有效天数
+     * @param key
+     * @param expire
+     * @return
+     */
+    boolean expire(String key, long expire);
+
+    /**
+     * 移除数据
+     * @param key
+     * @return
+     */
+    boolean remove(String key);
+
+
+    /**
+     * 插入对象
+     */
+    void setObject(Object o);
+
+
+    boolean hasKey(String key);
+
+
+    void select(Integer dbIndex);
+
+}

+ 67 - 1
web/backmanagerconfig/src/main/java/com/gyee/backconfig/service/auto/impl/IndicatorsServiceImpl.java

@@ -1,18 +1,27 @@
 package com.gyee.backconfig.service.auto.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.gyee.backconfig.model.auto.Indicators;
 import com.gyee.backconfig.mapper.auto.IndicatorsMapper;
 import com.gyee.backconfig.model.auto.Project;
-import com.gyee.backconfig.service.auto.IIndicatorsService;
+import com.gyee.backconfig.model.auto.Standardpoint;
+import com.gyee.backconfig.model.auto.Windpowerstationpointnew;
+import com.gyee.backconfig.service.auto.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gyee.common.model.PointData;
 import com.gyee.common.model.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Service;
+import org.springframework.web.client.HttpClientErrorException;
+import org.springframework.web.client.RestTemplate;
 
 import javax.xml.crypto.Data;
 import java.util.Arrays;
+import java.util.List;
 
 /**
  * <p>
@@ -25,6 +34,18 @@ import java.util.Arrays;
 @Service
 public class IndicatorsServiceImpl extends ServiceImpl<IndicatorsMapper, Indicators> implements IIndicatorsService {
 
+    private RestTemplate restTemplate =new RestTemplate();
+    private static String baseURL = "http://10.81.3.152:8011/ts";
+
+    @Autowired
+    private IStandardpointService standardpointService;
+
+    @Autowired
+    private IWindturbinetestingpointnewService windturbinetestingpointnewService;
+
+    @Autowired
+    private IWindpowerstationpointnewService windpowerstationpointnewService;
+
     @Override
     public IPage<Indicators> getList(String id, String stationid, String stationname, String kay, Data  createtime, String pageNum, String pageSize) {
         QueryWrapper<Indicators> qw = new QueryWrapper<>();
@@ -68,6 +89,19 @@ public class IndicatorsServiceImpl extends ServiceImpl<IndicatorsMapper, Indicat
             b= this.updateById(indicators);
         }
 
+        List<Windpowerstationpointnew>  stationlist = windpowerstationpointnewService.getStationpointByUniformcode(indicators.getStationid(),indicators.getKay());
+
+        if(null != stationlist && stationlist.size()>0){
+            PointData point = new PointData();
+            point.setEdnaId(stationlist.get(0).getCode());
+            point.setPointTime(indicators.getCreatetime().getTime());
+            point.setPointValueInDouble(Double.valueOf(indicators.getValue()));
+            b = addSinglePoint(point);
+        }
+
+
+
+
         return b;
     }
 
@@ -77,4 +111,36 @@ public class IndicatorsServiceImpl extends ServiceImpl<IndicatorsMapper, Indicat
         boolean b = this.removeByIds(Arrays.asList(strings));
         return b;
     }
+
+
+    public boolean addSinglePoint(PointData point) {
+        String url = baseURL + "/latest";
+        try {
+            String  result = restTemplate.postForObject(url, convertPointData(point), String.class);
+        } catch (HttpClientErrorException exception) {
+            if (exception.getStatusCode() == HttpStatus.NOT_FOUND) {
+                return false;
+            } else {
+                return false;
+            }
+        }
+        return true;
+    }
+
+
+    private JSONObject convertPointData(PointData pd) {
+        JSONObject jo = new JSONObject();
+        jo.put("tagName", pd.getEdnaId());
+        JSONObject joo = new JSONObject();
+        joo.put("ts", pd.getPointTime()*1000);
+        joo.put("status", 0);
+        joo.put("doubleValue", pd.getPointValueInDouble());
+        jo.put("tsData", joo);
+        return jo;
+    }
+
+
+
+
+
 }

+ 125 - 0
web/backmanagerconfig/src/main/java/com/gyee/backconfig/service/auto/impl/RedisServiceImpl.java

@@ -0,0 +1,125 @@
+package com.gyee.backconfig.service.auto.impl;
+
+import com.gyee.backconfig.service.auto.RedisService;
+import org.springframework.dao.DataAccessException;
+import org.springframework.data.redis.connection.RedisConnection;
+import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
+import org.springframework.data.redis.core.RedisCallback;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.RedisSerializer;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.lang.reflect.Field;
+import java.util.concurrent.TimeUnit;
+
+@Service("redisService")
+public class RedisServiceImpl implements RedisService {
+
+    @Resource
+    private RedisTemplate<String, ?> redisTemplate;
+
+    @Override
+    public boolean set(final String key, final String value) {
+        boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {
+            @Override
+            public Boolean doInRedis(RedisConnection connection) throws DataAccessException {
+                RedisSerializer<String> serializer = redisTemplate.getStringSerializer();
+                connection.set(serializer.serialize(key), serializer.serialize(value));
+                return true;
+            }
+        });
+        return result;
+    }
+
+    @Override
+    public String get(final String key) {
+        String result = redisTemplate.execute(new RedisCallback<String>() {
+            @Override
+            public String doInRedis(RedisConnection connection) throws DataAccessException {
+                RedisSerializer<String> serializer = redisTemplate.getStringSerializer();
+                byte[] value = connection.get(serializer.serialize(key));
+                return serializer.deserialize(value);
+            }
+        });
+        return result;
+    }
+
+
+
+    @Override
+    public boolean expire(final String key, long expire) {
+        return redisTemplate.expire(key, expire, TimeUnit.SECONDS);
+    }
+
+    @Override
+    public boolean remove(final String key) {
+        boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {
+            @Override
+            public Boolean doInRedis(RedisConnection connection) throws DataAccessException {
+                RedisSerializer<String> serializer = redisTemplate.getStringSerializer();
+                connection.del(key.getBytes());
+                return true;
+            }
+        });
+        return result;
+    }
+
+    @Override
+    public boolean hasKey(final String key) {
+        try {
+            return redisTemplate.hasKey(key);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    @Override
+    public void setObject(Object obj) {
+        Field[] fields = obj.getClass().getDeclaredFields();
+        for(int i = 0 , len = fields.length; i < len; i++) {
+            // 对于每个属性,获取属性名
+            String varName = fields[i].getName();
+            try {
+                // 获取原来的访问控制权限
+                boolean accessFlag = fields[i].isAccessible();
+                // 修改访问控制权限
+                fields[i].setAccessible(true);
+                // 获取在对象f中属性fields[i]对应的对象中的变量
+                Object o;
+                try {
+                    o = fields[i].get(obj);
+                    if (o!=null){
+                        set(varName, String.valueOf(o));
+                    }else {
+                        set(varName,"");
+                    }
+
+                    //System.err.println("传入的对象中包含一个如下的变量:" + varName + " = " + o);
+                } catch (IllegalAccessException e) {
+                    // TODO Auto-generated catch block
+                    e.printStackTrace();
+                }
+                // 恢复访问控制权限
+                fields[i].setAccessible(accessFlag);
+            } catch (IllegalArgumentException ex) {
+                ex.printStackTrace();
+            }
+        }
+
+    }
+
+    public void select(Integer dbIndex) {
+        if (dbIndex == null || dbIndex > 15 || dbIndex < 0) {
+            dbIndex = 0;
+        }
+        LettuceConnectionFactory jedisConnectionFactory = (LettuceConnectionFactory) redisTemplate
+                .getConnectionFactory();
+        jedisConnectionFactory.setDatabase(dbIndex);
+        redisTemplate.setConnectionFactory(jedisConnectionFactory);
+        jedisConnectionFactory.afterPropertiesSet();
+//        jedisConnectionFactory.resetConnection();
+
+    }
+}

+ 14 - 3
web/backmanagerconfig/src/main/java/com/gyee/backconfig/service/auto/impl/StandardpointServiceImpl.java

@@ -71,13 +71,13 @@ public class StandardpointServiceImpl extends ServiceImpl<StandardpointMapper, S
     }
 
     @Override
-    public List<Standardpoint> list(String[] points) {
+    public List<Standardpoint> list(String[] uniformcodes) {
         QueryWrapper<Standardpoint> qw = new QueryWrapper<>();
 
 
 
-        if (StringUtils.isNotEmpty(points)){
-            qw.in("uniformcode",points);
+        if (StringUtils.isNotEmpty(uniformcodes)){
+            qw.in("uniformcode",uniformcodes);
         }
         List<Standardpoint> list = baseMapper.selectList(qw);
         return list;
@@ -108,5 +108,16 @@ public class StandardpointServiceImpl extends ServiceImpl<StandardpointMapper, S
         return code+strcount;
     }
 
+    @Override
+    public List<Standardpoint> list(String uniformcode) {
+        QueryWrapper<Standardpoint> qw = new QueryWrapper<>();
+
+        if (StringUtils.isNotEmpty(uniformcode)){
+            qw.eq("uniformcode",uniformcode);
+        }
+        List<Standardpoint> list = baseMapper.selectList(qw);
+        return list;
+    }
+
 
 }

+ 34 - 0
web/backmanagerconfig/src/main/java/com/gyee/backconfig/service/auto/impl/WindpowerstationServiceImpl.java

@@ -1,17 +1,24 @@
 package com.gyee.backconfig.service.auto.impl;
 
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.TypeReference;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.gyee.backconfig.model.auto.Windpowerstation;
 import com.gyee.backconfig.mapper.auto.WindpowerstationMapper;
+import com.gyee.backconfig.model.auto.Windpowerstationpointnew;
 import com.gyee.backconfig.service.auto.IWindpowerstationService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gyee.backconfig.service.auto.RedisService;
+import com.gyee.backconfig.vo.WindpowerstationAdmVo;
 import com.gyee.common.model.StringUtils;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -24,6 +31,8 @@ import java.util.List;
 @Service
 public class WindpowerstationServiceImpl extends ServiceImpl<WindpowerstationMapper, Windpowerstation> implements IWindpowerstationService {
 
+    @Resource
+    private RedisService redisService;
 
     @Override
     public IPage<Windpowerstation> getList(String id, String name, String code, String companyid, String pageNum, String pageSize) {
@@ -88,4 +97,29 @@ public class WindpowerstationServiceImpl extends ServiceImpl<WindpowerstationMap
         return list;
     }
 
+    @Override
+    public List<WindpowerstationAdmVo> getList(String regionid, String companyid) {
+        QueryWrapper<Windpowerstation> qw = new QueryWrapper<>();
+
+        if (StringUtils.isNotEmpty(regionid)){
+            qw.eq("regionid",regionid);
+        }
+
+        if (StringUtils.isNotEmpty(companyid)){
+            qw.eq("companyid",companyid);
+        }
+
+        List<Windpowerstation> list = baseMapper.selectList(qw);
+
+        list.stream().forEach(i->{
+            String wpString = redisService.get(i.getId());
+            Map<String, Windpowerstationpointnew> stringMapMap = JSONObject.parseObject(wpString, new TypeReference<Map<String, Windpowerstationpointnew>>() {
+            });
+        });
+
+        return null;
+
+    }
+
+
 }

File diff suppressed because it is too large
+ 1258 - 0
web/backmanagerconfig/src/main/java/com/gyee/backconfig/util/realtimedate/EdosUtil.java


+ 38 - 0
web/backmanagerconfig/src/main/java/com/gyee/backconfig/util/realtimedate/ErrorRequest.java

@@ -0,0 +1,38 @@
+package com.gyee.backconfig.util.realtimedate;
+
+import com.gyee.common.model.PointData;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @descrition:接口请求失败返回操作类
+ * @author:Wanghs
+ * @date:2018-05-21
+ */
+public class ErrorRequest {
+
+    public static List<PointData> RequestListError(String pointId) {
+        List<PointData> dataList = new ArrayList<>();
+        return dataList;
+    }
+
+    public static List<PointData> RequestListError(String... pointId) {
+        List<PointData> dataList = new ArrayList<>();
+        return dataList;
+    }
+
+    public static PointData RequestError(String pointId) {
+        PointData data = new PointData();
+        data.setPointValueInDouble(0);
+        data.setPointName("0");
+        return data;
+    }
+
+    public static Map<String, Double> RequestMapError() {
+        Map<String, Double> resultMap = new HashMap();
+        return resultMap;
+    }
+}

+ 232 - 0
web/backmanagerconfig/src/main/java/com/gyee/backconfig/util/realtimedate/IEdosUtil.java

@@ -0,0 +1,232 @@
+package com.gyee.backconfig.util.realtimedate;
+
+import com.gyee.backconfig.model.auto.Windpowerstationpointnew;
+import com.gyee.backconfig.model.auto.Windturbinetestingpointnew;
+import com.gyee.common.model.DNAStatVal;
+import com.gyee.common.model.DNAVal;
+import com.gyee.common.model.PointData;
+
+import java.util.List;
+import java.util.Map;
+
+public interface IEdosUtil {
+
+
+    /**
+     * 通过风场测点获得测点实时数据
+     * @param point 只是用了code字段,作为唯一标识
+     * @return
+     * @throws Exception
+     */
+    public PointData getRealData(Windpowerstationpointnew point) throws Exception;
+
+
+    /**
+     * 通过风场测点获得测点历史快照数据
+     * @param point 只是用了code字段,作为唯一标识
+     * @param beginDate 开始时间(秒级)
+     * @param endDate 结束时间(秒级)
+     * @param count  点数
+     * @param pried  时间间隔
+     * @return
+     * @throws Exception
+     */
+    public List<PointData> getHistoryDatasSnap(Windpowerstationpointnew point, Long beginDate, Long endDate, Long count, Long pried) throws Exception;
+
+    /**
+     * 通过风场测点获得测点历史存储数据,存多少取多少
+     * @param point 只是用了code字段,作为唯一标识
+     * @param beginDate 开始时间(秒级)
+     * @param endDate 结束时间(秒级)
+     * @return
+     * @throws Exception
+     */
+    public List<PointData> getHistoryDatasRaw(Windpowerstationpointnew point, Long beginDate, Long endDate) throws Exception;
+
+    /**
+     * 通过风机测点获得测点实时数据
+     * @param point 只是用了id字段,作为唯一标识
+     * @return
+     * @throws Exception
+     */
+    public PointData getRealData(Windturbinetestingpointnew point) throws Exception;
+
+    /**
+     * 通过风机测点获得历史快照
+     * @param point  只是用了id字段,作为唯一标识
+     * @param  beginDate 开始时间(秒级)
+     * @param endDate 结束时间(秒级)
+     * @param count  点数
+     * @param pried  时间间隔
+     * @return
+     * @throws Exception
+     */
+    public List<PointData> getHistoryDatasSnap(Windturbinetestingpointnew point, Long beginDate, Long endDate, Long count, Long pried) throws Exception;
+
+    /**
+     * 通过风机测点获得测点历史存储数据,存多少取多少
+     * @param point 只是用了id字段,作为唯一标识
+     * @param  beginDate 开始时间(秒级)
+     * @param endDate 结束时间(秒级)
+     * @return
+     * @throws Exception
+     */
+    public List<PointData> getHistoryDatasRaw(Windturbinetestingpointnew point, Long beginDate, Long endDate) throws Exception;
+
+
+    /**
+     * 通过风机测点获得测点实时数据
+     * @param pointid 测点编号
+     * @return
+     * @throws Exception
+     */
+    public PointData getRealData(String pointid) throws Exception;
+
+    /**
+     * 通过全局点名获得测点实时数据 读取多个点
+     * @param pointids 测点的数组
+     * @return 列表集合
+     * @throws Exception
+     */
+    public List<PointData> getRealData(String... pointids) throws Exception;
+    /**
+     * 通过全局点名获得测点实时数据 读取多个点
+     * @param pointids 测点的列表
+     * @return 列表集合
+     * @throws Exception
+     */
+    public List<PointData> getRealData(List<String> pointids) throws Exception;
+    /**
+     * 通过全局点名获得测点实时数据 读取多个点
+     * @param pointids 测点的数组
+     * @return Map集合
+     * @throws Exception
+     */
+    public Map<String,Double> getRealDataMap(String... pointids) throws Exception;
+
+    /**
+     * 通过全局点名获得历史数据快照
+     * @param pointid  全局点名
+     * @param beginDate 开始时间(秒级)
+     * @param endDate 结束时间(秒级)
+     * @param count  点数
+     * @param pried  时间间隔
+     * @return
+     * @throws Exception
+     */
+    public List<PointData> getHistoryDatasSnap(String pointid, Long beginDate, Long endDate, Long count, Long pried) throws Exception;
+
+    /**
+     * 通过风机测点获得测点历史存储数据,存多少取多少
+     * @param pointid 全局点名
+     * @param  beginDate 开始时间(秒级)
+     * @param endDate 结束时间(秒级)
+     * @return
+     * @throws Exception
+     */
+    public List<PointData> getHistoryDatasRaw(String pointid, Long beginDate, Long endDate) throws Exception;
+
+
+    /**
+     * 通过风机测点获得测点指定时间周期的统计数据
+     * @param point 只是用了id字段,作为唯一标识
+     * @param  beginDate 开始时间(秒级)
+     * @param endDate 结束时间(秒级)
+     * @param count  点数
+     * @param pried  时间间隔
+     * @type 0、最大值。1、最小值。、平均值
+     * @return
+     * @throws Exception
+     */
+    public List<PointData> getHistStat(Windturbinetestingpointnew point, Long beginDate, Long endDate, Long count, Long pried, int type) throws Exception;
+
+    /**
+     * 通过风场测点获得测点指定时间周期的统计数据
+     * @param point 只是用了code字段,作为唯一标识
+     * @param  beginDate 开始时间(秒级)
+     * @param endDate 结束时间(秒级)
+     * @param count  点数
+     * @param pried  时间间隔
+     * @type 0、最大值。1、最小值。、平均值
+     * @return
+     * @throws Exception
+     */
+    public List<PointData> getHistStat(Windpowerstationpointnew point, Long beginDate, Long endDate, Long count, Long pried, int type) throws Exception;
+
+    /**
+     * 通过全局点名获得测点指定时间周期的统计数据
+     * @param pointid 全局点名
+     * @param  beginDate 开始时间(秒级)
+     * @param endDate 结束时间(秒级)
+     * @param count  点数
+     * @param pried  时间间隔
+     * @type 0、最大值。1、最小值。、平均值
+     * @return
+     * @throws Exception
+     */
+    public List<PointData> getHistStat(String pointid, Long beginDate, Long endDate, Long count, Long pried, int type) throws Exception;
+
+    /**
+     * 通过全局点名获得测点指定时间周期的统计数据 同时返回max、min、avg数据
+     * @param point 全局点名
+     * @param  beginDate 开始时间(秒级)
+     * @param endDate 结束时间(秒级)
+     * @param pried  时间间隔
+     * @return
+     * @throws Exception
+     */
+    public DNAStatVal[] getHistStat(String point, Long beginDate, Long endDate, Integer pried) throws Exception;
+    /**
+     * 补录单点历史数据
+     * @param point 测点对象
+     * @return
+     * @throws Exception
+     */
+    public void updatePoint(PointData point) throws Exception;
+
+    /**
+     * 批量查询实时数据
+     * @param tagNames 测点字符串数组
+     * @return
+     * @throws Exception
+     */
+
+    public DNAVal[] getRealtimeTagValues(String... tagNames) throws Exception;
+
+    /**
+     * 批量插入历史数据
+     * @param pointls 测点对象集合
+     * @throws Exception
+     */
+    public void updatePoint(List<PointData> pointls) throws Exception;
+
+    /**
+     * 单点写入实时数据
+     * @param point 测点对象
+     * @throws Exception
+     */
+    public void sendSinglePoint(PointData point) throws Exception ;
+    /**
+     * 批量写入实时数据
+     * @param pointls 测点对象列表
+     * @throws Exception
+     */
+    public void sendMultiPoint(List<PointData> pointls) throws Exception ;
+
+    /**
+     * 通过两个字符串数组对象批量写入实时数据
+     * @param realvalue 插入值字符串数组
+     * @param pointls 存储对象数组对象
+     * @throws Exception
+     */
+
+    public void sendMultiPoint(String[] realvalue,DNAVal[] pointls) throws Exception;
+    /**
+     *
+     * @param nameList 测点名称列表集合
+     * @param tTime  时间点(秒级)
+     * @return
+     * @throws Exception
+     */
+    public DNAVal[] getHistMatrix(String[] nameList, int tTime) throws Exception;
+}

+ 206 - 0
web/backmanagerconfig/src/main/java/com/gyee/backconfig/util/realtimedate/JsonObjectHelper.java

@@ -0,0 +1,206 @@
+package com.gyee.backconfig.util.realtimedate;
+
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.gyee.common.model.DNAStatVal;
+import com.gyee.common.model.DNAVal;
+import com.gyee.common.model.PointData;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+
+/**
+ * @descrition:JSONObject转实体辅助类
+ * @author:Wanghs
+ * @date:2018-05-10
+ */
+public class JsonObjectHelper {
+    public static List<PointData> phrasePointData(JSONArray jsonArray, String tagName) {
+        List<PointData> result = new ArrayList<>();
+
+        for (int i = 0; i < jsonArray.size(); i++) {
+            JSONObject tsData = jsonArray.getJSONObject(i);
+
+            Long ts = tsData.getLong("ts");
+            String pointValue = null;
+            if (tsData.containsKey("doubleValue")) {
+                pointValue = tsData.getString("doubleValue");
+            } else if (tsData.containsKey("booleanValue")) {
+                pointValue = tsData.getString("booleanValue");
+            } else if (tsData.containsKey("longValue")) {
+                pointValue = tsData.getString("longValue");
+            } else if (tsData.containsKey("stringValue")) {
+                pointValue = tsData.getString("stringValue");
+            }
+            PointData pointData = new PointData();
+            pointData.setEdnaId(tagName);
+            pointData.setPointName("1");
+            pointData.setPointTime(ts / 1000);
+            pointData.setPointValue(pointValue);
+            pointData.setPointValueInDouble(Double.parseDouble(pointValue));
+            //System.out.println("key= " + tagName + ", ts = " + ts + ", value = " + pointValue);
+            result.add(pointData);
+        }
+        return result;
+    }
+
+
+    public static List<PointData> phrasePointData(JSONObject jsonObject) {
+        List<PointData> result = new ArrayList<>();
+        Iterator<String> sIterator = jsonObject.keySet().iterator();
+        while (sIterator.hasNext()) {
+            // 获得key
+            String key = sIterator.next();
+            // 根据key获得value, value也可以是JSONObject,JSONArray,使用对应的参数接收即可
+            JSONObject jsonData = jsonObject.getJSONObject(key);
+            Long ts = 0l;
+
+            if (jsonData!=null){
+                ts  = jsonData.getLong("ts");
+                String pointValue = null;
+                if (jsonData.containsKey("doubleValue")) {
+                    pointValue = jsonData.getString("doubleValue");
+                } else if (jsonData.containsKey("booleanValue")) {
+                    pointValue = jsonData.getString("booleanValue");
+                } else if (jsonData.containsKey("longValue")) {
+                    pointValue = jsonData.getString("longValue");
+                } else if (jsonData.containsKey("stringValue")) {
+                    pointValue = jsonData.getString("stringValue");
+                }
+                PointData pointData = new PointData();
+                pointData.setEdnaId(key);
+                pointData.setPointName("1");
+                pointData.setPointValue(pointValue);
+                pointData.setPointTime(ts/1000);
+                if(pointValue.equals("false")  )
+                {
+                    pointData.setPointValueInDouble(0.0);
+                }else  if(pointValue.equals("true") )
+                {
+                    pointData.setPointValueInDouble(1.0);
+                }else
+                {
+                    pointData.setPointValueInDouble(Double.parseDouble(pointValue));
+                }
+
+                //  System.out.println("key= " + key + ", ts = " + ts + ", value = " + pointValue);
+                result.add(pointData);
+            }
+        }
+        return result;
+    }
+    /**
+     * @param arry    DoubleStatData集合
+     * @param tagName 标签点名
+     * @param type    0、最大值。1、最小值。2、平均值
+     */
+    public static List<PointData> GeneralTsDataToPointDataByStat(JSONArray arry, String tagName, int type) {
+        List<PointData> result = new ArrayList<>();
+        for (int i = 0; i < arry.size(); i++) {
+            JSONObject jsonData = arry.getJSONObject(i);
+            PointData data = new PointData();
+            data.setEdnaId(tagName);
+            data.setPointName("1");
+            JSONObject avgData = null;
+            JSONObject maxData = null;
+            JSONObject minData = null;
+            if (jsonData.containsKey("avg")) {
+                avgData = jsonData.getJSONObject("avg");
+            }
+            if (jsonData.containsKey("max")) {
+                maxData = jsonData.getJSONObject("max");
+            }
+            if (jsonData.containsKey("min")) {
+                minData = jsonData.getJSONObject("min");
+            }
+            switch (type) {
+                case 0:
+                    data.setPointValue(String.valueOf(maxData.getString("doubleValue")));
+                    data.setPointValueInDouble(Double.valueOf(maxData.getString("doubleValue")));
+                    data.setPointTime(Long.valueOf(maxData.getString("ts")) / 1000);
+                    break;
+                case 1:
+                    data.setPointValue(String.valueOf(minData.getString("doubleValue")));
+                    data.setPointValueInDouble(Double.valueOf(minData.getString("doubleValue")));
+                    data.setPointTime(Long.valueOf(minData.getString("ts")) / 1000);
+                    break;
+                case 2:
+                    data.setPointValue(String.valueOf(avgData.getString("doubleValue")));
+                    data.setPointValueInDouble(Double.valueOf(avgData.getString("doubleValue")));
+                    data.setPointTime(Long.valueOf(avgData.getString("ts")) / 1000);
+                    break;
+                default:
+                    break;
+            }
+            result.add(data);
+        }
+        return result;
+    }
+
+    public static DNAVal[] phraseDNAVal(JSONObject jsonObject, String[] tagName) {
+        DNAVal[] arr = new DNAVal[jsonObject.size()];
+        List<DNAVal> list = new ArrayList<>();
+        Iterator<String> sIterator = jsonObject.keySet().iterator();
+
+        for (int i = 0; i < tagName.length; i++) {
+            // 获得key
+            String key = tagName[i];
+            // 根据key获得value, value也可以是JSONObject,JSONArray,使用对应的参数接收即可
+            JSONObject jsonData = jsonObject.getJSONObject(key);
+            DNAVal data = new DNAVal();
+            data.Time = Integer.parseInt(String.valueOf(Long.valueOf(jsonData.getString("ts")) / 1000));
+            data.Status = (short) jsonData.getShortValue("status");
+            data.DValue = (Double.valueOf(jsonData.getDoubleValue("doubleValue")));
+            list.add(data);
+        }
+
+        return list.toArray(arr);
+    }
+
+    public static DNAStatVal[] phraseDNAVal(JSONArray jsonArray) {
+
+        DNAStatVal[] arr = new DNAStatVal[jsonArray.size()];
+        List<DNAStatVal> list = new ArrayList<>();
+        for (int i = 0; i < jsonArray.size(); i++) {
+            JSONObject jsonData = jsonArray.getJSONObject(i);
+            JSONObject avgData = null;
+            JSONObject maxData = null;
+            JSONObject minData = null;
+            if (jsonData.containsKey("avg")) {
+                avgData = jsonData.getJSONObject("avg");
+            }
+            if (jsonData.containsKey("max")) {
+                maxData = jsonData.getJSONObject("max");
+            }
+            if (jsonData.containsKey("min")) {
+                minData = jsonData.getJSONObject("min");
+            }
+            DNAStatVal statVal = new DNAStatVal();
+
+            DNAVal avgVal = new DNAVal();
+            DNAVal maxVal = new DNAVal();
+            DNAVal minVal = new DNAVal();
+
+            avgVal.Time = Integer.valueOf(String.valueOf(Long.valueOf(avgData.getString("ts")) / 1000));
+            avgVal.DValue = Double.valueOf(avgData.getString("doubleValue"));
+
+            maxVal.Time =  Integer.valueOf(String.valueOf(Long.valueOf(maxData.getString("ts")) / 1000));
+            maxVal.DValue = Double.valueOf(maxData.getString("doubleValue"));
+
+            minVal.Time =  Integer.valueOf(String.valueOf(Long.valueOf(minData.getString("ts")) / 1000));
+            minVal.DValue = Double.valueOf(minData.getString("doubleValue"));
+
+            statVal.max = maxVal;
+            statVal.min = minVal;
+            statVal.avg = avgVal;
+
+            list.add(statVal);
+        }
+
+        return list.toArray(arr);
+    }
+
+}

+ 54 - 0
web/backmanagerconfig/src/main/java/com/gyee/backconfig/vo/WindpowerstationAdmVo.java

@@ -0,0 +1,54 @@
+package com.gyee.backconfig.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class WindpowerstationAdmVo {
+
+    private String code;
+
+    private String name;
+
+    private String address;
+
+    private String telephone;
+
+    private Integer capacity;
+
+    private String capacityunit;
+
+    private Integer quantity;
+
+    private String aname;
+
+    private Integer longitude;
+
+    private Integer latitude;
+
+    private String photo;
+
+    private String companyid;
+
+    private String systemmanufact;
+
+    private String headfarm;
+
+    private String headfarmphone;
+
+    private String model;
+
+    private Integer ordernum;
+
+    private Integer altitude;
+
+    private Integer height;
+
+    private Integer version;
+
+    private Integer current;
+
+    private Integer pagesize;
+    private List<Projectvo> data;
+}