Browse Source

Merge remote-tracking branch 'origin/master'

wangchangsheng 2 years ago
parent
commit
3ab72a33de
45 changed files with 1787 additions and 70 deletions
  1. 1 1
      common/src/main/java/com/gyee/common/contant/Contant.java
  2. 23 6
      common/src/main/java/com/gyee/common/contant/ContantXk.java
  3. 20 0
      realtime/generationXK-service/src/main/java/com/gyee/generation/controller/ProBasicStatusPointController.java
  4. 58 0
      realtime/generationXK-service/src/main/java/com/gyee/generation/controller/matrix/MatrixController.java
  5. 6 0
      realtime/generationXK-service/src/main/java/com/gyee/generation/init/CacheContext.java
  6. 16 0
      realtime/generationXK-service/src/main/java/com/gyee/generation/mapper/auto/ProBasicStatusPointMapper.java
  7. 3 2
      realtime/generationXK-service/src/main/java/com/gyee/generation/model/auto/ProBasicPowerstation.java
  8. 61 0
      realtime/generationXK-service/src/main/java/com/gyee/generation/model/auto/ProBasicStatusPoint.java
  9. 16 0
      realtime/generationXK-service/src/main/java/com/gyee/generation/service/auto/IProBasicStatusPointService.java
  10. 20 0
      realtime/generationXK-service/src/main/java/com/gyee/generation/service/auto/impl/ProBasicStatusPointServiceImpl.java
  11. 16 13
      realtime/generationXK-service/src/main/java/com/gyee/generation/service/initalcache/CacheService.java
  12. 870 15
      realtime/generationXK-service/src/main/java/com/gyee/generation/service/realtimelibrary/StatusService.java
  13. 87 0
      realtime/generationXK-service/src/main/java/com/gyee/generation/service/realtimelibrary/TestService.java
  14. 10 5
      realtime/generationXK-service/src/main/resources/application-dev.yml
  15. 2 2
      realtime/generationXK-service/src/main/resources/application.yml
  16. 2 4
      web/consumer-hb/src/main/java/com/gyee/consumer/controller/RegionPG/RegionPGController.java
  17. 3 4
      web/consumer-hb/src/main/java/com/gyee/consumer/controller/WindpowerstationPG/WindpowerstationPGController.java
  18. 1 1
      web/consumer-hb/src/main/java/com/gyee/consumer/fallback/RegionPG/RegionPGServiceFallbackFactory.java
  19. 1 1
      web/consumer-hb/src/main/java/com/gyee/consumer/fallback/WindpowerstationPG/WindpowerstationPGServiceFallbackFactory.java
  20. 1 1
      web/consumer-hb/src/main/java/com/gyee/consumer/service/RegionPG/RegionPGService.java
  21. 1 1
      web/consumer-hb/src/main/java/com/gyee/consumer/service/WindpowerstationPG/WindpowerstationPGService.java
  22. 20 0
      web/gdsx-ghost/src/main/java/com/gyee/ghost/controller/InvolvedController.java
  23. 20 0
      web/gdsx-ghost/src/main/java/com/gyee/ghost/controller/InvolvedstatusController.java
  24. 20 0
      web/gdsx-ghost/src/main/java/com/gyee/ghost/controller/LineController.java
  25. 95 0
      web/gdsx-ghost/src/main/java/com/gyee/ghost/controller/ghost/GhostController.java
  26. 11 0
      web/gdsx-ghost/src/main/java/com/gyee/ghost/init/CacheContext.java
  27. 16 0
      web/gdsx-ghost/src/main/java/com/gyee/ghost/mapper/auto/InvolvedMapper.java
  28. 16 0
      web/gdsx-ghost/src/main/java/com/gyee/ghost/mapper/auto/InvolvedstatusMapper.java
  29. 17 0
      web/gdsx-ghost/src/main/java/com/gyee/ghost/mapper/auto/LineMapper.java
  30. 51 0
      web/gdsx-ghost/src/main/java/com/gyee/ghost/model/auto/Involved.java
  31. 26 0
      web/gdsx-ghost/src/main/java/com/gyee/ghost/model/auto/Involvedstatus.java
  32. 53 0
      web/gdsx-ghost/src/main/java/com/gyee/ghost/model/auto/Line.java
  33. 83 0
      web/gdsx-ghost/src/main/java/com/gyee/ghost/service/auto/GhostService.java
  34. 16 0
      web/gdsx-ghost/src/main/java/com/gyee/ghost/service/auto/IInvolvedService.java
  35. 16 0
      web/gdsx-ghost/src/main/java/com/gyee/ghost/service/auto/IInvolvedstatusService.java
  36. 17 0
      web/gdsx-ghost/src/main/java/com/gyee/ghost/service/auto/ILineService.java
  37. 20 0
      web/gdsx-ghost/src/main/java/com/gyee/ghost/service/auto/impl/InvolvedServiceImpl.java
  38. 20 0
      web/gdsx-ghost/src/main/java/com/gyee/ghost/service/auto/impl/InvolvedstatusServiceImpl.java
  39. 21 0
      web/gdsx-ghost/src/main/java/com/gyee/ghost/service/auto/impl/LineServiceImpl.java
  40. 2 2
      web/gdsx-ghost/src/main/java/com/gyee/ghost/task/SaticScheduleTask.java
  41. 22 0
      web/gdsx-ghost/src/main/java/com/gyee/ghost/vo/InvolvedVo.java
  42. 3 4
      web/monitor-web-sxjn/src/main/java/com/gyee/frame/controller/Region/RegionPGController.java
  43. 1 1
      web/monitor-web-sxjn/src/main/java/com/gyee/frame/controller/WindpowerstationPG/WindpowerstationPGController.java
  44. 2 5
      web/monitor-web-sxjn/src/main/java/com/gyee/frame/service/RegionPGService.java
  45. 1 2
      web/monitor-web-sxjn/src/main/java/com/gyee/frame/service/WindpowerstationPGService.java

+ 1 - 1
common/src/main/java/com/gyee/common/contant/Contant.java

