Browse Source

单机对比

wangchangsheng 2 years ago
parent
commit
30ac0a5fcd

+ 42 - 2
web/runeconomy-xk/src/main/java/com/gyee/runeconomy/controller/ProBasicEquipmentController.java

@@ -1,9 +1,15 @@
 package com.gyee.runeconomy.controller;
 
 
-import org.springframework.web.bind.annotation.RequestMapping;
+import com.gyee.runeconomy.dto.R;
+import com.gyee.runeconomy.dto.ResultMsg;
+import com.gyee.runeconomy.model.auto.ProBasicEquipment;
+import com.gyee.runeconomy.service.auto.IProBasicEquipmentService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
 
-import org.springframework.web.bind.annotation.RestController;
+import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -17,4 +23,38 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping("//pro-basic-equipment")
 public class ProBasicEquipmentController {
 
+
+    @Autowired
+    private IProBasicEquipmentService proBasicEquipmentService;
+
+
+    /**
+     * 多条件获取设备列表
+     *
+     * @param companyId
+     * @param windpowerstationIds
+     * @param projectIds
+     * @param lineIds
+     * @param type
+     * @return
+     */
+    @GetMapping("equipment-list")
+    @ResponseBody
+    @CrossOrigin(origins = "*", maxAge = 3600)
+    public R getWtPowerCurveFittingList(
+            @RequestParam(value = "companyId", required = true) String companyId,
+            @RequestParam(value = "windpowerstationIds", required = false) String windpowerstationIds,
+            @RequestParam(value = "projectIds", required = false) String projectIds,
+            @RequestParam(value = "lineIds", required = false) String lineIds,
+            @RequestParam(value = "type", required = false) String type) {
+
+        List<ProBasicEquipment> list = proBasicEquipmentService.getProBasicEquipmentList(companyId, windpowerstationIds, projectIds, lineIds, type);
+
+        if (null != list) {
+            return R.data(ResultMsg.ok(list));
+        } else {
+            return R.error(ResultMsg.error());
+        }
+    }
+
 }

+ 81 - 0
web/runeconomy-xk/src/main/java/com/gyee/runeconomy/controller/performacompare/EquipmentPerformaCompareController.java

@@ -0,0 +1,81 @@
+package com.gyee.runeconomy.controller.performacompare;
+
+
+import com.gyee.runeconomy.dto.R;
+import com.gyee.runeconomy.dto.ResultMsg;
+import com.gyee.runeconomy.model.auto.ProEconWtPowerCurveFitting;
+import com.gyee.runeconomy.service.performacompare.EquipmentPerformaCompareService;
+import io.swagger.annotations.Api;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 单机新能比较 前端控制器
+ * </p>
+ *
+ * @author wang
+ * @since 2022-11-22
+ */
+@RestController
+@RequestMapping("//performa-compare")
+@Api(value = "单机新能比较", tags = "单机新能比较")
+public class EquipmentPerformaCompareController {
+
+
+    @Autowired
+    private EquipmentPerformaCompareService equipmentPerformaCompareService;
+
+
+    /**
+     * 单机横向对比列表
+     *
+     * @param windturbineIds
+     * @param date
+     * @return
+     */
+    @GetMapping("/equipment-performa-compare")
+    @ResponseBody
+    @CrossOrigin(origins = "*", maxAge = 3600)
+    public R daydjhxdbtop(
+            @RequestParam(value = "type", required = true) String type,
+            @RequestParam(value = "windturbineIds", required = true) String windturbineIds,
+            @RequestParam(value = "date", required = true) String date) {
+
+        List<Object> objects =  equipmentPerformaCompareService.getEquipmentPerformaCompareList(type, windturbineIds, date);
+
+
+        if (null != objects) {
+            return R.data(ResultMsg.ok(objects));
+        } else {
+            return R.error(ResultMsg.error());
+        }
+    }
+
+
+    /**
+     * 实际拟合曲线
+     * @param windturbineIds
+     * @return
+     */
+    @GetMapping("curve-fitting")
+    @ResponseBody
+    @CrossOrigin(origins = "*", maxAge = 3600)
+    public R getWtPowerCurveFittingList(
+            @RequestParam(value = "windturbineIds", required = true) String windturbineIds ){
+
+        Map<String, List<ProEconWtPowerCurveFitting>> map =  equipmentPerformaCompareService.getgroupProEconWtPowerCurveFittingList(windturbineIds);
+
+
+        if (null != map) {
+            return R.data(ResultMsg.ok(map));
+        } else {
+            return R.error(ResultMsg.error());
+        }
+    }
+
+
+}

+ 14 - 0
web/runeconomy-xk/src/main/java/com/gyee/runeconomy/service/auto/IProBasicEquipmentService.java

@@ -3,6 +3,8 @@ package com.gyee.runeconomy.service.auto;
 import com.gyee.runeconomy.model.auto.ProBasicEquipment;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * <p>
  * 风机&光伏 服务类
@@ -13,4 +15,16 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IProBasicEquipmentService extends IService<ProBasicEquipment> {
 
+    /**
+     * 多场站 多期次线路获取设备列表
+     * @param companyIds
+     * @param windpowerstationIds
+     * @param projectIds
+     * @param lineIds
+     * @return
+     */
+    List<ProBasicEquipment> getProBasicEquipmentList(String companyIds, String windpowerstationIds, String projectIds, String lineIds,String  type);
+
+
+
 }

+ 4 - 0
web/runeconomy-xk/src/main/java/com/gyee/runeconomy/service/auto/IProEconWtAlysisDayService.java

@@ -3,6 +3,8 @@ package com.gyee.runeconomy.service.auto;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.gyee.runeconomy.model.auto.ProEconWtAlysisDay;
 
+import java.util.List;
+
 /**
  * <p>
  * 风机日性能分析表 服务类
@@ -13,4 +15,6 @@ import com.gyee.runeconomy.model.auto.ProEconWtAlysisDay;
  */
 public interface IProEconWtAlysisDayService extends IService<ProEconWtAlysisDay> {
 
+    List<ProEconWtAlysisDay> getProEconWtAlysisDayList(String windturbineIds, String date);
+
 }

+ 5 - 0
web/runeconomy-xk/src/main/java/com/gyee/runeconomy/service/auto/IProEconWtPowerCurveFittingService.java

@@ -3,6 +3,9 @@ package com.gyee.runeconomy.service.auto;
 import com.gyee.runeconomy.model.auto.ProEconWtPowerCurveFitting;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * <p>
  * 风电机功率拟合曲线 服务类
@@ -14,4 +17,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
 public interface IProEconWtPowerCurveFittingService extends IService<ProEconWtPowerCurveFitting> {
 
     public int deleteProEconWtPowerCurveFitting();
+
+    Map<String, List<ProEconWtPowerCurveFitting>>   getgroupProEconWtPowerCurveFittingList(String windturbineIds);
 }

+ 4 - 0
web/runeconomy-xk/src/main/java/com/gyee/runeconomy/service/auto/IProEconWtwindDayInfoService.java