@@ -107,7 +107,7 @@ public class Contant {
     public static final String WHTJ = "WHTJ";  //维护停机台数
     public static final String XDTS = "XDTS";  //限电台数
     public static final String YXTS = "YXTS";  //运行台数
-    public static final String SLTS = "SLTS";  //运行台数
+    public static final String SLTS = "SLTS";  //受累台数
 
     public static final String ZSGL = "ZSGL";//风机自算功率
     public static final String ZZSGL = "ZZSGL";//场站自算功率

+ 23 - 6
common/src/main/java/com/gyee/common/contant/ContantXk.java

@@ -13,6 +13,7 @@ public class ContantXk {
     public static final String  GLYCJRZT= "GLYCJRZT";//场站功率预测接入状态
     public static final String  QXZJRZT= "QXZJRZT";//场站测风塔接入状态
     public static final String  SSPJFS= "SSPJFS";//场站实时平均风速
+    public static final String  SSPJGZD= "SSPJGZD";//场站实时平均光照度
     public static final String  SSZGL= "SSZGL";//场站实时总功率
     public static final String  SSZLLGL= "SSZLLGL";//场站实时总理论功率
     public static final String  SSZBZGL= "SSZBZGL";//场站实时总保证功率
@@ -21,6 +22,7 @@ public class ContantXk {
     public static final String  SSZKYGL= "SSZKYGL";//场站实时总可用功率
     public static final String  RPJGL= "RPJGL";//日平均功率
     public static final String  RPJFS= "RPJFS";//日平均风速
+    public static final String  RPJGZD= "RPJGZD";//日平均光照度
     public static final String  RFDL= "RFDL";//日发电量
     public static final String  RKYDL= "RKYDL";//日可用电量
     public static final String  RLLFDL= "RLLFDL";//日理论发电量
@@ -41,6 +43,7 @@ public class ContantXk {
     public static final String  RQFDL= "RQFDL";//日欠发电量
     public static final String  YPJGL= "YPJGL";//月平均功率
     public static final String  YPJFS= "YPJFS";//月平均风速
+    public static final String  YPJGZD= "YPJGZD";//月平均光照度
     public static final String  YFDL= "YFDL";//月发电量
     public static final String  YKYDL= "YKYDL";//月可用电量
     public static final String  YLLFDL= "YLLFDL";//月理论发电量
@@ -61,6 +64,7 @@ public class ContantXk {
     public static final String  YQFDL= "YQFDL";//月欠发电量
     public static final String  NPJGL= "NPJGL";//年平均功率
     public static final String  NPJFS= "NPJFS";//年平均风速
+    public static final String  NPJGZD= "NPJGZD";//年平均光照度
     public static final String  NFDL= "NFDL";//年发电量
     public static final String  NKYDL= "NKYDL";//年可用电量
     public static final String  NLLFDL= "NLLFDL";//年理论发电量
@@ -114,26 +118,30 @@ public class ContantXk {
     public static final String  RCYDL= "RCYDL";//日厂用电量
     public static final String  YCYDL= "YCYDL";//月厂用电量
     public static final String  NCYDL= "NCYDL";//年厂用电量
+
+    public static final String  DJTSMX= "DJTSMX";//待机台数(明细)
+    public static final String  SDTJTSMX= "SDTJTSMX";//手动停机台数(明细)
+    public static final String  XNTSMX= "XNTSMX";//性能台数(明细)
+    public static final String  QXJCLTSMX= "QXJCLTSMX";//缺陷降出力台数(明细)
     public static final String  GZTSMX= "GZTSMX";//故障台数(明细)
     public static final String  CNSLGZTSMX= "CNSLGZTSMX";//场内受累故障台数(明细)
     public static final String  JXTSMX= "JXTSMX";//检修台数(明细)
     public static final String  CNSLJXTSMX= "CNSLJXTSMX";//场内受累检修台数(明细)
-    public static final String  DJTSMX= "DJTSMX";//待机台数(明细)
-    public static final String  QXJCLTSMX= "QXJCLTSMX";//缺陷降出力台数(明细)
-    public static final String  SDTJTSMX= "SDTJTSMX";//手动停机台数(明细)
-    public static final String  XNTSMX= "XNTSMX";//性能台数(明细)
     public static final String  XDTJTSMX= "XDTJTSMX";//限电停机台数(明细)
     public static final String  XDJCLTSMX= "XDJCLTSMX";//限电降出力台数(明细)
     public static final String  CWSLDWTSMX= "CWSLDWTSMX";//场外受累电网台数(明细)
     public static final String  CWSLTQTSMX= "CWSLTQTSMX";//场外受累天气台数(明细)
     public static final String  LXTSMX= "LXTSMX";//离线台数(明细)
     public static final String  TXZDTSMX= "TXZDTSMX";//通讯中断台数(明细)
+
     public static final String  DJTS= "DJTS";//待机台数
     public static final String  GZTJTS= "GZTJTS";//故障停机台数
     public static final String  TXZDTS= "TXZDTS";//通讯中断台数
     public static final String  JXTJTS= "JXTJTS";//维护停机台数
+    public static final String  SLTS= "SLTS";//受累台数
     public static final String  XDTS= "XDTS";//限电台数
     public static final String  YXTS= "YXTS";//运行台数
+
     public static final String  RZHD= "RZHD";//日自耗电
     public static final String  YZHD= "YZHD";//月自耗电
     public static final String  NZHD= "NZHD";//年自耗电
@@ -144,6 +152,7 @@ public class ContantXk {
     public static final String  MXZT= "MXZT";//设备明细状态
     public static final String  ZTCXSJ= "ZTCXSJ";//设备当前状态下持续时间
     public static final String  SSBF= "SSBF";//设备实时补风风速
+    public static final String  SSBG= "SSBG";//设备实时补光
     public static final String  XDZT= "XDZT";//设备限电状态
     public static final String  GPZT= "GPZT";//设备挂牌状态(原限电受累)
     public static final String  LSQFZT= "LSQFZT";//设备历史欠发状态
@@ -161,15 +170,23 @@ public class ContantXk {
     public static final String  CJ_SCADA_YGSD= "AI003";//scada有功设定值
     public static final String  CJ_YLZSGD= "AI110";//叶轮转速给定
     public static final String  CJ_FDL= "AI121";//发电量
-    public static final String  CJ_DWGL = "AI056";  //电网功率
+    public static final String  CJ_DWGL = "AI107";  //电网功率
 
     public static final String TPOINT_WP_AGC = "AGC002";// agc
     public static final String TPOINT_WP_CXGL = "AGC001";// 出线
-    public static final String TPOINT_WP_XDZT = "AGC009";// // 功率SSFS
+    public static final String TPOINT_WP_XDZT = "AGC009";// 限电状态
+    public static final String TPOINT_WP_ZSGL = "AGC010";// 自算功率
+    public static final String TPOINT_WP_YCGL = "AGC011";// 预测功率
+
 
     public static final String FCCFTFS70 = "FCCFTFS70";//测风塔70米风速
 
 
+    //判断数据中断(风速,功率,绕组温度,电流,电压)
+    public static final String INTERRUPTION ="AI066,AI114,AI004,AI075,AI093";
+    public static final String INTERRUPTIONGF ="AIG013,AIG017,AIG009,AIG006";
+
+
 
 
 

+ 20 - 0
realtime/generationXK-service/src/main/java/com/gyee/generation/controller/ProBasicStatusPointController.java

@@ -0,0 +1,20 @@
+package com.gyee.generation.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author shilin
+ * @since 2022-11-17
+ */
+@RestController
+@RequestMapping("//pro-basic-status-point")
+public class ProBasicStatusPointController {
+
+}

+ 58 - 0
realtime/generationXK-service/src/main/java/com/gyee/generation/controller/matrix/MatrixController.java

@@ -0,0 +1,58 @@
+package com.gyee.generation.controller.matrix;
+
+import com.gyee.common.config.R;
+import com.gyee.common.model.StringUtils;
+
+import com.gyee.generation.service.realtimelibrary.TestService;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.Map;
+
+/**
+ * @ClassName : MatrixController
+ * @Author : xieshengjie
+ * @Date: 2022/2/25 17:05
+ * @Description :
+ */
+@RestController
+@RequestMapping("/matrix")
+public class MatrixController {
+    @Resource
+    private TestService matrixService;
+
+    /**
+     * 简单矩阵
+     * @return
+     */
+    @GetMapping("/matrixDatas")
+    @ResponseBody
+    @CrossOrigin(origins = "*", maxAge = 3600)
+    public R matrixDatas()  {
+
+        Map<String, Object> resultMap = matrixService.matrixDatas();
+        if (StringUtils.isNotNull(resultMap)) {
+            return R.ok().data(resultMap);
+        }else{
+            return R.error().message("访问失败");
+        }
+    }
+
+//    /**
+//     * 明细矩阵
+//     * @return
+//     */
+//    @GetMapping("/matrixMxDatas")
+//    @ResponseBody
+//    @CrossOrigin(origins = "*", maxAge = 3600)
+//    public R matrixMxDatas()  {
+//
+//        Map<String, Object> resultMap = matrixService.matrixMxDatas();
+//        if (StringUtils.isNotNull(resultMap)) {
+//            return R.ok(resultMap.size()).data(resultMap);
+//        }else{
+//            return R.error().message("访问失败");
+//        }
+//    }
+
+}

+ 6 - 0
realtime/generationXK-service/src/main/java/com/gyee/generation/init/CacheContext.java

@@ -118,6 +118,8 @@ public class CacheContext implements CommandLineRunner {
     public static List<ProBasicModelPowerRd> theoreticalPowerList=new ArrayList<>();
     public static Map<String, Map<Double,ProBasicModelPowerRd>> theoreticalPowerMap = new HashMap<>(); //理论,保证功率
     public static Map<String, Map<Double,ProEconWtPowerCurveFitting>> curveFittingPowerMap = new HashMap<>(); //自算,最优功率
+    public static Map<String,List<ProBasicStatusPoint>> statusMap = new HashMap<>();
+
     @Override
     public void run(String... args) throws Exception {
         logger.info("缓存开始------------------------------------------------------------");
@@ -366,6 +368,10 @@ public class CacheContext implements CommandLineRunner {
         theoreticalPowerMap = JSONObject.parseObject(llglString, new TypeReference<Map<String, Map<Double,ProBasicModelPowerRd>>>() {
         });
 
+        String sszzt = redisService.get("SSZZT");
+        statusMap = JSONObject.parseObject(sszzt, new TypeReference<Map<String,List<ProBasicStatusPoint>>>() {
+        });
+
 
 
         logger.info("缓存结束------------------------------------------------------------");

+ 16 - 0
realtime/generationXK-service/src/main/java/com/gyee/generation/mapper/auto/ProBasicStatusPointMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.generation.mapper.auto;
+
+import com.gyee.generation.model.auto.ProBasicStatusPoint;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author shilin
+ * @since 2022-11-17
+ */
+public interface ProBasicStatusPointMapper extends BaseMapper<ProBasicStatusPoint> {
+
+}

+ 3 - 2
realtime/generationXK-service/src/main/java/com/gyee/generation/model/auto/ProBasicPowerstation.java

@@ -9,6 +9,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import java.math.BigDecimal;
+import java.util.Date;
 
 /**
  * <p>
@@ -182,8 +183,8 @@ public class ProBasicPowerstation extends Model {
     private Double conCapacity;
     private Double gridCapacity;
     private Double hoiCapacity;
-    private Double firstGridTime;
-    private Double wholeGridTime;
+    private Date firstGridTime;
+    private Date wholeGridTime;
     private Double anemoNumber;
     private Double stationNumber;
 

+ 61 - 0
realtime/generationXK-service/src/main/java/com/gyee/generation/model/auto/ProBasicStatusPoint.java

@@ -0,0 +1,61 @@
+package com.gyee.generation.model.auto;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author shilin
+ * @since 2022-11-17
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ProBasicStatusPoint extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    private String id;
+
+    private String nemCode;
+
+    private String name;
+
+    private String aname;
+
+    private String model;
+
+    private String valueUnit;
+
+    private String englishName;
+
+    private String typeId;
+
+    private String modelId;
+
+    private BigDecimal maxval;
+
+    private BigDecimal minval;
+
+    private BigDecimal reasonableMaxval;
+
+    private BigDecimal reasonableMinval;
+
+    private String windturbineId;
+
+    private String uniformCode;
+
+    private String shortId;
+
+    private String longId;
+
+    private String windpowerstationId;
+
+    private String realtimeId;
+
+
+}

+ 16 - 0
realtime/generationXK-service/src/main/java/com/gyee/generation/service/auto/IProBasicStatusPointService.java

@@ -0,0 +1,16 @@
+package com.gyee.generation.service.auto;
+
+import com.gyee.generation.model.auto.ProBasicStatusPoint;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author shilin
+ * @since 2022-11-17
+ */
+public interface IProBasicStatusPointService extends IService<ProBasicStatusPoint> {
+
+}

+ 20 - 0
realtime/generationXK-service/src/main/java/com/gyee/generation/service/auto/impl/ProBasicStatusPointServiceImpl.java

@@ -0,0 +1,20 @@
+package com.gyee.generation.service.auto.impl;
+
+import com.gyee.generation.model.auto.ProBasicStatusPoint;
+import com.gyee.generation.mapper.auto.ProBasicStatusPointMapper;
+import com.gyee.generation.service.auto.IProBasicStatusPointService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author shilin
+ * @since 2022-11-17
+ */
+@Service
+public class ProBasicStatusPointServiceImpl extends ServiceImpl<ProBasicStatusPointMapper, ProBasicStatusPoint> implements IProBasicStatusPointService {
+
+}

+ 16 - 13
realtime/generationXK-service/src/main/java/com/gyee/generation/service/initalcache/CacheService.java

@@ -13,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -44,6 +45,8 @@ public class CacheService {
     private IProBasicRegionService regionsService;
     @Resource
     private IProBasicModelPowerRdService proBasicModelPowerRdService;
+    @Resource
+    private IProBasicStatusPointService proBasicStatusPointService;
 
 
     public void initRedisCache(){
@@ -172,18 +175,18 @@ public class CacheService {
         });
         redisService.set("ZLLGL", JSONObject.toJSONString(powerrdMap));
 
-//        log.info("--------------------------redis十三种状态");
-//        Map<String,List<Windturbinestatusdi>> sszztMap = new HashMap<>();
-//        List<Windturbinestatusdi> windturbinestatusdis = windturbinestatusdiService.list();
-//        windturbinestatusdis.stream().forEach(w->{
-//            if (sszztMap.containsKey(w.getWindturbineid())){
-//                sszztMap.get(w.getWindturbineid()).add(w);
-//            }else {
-//                List<Windturbinestatusdi> wdisList = new ArrayList<>();
-//                wdisList.add(w);
-//                sszztMap.put(w.getWindturbineid(),wdisList);
-//            }
-//        });
-//        redisService.set("SSZZT",JSONObject.toJSONString(sszztMap));
+        log.info("--------------------------redis十三种状态");
+        Map<String,List<ProBasicStatusPoint>> sszztMap = new HashMap<>();
+        List<ProBasicStatusPoint> windturbinestatusdis = proBasicStatusPointService.list();
+        windturbinestatusdis.stream().forEach(w->{
+            if (sszztMap.containsKey(w.getWindturbineId())){
+                sszztMap.get(w.getWindturbineId()).add(w);
+            }else {
+                List<ProBasicStatusPoint> wdisList = new ArrayList<>();
+                wdisList.add(w);
+                sszztMap.put(w.getWindturbineId(),wdisList);
+            }
+        });
+        redisService.set("SSZZT",JSONObject.toJSONString(sszztMap));
     }
 }

+ 870 - 15
realtime/generationXK-service/src/main/java/com/gyee/generation/service/realtimelibrary/StatusService.java

@@ -1,18 +1,23 @@
 package com.gyee.generation.service.realtimelibrary;
 
+import com.gyee.common.contant.Contant;
 import com.gyee.common.contant.ContantXk;
+import com.gyee.common.model.PointData;
+import com.gyee.common.model.StringUtils;
+import com.gyee.common.model.auto.Windturbine;
 import com.gyee.common.util.DateUtils;
 import com.gyee.generation.init.CacheContext;
-import com.gyee.generation.model.auto.ProBasicEquipment;
-import com.gyee.generation.model.auto.ProBasicPowerstationPoint;
-import com.gyee.generation.model.auto.ProBasicSubStation;
+import com.gyee.generation.model.auto.*;
+import com.gyee.generation.util.PointUtil;
 import com.gyee.generation.util.realtimesource.IEdosUtil;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.stream.Collectors;
 
 /*
 @author   谢生杰
@@ -23,22 +28,61 @@ public class StatusService {
 
     @Resource
     private IEdosUtil edosUtil;
+
+    @Value("${AI110}")
+    private String AI110;
+    @Value("${second}")
+    private String second;
+
+    Map<String,Double> powerCache = new HashMap<>();
     /**
-     * 限电
+     * 判断调度场站限电
      */
-    public void powerRationing(){
-
-//        public static Map<String,Double> wpMap
+    public void powerRationing() throws Exception {
 
+        List<PointData> resultList = new ArrayList<>();
         List<ProBasicSubStation> subwpls = CacheContext.subwpls;
         Map<String, Map<String, ProBasicPowerstationPoint>> subwppointmap = CacheContext.subwppointmap;
-
+        List<ProBasicProject> pjls = CacheContext.pjls;
+        Map<String, Map<String, ProBasicPowerstationPoint>> propointmap = CacheContext.propointmap;
+        Map<String, Map<String, ProBasicEquipmentPoint>> wtpAimap = CacheContext.wtpAimap;
         Map<String, List<ProBasicEquipment>> subWtsMap = CacheContext.subWtsMap;
+        Map<String, Double> modelpower = CacheContext.modelpower;
 
+        Date currentDate = DateUtils.getCurrentDate();
+        Date fiveDate = DateUtils.addMinutes(currentDate, -5);
+
+        subwpls.stream().forEach(sub->{
+            powerCache.put(sub.getId(),-1d);
+
+            //算调度场站自算功率
+            Map<String, ProBasicPowerstationPoint> stringProBasicPowerstationPointMap = subwppointmap.get(sub.getId());
+
+            ProBasicPowerstationPoint zsglPoint = stringProBasicPowerstationPointMap.get(ContantXk.TPOINT_WP_ZSGL);
+            AtomicReference<Double> zsgl = new AtomicReference<>((double) 0);
+            List<ProBasicProject> basicProjects = pjls.stream().filter(p -> p.getWindsubStationId().equals(sub.getId())).collect(Collectors.toList());
+            basicProjects.stream().forEach(p->{
+                Map<String, ProBasicPowerstationPoint> powerstationPointMap = propointmap.get(p.getId());
+                ProBasicPowerstationPoint powerstationPoint = powerstationPointMap.get(ContantXk.SSZNHGLZS);
+
+                zsgl.updateAndGet(v -> {
+                    try {
+                        return new Double((double) (v + edosUtil.getSectionData(powerstationPoint, currentDate.getTime()).getPointValueInDouble()));
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                    return v;
+                });
+            });
+            try {
+                edosUtil.sendSinglePoint(PointUtil.createPointData(currentDate,zsgl.get(),zsglPoint.getNemCode(),zsglPoint.getName()));
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        });
 
 
 
-        Date currentDate = DateUtils.getCurrentDate();
 
         subwpls.stream().forEach(sub->{
             Map<String, ProBasicPowerstationPoint> stringProBasicPowerstationPointMap = subwppointmap.get(sub.getId());
@@ -46,24 +90,835 @@ public class StatusService {
             ProBasicPowerstationPoint agcPoint = stringProBasicPowerstationPointMap.get(ContantXk.TPOINT_WP_AGC);
             ProBasicPowerstationPoint cxglPoint = stringProBasicPowerstationPointMap.get(ContantXk.TPOINT_WP_CXGL);
             ProBasicPowerstationPoint xdztPoint = stringProBasicPowerstationPointMap.get(ContantXk.TPOINT_WP_XDZT);
-
+            ProBasicPowerstationPoint zsglPoint = stringProBasicPowerstationPointMap.get(ContantXk.TPOINT_WP_ZSGL);
             double agc = 0;
+            double xdzt = 0;
+            double zsgl5 = 0;
+            double zsgl = 0;
+            double cxgl = 0;
+            double cxgl5 = 0;
+            double agc5 = 0;
             try {
                 agc = edosUtil.getSectionData(agcPoint,currentDate.getTime()).getPointValueInDouble();
+                xdzt = edosUtil.getSectionData(xdztPoint,currentDate.getTime()).getPointValueInDouble();
+                Optional<PointData> zsglFirst = edosUtil.getHistStat(zsglPoint, fiveDate.getTime() / 1000, currentDate.getTime() / 1000, 1l, 300l, 2).stream().findFirst();
+                Optional<PointData> agcFirst = edosUtil.getHistStat(agcPoint, fiveDate.getTime() / 1000, currentDate.getTime() / 1000, 1l, 300l, 2).stream().findFirst();
+                Optional<PointData> cxglFirst = edosUtil.getHistStat(cxglPoint, fiveDate.getTime() / 1000, currentDate.getTime() / 1000, 1l, 300l, 2).stream().findFirst();
+                zsgl = edosUtil.getSectionData(zsglPoint,currentDate.getTime()).getPointValueInDouble();
+                cxgl = edosUtil.getSectionData(cxglPoint,currentDate.getTime()).getPointValueInDouble();
+                if (zsglFirst.isPresent()){
+                    zsgl5 = zsglFirst.get().getPointValueInDouble();
+                }
+                if (agcFirst.isPresent()){
+                    agc5 = agcFirst.get().getPointValueInDouble();
+                }
+                if (cxglFirst.isPresent()){
+                    cxgl5 = cxglFirst.get().getPointValueInDouble();
+                }
+
             } catch (Exception e) {
                 e.printStackTrace();
             }
 
-            boolean b = false;
-            if (agc<sub.getCapacity()){
+            boolean k = false;   //限电一直不变
 
+            //第一次初始化复制实时数据到缓存
+            if (powerCache.containsKey(sub.getId())){
+                if (powerCache.get(sub.getId()).equals(-1)){
+                    powerCache.put(sub.getId(),agc);
+                }else if (powerCache.get(sub.getId()) == agc){
+                    k = true;
+                }else {
+                    powerCache.put(sub.getId(),agc);
+                }
             }
 
+            boolean b = false;   //默认不限电
+            if (xdzt==0){
+                if (zsgl5>=sub.getCapacity()*0.4){
+                    if (zsgl/agc>=1.2 && agc-cxgl<=2){
+                        b = true;
+                    }
+                    if (agc5<=cxgl5){
+                        b = true;
+                    }
+                }else {
+                    if (k){
+                        if (agc5<=cxgl5){
+                            b = true;
+                        }
+                        if (zsgl/agc>=1.1 && agc5-cxgl5<=2){
+                            b = true;
+                        }
+                    }
+                }
+            }else {
+                if (zsgl5>=sub.getCapacity()*0.4){
+                    if (zsgl/agc>1.15){
+                        b = true;
+                    }
+                    if (agc5<=cxgl5){
+                        b = true;
+                    }
+                    if (zsgl>agc && agc5-cxgl5<4){
+                        b = true;
+                    }
+                }
+            }
+            double xdValue = 0;
+            if (b){
+                xdValue = 1;
+                //判断风机是否限电
+                List<ProBasicEquipment> proBasicEquipments = subWtsMap.get(sub.getId());
+                proBasicEquipments.stream().forEach(wt->{
+                    double fjxd = 0;
+                    Map<String, ProBasicEquipmentPoint> basicEquipmentPointMap = wtpAimap.get(wt.getId());
+                    ProBasicEquipmentPoint ssglPoint = basicEquipmentPointMap.get(ContantXk.CJ_SSGL);
+                    ProBasicEquipmentPoint ssfsPoint = basicEquipmentPointMap.get(ContantXk.CJ_SSFS);
+                    ProBasicEquipmentPoint qfztPoint = basicEquipmentPointMap.get(ContantXk.SSQFZT);
+                    ProBasicEquipmentPoint gpztPoint = basicEquipmentPointMap.get(ContantXk.GPZT);
+                    ProBasicEquipmentPoint fjxdztPoint = basicEquipmentPointMap.get(ContantXk.XDZT);
 
+                    double ssgl = 0;
+                    double ssfs = 0;
+                    double qfzt = 0;
+                    double gpzt = 0;
+                    try {
+                        ssgl = edosUtil.getSectionData(ssglPoint,currentDate.getTime()).getPointValueInDouble();
+                        ssfs = edosUtil.getSectionData(ssfsPoint,currentDate.getTime()).getPointValueInDouble();
+                        qfzt = edosUtil.getSectionData(qfztPoint,currentDate.getTime()).getPointValueInDouble();
+                        gpzt = edosUtil.getSectionData(gpztPoint,currentDate.getTime()).getPointValueInDouble();
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                    Double capacity = modelpower.get(wt.getId());
+                    if (ssgl<capacity*0.9){
+                        if (ssfs>=12 && ssgl<capacity){
+                            fjxd = 1;
+                        }
+                        if (qfzt>=3){
+                            fjxd = 1;
+                        }
+                        boolean jcl = false;
+                        try {
+                            jcl = isJcl(currentDate,basicEquipmentPointMap);
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
+                        if (jcl){
+                            fjxd = 1;
+                        }
+                        if (gpzt==1){
+                            fjxd = 1;
+                        }
+                    }
+                    resultList.add(PointUtil.createPointData(currentDate,fjxd,fjxdztPoint.getNemCode(),fjxdztPoint.getName()));
 
+                });
+            }
+
+            resultList.add(PointUtil.createPointData(currentDate,xdValue,xdztPoint.getNemCode(),xdztPoint.getName()));
 
         });
+        edosUtil.sendMultiPoint(resultList);
+    }
 
 
+    /**
+     * 判断是否降出力
+     * @param stringWindturbinetestingpointnewMap
+     * @return
+     * @throws Exception
+     */
+    private boolean isJcl(Date currentDate, Map<String, ProBasicEquipmentPoint> stringWindturbinetestingpointnewMap) throws Exception {
+        boolean isJcl = false;
+        ProBasicEquipmentPoint zsgdPoint = stringWindturbinetestingpointnewMap.get(ContantXk.CJ_YLZSGD);
+
+        if (!zsgdPoint.getNemCode().equals("INITIAL")){
+            Double realData = edosUtil.getSectionData(zsgdPoint,currentDate.getTime()).getPointValueInDouble();
+            if (realData<Double.parseDouble(AI110)){
+                isJcl = true;
+            }
+        }
+        return isJcl;
     }
+
+    /**
+     * 计算风机状态
+     */
+    public void statusReal() throws Exception {
+        Map<String, Map<String, ProBasicEquipmentPoint>> wtpAimap = CacheContext.wtpAimap;
+        List<ProBasicEquipment> wtls = CacheContext.wtls;
+        Map<String, ProEconEquipmentmodel> modelMap = CacheContext.modelMap;
+        Map<String, List<ProBasicStatusPoint>> statusMap = CacheContext.statusMap;
+        Date currentDate = DateUtils.getCurrentDate();
+
+        List<PointData> resultList = new ArrayList<>();
+
+        wtls.stream().forEach(wt->{
+            Map<String, ProBasicEquipmentPoint> equipmentPointMap = wtpAimap.get(wt.getId());
+            //限电状态点
+            ProBasicEquipmentPoint xdztPoint = equipmentPointMap.get(ContantXk.XDZT);
+            //挂牌状态点
+            ProBasicEquipmentPoint gpztPoint = equipmentPointMap.get(ContantXk.GPZT);
+            //设备状态点
+            ProBasicEquipmentPoint sbztPoint = equipmentPointMap.get(ContantXk.SBZT);
+            //明细状态点
+            ProBasicEquipmentPoint mxztPoint = equipmentPointMap.get(ContantXk.MXZT);
+            //实时功率点
+            ProBasicEquipmentPoint ssglPoint = equipmentPointMap.get(ContantXk.CJ_SSGL);
+            //状态持续时间,以秒计算
+            ProBasicEquipmentPoint ztcxsjPoint = equipmentPointMap.get(ContantXk.ZTCXSJ);
+
+
+            String[] interruption = ContantXk.INTERRUPTION.split(",");
+            List<String> interruptionList = new ArrayList<>();
+            Arrays.stream(interruption).forEach(i->{
+                ProBasicEquipmentPoint equipmentPoint = equipmentPointMap.get(i);
+                if (!equipmentPoint.getNemCode().equals("INITIAL")){
+                    interruptionList.add(equipmentPoint.getNemCode());
+                }
+            });
+            double mxzt = 0;
+            double ztcxsj = 0;
+            try {
+                mxzt = edosUtil.getSectionData(mxztPoint,currentDate.getTime()).getPointValueInDouble();
+                ztcxsj = edosUtil.getSectionData(ztcxsjPoint,currentDate.getTime()).getPointValueInDouble();
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+
+            Double status = 1.0;
+            Double mxstatus = 2.0;
+            try {
+                if (StringUtils.isEmpty(interruptionList)){
+                    mxstatus = 12.0;
+                    status = 6.0;
+                }
+                else {
+                    List<PointData> interruptionRealData = edosUtil.getRealData(interruptionList);
+                    List<PointData> collect = interruptionRealData.stream().filter(i -> (currentDate.getTime() - i.getPointTime()) / 1000 > Integer.parseInt(second)).collect(Collectors.toList());
+                    if (collect.size()!=interruptionRealData.size()){
+                        double ssgl = edosUtil.getSectionData(ssglPoint,currentDate.getTime()).getPointValueInDouble();
+                        double gpzt = edosUtil.getSectionData(gpztPoint,currentDate.getTime()).getPointValueInDouble();
+                        double xdzt = edosUtil.getSectionData(xdztPoint,currentDate.getTime()).getPointValueInDouble();
+
+                        //  0, "正常状态";1, "限电";2, "场内受累检修";3, "场内受累故障";4, "场外受累电网";5, "场外受累天气";6, "发电限负荷";
+                        if(gpzt != 0){
+                            //获取挂牌状态给明细状态赋值
+                            mxstatus = getGpzt(gpzt,ssgl);
+                        }else if (xdzt == 1){
+                            mxstatus = getGpzt(1,ssgl);
+                        }else {
+                            mxstatus = getMxzt(modelMap.get(wt.getModelId()).getWindturbineManufacturerId(),statusMap,wt);
+                        }
+                        if (mxstatus == 2){
+                            boolean isJcl = isJcl(currentDate, equipmentPointMap);
+                            if (ssgl<=0){
+                                mxstatus=0.0;
+                            }else if (isJcl){
+                                mxstatus = 3.0;
+                            }
+                        }
+
+                    }else{
+                        //离线
+                        mxstatus = 12.0;
+                    }
+                    if (mxstatus == 0 || mxstatus == 1){
+                        status = 0.0;
+                    }else if(mxstatus == 2 || mxstatus == 3){
+                        status = 1.0;
+                    }else if(mxstatus == 4 || mxstatus == 5){
+                        status = 2.0;
+                    }else if(mxstatus == 6 || mxstatus == 7){
+                        status = 3.0;
+                    }else if(mxstatus == 8 || mxstatus == 9){
+                        status = 4.0;
+                    }else if(mxstatus == 10 || mxstatus == 11){
+                        status = 5.0;
+                    }else if(mxstatus == 12 || mxstatus == 13){
+                        status = 6.0;
+                    }
+                }
+                if (mxstatus == mxzt){
+                    ztcxsj ++;
+                }else {
+                    ztcxsj = 0;
+                }
+                resultList.add(PointUtil.createPointData(currentDate,mxstatus,mxztPoint.getNemCode(),mxztPoint.getName()));
+                resultList.add(PointUtil.createPointData(currentDate,status,sbztPoint.getNemCode(),sbztPoint.getName()));
+                resultList.add(PointUtil.createPointData(currentDate,ztcxsj,ztcxsjPoint.getNemCode(),ztcxsjPoint.getName()));
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+
+        });
+        edosUtil.sendMultiPoint(resultList);
+    }
+
+    /**
+     * 计算状态台数
+     */
+    public void calculateStatusNumber() throws Exception {
+        List<ProBasicPowerstation> wpls = CacheContext.wpls;
+        Map<String, List<ProBasicProject>> wppromap = CacheContext.wppromap;
+        Map<String, Map<String, ProBasicPowerstationPoint>> wppointmap = CacheContext.wppointmap;
+        Map<String, Map<String, ProBasicPowerstationPoint>> propointmap = CacheContext.propointmap;
+        Map<String, Map<String, ProBasicPowerstationPoint>> linepointmap = CacheContext.linepointmap;
+        Map<String, Map<String, ProBasicEquipmentPoint>> wtpAimap = CacheContext.wtpAimap;
+        Map<String, List<ProBasicLine>> prolinemap = CacheContext.prolinemap;
+        Map<String, List<ProBasicEquipment>> lnwtmap = CacheContext.lnwtmap;
+        List<PointData> resultList = new ArrayList<>();
+        Date currentDate = DateUtils.getCurrentDate();
+        wpls.stream().forEach(wp->{
+            List<ProBasicProject> projects = wppromap.get(wp.getId());
+            Map<String, ProBasicPowerstationPoint> wpmap = wppointmap.get(wp.getId());
+            AtomicInteger wpdjnum = new AtomicInteger();
+            AtomicInteger wptjnum = new AtomicInteger();
+            AtomicInteger wpfdnum = new AtomicInteger();
+            AtomicInteger wpfdjclnum = new AtomicInteger();
+            AtomicInteger wpxdjclnum = new AtomicInteger();
+            AtomicInteger wpxdtjnum = new AtomicInteger();
+            AtomicInteger wpgznum = new AtomicInteger();
+            AtomicInteger wpcngznum = new AtomicInteger();
+            AtomicInteger wpjxnum = new AtomicInteger();
+            AtomicInteger wpcnjxnum = new AtomicInteger();
+            AtomicInteger wpdwslnum = new AtomicInteger();
+            AtomicInteger wphjslnum = new AtomicInteger();
+            AtomicInteger wplxnum = new AtomicInteger();
+            AtomicInteger wpwznum = new AtomicInteger();
+            //六种
+            AtomicInteger wpdjts = new AtomicInteger();
+            AtomicInteger wpgzts = new AtomicInteger();
+            AtomicInteger wptxzd = new AtomicInteger();
+            AtomicInteger wpwhtj = new AtomicInteger();
+            AtomicInteger wpxdts = new AtomicInteger();
+            AtomicInteger wpyxts = new AtomicInteger();
+            AtomicInteger wpslts = new AtomicInteger();
+            projects.stream().forEach(project->{
+                List<ProBasicLine> lineList = prolinemap.get(project.getId());
+                Map<String, ProBasicPowerstationPoint> projectmap = propointmap.get(project.getId());
+                AtomicInteger prodjnum = new AtomicInteger();
+                AtomicInteger protjnum = new AtomicInteger();
+                AtomicInteger profdnum = new AtomicInteger();
+                AtomicInteger profdjclnum = new AtomicInteger();
+                AtomicInteger proxdjclnum = new AtomicInteger();
+                AtomicInteger proxdtjnum = new AtomicInteger();
+                AtomicInteger progznum = new AtomicInteger();
+                AtomicInteger procngznum = new AtomicInteger();
+                AtomicInteger projxnum = new AtomicInteger();
+                AtomicInteger procnjxnum = new AtomicInteger();
+                AtomicInteger prodwslnum = new AtomicInteger();
+                AtomicInteger prohjslnum = new AtomicInteger();
+                AtomicInteger prolxnum = new AtomicInteger();
+                AtomicInteger prowznum = new AtomicInteger();
+
+                //六种
+                AtomicInteger prodjts = new AtomicInteger();
+                AtomicInteger progzts = new AtomicInteger();
+                AtomicInteger protxzd = new AtomicInteger();
+                AtomicInteger prowhtj = new AtomicInteger();
+                AtomicInteger proxdts = new AtomicInteger();
+                AtomicInteger proyxts = new AtomicInteger();
+                AtomicInteger proslts = new AtomicInteger();
+
+                lineList.stream().forEach(line->{
+                    List<ProBasicEquipment> windturbines = lnwtmap.get(line.getId());
+                    Map<String, ProBasicPowerstationPoint> linemap = linepointmap.get(line.getId());
+                    AtomicInteger djnum = new AtomicInteger();
+                    AtomicInteger tjnum = new AtomicInteger();
+                    AtomicInteger fdnum = new AtomicInteger();
+                    AtomicInteger fdjclnum = new AtomicInteger();
+                    AtomicInteger xdjclnum = new AtomicInteger();
+                    AtomicInteger xdtjnum = new AtomicInteger();
+                    AtomicInteger gznum = new AtomicInteger();
+                    AtomicInteger cngznum = new AtomicInteger();
+                    AtomicInteger jxnum = new AtomicInteger();
+                    AtomicInteger cnjxnum = new AtomicInteger();
+                    AtomicInteger dwslnum = new AtomicInteger();
+                    AtomicInteger hjslnum = new AtomicInteger();
+                    AtomicInteger lxnum = new AtomicInteger();
+                    AtomicInteger wznum = new AtomicInteger();
+                    //六种
+                    AtomicInteger djts = new AtomicInteger();
+                    AtomicInteger gzts = new AtomicInteger();
+                    AtomicInteger txzd = new AtomicInteger();
+                    AtomicInteger whtj = new AtomicInteger();
+                    AtomicInteger xdts = new AtomicInteger();
+                    AtomicInteger yxts = new AtomicInteger();
+                    AtomicInteger slts = new AtomicInteger();
+                    windturbines.stream().forEach(wt->{
+                        ProBasicEquipmentPoint windturbinetestingpointnew = wtpAimap.get(wt.getId()).get(Contant.ZTMX);
+                        try {
+                            double valueInDouble = edosUtil.getSectionData(windturbinetestingpointnew,currentDate.getTime()).getPointValueInDouble();
+                            switch ((int) valueInDouble){
+                                case 0:
+                                    djnum.getAndIncrement();
+                                    break;
+                                case 1:
+                                    tjnum.getAndIncrement();
+                                    break;
+                                case 2:
+                                    fdnum.getAndIncrement();
+                                    break;
+                                case 3:
+                                    fdjclnum.getAndIncrement();
+                                    break;
+                                case 4:
+                                    gznum.getAndIncrement();
+                                    break;
+                                case 5:
+                                    cngznum.getAndIncrement();
+                                    break;
+                                case 6:
+                                    jxnum.getAndIncrement();
+                                    break;
+                                case 7:
+                                    cnjxnum.getAndIncrement();
+                                    break;
+                                case 8:
+                                    xdjclnum.getAndIncrement();
+                                    break;
+                                case 9:
+                                    xdtjnum.getAndIncrement();
+                                    break;
+                                case 10:
+                                    dwslnum.getAndIncrement();
+                                    break;
+                                case 11:
+                                    hjslnum.getAndIncrement();
+                                    break;
+                                case 12:
+                                    lxnum.getAndIncrement();
+                                    break;
+                                case 13:
+                                    wznum.getAndIncrement();
+                                    break;
+                                default:
+                                    fdnum.getAndIncrement();
+                            }
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
+                    });
+                    //待机台数0
+                    ProBasicPowerstationPoint djnumPointNew = linemap.get(ContantXk.DJTSMX);
+                    PointData djnumPoint = PointUtil.createPointData(currentDate,djnum.get(),djnumPointNew.getNemCode(),djnumPointNew.getName());
+                    prodjnum.addAndGet(djnum.intValue());
+                    resultList.add(djnumPoint);
+                    //停机台数1
+                    ProBasicPowerstationPoint tjnumPointNew = linemap.get(ContantXk.SDTJTSMX);
+                    PointData tjnumPoint = PointUtil.createPointData(currentDate,tjnum.get(),tjnumPointNew.getNemCode(),tjnumPointNew.getName());
+                    protjnum.addAndGet(tjnum.intValue());
+                    resultList.add(tjnumPoint);
+                    //待机台数6-0
+                    djts.addAndGet(djnum.intValue()+tjnum.intValue());
+                    ProBasicPowerstationPoint djtsPointNew = linemap.get(ContantXk.DJTS);
+                    PointData djtsPoint = PointUtil.createPointData(currentDate,djts.get(),djtsPointNew.getNemCode(),djtsPointNew.getName());
+                    resultList.add(djtsPoint);
+                    //运行台数2
+                    ProBasicPowerstationPoint fdnumPointNew = linemap.get(ContantXk.XNTSMX);
+                    PointData fdnumPoint = PointUtil.createPointData(currentDate,fdnum.get(),fdnumPointNew.getNemCode(),fdnumPointNew.getName());
+                    profdnum.addAndGet(fdnum.intValue());
+                    resultList.add(fdnumPoint);
+                    //降出力台数3
+                    ProBasicPowerstationPoint fdjclnumPointNew = linemap.get(ContantXk.QXJCLTSMX);
+                    PointData fdjclnumPoint = PointUtil.createPointData(currentDate,fdjclnum.get(),fdjclnumPointNew.getNemCode(),fdjclnumPointNew.getName());
+                    profdjclnum.addAndGet(fdjclnum.intValue());
+                    resultList.add(fdjclnumPoint);
+                    //运行台数6-1
+                    yxts.addAndGet(fdnum.intValue()+fdjclnum.intValue());
+                    ProBasicPowerstationPoint yxtsPointNew = linemap.get(ContantXk.YXTS);
+                    PointData yxtsPoint = PointUtil.createPointData(currentDate,yxts.get(),yxtsPointNew.getNemCode(),yxtsPointNew.getName());
+                    resultList.add(yxtsPoint);
+
+                    //限电降出力台数4
+                    ProBasicPowerstationPoint xdjclnumPointNew = linemap.get(ContantXk.XDJCLTSMX);
+                    PointData xdjclnumPoint = PointUtil.createPointData(currentDate,xdjclnum.get(),xdjclnumPointNew.getNemCode(),xdjclnumPointNew.getName());
+                    proxdjclnum.addAndGet(xdjclnum.intValue());
+                    resultList.add(xdjclnumPoint);
+                    //限电停机台数5
+                    ProBasicPowerstationPoint xdtjnumPointNew = linemap.get(ContantXk.XDTJTSMX);
+                    PointData xdtjnumPoint = PointUtil.createPointData(currentDate,xdtjnum.get(),xdtjnumPointNew.getNemCode(),xdtjnumPointNew.getName());
+                    proxdtjnum.addAndGet(xdtjnum.intValue());
+                    resultList.add(xdtjnumPoint);
+                    //限电台数6-5
+                    xdts.addAndGet(xdjclnum.intValue()+xdtjnum.intValue());
+                    ProBasicPowerstationPoint xdtsPointNew = linemap.get(ContantXk.XDTS);
+                    PointData xdtsPoint = PointUtil.createPointData(currentDate,xdts.get(),xdtsPointNew.getNemCode(),xdtsPointNew.getName());
+                    resultList.add(xdtsPoint);
+
+                    //故障台数6
+                    ProBasicPowerstationPoint gznumPointNew = linemap.get(ContantXk.GZTSMX);
+                    PointData gznumPoint = PointUtil.createPointData(currentDate,gznum.get(),gznumPointNew.getNemCode(),gznumPointNew.getName());
+                    progznum.addAndGet(gznum.intValue());
+                    resultList.add(gznumPoint);
+                    //故障受累台数7
+                    ProBasicPowerstationPoint cngznumPointNew = linemap.get(ContantXk.CNSLGZTSMX);
+                    PointData cngznumPoint = PointUtil.createPointData(currentDate,cngznum.get(),cngznumPointNew.getNemCode(),cngznumPointNew.getName());
+                    procngznum.addAndGet(cngznum.intValue());
+                    resultList.add(cngznumPoint);
+
+                    //检修台数8
+                    ProBasicPowerstationPoint jxnumPointNew = linemap.get(ContantXk.JXTSMX);
+                    PointData jxnumPoint = PointUtil.createPointData(currentDate,jxnum.get(),jxnumPointNew.getNemCode(),jxnumPointNew.getName());
+                    projxnum.addAndGet(jxnum.intValue());
+                    resultList.add(jxnumPoint);
+                    //检修受累台数9
+                    ProBasicPowerstationPoint cnjxnumPointNew = linemap.get(ContantXk.CNSLJXTSMX);
+                    PointData cnjxnumPoint = PointUtil.createPointData(currentDate,cnjxnum.get(),cnjxnumPointNew.getNemCode(),cnjxnumPointNew.getName());
+                    procnjxnum.addAndGet(cnjxnum.intValue());
+                    resultList.add(cnjxnumPoint);
+
+                    //检修台数6-4
+                    whtj.addAndGet(jxnum.intValue()+cnjxnum.intValue());
+                    ProBasicPowerstationPoint whtjPointNew = linemap.get(ContantXk.JXTJTS);
+                    PointData whtjPoint = PointUtil.createPointData(currentDate,whtj.get(),whtjPointNew.getNemCode(),whtjPointNew.getName());
+                    resultList.add(whtjPoint);
+                    //电网受累台数10
+                    ProBasicPowerstationPoint dwslnumPointNew = linemap.get(ContantXk.CWSLDWTSMX);
+                    PointData dwslnumPoint = PointUtil.createPointData(currentDate,dwslnum.get(),dwslnumPointNew.getNemCode(),dwslnumPointNew.getName());
+                    prodwslnum.addAndGet(dwslnum.intValue());
+                    resultList.add(dwslnumPoint);
+                    //环境受累台数11
+                    ProBasicPowerstationPoint hjslnumPointNew = linemap.get(ContantXk.CWSLTQTSMX);
+                    PointData hjslnumPoint = PointUtil.createPointData(currentDate,hjslnum.get(),hjslnumPointNew.getNemCode(),hjslnumPointNew.getName());
+                    prohjslnum.addAndGet(hjslnum.intValue());
+                    resultList.add(hjslnumPoint);
+
+                    //故障台数6-2
+                    gzts.addAndGet(gznum.intValue()+cngznum.intValue());
+                    ProBasicPowerstationPoint gztsPointNew = linemap.get(ContantXk.GZTJTS);
+                    PointData gztjPoint = PointUtil.createPointData(currentDate,gzts.get(),gztsPointNew.getNemCode(),gztsPointNew.getName());
+                    resultList.add(gztjPoint);
+                    //受累台数6-6
+                    slts.addAndGet(dwslnum.intValue()+hjslnum.intValue());
+                    ProBasicPowerstationPoint sltsPointNew = linemap.get(ContantXk.SLTS);
+                    PointData sltjPoint = PointUtil.createPointData(currentDate,slts.get(),sltsPointNew.getNemCode(),sltsPointNew.getName());
+                    resultList.add(sltjPoint);
+
+                    //离线台数12
+                    ProBasicPowerstationPoint lxnumPointNew = linemap.get(ContantXk.LXTSMX);
+                    PointData lxnumPoint = PointUtil.createPointData(currentDate,lxnum.get(),lxnumPointNew.getNemCode(),lxnumPointNew.getName());
+                    prolxnum.addAndGet(lxnum.intValue());
+                    resultList.add(lxnumPoint);
+                    //未知离线13
+                    ProBasicPowerstationPoint wznumPointNew = linemap.get(ContantXk.TXZDTSMX);
+                    PointData wznumPoint = PointUtil.createPointData(currentDate,wznum.get(),wznumPointNew.getNemCode(),wznumPointNew.getName());
+                    prowznum.addAndGet(wznum.intValue());
+                    resultList.add(wznumPoint);
+
+                    //离线台数6
+                    txzd.addAndGet(lxnum.intValue()+wznum.intValue());
+                    ProBasicPowerstationPoint txzdPointNew = linemap.get(ContantXk.TXZDTS);
+                    PointData txzdPoint = PointUtil.createPointData(currentDate,txzd.get(),txzdPointNew.getNemCode(),txzdPointNew.getName());
+                    resultList.add(txzdPoint);
+                });
+
+                //待机台数0
+                ProBasicPowerstationPoint djnumPointNew = projectmap.get(ContantXk.DJTSMX);
+                PointData djnumPoint = PointUtil.createPointData(currentDate,prodjnum.get(),djnumPointNew.getNemCode(),djnumPointNew.getName());
+                wpdjnum.addAndGet(prodjnum.intValue());
+                resultList.add(djnumPoint);
+                //停机台数1
+                ProBasicPowerstationPoint tjnumPointNew = projectmap.get(ContantXk.SDTJTSMX);
+                PointData tjnumPoint = PointUtil.createPointData(currentDate,protjnum.get(),tjnumPointNew.getNemCode(),tjnumPointNew.getName());
+                wptjnum.addAndGet(protjnum.intValue());
+                resultList.add(tjnumPoint);
+                //待机台数6-0
+                ProBasicPowerstationPoint djtsPointNew = projectmap.get(ContantXk.DJTS);
+                prodjts.addAndGet(prodjnum.intValue()+protjnum.intValue());
+                PointData djtsPoint = PointUtil.createPointData(currentDate,prodjts.get(),djtsPointNew.getNemCode(),djtsPointNew.getName());
+                resultList.add(djtsPoint);
+
+                //运行台数2
+                ProBasicPowerstationPoint fdnumPointNew = projectmap.get(ContantXk.XNTSMX);
+                PointData fdnumPoint = PointUtil.createPointData(currentDate,profdnum.get(),fdnumPointNew.getNemCode(),fdnumPointNew.getName());
+                wpfdnum.addAndGet(profdnum.intValue());
+                resultList.add(fdnumPoint);
+                //降出力台数3
+                ProBasicPowerstationPoint fdjclnumPointNew = projectmap.get(ContantXk.QXJCLTSMX);
+                PointData fdjclnumPoint = PointUtil.createPointData(currentDate,profdjclnum.get(),fdjclnumPointNew.getNemCode(),fdjclnumPointNew.getName());
+                wpfdjclnum.addAndGet(profdjclnum.intValue());
+                resultList.add(fdjclnumPoint);
+                //运行台数6-1
+                ProBasicPowerstationPoint yxtsPointNew = projectmap.get(ContantXk.YXTS);
+                proyxts.addAndGet(profdnum.intValue()+profdjclnum.intValue());
+                PointData yxtsPoint = PointUtil.createPointData(currentDate,proyxts.get(),yxtsPointNew.getNemCode(),yxtsPointNew.getName());
+                resultList.add(yxtsPoint);
+
+                //限电降出力台数4
+                ProBasicPowerstationPoint xdjclnumPointNew = projectmap.get(ContantXk.XDJCLTSMX);
+                PointData xdjclnumPoint = PointUtil.createPointData(currentDate,proxdjclnum.get(),xdjclnumPointNew.getNemCode(),xdjclnumPointNew.getName());
+                wpxdjclnum.addAndGet(proxdjclnum.intValue());
+                resultList.add(xdjclnumPoint);
+                //限电停机台数5
+                ProBasicPowerstationPoint xdtjnumPointNew = projectmap.get(ContantXk.XDTJTSMX);
+                PointData xdtjnumPoint = PointUtil.createPointData(currentDate,proxdtjnum.get(),xdtjnumPointNew.getNemCode(),xdtjnumPointNew.getName());
+                wpxdtjnum.addAndGet(proxdtjnum.intValue());
+                resultList.add(xdtjnumPoint);
+                //限电台数6-5
+                ProBasicPowerstationPoint xdtsPointNew = projectmap.get(ContantXk.XDTS);
+                proxdts.addAndGet(proxdjclnum.intValue()+proxdtjnum.intValue());
+                PointData xdtsPoint = PointUtil.createPointData(currentDate,proxdts.get(),xdtsPointNew.getNemCode(),xdtsPointNew.getName());
+                resultList.add(xdtsPoint);
+
+                //故障台数6
+                ProBasicPowerstationPoint gznumPointNew = projectmap.get(ContantXk.GZTSMX);
+                PointData gznumPoint = PointUtil.createPointData(currentDate,progznum.get(),gznumPointNew.getNemCode(),gznumPointNew.getName());
+                wpgznum.addAndGet(progznum.intValue());
+                resultList.add(gznumPoint);
+                //故障受累台数7
+                ProBasicPowerstationPoint cngznumPointNew = projectmap.get(ContantXk.CNSLGZTSMX);
+                PointData cngznumPoint = PointUtil.createPointData(currentDate,procngznum.get(),cngznumPointNew.getNemCode(),cngznumPointNew.getName());
+                wpcngznum.addAndGet(procngznum.intValue());
+                resultList.add(cngznumPoint);
+
+                //检修台数8
+                ProBasicPowerstationPoint jxnumPointNew = projectmap.get(ContantXk.JXTSMX);
+                PointData jxnumPoint = PointUtil.createPointData(currentDate,projxnum.get(),jxnumPointNew.getNemCode(),jxnumPointNew.getName());
+                wpjxnum.addAndGet(projxnum.intValue());
+                resultList.add(jxnumPoint);
+                //检修受累台数9
+                ProBasicPowerstationPoint cnjxnumPointNew = projectmap.get(ContantXk.CNSLJXTSMX);
+                PointData cnjxnumPoint = PointUtil.createPointData(currentDate,procnjxnum.get(),cnjxnumPointNew.getNemCode(),cnjxnumPointNew.getName());
+                wpcnjxnum.addAndGet(procnjxnum.intValue());
+                resultList.add(cnjxnumPoint);
+
+                //检修台数6-4
+                ProBasicPowerstationPoint jxtsPointNew = projectmap.get(ContantXk.JXTJTS);
+                prowhtj.addAndGet(projxnum.intValue()+procnjxnum.intValue());
+                PointData jxtsPoint = PointUtil.createPointData(currentDate,prowhtj.get(),jxtsPointNew.getNemCode(),jxtsPointNew.getName());
+                resultList.add(jxtsPoint);
+                //电网受累台数10
+                ProBasicPowerstationPoint dwslnumPointNew = projectmap.get(ContantXk.CWSLDWTSMX);
+                PointData dwslnumPoint = PointUtil.createPointData(currentDate,prodwslnum.get(),dwslnumPointNew.getNemCode(),dwslnumPointNew.getName());
+                wpdwslnum.addAndGet(prodwslnum.intValue());
+                resultList.add(dwslnumPoint);
+                //环境受累台数11
+                ProBasicPowerstationPoint hjslnumPointNew = projectmap.get(ContantXk.CWSLTQTSMX);
+                PointData hjslnumPoint = PointUtil.createPointData(currentDate,prohjslnum.get(),hjslnumPointNew.getNemCode(),hjslnumPointNew.getName());
+                wphjslnum.addAndGet(prohjslnum.intValue());
+                resultList.add(hjslnumPoint);
+                //故障台数6-2
+                ProBasicPowerstationPoint gztsPointNew = projectmap.get(ContantXk.GZTJTS);
+                progzts.addAndGet(progznum.intValue()+procngznum.intValue());
+                PointData gztsPoint = PointUtil.createPointData(currentDate,progzts.get(),gztsPointNew.getNemCode(),gztsPointNew.getName());
+                resultList.add(gztsPoint);
+                //受累台数6-6
+                ProBasicPowerstationPoint sltsPointNew = projectmap.get(ContantXk.SLTS);
+                proslts.addAndGet(prodwslnum.intValue()+prohjslnum.intValue());
+                PointData sltsPoint = PointUtil.createPointData(currentDate,proslts.get(),sltsPointNew.getNemCode(),sltsPointNew.getName());
+                resultList.add(sltsPoint);
+
+                //离线台数12
+                ProBasicPowerstationPoint lxnumPointNew = projectmap.get(ContantXk.LXTSMX);
+                PointData lxnumPoint = PointUtil.createPointData(currentDate,prolxnum.get(),lxnumPointNew.getNemCode(),lxnumPointNew.getName());
+                wpdwslnum.addAndGet(prolxnum.intValue());
+                resultList.add(lxnumPoint);
+                //未知离线12
+                ProBasicPowerstationPoint wznumPointNew = projectmap.get(ContantXk.TXZDTSMX);
+                PointData wznumPoint = PointUtil.createPointData(currentDate,prowznum.get(),wznumPointNew.getNemCode(),wznumPointNew.getName());
+                wphjslnum.addAndGet(prowznum.intValue());
+                resultList.add(wznumPoint);
+                //离线台数6
+                ProBasicPowerstationPoint txzdPointNew = projectmap.get(ContantXk.TXZDTS);
+                protxzd.addAndGet(prolxnum.intValue()+prowznum.intValue());
+                PointData txzdPoint = PointUtil.createPointData(currentDate,protxzd.get(),txzdPointNew.getNemCode(),txzdPointNew.getName());
+                resultList.add(txzdPoint);
+
+            });
+            //待机台数0
+            ProBasicPowerstationPoint djnumPointNew = wpmap.get(ContantXk.DJTSMX);
+            PointData djnumPoint = PointUtil.createPointData(currentDate,wpdjnum.get(),djnumPointNew.getNemCode(),djnumPointNew.getName());
+            resultList.add(djnumPoint);
+            //停机台数1
+            ProBasicPowerstationPoint tjnumPointNew = wpmap.get(ContantXk.SDTJTSMX);
+            PointData tjnumPoint = PointUtil.createPointData(currentDate,wptjnum.get(),tjnumPointNew.getNemCode(),tjnumPointNew.getName());
+            resultList.add(tjnumPoint);
+
+            //待机台数6-0
+            ProBasicPowerstationPoint djtsPointNew = wpmap.get(ContantXk.DJTS);
+            wpdjts.addAndGet(wpdjnum.intValue()+wptjnum.intValue());
+            PointData djtsPoint = PointUtil.createPointData(currentDate,wpdjts.get(),djtsPointNew.getNemCode(),djtsPointNew.getName());
+            resultList.add(djtsPoint);
+            //运行台数2
+            ProBasicPowerstationPoint fdnumPointNew = wpmap.get(ContantXk.XNTSMX);
+            PointData fdnumPoint = PointUtil.createPointData(currentDate,wpfdnum.get(),fdnumPointNew.getNemCode(),fdnumPointNew.getName());
+            resultList.add(fdnumPoint);
+            //降出力台数3
+            ProBasicPowerstationPoint fdjclnumPointNew = wpmap.get(ContantXk.QXJCLTSMX);
+            PointData fdjclnumPoint = PointUtil.createPointData(currentDate,wpfdjclnum.get(),fdjclnumPointNew.getNemCode(),fdjclnumPointNew.getName());
+            resultList.add(fdjclnumPoint);
+
+            //运行台数6-1
+            ProBasicPowerstationPoint yxtsPointNew = wpmap.get(ContantXk.YXTS);
+            wpyxts.addAndGet(wpfdnum.intValue()+wpfdjclnum.intValue());
+            PointData yxtsPoint = PointUtil.createPointData(currentDate,wpyxts.get(),yxtsPointNew.getNemCode(),yxtsPointNew.getName());
+            resultList.add(yxtsPoint);
+            //限电降出力台数4
+            ProBasicPowerstationPoint xdjclnumPointNew = wpmap.get(ContantXk.XDJCLTSMX);
+            PointData xdjclnumPoint = PointUtil.createPointData(currentDate,wpxdjclnum.get(),xdjclnumPointNew.getNemCode(),xdjclnumPointNew.getName());
+            resultList.add(xdjclnumPoint);
+            //限电停机台数5
+            ProBasicPowerstationPoint xdtjnumPointNew = wpmap.get(ContantXk.XDTJTSMX);
+            PointData xdtjnumPoint = PointUtil.createPointData(currentDate,wpxdtjnum.get(),xdtjnumPointNew.getNemCode(),xdtjnumPointNew.getName());
+            resultList.add(xdtjnumPoint);
+
+            //限电台数6-5
+            ProBasicPowerstationPoint xdtsPointNew = wpmap.get(ContantXk.XDTS);
+            wpxdts.addAndGet(wpxdjclnum.intValue()+wpxdtjnum.intValue());
+            PointData xdtsPoint = PointUtil.createPointData(currentDate,wpxdts.get(),xdtsPointNew.getNemCode(),xdtsPointNew.getName());
+            resultList.add(xdtsPoint);
+            //故障台数6
+            ProBasicPowerstationPoint gznumPointNew = wpmap.get(ContantXk.GZTSMX);
+            PointData gznumPoint = PointUtil.createPointData(currentDate,wpgznum.get(),gznumPointNew.getNemCode(),gznumPointNew.getName());
+            resultList.add(gznumPoint);
+            //故障受累台数7
+            ProBasicPowerstationPoint cngznumPointNew = wpmap.get(ContantXk.CNSLGZTSMX);
+            PointData cngznumPoint = PointUtil.createPointData(currentDate,wpcngznum.get(),cngznumPointNew.getNemCode(),cngznumPointNew.getName());
+            resultList.add(cngznumPoint);
+            //检修台数8
+            ProBasicPowerstationPoint jxnumPointNew = wpmap.get(ContantXk.JXTSMX);
+            PointData jxnumPoint = PointUtil.createPointData(currentDate,wpjxnum.get(),jxnumPointNew.getNemCode(),jxnumPointNew.getName());
+            resultList.add(jxnumPoint);
+            //检修受累台数9
+            ProBasicPowerstationPoint cnjxnumPointNew = wpmap.get(ContantXk.CNSLJXTSMX);
+            PointData cnjxnumPoint = PointUtil.createPointData(currentDate,wpcnjxnum.get(),cnjxnumPointNew.getNemCode(),cnjxnumPointNew.getName());
+            resultList.add(cnjxnumPoint);
+            //检修台数6-4
+            ProBasicPowerstationPoint jxtsPointNew = wpmap.get(ContantXk.JXTJTS);
+            wpwhtj.addAndGet(wpjxnum.intValue()+wpcnjxnum.intValue());
+            PointData jxtsPoint = PointUtil.createPointData(currentDate,wpwhtj.get(),jxtsPointNew.getNemCode(),jxtsPointNew.getName());
+            resultList.add(jxtsPoint);
+            //电网受累台数10
+            ProBasicPowerstationPoint dwslnumPointNew = wpmap.get(ContantXk.CWSLDWTSMX);
+            PointData dwslnumPoint = PointUtil.createPointData(currentDate,wpdwslnum.get(),dwslnumPointNew.getNemCode(),dwslnumPointNew.getName());
+            resultList.add(dwslnumPoint);
+            //环境受累台数11
+            ProBasicPowerstationPoint hjslnumPointNew = wpmap.get(ContantXk.CWSLTQTSMX);
+            PointData hjslnumPoint = PointUtil.createPointData(currentDate,wphjslnum.get(),hjslnumPointNew.getNemCode(),hjslnumPointNew.getName());
+            resultList.add(hjslnumPoint);
+            //故障台数6-2
+            ProBasicPowerstationPoint gztsPointNew = wpmap.get(ContantXk.GZTJTS);
+            wpgzts.addAndGet(wpgznum.intValue()+wpcngznum.intValue());
+            PointData gztsPoint = PointUtil.createPointData(currentDate,wpgzts.get(),gztsPointNew.getNemCode(),gztsPointNew.getName());
+            resultList.add(gztsPoint);
+            //受累台数6-6
+            ProBasicPowerstationPoint sltsPointNew = wpmap.get(ContantXk.SLTS);
+            wpslts.addAndGet(wpdwslnum.intValue()+wphjslnum.intValue());
+            PointData sltsPoint = PointUtil.createPointData(currentDate,wpslts.get(),sltsPointNew.getNemCode(),sltsPointNew.getName());
+            resultList.add(sltsPoint);
+
+            //离线台数12
+            ProBasicPowerstationPoint lxnumPointNew = wpmap.get(ContantXk.LXTSMX);
+            PointData lxnumPoint = PointUtil.createPointData(currentDate,wplxnum.get(),lxnumPointNew.getNemCode(),lxnumPointNew.getName());
+            resultList.add(lxnumPoint);
+            //未知离线13
+            ProBasicPowerstationPoint wznumPointNew = wpmap.get(ContantXk.TXZDTSMX);
+            PointData wznumPoint = PointUtil.createPointData(currentDate,wpwznum.get(),wznumPointNew.getNemCode(),wznumPointNew.getName());
+            resultList.add(wznumPoint);
+            //离线台数12
+            ProBasicPowerstationPoint txzdPointNew = wpmap.get(ContantXk.TXZDTS);
+            wptxzd.addAndGet(wplxnum.intValue()+wpwznum.intValue());
+            PointData txzdPoint = PointUtil.createPointData(currentDate,wptxzd.get(),txzdPointNew.getNemCode(),txzdPointNew.getName());
+            resultList.add(txzdPoint);
+
+        });
+        edosUtil.sendMultiPoint(resultList);
+    }
+
+    private double getMxzt(String windturbineManufacturerId,Map<String, List<ProBasicStatusPoint>> statusMap,ProBasicEquipment wt) throws Exception {
+        double mxstatus = 2;
+        //远景
+        if (windturbineManufacturerId.equals("YJNY_MF")){
+            //多状态根据一个点来判断
+            Optional<ProBasicStatusPoint> first = statusMap.get(wt.getId()).stream().filter(w -> w.getUniformCode().equals(Contant.AI422)).findFirst();
+            if (first.isPresent()){
+                ProBasicStatusPoint windturbinestatusdi = first.get();
+
+                int pointValueInDouble = (int) edosUtil.getRealData(windturbinestatusdi.getId()).getPointValueInDouble();
+                switch (pointValueInDouble){
+                    case 1:
+                    case 3:
+                    case 4:
+                        mxstatus = 1.0;
+                        break;
+                    case 2:
+                    case 10:
+                        mxstatus = 4.0;
+                        break;
+                    case 5:
+                    case 6:
+                        mxstatus = 2.0;
+                        break;
+                    case 7:
+                        mxstatus = 8.0;
+                        break;
+                    case 8:
+                        mxstatus = 13.0;
+                        break;
+                    case 9:
+                        mxstatus = 0.0;
+                        break;
+                    case 11:
+                    case 12:
+                        mxstatus = 6.0;
+                        break;
+                    default:
+                        mxstatus = 2.0;
+                }
+            }
+        }else if (windturbineManufacturerId.equals("LHDL_MF")){//联合动力
+            //每个状态一个状态点
+            List<ProBasicStatusPoint> windturbinestatusdis = statusMap.get(wt.getId()).stream().filter(w -> w.getUniformCode().equals(Contant.MX000) || w.getUniformCode().equals(Contant.MX002) || w.getUniformCode().equals(Contant.MX004) || w.getUniformCode().equals(Contant.MX006) || w.getUniformCode().equals(Contant.MX008)).collect(Collectors.toList());
+            for(ProBasicStatusPoint w : windturbinestatusdis){
+                PointData realData = edosUtil.getRealData(w.getId());
+                if (realData.getPointValueInDouble()==1){
+                    mxstatus = Double.parseDouble(w.getTypeId());
+                    break;
+                }
+            }
+        }else {
+            //每个状态一个状态点
+            List<ProBasicStatusPoint> windturbinestatusdis = statusMap.get(wt.getId()).stream().filter(w -> w.getUniformCode().equals(Contant.MX000) || w.getUniformCode().equals(Contant.MX002) || w.getUniformCode().equals(Contant.MX004) || w.getUniformCode().equals(Contant.MX006) || w.getUniformCode().equals(Contant.MX008)).collect(Collectors.toList());
+            for(ProBasicStatusPoint w : windturbinestatusdis){
+                PointData realData = edosUtil.getRealData(w.getId());
+                if (realData.getPointValueInDouble()==1){
+                    mxstatus = Double.parseDouble(w.getTypeId());
+                    break;
+                }
+            }
+        }
+        return mxstatus;
+    }
+
+    private Double getGpzt(double gpzt,double ssgl) {
+        ///  0, "正常状态";1, "限电";2, "场内受累检修";3, "场内受累故障";4, "场外受累电网";5, "场外受累天气";6, "发电限负荷";
+        double mxzt = 0;
+        if (gpzt == 1){
+            if (ssgl>0){
+                mxzt = 8;
+            }else {
+                mxzt = 9;
+            }
+        }else if (gpzt == 2){
+            mxzt = 7;
+        }else if (gpzt == 3){
+            mxzt = 5;
+        }else if (gpzt == 4){
+            mxzt = 10;
+        }else if (gpzt == 5){
+            mxzt = 11;
+        }else if (gpzt == 6){
+            mxzt = 3;
+        }else {
+            mxzt = 2;
+        }
+        return mxzt;
+    }
+
+
+
 }

+ 87 - 0
realtime/generationXK-service/src/main/java/com/gyee/generation/service/realtimelibrary/TestService.java

@@ -0,0 +1,87 @@
+package com.gyee.generation.service.realtimelibrary;/*
+@author   谢生杰
+@date   2022/11/17-17:45
+*/
+
+import com.gyee.common.contant.Contant;
+import com.gyee.common.contant.ContantXk;
+import com.gyee.common.model.PointData;
+import com.gyee.common.model.StringUtils;
+import com.gyee.common.model.auto.Windturbine;
+import com.gyee.common.util.SortUtils;
+import com.gyee.common.vo.matrix.MatrixVo;
+import com.gyee.generation.init.CacheContext;
+import com.gyee.generation.model.auto.ProBasicEquipment;
+import com.gyee.generation.model.auto.ProBasicEquipmentPoint;
+import com.gyee.generation.model.auto.ProBasicPowerstation;
+import com.gyee.generation.model.auto.ProBasicPowerstationPoint;
+import com.gyee.generation.util.realtimesource.IEdosUtil;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Service
+public class TestService {
+    @Resource
+    private IEdosUtil edosUtil;
+    public Map<String,Object> matrixDatas()  {
+        Map<String,Object> resultMap = new HashMap<>();
+        Map<String,Map<String,Object>> wpresultMap = new HashMap<>();
+
+        Map<String, List<MatrixVo>> wtMap = new HashMap<>();
+
+
+        Map<String, Map<String, ProBasicEquipmentPoint>> wtPointmap = CacheContext.wtpAimap;
+
+        List<ProBasicEquipment> wtls = CacheContext.wtls;
+        List<String> synchronizedList = new ArrayList<>();
+        Map<String,String> synchronizedMap = new HashMap<>();
+        wtls.stream().forEach(wt->{
+            ProBasicEquipmentPoint windturbinetestingpointnew = wtPointmap.get(wt.getId()).get(ContantXk.SBZT);
+            if (!windturbinetestingpointnew.getNemCode().trim().equals("INITIAL")){
+                synchronizedList.add(windturbinetestingpointnew.getNemCode());
+            }else{
+            }
+            synchronizedMap.put(windturbinetestingpointnew.getNemCode(),wt.getId()+"!"+wt.getWindpowerstationId());
+        });
+        try {
+            List<PointData> realData = edosUtil.getRealData(synchronizedList);
+            realData.stream().forEach(i -> {
+                String[] split = synchronizedMap.get(i.getEdnaId()).split("!");
+                MatrixVo vo = new MatrixVo(split[0],i.getPointValueInDouble(),split[1]);
+                if (wtMap.containsKey(split[1])){
+                    wtMap.get(split[1]).add(vo);
+                }else {
+                    List<MatrixVo> wtResultList = new ArrayList<>();
+                    wtResultList.add(vo);
+                    wtMap.put(split[1],wtResultList);
+                }
+            });
+            List<String> pointids = realData.stream().map(i -> i.getEdnaId()).collect(Collectors.toList());
+            Set<String> totalpointids = synchronizedMap.keySet();
+            Collection notexists=new ArrayList<String>(totalpointids);
+            notexists.removeAll(pointids);
+            notexists.stream().forEach(n->{
+                String[] split = synchronizedMap.get(n).split("!");
+                MatrixVo vo = new MatrixVo(split[0],0.0,split[1]);
+                if (wtMap.containsKey(split[1])){
+                    wtMap.get(split[1]).add(vo);
+                }else {
+                    List<MatrixVo> wtResultList = new ArrayList<>();
+                    wtResultList.add(vo);
+                    wtMap.put(split[1],wtResultList);
+                }
+            });
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        Set<String> wpids = wtMap.keySet();
+        wpids.stream().forEach(i->{
+            SortUtils.sort(wtMap.get(i),"wtid",SortUtils.ASC);
+        });
+        resultMap.put("wt",wtMap);
+        return resultMap;
+    }
+}

+ 10 - 5
realtime/generationXK-service/src/main/resources/application-dev.yml

@@ -86,7 +86,7 @@ logging:
     com.example: debug
 #db url
 db:
-  url: http://localhost:8011/ts
+  url: http://192.168.11.250:8011/ts
 #参与计算的场站
 runWindpowerstation: SD_GDDL_RZLX_FDC_STA,SD_GDDL_QDJN_FDC_STA,SD_GDDL_WHWD_FDC_STA,SD_GDDL_WHXQ_FDC_STA,SD_GDDL_RZWL_FDC_STA,SD_GDDL_WFZC_FDC_STA,SD_GDDL_DZXJ_FDC_STA,SD_GDDL_XTTA_FDC_STA,SD_GDDL_BH1_FDC_STA,SD_GDDL_BH2_FDC_STA,SD_GDDL_CG_FDC_STA,SD_GDDL_FJ_FDC_STA,SD_GDDL_YS_FDC_STA,SD_GDDL_FXFC_FDC_STA,SD_GDDL_JNSS_FDC_STA,SD_GDDL_WFBH_FDC_STA,SD_GDDL_PLHS_FDC_STA,SD_GDDL_JNCQ_FDC_STA,SD_GDDL_LXLN_FDC_STA,SD_GDDL_LQJS_FDC_STA,SD_GDDL_ZYXD_FDC_STA,SD_GDDL_ZYFS_FDC_STA
 #计算状态用ai或者di
@@ -96,7 +96,7 @@ clauStatus:
 #判断数据终端
 second: 1800
 #判断降出力
-AI134: 17.4    #叶轮转速给定
+AI110: 17.4    #叶轮转速给定
 AI178: 17.4    #转矩给定
 #AI443:容量
 
@@ -106,10 +106,15 @@ curvefitting:
   dimension: 20
   #尺度
   scale: 0.01
-shutdown:
-  keystr: test1,test2
 initialcode: INITIAL
-
+##调用区间间隔时长,需要与XXLJOB调度时长结合,保证查询区间时长大于调度时长,单位分钟
+frequency:
+  #停机
+  shutdown: 6
+  #限电
+  powerrationing: 6
+  #切入切出
+  cutinandout: 6
 
 
 

+ 2 - 2
realtime/generationXK-service/src/main/resources/application.yml

@@ -1,6 +1,6 @@
 spring:
   profiles:
-#    active: dev
-    active: xk
+    active: dev
+#    active: xk
 
 #    active: td

+ 2 - 4
web/consumer-hb/src/main/java/com/gyee/consumer/controller/RegionPG/RegionPGController.java

@@ -21,13 +21,11 @@ public class RegionPGController {
     @ResponseBody
     @ApiOperation(value = "区域查询", notes = "区域查询")
     @ApiImplicitParams({
-
-            @ApiImplicitParam(name = "id", value = "区域编号", required = false, dataType = "string", paramType = "query"),
             @ApiImplicitParam(name = "companyid", value = "公司编号", required = false, dataType = "string", paramType = "query")})
 
-    public AjaxResult findList(@RequestParam("id") String id, @RequestParam("companyid") String companyid)  {
+    public AjaxResult findList( @RequestParam("companyid") String companyid)  {
 
-        AjaxResult ajax=regionPGService.RegionPGlist(id, companyid);
+        AjaxResult ajax=regionPGService.RegionPGlist(companyid);
 
         return ajax;
     }

+ 3 - 4
web/consumer-hb/src/main/java/com/gyee/consumer/controller/WindpowerstationPG/WindpowerstationPGController.java

@@ -17,14 +17,13 @@ public class WindpowerstationPGController {
     private WindpowerstationPGService windpowerstationPGService;
     @GetMapping(value = "/list")
     @ResponseBody
-    @ApiOperation(value = "区域查询", notes = "区域查询")
+    @ApiOperation(value = "场站查询", notes = "场站查询")
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "id", value = "区域编号", required = false, dataType = "string", paramType = "query"),
             @ApiImplicitParam(name = "companyid", value = "公司编号", required = false, dataType = "string", paramType = "query"),
             @ApiImplicitParam(name = "regionid", value = "公司编号", required = false, dataType = "string", paramType = "query")})
-    public AjaxResult findList(@RequestParam("id") String id,String companyid, String regionid)  {
+    public AjaxResult findList(@RequestParam("companyid") String companyid, @RequestParam("regionid") String regionid)  {
 
-        AjaxResult ajax=windpowerstationPGService.stationlsPG(id,companyid,regionid);
+        AjaxResult ajax=windpowerstationPGService.stationlsPG(companyid,regionid);
 
         return ajax;
     }

+ 1 - 1
web/consumer-hb/src/main/java/com/gyee/consumer/fallback/RegionPG/RegionPGServiceFallbackFactory.java

@@ -10,7 +10,7 @@ public class RegionPGServiceFallbackFactory  implements FallbackFactory<RegionPG
     public RegionPGService create(Throwable throwable) {
         return new RegionPGService() {
             @Override
-            public AjaxResult RegionPGlist(String id, String companyid) {
+            public AjaxResult RegionPGlist(String companyid) {
                 return  AjaxResult.error(throwable.getMessage());
             }
         };

+ 1 - 1
web/consumer-hb/src/main/java/com/gyee/consumer/fallback/WindpowerstationPG/WindpowerstationPGServiceFallbackFactory.java

@@ -9,7 +9,7 @@ public class WindpowerstationPGServiceFallbackFactory implements FallbackFactory
     public WindpowerstationPGService create(Throwable throwable) {
         return new WindpowerstationPGService() {
             @Override
-            public AjaxResult stationlsPG(String id, String companyid, String regionid) {
+            public AjaxResult stationlsPG(String companyid, String regionid) {
                 return  AjaxResult.error(throwable.getMessage());
             }
         };

+ 1 - 1
web/consumer-hb/src/main/java/com/gyee/consumer/service/RegionPG/RegionPGService.java

@@ -12,6 +12,6 @@ import org.springframework.web.bind.annotation.RequestParam;
         configuration = FeignConfiguration.class)
 public interface RegionPGService {
     @GetMapping("/Region/list")
-    public AjaxResult RegionPGlist(@RequestParam("id") String id, @RequestParam("companyid") String companyid) ;
+    public AjaxResult RegionPGlist(@RequestParam("companyid") String companyid) ;
 
 }

+ 1 - 1
web/consumer-hb/src/main/java/com/gyee/consumer/service/WindpowerstationPG/WindpowerstationPGService.java

@@ -12,5 +12,5 @@ import org.springframework.web.bind.annotation.RequestParam;
         configuration = FeignConfiguration.class)
 public interface WindpowerstationPGService {
     @GetMapping("/windpowerstation/list")
-    public AjaxResult stationlsPG(@RequestParam("id") String id, @RequestParam("companyid") String companyid, @RequestParam("regionid") String regionid) ;
+    public AjaxResult stationlsPG( @RequestParam("companyid") String companyid, @RequestParam("regionid") String regionid) ;
 }

+ 20 - 0
web/gdsx-ghost/src/main/java/com/gyee/ghost/controller/InvolvedController.java

@@ -0,0 +1,20 @@
+package com.gyee.ghost.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-11-20
+ */
+@RestController
+@RequestMapping("//involved")
+public class InvolvedController {
+
+}

+ 20 - 0
web/gdsx-ghost/src/main/java/com/gyee/ghost/controller/InvolvedstatusController.java

@@ -0,0 +1,20 @@
+package com.gyee.ghost.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-11-20
+ */
+@RestController
+@RequestMapping("//involvedstatus")
+public class InvolvedstatusController {
+
+}

+ 20 - 0
web/gdsx-ghost/src/main/java/com/gyee/ghost/controller/LineController.java

@@ -0,0 +1,20 @@
+package com.gyee.ghost.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-02-28
+ */
+@RestController
+@RequestMapping("//line")
+public class LineController {
+
+}

+ 95 - 0
web/gdsx-ghost/src/main/java/com/gyee/ghost/controller/ghost/GhostController.java

@@ -9,6 +9,7 @@ import com.gyee.ghost.init.CacheContext;
 import com.gyee.ghost.model.auto.*;
 import com.gyee.ghost.service.auto.GhostService;
 import com.gyee.ghost.vo.FaultinputVo;
+import com.gyee.ghost.vo.InvolvedVo;
 import com.gyee.ghost.vo.NatureVo;
 import com.gyee.ghost.vo.WindturbineVo;
 import org.springframework.web.bind.annotation.*;
@@ -380,6 +381,100 @@ public class GhostController {
     }
 
 
+    @GetMapping("/involved")
+    @ResponseBody
+    @CrossOrigin(origins = "*", maxAge = 3600)
+    public R involvedlist(@RequestParam(value = "wpid",required = true)String wpid,
+                            @RequestParam(value = "begin",required = true)Long begin,
+                            @RequestParam(value = "end",required = true)Long end) throws Exception {
+        List<Involved> resultList = ghostService.involvedlist(wpid,begin,end);
+        if (StringUtils.isNotNull(resultList)) {
+            return R.ok((long) resultList.size()).data(resultList);
+        }else{
+            return R.error().message("访问失败");
+        }
+    }
+
+    @DeleteMapping("/involved/{id}")
+    @ResponseBody
+    @CrossOrigin(origins = "*", maxAge = 3600)
+    public R involvedremove(@PathVariable("id") String id) throws Exception {
+        boolean b = ghostService.involvedremove(id);
+        if (StringUtils.isNotNull(b)) {
+            return R.ok().data(b);
+        }else{
+            return R.error().message("访问失败");
+        }
+    }
+
+    @PostMapping("/involved")
+    @ResponseBody
+    @CrossOrigin(origins = "*", maxAge = 3600)
+    public R involvedadd(@RequestBody InvolvedVo involvedVo) throws Exception {
+        boolean b = ghostService.involvedadd(involvedVo);
+        if (StringUtils.isNotNull(b)) {
+            return R.ok().data(b);
+        }else{
+            return R.error().message("访问失败");
+        }
+    }
+
+    @PutMapping("/involved")
+    @ResponseBody
+    @CrossOrigin(origins = "*", maxAge = 3600)
+    public R involvedupdate(@RequestBody Involved involved) throws Exception {
+        boolean b = ghostService.involvedupdate(involved);
+        if (StringUtils.isNotNull(b)) {
+            return R.ok().data(b);
+        }else{
+            return R.error().message("访问失败");
+        }
+    }
+
+    @GetMapping("/involved/{id}")
+    @ResponseBody
+    @CrossOrigin(origins = "*", maxAge = 3600)
+    public R involvedget(@PathVariable("id") String id) throws Exception {
+        Involved involved = ghostService.involvedget(id);
+        if (StringUtils.isNotNull(involved)) {
+            return R.ok().data(involved);
+        }else{
+            return R.error().message("访问失败");
+        }
+    }
+
+
+    @GetMapping("/getLines")
+    @ResponseBody
+    @CrossOrigin(origins = "*", maxAge = 3600)
+    public R getLines(@RequestParam(value = "wpid",required = true)String wpid) throws Exception {
+        List<Line> lines = ghostService.getLines(wpid);
+        if (StringUtils.isNotNull(lines)) {
+            return R.ok().data(lines);
+        }else{
+            return R.error().message("访问失败");
+        }
+    }
+
+    @GetMapping("/getslStatus")
+    @ResponseBody
+    @CrossOrigin(origins = "*", maxAge = 3600)
+    public R getslStatus() throws Exception {
+        List<Involvedstatus> status = ghostService.getslStatus();
+        if (StringUtils.isNotNull(status)) {
+            return R.ok().data(status);
+        }else{
+            return R.error().message("访问失败");
+        }
+    }
+
+
+
+
+
+
+
+
 
 
 

+ 11 - 0
web/gdsx-ghost/src/main/java/com/gyee/ghost/init/CacheContext.java

@@ -47,8 +47,11 @@ public class CacheContext implements CommandLineRunner {
     private IEquipmentmodelService equipmentmodelService;
     @Resource
     private IProEconStatusmxService proEconStatusmxService;
+    @Resource
+    private ILineService lineService;
 
     public static List<Windturbine> wtls = new ArrayList<>();
+    public static List<Line> lines = new ArrayList<>();
     public static Map<String,Windturbine> wtmap = new HashMap<>();
     public static Map<String,Project> promap = new HashMap<>();
     public static Map<String,Windpowerstation> wpmap = new HashMap<>();
@@ -60,6 +63,8 @@ public class CacheContext implements CommandLineRunner {
 
     public static Map<Integer,String> statusmxMap = new HashMap<>();
 
+    public static Map<String,Line> lineMap = new HashMap<>();
+
 //    public static Map<String,String> freedomMap = new HashMap<>();
 
     @Override
@@ -111,6 +116,12 @@ public class CacheContext implements CommandLineRunner {
             statusmxMap.put(mx.getId(),mx.getName());
         });
 
+        lines = lineService.list();
+        lines.stream().forEach(line->{
+            lineMap.put(line.getId(),line);
+
+        });
+
 //        List<Freedom> freedoms = freedomService.list();
 //        freedoms.stream().forEach(f->{
 //            freedomMap.put(f.getId(),f.getName());

+ 16 - 0
web/gdsx-ghost/src/main/java/com/gyee/ghost/mapper/auto/InvolvedMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.ghost.mapper.auto;
+
+import com.gyee.ghost.model.auto.Involved;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-11-20
+ */
+public interface InvolvedMapper extends BaseMapper<Involved> {
+
+}

+ 16 - 0
web/gdsx-ghost/src/main/java/com/gyee/ghost/mapper/auto/InvolvedstatusMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.ghost.mapper.auto;
+
+import com.gyee.ghost.model.auto.Involvedstatus;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-11-20
+ */
+public interface InvolvedstatusMapper extends BaseMapper<Involvedstatus> {
+
+}

+ 17 - 0
web/gdsx-ghost/src/main/java/com/gyee/ghost/mapper/auto/LineMapper.java

@@ -0,0 +1,17 @@
+package com.gyee.ghost.mapper.auto;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gyee.ghost.model.auto.Line;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-02-28
+ */
+public interface LineMapper extends BaseMapper<Line> {
+
+}

+ 51 - 0
web/gdsx-ghost/src/main/java/com/gyee/ghost/model/auto/Involved.java

@@ -0,0 +1,51 @@
+package com.gyee.ghost.model.auto;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-11-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class Involved extends Model {
+
+    private static final long serialVersionUID = 1L;
+    @TableId(value = "ID",type = IdType.INPUT)
+    private String id;
+
+    private String projectid;
+
+    private String projectname;
+
+    private String wpid;
+
+    private String wpname;
+
+    private String lineid;
+
+    private String linename;
+
+    private Date begindate;
+
+    private Date enddate;
+
+    private String faulttype;
+
+    private Double powerloss;
+
+    private Double faultduration;
+
+
+}

+ 26 - 0
web/gdsx-ghost/src/main/java/com/gyee/ghost/model/auto/Involvedstatus.java

@@ -0,0 +1,26 @@
+package com.gyee.ghost.model.auto;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-11-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class Involvedstatus extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    private String id;
+
+    private String name;
+
+
+}

+ 53 - 0
web/gdsx-ghost/src/main/java/com/gyee/ghost/model/auto/Line.java

@@ -0,0 +1,53 @@
+package com.gyee.ghost.model.auto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-02-28
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("LINE")
+public class Line extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId("ID")
+    private String id;
+
+    @TableField("CODE")
+    private String code;
+
+    @TableField("NAME")
+    private String name;
+
+    @TableField("ANAME")
+    private String aname;
+
+    @TableField("PROJECTID")
+    private String projectid;
+
+    @TableField("ORDERNUM")
+    private Integer ordernum;
+
+    @TableField("CAPACITY")
+    private Integer capacity;
+
+    @TableField("CAPACITYUNIT")
+    private String capacityunit;
+
+    @TableField("QUANTITY")
+    private Integer quantity;
+
+
+}

+ 83 - 0
web/gdsx-ghost/src/main/java/com/gyee/ghost/service/auto/GhostService.java

@@ -2,6 +2,7 @@ package com.gyee.ghost.service.auto;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 
+import com.google.common.collect.Lists;
 import com.gyee.common.model.PointData;
 import com.gyee.common.model.StringUtils;
 import com.gyee.common.util.CommonUtils;
@@ -9,6 +10,7 @@ import com.gyee.common.util.DateUtils;
 import com.gyee.common.util.DoubleUtils;
 import com.gyee.common.util.SortUtils;
 import com.gyee.common.vo.analysis.DeskObject;
+import com.gyee.ghost.config.ResultCode;
 import com.gyee.ghost.contant.Contant;
 import com.gyee.ghost.init.CacheContext;
 import com.gyee.ghost.model.auto.*;
@@ -16,8 +18,10 @@ import com.gyee.ghost.util.realtimesource.ClassUtil;
 import com.gyee.ghost.util.realtimesource.IEdosUtil;
 import com.gyee.ghost.util.realtimesource.StringUtil;
 import com.gyee.ghost.vo.InitVo;
+import com.gyee.ghost.vo.InvolvedVo;
 import com.gyee.ghost.vo.NatureVo;
 import com.gyee.ghost.vo.WindturbineVo;
+import io.swagger.models.auth.In;
 import javafx.beans.binding.BooleanBinding;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -51,6 +55,10 @@ public class GhostService {
     private IFaultrecordService faultrecordService;
     @Resource
     private IMainrecordService mainrecordService;
+    @Resource
+    private IInvolvedService involvedService;
+    @Resource
+    private IInvolvedstatusService involvedstatusService;
     /**
      * 存储fanoperation运行分析表
      */
@@ -528,6 +536,81 @@ public class GhostService {
         return mainrecord;
     }
 
+    public List<Involved> involvedlist(String wpid, Long begin, Long end) {
+        QueryWrapper<Involved> queryWrapper = new QueryWrapper<>();
+        if (StringUtils.isNotEmpty(wpid)){
+            queryWrapper.eq("wpid",wpid);
+        }
+        queryWrapper.ge("begindate",DateUtils.parseLongToDate(begin)).le("enddate",DateUtils.parseLongToDate(end));
+        List<Involved> involvedList = involvedService.list(queryWrapper);
+        return involvedList;
+    }
+
+    public boolean involvedremove(String id) {
+        boolean b = involvedService.removeById(id);
+        return b;
+    }
+
+    public boolean involvedadd(InvolvedVo involvedVo) {
+        Map<String, Windpowerstation> wpmap = CacheContext.wpmap;
+        Map<String, Project> promap = CacheContext.promap;
+        Map<String, Line> lineMap = CacheContext.lineMap;
+
+        Long begin = involvedVo.getBegin();
+        Long end = involvedVo.getEnd();
+        List<Line> lines = involvedVo.getLines();
+        Double ssdl = involvedVo.getSsdl();
+        String type = involvedVo.getType();
+        List<Involved> resultList = new ArrayList<>();
+        double zcapacity = lines.stream().mapToDouble(line -> lineMap.get(line.getId()).getCapacity()).sum();
+        lines.stream().forEach(line->{
+            Involved involved = new Involved();
+            involved.setId(CommonUtils.getUUID());
+            involved.setLinename(lineMap.get(line.getId()).getName());
+            involved.setLineid(line.getId());
+            involved.setProjectid(lineMap.get(line.getId()).getProjectid());
+            involved.setProjectname(promap.get(lineMap.get(line.getId()).getProjectid()).getName());
+            involved.setWpid(promap.get(lineMap.get(line.getId()).getProjectid()).getWindpowerstationid());
+            involved.setWpname(wpmap.get(promap.get(lineMap.get(line.getId()).getProjectid()).getWindpowerstationid()).getCode());
+            involved.setBegindate(DateUtils.parseLongToDate(begin));
+            involved.setEnddate(DateUtils.parseLongToDate(end));
+            involved.setFaulttype(type);
+            involved.setPowerloss(ssdl*(lineMap.get(line.getId()).getCapacity()/zcapacity));
+            double hours = DateUtils.hoursDiff2(DateUtils.parseLongToDate(begin), DateUtils.parseLongToDate(end));
+            involved.setFaultduration(hours);
+            resultList.add(involved);
+        });
+        boolean b = involvedService.saveBatch(resultList);
+        return b;
+    }
+
+    public boolean involvedupdate(Involved involved) {
+        involved.setBegindate(involved.getBegindate());
+        involved.setEnddate(involved.getEnddate());
+        involved.setFaulttype(involved.getFaulttype());
+        involved.setPowerloss(involved.getPowerloss());
+        double hours = DateUtils.hoursDiff2(involved.getBegindate(), involved.getEnddate());
+        involved.setFaultduration(hours);
+        boolean b = involvedService.saveOrUpdate(involved);
+        return b;
+    }
+
+    public Involved involvedget(String id) {
+        Involved involved = involvedService.getById(id);
+        return involved;
+    }
+
+    public List<Line> getLines(String wpid) {
+        List<Line> lines = CacheContext.lines;
+        Map<String, Project> promap = CacheContext.promap;
+        return lines.stream().filter(line->promap.get(line.getProjectid()).getWindpowerstationid().equals(wpid)).collect(Collectors.toList());
+    }
+
+    public List<Involvedstatus> getslStatus() {
+        List<Involvedstatus> list = involvedstatusService.list();
+        return list;
+    }
+
 
 //    public List<Shutdownevent> stoplist(String wpid, String wtid, String stoptypeid, Long begin, Long end, Integer type) {
 //        Date begindate = DateUtils.parseLongToDate(begin);

+ 16 - 0
web/gdsx-ghost/src/main/java/com/gyee/ghost/service/auto/IInvolvedService.java

@@ -0,0 +1,16 @@
+package com.gyee.ghost.service.auto;
+
+import com.gyee.ghost.model.auto.Involved;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-11-20
+ */
+public interface IInvolvedService extends IService<Involved> {
+
+}

+ 16 - 0
web/gdsx-ghost/src/main/java/com/gyee/ghost/service/auto/IInvolvedstatusService.java

@@ -0,0 +1,16 @@
+package com.gyee.ghost.service.auto;
+
+import com.gyee.ghost.model.auto.Involvedstatus;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-11-20
+ */
+public interface IInvolvedstatusService extends IService<Involvedstatus> {
+
+}

+ 17 - 0
web/gdsx-ghost/src/main/java/com/gyee/ghost/service/auto/ILineService.java

@@ -0,0 +1,17 @@
+package com.gyee.ghost.service.auto;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gyee.ghost.model.auto.Line;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-02-28
+ */
+public interface ILineService extends IService<Line> {
+
+}

+ 20 - 0
web/gdsx-ghost/src/main/java/com/gyee/ghost/service/auto/impl/InvolvedServiceImpl.java

@@ -0,0 +1,20 @@
+package com.gyee.ghost.service.auto.impl;
+
+import com.gyee.ghost.model.auto.Involved;
+import com.gyee.ghost.mapper.auto.InvolvedMapper;
+import com.gyee.ghost.service.auto.IInvolvedService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-11-20
+ */
+@Service
+public class InvolvedServiceImpl extends ServiceImpl<InvolvedMapper, Involved> implements IInvolvedService {
+
+}

+ 20 - 0
web/gdsx-ghost/src/main/java/com/gyee/ghost/service/auto/impl/InvolvedstatusServiceImpl.java

@@ -0,0 +1,20 @@
+package com.gyee.ghost.service.auto.impl;
+
+import com.gyee.ghost.model.auto.Involvedstatus;
+import com.gyee.ghost.mapper.auto.InvolvedstatusMapper;
+import com.gyee.ghost.service.auto.IInvolvedstatusService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-11-20
+ */
+@Service
+public class InvolvedstatusServiceImpl extends ServiceImpl<InvolvedstatusMapper, Involvedstatus> implements IInvolvedstatusService {
+
+}

+ 21 - 0
web/gdsx-ghost/src/main/java/com/gyee/ghost/service/auto/impl/LineServiceImpl.java

@@ -0,0 +1,21 @@
+package com.gyee.ghost.service.auto.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gyee.ghost.mapper.auto.LineMapper;
+import com.gyee.ghost.model.auto.Line;
+import com.gyee.ghost.service.auto.ILineService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-02-28
+ */
+@Service
+public class LineServiceImpl extends ServiceImpl<LineMapper, Line> implements ILineService {
+
+}

+ 2 - 2
web/gdsx-ghost/src/main/java/com/gyee/ghost/task/SaticScheduleTask.java

@@ -55,7 +55,7 @@ public class SaticScheduleTask {
 
     //或直接指定时间间隔,例如:5秒
 //    @Scheduled(fixedRate=300000)
-    @Scheduled(cron = "0 0/5 * * * ?")
+//    @Scheduled(cron = "0 0/5 * * * ?")
     private void status() {
         try {
             realtimeService.saveWindturbineStatus2();
@@ -64,7 +64,7 @@ public class SaticScheduleTask {
         }
     }
 
-    @Scheduled(cron = "1 0 0 * * ?")
+    @Scheduled(cron = "0 30 0 * * ?")
     //或直接指定时间间隔,例如:5秒
     //@Scheduled(fixedRate=5000)
     private void statustj() {

+ 22 - 0
web/gdsx-ghost/src/main/java/com/gyee/ghost/vo/InvolvedVo.java

@@ -0,0 +1,22 @@
+package com.gyee.ghost.vo;/*
+@author   谢生杰
+@date   2022/11/20-17:53
+*/
+
+import com.gyee.ghost.model.auto.Line;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class InvolvedVo {
+
+    public String wpid; //风场id,显示名称
+    public Long begin; //开始时间
+    public Long end;  //结束时间
+    public Double ssdl;  //损失电量
+    public List<Line> lines;   //勾选线路
+    public String type;  //类型
+
+
+}

+ 3 - 4
web/monitor-web-sxjn/src/main/java/com/gyee/frame/controller/Region/RegionPGController.java

@@ -22,17 +22,16 @@ public class RegionPGController {
     /**
      * 查询
      *
-     * @param id
+     * @param
      * @return
      */
     @GetMapping(value = "/list")
     @ResponseBody
     @ApiOperation(value = "区域查询", notes = "区域查询")
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "id", value = "区域编号", required = false, dataType = "string", paramType = "query"),
             @ApiImplicitParam(name = "companyid", value = "公司编号", required = false, dataType = "string", paramType = "query")})
-    public R findList(String id ,String companyid) {
-        List<RegionPG> list = regionPGService.RegionPGlist(id,companyid);
+    public R findList(String companyid) {
+        List<RegionPG> list = regionPGService.RegionPGlist(companyid);
         if (null != list) {
             return R.ok().data(list);
         } else {

+ 1 - 1
web/monitor-web-sxjn/src/main/java/com/gyee/frame/controller/WindpowerstationPG/WindpowerstationPGController.java

@@ -25,7 +25,7 @@ public class WindpowerstationPGController {
     /**
      * 查询
      *
-     * @param id
+     * @param
      * @return
      */
     @GetMapping(value = "/list")

+ 2 - 5
web/monitor-web-sxjn/src/main/java/com/gyee/frame/service/RegionPGService.java

@@ -80,7 +80,7 @@ public class RegionPGService implements BaseService<RegionPG, RegionPGExample> {
     }
 
     @DataSource(value = DataSourceType.SLAVE)
-    public List<RegionPG> RegionPGlist(String id ,String companyid) {
+    public List<RegionPG> RegionPGlist(String companyid) {
 
         List<RegionPG> list=new ArrayList<>();
 
@@ -88,10 +88,7 @@ public class RegionPGService implements BaseService<RegionPG, RegionPGExample> {
         example.setOrderByClause(" id asc");
 
         RegionPGExample.Criteria cr =example.createCriteria();
-        cr.andIdEqualTo(id);
-
-        RegionPGExample.Criteria criteria =example.createCriteria();
-        criteria.andCompanyidEqualTo(companyid);
+        cr.andCompanyidEqualTo(companyid);
         list= regionPGMapper.selectByExample(example);
         return list;
 

+ 1 - 2
web/monitor-web-sxjn/src/main/java/com/gyee/frame/service/WindpowerstationPGService.java

@@ -134,8 +134,7 @@ public class WindpowerstationPGService implements BaseService<WindpowerstationPG
 
         WindpowerstationPGExample.Criteria criteria =example.createCriteria();
         criteria.andCompanyidEqualTo(companyid);
-        WindpowerstationPGExample.Criteria cr =example.createCriteria();
-        cr.andRegionidEqualTo(regionid);
+        criteria.andRegionidEqualTo(regionid);
         list= windpowerstationPGMapper.selectByExample(example);
         return list;
     }