@@ -3,6 +3,8 @@ package com.gyee.runeconomy.service.auto;
 import com.gyee.runeconomy.model.auto.ProEconWtwindDayInfo;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * <p>
  * 1、日风向平均风速
@@ -30,4 +32,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IProEconWtwindDayInfoService extends IService<ProEconWtwindDayInfo> {
 
+    List<ProEconWtwindDayInfo> getProEconWtwindDayInfoList(String windturbineIds, String date);
+
 }

+ 42 - 0
web/runeconomy-xk/src/main/java/com/gyee/runeconomy/service/auto/impl/ProBasicEquipmentServiceImpl.java

@@ -1,11 +1,17 @@
 package com.gyee.runeconomy.service.auto.impl;
 
+import com.gyee.common.model.StringUtils;
+import com.gyee.common.util.SortUtils;
+import com.gyee.runeconomy.init.CacheContext;
 import com.gyee.runeconomy.model.auto.ProBasicEquipment;
 import com.gyee.runeconomy.mapper.auto.ProBasicEquipmentMapper;
 import com.gyee.runeconomy.service.auto.IProBasicEquipmentService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
  * <p>
  * 风机&光伏 服务实现类
@@ -17,4 +23,40 @@ import org.springframework.stereotype.Service;
 @Service
 public class ProBasicEquipmentServiceImpl extends ServiceImpl<ProBasicEquipmentMapper, ProBasicEquipment> implements IProBasicEquipmentService {
 
+
+    @Override
+    public List<ProBasicEquipment> getProBasicEquipmentList(String companyId, String windpowerstationIds, String projectIds, String lineIds,String  type) {
+
+
+        List<ProBasicEquipment> list = CacheContext.wtls;
+
+        if (StringUtils.isNotEmpty(type) && !type.equals("0")){
+            String finalType  =  type.equals("-1") ? "_FDC" : "_GDC";
+            list = list.stream().filter(eq-> eq.getWindpowerstationId().indexOf(finalType) >= 0).collect(Collectors.toList());
+        }
+
+        //判断后缀是区域还是公司
+        if (StringUtils.isNotEmpty(companyId) && companyId.endsWith("_ZGS")) {
+            list = list.stream().filter(eq->companyId.equals(eq.getCompanyId())).collect(Collectors.toList());
+        }
+        if (StringUtils.isNotEmpty(companyId) && companyId.endsWith("_RGN")) {
+            list = list.stream().filter(eq->companyId.equals(eq.getRegionId())).collect(Collectors.toList());
+        }
+
+
+        if (StringUtils.isNotEmpty(windpowerstationIds)) {
+            list = list.stream().filter(eq->windpowerstationIds.contains(eq.getWindpowerstationId())).collect(Collectors.toList());
+        }
+
+        if (StringUtils.isNotEmpty(projectIds)) {
+            list = list.stream().filter(eq->projectIds.contains(eq.getProjectId())).collect(Collectors.toList());
+        }
+
+        if (StringUtils.isNotEmpty(lineIds)) {
+            list = list.stream().filter(eq->lineIds.contains(eq.getLineId())).collect(Collectors.toList());
+        }
+
+        SortUtils.sort(list,"nemCode",SortUtils.ASC);
+        return list;
+    }
 }

+ 55 - 55
web/runeconomy-xk/src/main/java/com/gyee/runeconomy/service/auto/impl/ProEconEquipmentInfoDayTopServiceImpl.java

@@ -93,6 +93,7 @@ public class ProEconEquipmentInfoDayTopServiceImpl extends ServiceImpl<ProEconEq
     @Override
     public Map<String, Object> getEquipmentInfoDayTopCompareList(List<Long> ids, Integer types) {
         Map<String, Object> resultMap = new HashMap<>();
+        Map<String, Object> chartsMap = new HashMap<>();
         QueryWrapper<ProEconEquipmentInfoDayTop> qw = new QueryWrapper<>();
 
 
@@ -100,67 +101,66 @@ public class ProEconEquipmentInfoDayTopServiceImpl extends ServiceImpl<ProEconEq
             qw.lambda().in(ProEconEquipmentInfoDayTop::getId, ids);
         }
         List<ProEconEquipmentInfoDayTop> list = baseMapper.selectList(qw);
-        resultMap.put("compare", list);
+        resultMap.put("data", list);
 
         List<CompareVo> compareList = new ArrayList<>();
         list.stream().forEach(wtd -> {
 
-                    for (int i = 0; i < 10; i++) {
-                        CompareVo vo = new CompareVo();
-
-                        switch (i) {
-                            case 0:
-                                vo.setTarget("平均切入风速");
-                                vo.setData(wtd.getYearxfqr());
-                                break;
-                            case 1:
-                                vo.setTarget("性能损失电量");
-                                vo.setData(wtd.getYearxnssdl());
-                                break;
-                            case 2:
-                                vo.setTarget("拟合优度");
-                                vo.setData(wtd.getYearnhyd());
-                                break;
-                            case 3:
-                                vo.setTarget("功率一致性系数");
-                                vo.setData(wtd.getYearglyzxxs());
-                                break;
-                            case 4:
-                                vo.setTarget("利用小时");
-                                vo.setData(wtd.getYearlyxs());
-                                break;
-                            case 5:
-                                vo.setTarget("设备可利用率");
-                                vo.setData(wtd.getYearsbklyl());
-                                break;
-                            case 6:
-                                vo.setTarget("等效可利用系数");
-                                vo.setData(wtd.getYeardxkyxs());
-                                break;
-                            case 7:
-                                vo.setTarget("有效风时数");
-                                vo.setData(wtd.getYearyxfss());
-                                break;
-                            case 8:
-                                vo.setTarget("平均风速");
-                                vo.setData(wtd.getYearfs());
-                                break;
-                            case 9:
-                                vo.setTarget("静风频率");
-                                vo.setData(wtd.getYearjfpl());
-                                break;
-                            default:
-                                break;
-                        }
-                        compareList.add(vo);
-                    }
-                     resultMap.put("charts", compareList);
-                });
-
+            for (int i = 0; i < 10; i++) {
+                CompareVo vo = new CompareVo();
+
+                switch (i) {
+                    case 0:
+                        vo.setTarget("平均切入风速");
+                        vo.setData(wtd.getYearxfqr());
+                        break;
+                    case 1:
+                        vo.setTarget("性能损失电量");
+                        vo.setData(wtd.getYearxnssdl());
+                        break;
+                    case 2:
+                        vo.setTarget("拟合优度");
+                        vo.setData(wtd.getYearnhyd());
+                        break;
+                    case 3:
+                        vo.setTarget("功率一致性系数");
+                        vo.setData(wtd.getYearglyzxxs());
+                        break;
+                    case 4:
+                        vo.setTarget("利用小时");
+                        vo.setData(wtd.getYearlyxs());
+                        break;
+                    case 5:
+                        vo.setTarget("设备可利用率");
+                        vo.setData(wtd.getYearsbklyl());
+                        break;
+                    case 6:
+                        vo.setTarget("等效可利用系数");
+                        vo.setData(wtd.getYeardxkyxs());
+                        break;
+                    case 7:
+                        vo.setTarget("有效风时数");
+                        vo.setData(wtd.getYearyxfss());
+                        break;
+                    case 8:
+                        vo.setTarget("平均风速");
+                        vo.setData(wtd.getYearfs());
+                        break;
+                    case 9:
+                        vo.setTarget("静风频率");
+                        vo.setData(wtd.getYearjfpl());
+                        break;
+                    default:
+                        break;
+                }
+                compareList.add(vo);
+            }
+            chartsMap.put(wtd.getWindturbineId(), compareList);
+
+        });
+        resultMap.put("charts", compareList);
         return resultMap;
     }
 
 
-
-
 }

+ 25 - 0
web/runeconomy-xk/src/main/java/com/gyee/runeconomy/service/auto/impl/ProEconWtAlysisDayServiceImpl.java

@@ -1,11 +1,18 @@
 package com.gyee.runeconomy.service.auto.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gyee.common.model.StringUtils;
+import com.gyee.common.util.DateUtils;
 import com.gyee.runeconomy.mapper.auto.ProEconWtAlysisDayMapper;
 import com.gyee.runeconomy.model.auto.ProEconWtAlysisDay;
 import com.gyee.runeconomy.service.auto.IProEconWtAlysisDayService;
 import org.springframework.stereotype.Service;
 
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
 /**
  * <p>
  * 风机日性能分析表 服务实现类
@@ -17,4 +24,22 @@ import org.springframework.stereotype.Service;
 @Service
 public class ProEconWtAlysisDayServiceImpl extends ServiceImpl<ProEconWtAlysisDayMapper, ProEconWtAlysisDay> implements IProEconWtAlysisDayService {
 
+    @Override
+    public List<ProEconWtAlysisDay> getProEconWtAlysisDayList(String windturbineIds, String date) {
+
+        QueryWrapper<ProEconWtAlysisDay> qw = new QueryWrapper<>();
+        Date recorddate = DateUtils.parseDate(date);
+
+        if (StringUtils.isNotEmpty(windturbineIds)) {
+            String[] wtidArray = windturbineIds.split(",");
+            List<String> wtidList = Arrays.asList(wtidArray);
+            qw.lambda().in(ProEconWtAlysisDay::getWindturbineId, wtidList);
+        } else {
+            return null;
+        }
+
+        qw.lambda().eq(ProEconWtAlysisDay::getRecordDate, recorddate);
+        List<ProEconWtAlysisDay> list = baseMapper.selectList(qw);
+        return list;
+    }
 }

+ 26 - 0
web/runeconomy-xk/src/main/java/com/gyee/runeconomy/service/auto/impl/ProEconWtPowerCurveFittingServiceImpl.java

@@ -1,12 +1,18 @@
 package com.gyee.runeconomy.service.auto.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gyee.common.model.StringUtils;
 import com.gyee.runeconomy.mapper.auto.ProEconWtPowerCurveFittingMapper;
 import com.gyee.runeconomy.model.auto.ProEconWtPowerCurveFitting;
 import com.gyee.runeconomy.service.auto.IProEconWtPowerCurveFittingService;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -26,4 +32,24 @@ public class ProEconWtPowerCurveFittingServiceImpl extends ServiceImpl<ProEconWt
     public int deleteProEconWtPowerCurveFitting() {
         return  proEconWtPowerCurveFittingMapper.deleteProEconWtPowerCurveFitting();
     }
+
+    @Override
+    public Map<String, List<ProEconWtPowerCurveFitting>> getgroupProEconWtPowerCurveFittingList(String windturbineIds) {
+
+        QueryWrapper<ProEconWtPowerCurveFitting> qw = new QueryWrapper<>();
+
+
+        if (StringUtils.isNotEmpty(windturbineIds)) {
+            String[] wtidArray = windturbineIds.split(",");
+            List<String> wtidList = Arrays.asList(wtidArray);
+            qw.lambda().in(ProEconWtPowerCurveFitting::getWindturbineId, wtidList);
+        } else {
+            return null;
+        }
+
+        qw.lambda().orderByAsc(ProEconWtPowerCurveFitting::getSpeed);
+        List<ProEconWtPowerCurveFitting> list = baseMapper.selectList(qw);
+        Map<String, List<ProEconWtPowerCurveFitting>> map =  list.stream().collect(Collectors.groupingBy(ProEconWtPowerCurveFitting::getWindturbineId));
+        return map;
+    }
 }

+ 41 - 17
web/runeconomy-xk/src/main/java/com/gyee/runeconomy/service/auto/impl/ProEconWtwindDayInfoServiceImpl.java

@@ -1,31 +1,38 @@
 package com.gyee.runeconomy.service.auto.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.gyee.common.model.StringUtils;
+import com.gyee.common.util.DateUtils;
 import com.gyee.runeconomy.model.auto.ProEconWtwindDayInfo;
 import com.gyee.runeconomy.mapper.auto.ProEconWtwindDayInfoMapper;
 import com.gyee.runeconomy.service.auto.IProEconWtwindDayInfoService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
 /**
  * <p>
  * 1、日风向平均风速
-2、日风向最大风速
-3、日风向次数
-4、日风向频率
-5、日风向静风次数
-6、日风向静风频率
-7、月风向平均风速
-8、月风向最大风速
-9、月风向次数
-10、月风向频率
-11、月风向静风次数
-12、月风向静风频率
-13、年风向平均风速
-14、年风向最大风速
-15、年风向次数
-16、年风向频率
-17、年风向静风次数
-18、年风向静风频率 服务实现类
+ * 2、日风向最大风速
+ * 3、日风向次数
+ * 4、日风向频率
+ * 5、日风向静风次数
+ * 6、日风向静风频率
+ * 7、月风向平均风速
+ * 8、月风向最大风速
+ * 9、月风向次数
+ * 10、月风向频率
+ * 11、月风向静风次数
+ * 12、月风向静风频率
+ * 13、年风向平均风速
+ * 14、年风向最大风速
+ * 15、年风向次数
+ * 16、年风向频率
+ * 17、年风向静风次数
+ * 18、年风向静风频率 服务实现类
  * </p>
  *
  * @author shilin
@@ -34,4 +41,21 @@ import org.springframework.stereotype.Service;
 @Service
 public class ProEconWtwindDayInfoServiceImpl extends ServiceImpl<ProEconWtwindDayInfoMapper, ProEconWtwindDayInfo> implements IProEconWtwindDayInfoService {
 
+
+    @Override
+    public List<ProEconWtwindDayInfo> getProEconWtwindDayInfoList(String windturbineIds, String date) {
+
+        QueryWrapper<ProEconWtwindDayInfo> qw = new QueryWrapper<>();
+        Date recorddate = DateUtils.parseDate(date);
+        if (StringUtils.isNotEmpty(windturbineIds)) {
+            String[] wtidArray = windturbineIds.split(",");
+            List<String> wtidList = Arrays.asList(wtidArray);
+            qw.lambda().in(ProEconWtwindDayInfo::getWindturbineId, wtidList);
+        } else {
+            return null;
+        }
+        qw.lambda().eq(ProEconWtwindDayInfo::getRecordDate, recorddate);
+        List<ProEconWtwindDayInfo> list = baseMapper.selectList(qw);
+        return list;
+    }
 }

+ 851 - 0
web/runeconomy-xk/src/main/java/com/gyee/runeconomy/service/performacompare/EquipmentPerformaCompareService.java

@@ -0,0 +1,851 @@
+package com.gyee.runeconomy.service.performacompare;
+
+
+import com.gyee.common.util.ClassUtil;
+import com.gyee.common.vo.benchmark.DjhxdbInitVo;
+import com.gyee.common.vo.benchmark.DjhxdbtopVo;
+import com.gyee.common.vo.benchmark.FzyVo;
+import com.gyee.runeconomy.model.auto.ProEconWtAlysisDay;
+import com.gyee.runeconomy.model.auto.ProEconWtPowerCurveFitting;
+import com.gyee.runeconomy.model.auto.ProEconWtwindDayInfo;
+import com.gyee.runeconomy.service.auto.IProEconWtAlysisDayService;
+import com.gyee.runeconomy.service.auto.IProEconWtPowerCurveFittingService;
+import com.gyee.runeconomy.service.auto.IProEconWtwindDayInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Service
+public class EquipmentPerformaCompareService {
+
+
+    @Autowired
+    private IProEconWtAlysisDayService proEconWtAlysisDayService;
+
+    @Autowired
+    private IProEconWtwindDayInfoService proEconWtwindDayInfoService;
+
+    @Autowired
+    private IProEconWtPowerCurveFittingService proEconWtPowerCurveFittingService;
+
+    /**
+     * 单机横向对比列表
+     * @param type
+     * @param windturbineIds
+     * @param date
+     * @return
+     */
+    public List<Object> getEquipmentPerformaCompareList(String type, String windturbineIds, String date) {
+
+        List<Object> objects = new ArrayList<>();
+        List<ProEconWtAlysisDay>  list =  proEconWtAlysisDayService.getProEconWtAlysisDayList(windturbineIds,date);//风机性能分析数据
+        List<ProEconWtwindDayInfo> fzyList =  proEconWtwindDayInfoService.getProEconWtwindDayInfoList(windturbineIds,date);//风资源
+        List<DjhxdbtopVo> resultList = alysisConversionMethod(list,fzyList,type);//日月年指标转换记录
+        objects = convert(resultList);
+
+        return objects;
+    }
+
+
+    /***
+     * 获取实际拟合曲线
+     * @param windturbineIds
+     * @return
+     */
+    public Map<String, List<ProEconWtPowerCurveFitting>> getgroupProEconWtPowerCurveFittingList(String windturbineIds) {
+
+        Map<String, List<ProEconWtPowerCurveFitting>> map =  proEconWtPowerCurveFittingService.getgroupProEconWtPowerCurveFittingList(windturbineIds);
+
+        return map;
+    }
+
+
+
+
+
+
+
+    /**
+     * 单机横向对比列表行转列
+     * @param resultList
+     * @return
+     */
+    private List<Object> convert(List<DjhxdbtopVo> resultList) {
+        List<Object> rList = new ArrayList<>();
+        List<String> wtids = resultList.stream().map(i -> i.getWtid()).collect(Collectors.toList());
+        DjhxdbInitVo fdj = new DjhxdbInitVo();
+        fdj.setName("风电机");
+        try {
+            LinkedHashMap addMap = new LinkedHashMap();
+            LinkedHashMap addValMap = new LinkedHashMap();
+            for (int j=0;j<wtids.size();j++){
+                addMap.put(String.valueOf(j+1), Class.forName("java.lang.String"));
+                addValMap.put(String.valueOf(j+1), wtids.get(j));
+            }
+            Object blo = new ClassUtil().dynamicClass(fdj, addMap, addValMap);
+            rList.add(blo);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        DjhxdbInitVo fdl = new DjhxdbInitVo();
+        fdl.setName("发电量");
+        try {
+            LinkedHashMap addMap = new LinkedHashMap();
+            LinkedHashMap addValMap = new LinkedHashMap();
+
+            for (int j=0;j<wtids.size();j++){
+                addMap.put(String.valueOf(j+1), Class.forName("java.lang.Double"));
+                int finalJ = j;
+                addValMap.put(String.valueOf(j+1), resultList.stream().filter(i->i.getWtid().equals(wtids.get(finalJ))).findFirst().get().getFdl());
+            }
+            Object blo = new ClassUtil().dynamicClass(fdl, addMap, addValMap);
+            rList.add(blo);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        DjhxdbInitVo yfdl = new DjhxdbInitVo();
+        yfdl.setName("应发电量");
+        try {
+            LinkedHashMap addMap = new LinkedHashMap();
+            LinkedHashMap addValMap = new LinkedHashMap();
+
+            for (int j=0;j<wtids.size();j++){
+                addMap.put(String.valueOf(j+1), Class.forName("java.lang.Double"));
+                int finalJ = j;
+                addValMap.put(String.valueOf(j+1), resultList.stream().filter(i->i.getWtid().equals(wtids.get(finalJ))).findFirst().get().getYfdl());
+            }
+            Object blo = new ClassUtil().dynamicClass(yfdl, addMap, addValMap);
+            rList.add(blo);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        DjhxdbInitVo pjgl = new DjhxdbInitVo();
+        pjgl.setName("平均功率");
+        try {
+            LinkedHashMap addMap = new LinkedHashMap();
+            LinkedHashMap addValMap = new LinkedHashMap();
+
+            for (int j=0;j<wtids.size();j++){
+                addMap.put(String.valueOf(j+1), Class.forName("java.lang.Double"));
+                int finalJ = j;
+                addValMap.put(String.valueOf(j+1), resultList.stream().filter(i->i.getWtid().equals(wtids.get(finalJ))).findFirst().get().getPjgl());
+            }
+            Object blo = new ClassUtil().dynamicClass(pjgl, addMap, addValMap);
+            rList.add(blo);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        DjhxdbInitVo pjfs = new DjhxdbInitVo();
+        pjfs.setName("平均风速");
+        try {
+            LinkedHashMap addMap = new LinkedHashMap();
+            LinkedHashMap addValMap = new LinkedHashMap();
+
+            for (int j=0;j<wtids.size();j++){
+                addMap.put(String.valueOf(j+1), Class.forName("java.lang.Double"));
+                int finalJ = j;
+                addValMap.put(String.valueOf(j+1), resultList.stream().filter(i->i.getWtid().equals(wtids.get(finalJ))).findFirst().get().getPjfs());
+            }
+            Object blo = new ClassUtil().dynamicClass(pjfs, addMap, addValMap);
+            rList.add(blo);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        DjhxdbInitVo yxxs = new DjhxdbInitVo();
+        yxxs.setName("运行小时");
+        try {
+            LinkedHashMap addMap = new LinkedHashMap();
+            LinkedHashMap addValMap = new LinkedHashMap();
+
+            for (int j=0;j<wtids.size();j++){
+                addMap.put(String.valueOf(j+1), Class.forName("java.lang.Double"));
+                int finalJ = j;
+                addValMap.put(String.valueOf(j+1), resultList.stream().filter(i->i.getWtid().equals(wtids.get(finalJ))).findFirst().get().getYxxs());
+            }
+            Object blo = new ClassUtil().dynamicClass(yxxs, addMap, addValMap);
+            rList.add(blo);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        DjhxdbInitVo djxs = new DjhxdbInitVo();
+        djxs.setName("待机小时");
+        try {
+            LinkedHashMap addMap = new LinkedHashMap();
+            LinkedHashMap addValMap = new LinkedHashMap();
+
+            for (int j=0;j<wtids.size();j++){
+                addMap.put(String.valueOf(j+1), Class.forName("java.lang.Double"));
+                int finalJ = j;
+                addValMap.put(String.valueOf(j+1), resultList.stream().filter(i->i.getWtid().equals(wtids.get(finalJ))).findFirst().get().getDjxs());
+            }
+            Object blo = new ClassUtil().dynamicClass(djxs, addMap, addValMap);
+            rList.add(blo);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        DjhxdbInitVo gzxs = new DjhxdbInitVo();
+        gzxs.setName("故障小时");
+        try {
+            LinkedHashMap addMap = new LinkedHashMap();
+            LinkedHashMap addValMap = new LinkedHashMap();
+
+            for (int j=0;j<wtids.size();j++){
+                addMap.put(String.valueOf(j+1), Class.forName("java.lang.Double"));
+                int finalJ = j;
+                addValMap.put(String.valueOf(j+1), resultList.stream().filter(i->i.getWtid().equals(wtids.get(finalJ))).findFirst().get().getGzxs());
+            }
+            Object blo = new ClassUtil().dynamicClass(gzxs, addMap, addValMap);
+            rList.add(blo);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        DjhxdbInitVo whxs = new DjhxdbInitVo();
+        whxs.setName("维护小时");
+        try {
+            LinkedHashMap addMap = new LinkedHashMap();
+            LinkedHashMap addValMap = new LinkedHashMap();
+
+            for (int j=0;j<wtids.size();j++){
+                addMap.put(String.valueOf(j+1), Class.forName("java.lang.Double"));
+                int finalJ = j;
+                addValMap.put(String.valueOf(j+1), resultList.stream().filter(i->i.getWtid().equals(wtids.get(finalJ))).findFirst().get().getWhxs());
+            }
+            Object blo = new ClassUtil().dynamicClass(whxs, addMap, addValMap);
+            rList.add(blo);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        DjhxdbInitVo zdxs = new DjhxdbInitVo();
+        zdxs.setName("中断小时");
+        try {
+            LinkedHashMap addMap = new LinkedHashMap();
+            LinkedHashMap addValMap = new LinkedHashMap();
+
+            for (int j=0;j<wtids.size();j++){
+                addMap.put(String.valueOf(j+1), Class.forName("java.lang.Double"));
+                int finalJ = j;
+                addValMap.put(String.valueOf(j+1), resultList.stream().filter(i->i.getWtid().equals(wtids.get(finalJ))).findFirst().get().getZdxs());
+            }
+            Object blo = new ClassUtil().dynamicClass(zdxs, addMap, addValMap);
+            rList.add(blo);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        DjhxdbInitVo yxfs = new DjhxdbInitVo();
+        yxfs.setName("有效风时");
+        try {
+            LinkedHashMap addMap = new LinkedHashMap();
+            LinkedHashMap addValMap = new LinkedHashMap();
+
+            for (int j=0;j<wtids.size();j++){
+                addMap.put(String.valueOf(j+1), Class.forName("java.lang.Double"));
+                int finalJ = j;
+                addValMap.put(String.valueOf(j+1), resultList.stream().filter(i->i.getWtid().equals(wtids.get(finalJ))).findFirst().get().getYxfs());
+            }
+            Object blo = new ClassUtil().dynamicClass(yxfs, addMap, addValMap);
+            rList.add(blo);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        DjhxdbInitVo ssdl = new DjhxdbInitVo();
+        ssdl.setName("损失电量");
+        try {
+            LinkedHashMap addMap = new LinkedHashMap();
+            LinkedHashMap addValMap = new LinkedHashMap();
+
+            for (int j=0;j<wtids.size();j++){
+                addMap.put(String.valueOf(j+1), Class.forName("java.lang.Double"));
+                int finalJ = j;
+                addValMap.put(String.valueOf(j+1), resultList.stream().filter(i->i.getWtid().equals(wtids.get(finalJ))).findFirst().get().getSsdl());
+            }
+            Object blo = new ClassUtil().dynamicClass(ssdl, addMap, addValMap);
+            rList.add(blo);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+//
+//        DjhxdbInitVo bjcs = new DjhxdbInitVo();
+//        bjcs.setName("报警次数");
+//        try {
+//            LinkedHashMap addMap = new LinkedHashMap();
+//            LinkedHashMap addValMap = new LinkedHashMap();
+//
+//            for (int j=0;j<wtids.size();j++){
+//                addMap.put(String.valueOf(j+1), Class.forName("java.lang.Double"));
+//                int finalJ = j;
+//                addValMap.put(String.valueOf(j+1), resultList.stream().filter(i->i.getWtid().equals(wtids.get(finalJ))).findFirst().get().getBjcs());
+//            }
+//            Object blo = new ClassUtil().dynamicClass(bjcs, addMap, addValMap);
+//            rList.add(blo);
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+
+        DjhxdbInitVo tjcs = new DjhxdbInitVo();
+        tjcs.setName("停机次数");
+        try {
+            LinkedHashMap addMap = new LinkedHashMap();
+            LinkedHashMap addValMap = new LinkedHashMap();
+
+            for (int j=0;j<wtids.size();j++){
+                addMap.put(String.valueOf(j+1), Class.forName("java.lang.Double"));
+                int finalJ = j;
+                addValMap.put(String.valueOf(j+1), resultList.stream().filter(i->i.getWtid().equals(wtids.get(finalJ))).findFirst().get().getTjcs());
+            }
+            Object blo = new ClassUtil().dynamicClass(tjcs, addMap, addValMap);
+            rList.add(blo);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        DjhxdbInitVo bbhcs = new DjhxdbInitVo();
+        bbhcs.setName("不饱和次数");
+        try {
+            LinkedHashMap addMap = new LinkedHashMap();
+            LinkedHashMap addValMap = new LinkedHashMap();
+
+            for (int j=0;j<wtids.size();j++){
+                addMap.put(String.valueOf(j+1), Class.forName("java.lang.Double"));
+                int finalJ = j;
+                addValMap.put(String.valueOf(j+1), resultList.stream().filter(i->i.getWtid().equals(wtids.get(finalJ))).findFirst().get().getBbhcs());
+            }
+            Object blo = new ClassUtil().dynamicClass(bbhcs, addMap, addValMap);
+            rList.add(blo);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        DjhxdbInitVo sbklly = new DjhxdbInitVo();
+        sbklly.setName("设备可利用率");
+        try {
+            LinkedHashMap addMap = new LinkedHashMap();
+            LinkedHashMap addValMap = new LinkedHashMap();
+
+            for (int j=0;j<wtids.size();j++){
+                addMap.put(String.valueOf(j+1), Class.forName("java.lang.Double"));
+                int finalJ = j;
+                addValMap.put(String.valueOf(j+1), resultList.stream().filter(i->i.getWtid().equals(wtids.get(finalJ))).findFirst().get().getSbklly());
+            }
+            Object blo = new ClassUtil().dynamicClass(sbklly, addMap, addValMap);
+            rList.add(blo);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        DjhxdbInitVo pjwd = new DjhxdbInitVo();
+        pjwd.setName("平均温度");
+        try {
+            LinkedHashMap addMap = new LinkedHashMap();
+            LinkedHashMap addValMap = new LinkedHashMap();
+
+            for (int j=0;j<wtids.size();j++){
+                addMap.put(String.valueOf(j+1), Class.forName("java.lang.Double"));
+                int finalJ = j;
+                addValMap.put(String.valueOf(j+1), resultList.stream().filter(i->i.getWtid().equals(wtids.get(finalJ))).findFirst().get().getPjwd());
+            }
+            Object blo = new ClassUtil().dynamicClass(pjwd, addMap, addValMap);
+            rList.add(blo);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        DjhxdbInitVo pjsd = new DjhxdbInitVo();
+        pjsd.setName("平均湿度");
+        try {
+            LinkedHashMap addMap = new LinkedHashMap();
+            LinkedHashMap addValMap = new LinkedHashMap();
+
+            for (int j=0;j<wtids.size();j++){
+                addMap.put(String.valueOf(j+1), Class.forName("java.lang.Double"));
+                int finalJ = j;
+                addValMap.put(String.valueOf(j+1), resultList.stream().filter(i->i.getWtid().equals(wtids.get(finalJ))).findFirst().get().getPjsd());
+            }
+            Object blo = new ClassUtil().dynamicClass(pjsd, addMap, addValMap);
+            rList.add(blo);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        DjhxdbInitVo pjyq = new DjhxdbInitVo();
+        pjyq.setName("平均压强");
+        try {
+            LinkedHashMap addMap = new LinkedHashMap();
+            LinkedHashMap addValMap = new LinkedHashMap();
+
+            for (int j=0;j<wtids.size();j++){
+                addMap.put(String.valueOf(j+1), Class.forName("java.lang.Double"));
+                int finalJ = j;
+                addValMap.put(String.valueOf(j+1), resultList.stream().filter(i->i.getWtid().equals(wtids.get(finalJ))).findFirst().get().getPjyq());
+            }
+            Object blo = new ClassUtil().dynamicClass(pjyq, addMap, addValMap);
+            rList.add(blo);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        DjhxdbInitVo nhyd = new DjhxdbInitVo();
+        nhyd.setName("拟合优度");
+        try {
+            LinkedHashMap addMap = new LinkedHashMap();
+            LinkedHashMap addValMap = new LinkedHashMap();
+
+            for (int j=0;j<wtids.size();j++){
+                addMap.put(String.valueOf(j+1), Class.forName("java.lang.Double"));
+                int finalJ = j;
+                addValMap.put(String.valueOf(j+1), resultList.stream().filter(i->i.getWtid().equals(wtids.get(finalJ))).findFirst().get().getNhyd());
+            }
+            Object blo = new ClassUtil().dynamicClass(nhyd, addMap, addValMap);
+            rList.add(blo);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        DjhxdbInitVo sjbz = new DjhxdbInitVo();
+        sjbz.setName("实际/保证");
+        try {
+            LinkedHashMap addMap = new LinkedHashMap();
+            LinkedHashMap addValMap = new LinkedHashMap();
+
+            for (int j=0;j<wtids.size();j++){
+                addMap.put(String.valueOf(j+1), Class.forName("java.lang.Double"));
+                int finalJ = j;
+                addValMap.put(String.valueOf(j+1), resultList.stream().filter(i->i.getWtid().equals(wtids.get(finalJ))).findFirst().get().getSjbz());
+            }
+            Object blo = new ClassUtil().dynamicClass(sjbz, addMap, addValMap);
+            rList.add(blo);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        DjhxdbInitVo fzy = new DjhxdbInitVo();
+        fzy.setName("风资源");
+        try {
+            LinkedHashMap addMap = new LinkedHashMap();
+            LinkedHashMap addValMap = new LinkedHashMap();
+
+            for (int j=0;j<wtids.size();j++){
+                addMap.put(String.valueOf(j+1), Class.forName("java.util.List"));
+                int finalJ = j;
+                addValMap.put(String.valueOf(j+1), resultList.stream().filter(i->i.getWtid().equals(wtids.get(finalJ))).findFirst().get().getFzyList());
+            }
+            Object blo = new ClassUtil().dynamicClass(fzy, addMap, addValMap);
+            rList.add(blo);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        DjhxdbInitVo jfpl = new DjhxdbInitVo();
+        jfpl.setName("静风频率");
+        try {
+            LinkedHashMap addMap = new LinkedHashMap();
+            LinkedHashMap addValMap = new LinkedHashMap();
+
+            for (int j=0;j<wtids.size();j++){
+                addMap.put(String.valueOf(j+1), Class.forName("java.lang.Double"));
+                int finalJ = j;
+                addValMap.put(String.valueOf(j+1), resultList.stream().filter(i->i.getWtid().equals(wtids.get(finalJ))).findFirst().get().getJfpl());
+            }
+            Object blo = new ClassUtil().dynamicClass(jfpl, addMap, addValMap);
+            rList.add(blo);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return rList;
+    }
+
+    //日月年指标转换方法
+    List<DjhxdbtopVo> alysisConversionMethod(List<ProEconWtAlysisDay>  list ,List<ProEconWtwindDayInfo>  fzyList ,String type ){
+        List<DjhxdbtopVo> resultList = new ArrayList<>();
+        list.stream().forEach(i->{
+            DjhxdbtopVo vo = new DjhxdbtopVo();
+            vo.setWtid(i.getWindturbineId());
+            Optional<ProEconWtwindDayInfo> first = fzyList.stream().filter(fzy -> fzy.getWindturbineId().equals(i.getWindturbineId())).findFirst();
+            List<FzyVo> vos = getFzyVos(first,type);
+            switch (type){
+                case "1" :
+                    vo.setFdl(i.getRfdl());
+                    vo.setYfdl(i.getRyfdl());
+                    vo.setPjgl(i.getRpjgl());
+                    vo.setPjfs(i.getRpjfs());
+                    vo.setYxxs(i.getRyxxs());
+                    vo.setDjxs(i.getRdjxs());
+                    vo.setGzxs(i.getRgzxs());
+                    vo.setWhxs(i.getRjxxs());
+                    vo.setZdxs(i.getRzdxs());
+                    vo.setYxfs(i.getRyxfs());
+                    vo.setSsdl(i.getRssdl());
+                    vo.setBjcs(i.getRbjcs());
+                    vo.setTjcs(i.getRtjcs());
+                    vo.setBbhcs(i.getRbbhcs());
+                    vo.setSbklly(i.getRsbklyl());
+                    vo.setPjwd(i.getRpjwd());
+                    vo.setPjsd(i.getRpjsd());
+                    vo.setPjyq(i.getRpjyq());
+                    vo.setNhyd(i.getRnhyd());
+                    vo.setSjbz(i.getRsjbz());
+                    break;
+                case "2":
+                    vo.setFdl(i.getYfdl());
+                    vo.setYfdl(i.getYyfdl());
+                    vo.setPjgl(i.getYpjgl());
+                    vo.setPjfs(i.getYpjfs());
+                    vo.setYxxs(i.getYyxxs());
+                    vo.setDjxs(i.getYdjxs());
+                    vo.setGzxs(i.getYgzxs());
+                    vo.setWhxs(i.getYjxxs());
+                    vo.setZdxs(i.getYzdxs());
+                    vo.setYxfs(i.getYyxfs());
+                    vo.setSsdl(i.getYssdl());
+                    vo.setBjcs(i.getYbjcs());
+                    vo.setTjcs(i.getYtjcs());
+                    vo.setBbhcs(i.getYbbhcs());
+                    vo.setSbklly(i.getYsbklyl());
+                    vo.setPjwd(i.getYpjwd());
+                    vo.setPjsd(i.getYpjsd());
+                    vo.setPjyq(i.getYpjyq());
+                    vo.setNhyd(i.getYnhyd());
+                    vo.setSjbz(i.getYsjbz());
+                    break;
+                case "3":
+                    vo.setFdl(i.getNfdl());
+                    vo.setYfdl(i.getNyfdl());
+                    vo.setPjgl(i.getNpjgl());
+                    vo.setPjfs(i.getNpjfs());
+                    vo.setYxxs(i.getNyxxs());
+                    vo.setDjxs(i.getNdjxs());
+                    vo.setGzxs(i.getNgzxs());
+                    vo.setWhxs(i.getNjxxs());
+                    vo.setZdxs(i.getNzdxs());
+                    vo.setYxfs(i.getNyxfs());
+                    vo.setSsdl(i.getNssdl());
+                    vo.setBjcs(i.getNbjcs());
+                    vo.setTjcs(i.getNtjcs());
+                    vo.setBbhcs(i.getNbbhcs());
+                    vo.setSbklly(i.getNsbklyl());
+                    vo.setPjwd(i.getNpjwd());
+                    vo.setPjsd(i.getNpjsd());
+                    vo.setPjyq(i.getNpjyq());
+                    vo.setNhyd(i.getNnhyd());
+                    vo.setSjbz(i.getNsjbz());
+                    break;
+
+            }
+            vo.setFzyList(vos);
+            vo.setJfpl(first.get().getCb());
+            resultList.add(vo);
+        });
+        return resultList;
+    }
+
+
+
+
+
+    List<FzyVo>  getFzyVos( Optional<ProEconWtwindDayInfo> first ,String type) {
+        List<FzyVo> vos = new ArrayList<>();
+        ProEconWtwindDayInfo winfo = first.get();
+
+        switch (type) {
+            case "1":
+                for (int j = 0; j < 16; j++) {
+                    FzyVo vo = new FzyVo();
+
+                    switch (j) {
+                        case 0:
+                            // vo.setName("N("+winfo.getN4()+"/"+winfo.getN()+")");
+                            vo.setName("N");
+                            vo.setValue(winfo.getN4());
+                            break;
+                        case 1:
+                            // vo.setName("NNE("+winfo.getNne4()+"/"+winfo.getNne()+")");
+                            vo.setName("NNE");
+                            vo.setValue(winfo.getNne4());
+                            break;
+                        case 2:
+                            // vo.setName("NE("+winfo.getNe4()+"/"+winfo.getNe()+")");
+                            vo.setName("NE");
+                            vo.setValue(winfo.getNe4());
+                            break;
+                        case 3:
+                            // vo.setName("ENE("+winfo.getEne4()+"/"+winfo.getEne()+")");
+                            vo.setName("ENE");
+                            vo.setValue(winfo.getEne4());
+
+                            break;
+                        case 4:
+                            // vo.setName("E("+winfo.getE4()+"/"+winfo.getE()+")");
+                            vo.setName("E");
+                            vo.setValue(winfo.getE4());
+                            break;
+                        case 5:
+                            // vo.setName("ESE("+winfo.getEse()+"/"+winfo.getEse()+")");
+                            vo.setName("ESE");
+                            vo.setValue(winfo.getEse4());
+                            break;
+                        case 6:
+                            // vo.setName("SE("+winfo.getSe4()+"/"+winfo.getSe()+")");
+                            vo.setName("SE");
+                            vo.setValue(winfo.getSe4());
+                            break;
+                        case 7:
+                            // vo.setName("SSE("+winfo.getSse4()+"/"+winfo.getSse()+")");
+                            vo.setName("SSE");
+                            vo.setValue(winfo.getSse4());
+                            break;
+                        case 8:
+                            // vo.setName("S("+winfo.getS4()+"/"+winfo.getS()+")");
+                            vo.setName("S");
+                            vo.setValue(winfo.getS4());
+                            break;
+                        case 9:
+                            // vo.setName("SSW("+winfo.getSsw4()+"/"+winfo.getSsw()+")");
+                            vo.setName("SSW");
+                            vo.setValue(winfo.getSsw4());
+                            break;
+                        case 10:
+                            // vo.setName("SW("+winfo.getSw4()+"/"+winfo.getSw()+")");
+                            vo.setName("SW");
+                            vo.setValue(winfo.getSw4());
+                            break;
+                        case 11:
+                            // vo.setName("WSW("+winfo.getWsw4()+"/"+winfo.getWsw()+")");
+                            vo.setName("WSW");
+                            vo.setValue(winfo.getWsw4());
+
+                            break;
+                        case 12:
+                            // vo.setName("W("+winfo.getW4()+"/"+winfo.getW()+")");
+                            vo.setName("W");
+                            vo.setValue(winfo.getW4());
+                            break;
+                        case 13:
+                            // vo.setName("WNW("+winfo.getWnw4()+"/"+winfo.getWnw()+")");
+                            vo.setName("WNW");
+                            vo.setValue(winfo.getWnw4());
+                            break;
+                        case 14:
+                            // vo.setName("NW("+winfo.getNw4()+"/"+winfo.getNw()+")");
+                            vo.setName("NW");
+                            vo.setValue(winfo.getNw4());
+                            break;
+                        case 15:
+                            // vo.setName("NNW("+winfo.getNnw4()+"/"+winfo.getNnw()+")");
+                            vo.setName("NNW");
+                            vo.setValue(winfo.getNnw4());
+                            break;
+
+                        default:
+                            break;
+                    }
+                    vos.add(vo);
+                }
+                break;
+            case "2":
+                for (int j = 0; j < 16; j++) {
+                    FzyVo vo = new FzyVo();
+
+                    switch (j) {
+                        case 0:
+                            // vo.setName("N("+winfo.getN4()+"/"+winfo.getN()+")");
+                            vo.setName("N");
+                            vo.setValue(winfo.getN10());
+                            break;
+                        case 1:
+                            // vo.setName("NNE("+winfo.getNne4()+"/"+winfo.getNne()+")");
+                            vo.setName("NNE");
+                            vo.setValue(winfo.getNne10());
+                            break;
+                        case 2:
+                            // vo.setName("NE("+winfo.getNe4()+"/"+winfo.getNe()+")");
+                            vo.setName("NE");
+                            vo.setValue(winfo.getNe10());
+                            break;
+                        case 3:
+                            // vo.setName("ENE("+winfo.getEne4()+"/"+winfo.getEne()+")");
+                            vo.setName("ENE");
+                            vo.setValue(winfo.getEne10());
+
+                            break;
+                        case 4:
+                            // vo.setName("E("+winfo.getE4()+"/"+winfo.getE()+")");
+                            vo.setName("E");
+                            vo.setValue(winfo.getE10());
+                            break;
+                        case 5:
+                            // vo.setName("ESE("+winfo.getEse()+"/"+winfo.getEse()+")");
+                            vo.setName("ESE");
+                            vo.setValue(winfo.getEse10());
+                            break;
+                        case 6:
+                            // vo.setName("SE("+winfo.getSe4()+"/"+winfo.getSe()+")");
+                            vo.setName("SE");
+                            vo.setValue(winfo.getSe10());
+                            break;
+                        case 7:
+                            // vo.setName("SSE("+winfo.getSse4()+"/"+winfo.getSse()+")");
+                            vo.setName("SSE");
+                            vo.setValue(winfo.getSse10());
+                            break;
+                        case 8:
+                            // vo.setName("S("+winfo.getS4()+"/"+winfo.getS()+")");
+                            vo.setName("S");
+                            vo.setValue(winfo.getS10());
+                            break;
+                        case 9:
+                            // vo.setName("SSW("+winfo.getSsw4()+"/"+winfo.getSsw()+")");
+                            vo.setName("SSW");
+                            vo.setValue(winfo.getSsw10());
+                            break;
+                        case 10:
+                            // vo.setName("SW("+winfo.getSw4()+"/"+winfo.getSw()+")");
+                            vo.setName("SW");
+                            vo.setValue(winfo.getSw10());
+                            break;
+                        case 11:
+                            // vo.setName("WSW("+winfo.getWsw4()+"/"+winfo.getWsw()+")");
+                            vo.setName("WSW");
+                            vo.setValue(winfo.getWsw10());
+
+                            break;
+                        case 12:
+                            // vo.setName("W("+winfo.getW4()+"/"+winfo.getW()+")");
+                            vo.setName("W");
+                            vo.setValue(winfo.getW10());
+                            break;
+                        case 13:
+                            // vo.setName("WNW("+winfo.getWnw4()+"/"+winfo.getWnw()+")");
+                            vo.setName("WNW");
+                            vo.setValue(winfo.getWnw10());
+                            break;
+                        case 14:
+                            // vo.setName("NW("+winfo.getNw4()+"/"+winfo.getNw()+")");
+                            vo.setName("NW");
+                            vo.setValue(winfo.getNw10());
+                            break;
+                        case 15:
+                            // vo.setName("NNW("+winfo.getNnw4()+"/"+winfo.getNnw()+")");
+                            vo.setName("NNW");
+                            vo.setValue(winfo.getNnw10());
+                            break;
+
+                        default:
+                            break;
+                    }
+                    vos.add(vo);
+                }
+                break;
+            case "3":
+                for (int j = 0; j < 16; j++) {
+                    FzyVo vo = new FzyVo();
+
+                    switch (j) {
+                        case 0:
+                            // vo.setName("N("+winfo.getN4()+"/"+winfo.getN()+")");
+                            vo.setName("N");
+                            vo.setValue(winfo.getN16());
+                            break;
+                        case 1:
+                            // vo.setName("NNE("+winfo.getNne4()+"/"+winfo.getNne()+")");
+                            vo.setName("NNE");
+                            vo.setValue(winfo.getNne16());
+                            break;
+                        case 2:
+                            // vo.setName("NE("+winfo.getNe4()+"/"+winfo.getNe()+")");
+                            vo.setName("NE");
+                            vo.setValue(winfo.getNe16());
+                            break;
+                        case 3:
+                            // vo.setName("ENE("+winfo.getEne4()+"/"+winfo.getEne()+")");
+                            vo.setName("ENE");
+                            vo.setValue(winfo.getEne16());
+
+                            break;
+                        case 4:
+                            // vo.setName("E("+winfo.getE4()+"/"+winfo.getE()+")");
+                            vo.setName("E");
+                            vo.setValue(winfo.getE16());
+                            break;
+                        case 5:
+                            // vo.setName("ESE("+winfo.getEse()+"/"+winfo.getEse()+")");
+                            vo.setName("ESE");
+                            vo.setValue(winfo.getEse16());
+                            break;
+                        case 6:
+                            // vo.setName("SE("+winfo.getSe4()+"/"+winfo.getSe()+")");
+                            vo.setName("SE");
+                            vo.setValue(winfo.getSe16());
+                            break;
+                        case 7:
+                            // vo.setName("SSE("+winfo.getSse4()+"/"+winfo.getSse()+")");
+                            vo.setName("SSE");
+                            vo.setValue(winfo.getSse16());
+                            break;
+                        case 8:
+                            // vo.setName("S("+winfo.getS4()+"/"+winfo.getS()+")");
+                            vo.setName("S");
+                            vo.setValue(winfo.getS16());
+                            break;
+                        case 9:
+                            // vo.setName("SSW("+winfo.getSsw4()+"/"+winfo.getSsw()+")");
+                            vo.setName("SSW");
+                            vo.setValue(winfo.getSsw16());
+                            break;
+                        case 10:
+                            // vo.setName("SW("+winfo.getSw4()+"/"+winfo.getSw()+")");
+                            vo.setName("SW");
+                            vo.setValue(winfo.getSw16());
+                            break;
+                        case 11:
+                            // vo.setName("WSW("+winfo.getWsw4()+"/"+winfo.getWsw()+")");
+                            vo.setName("WSW");
+                            vo.setValue(winfo.getWsw16());
+
+                            break;
+                        case 12:
+                            // vo.setName("W("+winfo.getW4()+"/"+winfo.getW()+")");
+                            vo.setName("W");
+                            vo.setValue(winfo.getW16());
+                            break;
+                        case 13:
+                            // vo.setName("WNW("+winfo.getWnw4()+"/"+winfo.getWnw()+")");
+                            vo.setName("WNW");
+                            vo.setValue(winfo.getWnw16());
+                            break;
+                        case 14:
+                            // vo.setName("NW("+winfo.getNw4()+"/"+winfo.getNw()+")");
+                            vo.setName("NW");
+                            vo.setValue(winfo.getNw16());
+                            break;
+                        case 15:
+                            // vo.setName("NNW("+winfo.getNnw4()+"/"+winfo.getNnw()+")");
+                            vo.setName("NNW");
+                            vo.setValue(winfo.getNnw16());
+                            break;
+
+                        default:
+                            break;
+                    }
+                    vos.add(vo);
+                }
+                break;
+
+        }
+
+        return vos;
+    }
+
+
+}