xieshengjie vor 2 Jahren
Ursprung
Commit
7959531271

+ 20 - 0
realtime/generationXK-service/src/main/java/com/gyee/generation/controller/ProEconEquipmentDeviatPowerController.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 xieshengjie
+ * @since 2023-04-27
+ */
+@RestController
+@RequestMapping("//pro-econ-equipment-deviat-power")
+public class ProEconEquipmentDeviatPowerController {
+
+}

+ 20 - 0
realtime/generationXK-service/src/main/java/com/gyee/generation/controller/ProEconEquipmentDeviatSpeedController.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 xieshengjie
+ * @since 2023-04-27
+ */
+@RestController
+@RequestMapping("//pro-econ-equipment-deviat-speed")
+public class ProEconEquipmentDeviatSpeedController {
+
+}

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

@@ -0,0 +1,16 @@
+package com.gyee.generation.mapper.auto;
+
+import com.gyee.generation.model.auto.ProEconEquipmentDeviatPower;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author xieshengjie
+ * @since 2023-04-27
+ */
+public interface ProEconEquipmentDeviatPowerMapper extends BaseMapper<ProEconEquipmentDeviatPower> {
+
+}

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

@@ -0,0 +1,16 @@
+package com.gyee.generation.mapper.auto;
+
+import com.gyee.generation.model.auto.ProEconEquipmentDeviatSpeed;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author xieshengjie
+ * @since 2023-04-27
+ */
+public interface ProEconEquipmentDeviatSpeedMapper extends BaseMapper<ProEconEquipmentDeviatSpeed> {
+
+}

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

@@ -0,0 +1,250 @@
+package com.gyee.generation.model.auto;
+
+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;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author xieshengjie
+ * @since 2023-04-27
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ProEconEquipmentDeviatPower extends Model {
+
+    private static final long serialVersionUID = 1L;
+    @TableId(value = "id",type = IdType.INPUT)
+    private String id;
+
+    private String windturbineId;
+
+    private Date recordDate;
+
+    private String windpowerstationId;
+
+    private String projectId;
+
+    private String lineId;
+
+    private String companyId;
+
+    private String regionId;
+
+    private Integer p50;
+
+    private Integer p49;
+
+    private Integer p48;
+
+    private Integer p47;
+
+    private Integer p46;
+
+    private Integer p45;
+
+    private Integer p44;
+
+    private Integer p43;
+
+    private Integer p42;
+
+    private Integer p41;
+
+    private Integer p40;
+
+    private Integer p39;
+
+    private Integer p38;
+
+    private Integer p37;
+
+    private Integer p36;
+
+    private Integer p35;
+
+    private Integer p34;
+
+    private Integer p33;
+
+    private Integer p32;
+
+    private Integer p31;
+
+    private Integer p30;
+
+    private Integer p29;
+
+    private Integer p28;
+
+    private Integer p27;
+
+    private Integer p26;
+
+    private Integer p25;
+
+    private Integer p24;
+
+    private Integer p23;
+
+    private Integer p22;
+
+    private Integer p21;
+
+    private Integer p20;
+
+    private Integer p19;
+
+    private Integer p18;
+
+    private Integer p17;
+
+    private Integer p16;
+
+    private Integer p15;
+
+    private Integer p14;
+
+    private Integer p13;
+
+    private Integer p12;
+
+    private Integer p11;
+
+    private Integer p10;
+
+    private Integer p9;
+
+    private Integer p8;
+
+    private Integer p7;
+
+    private Integer p6;
+
+    private Integer p5;
+
+    private Integer p4;
+
+    private Integer p3;
+
+    private Integer p2;
+
+    private Integer p1;
+
+    private Integer p0;
+
+    private Integer n1;
+
+    private Integer n2;
+
+    private Integer n3;
+
+    private Integer n4;
+
+    private Integer n5;
+
+    private Integer n6;
+
+    private Integer n7;
+
+    private Integer n8;
+
+    private Integer n9;
+
+    private Integer n10;
+
+    private Integer n11;
+
+    private Integer n12;
+
+    private Integer n13;
+
+    private Integer n14;
+
+    private Integer n15;
+
+    private Integer n16;
+
+    private Integer n17;
+
+    private Integer n18;
+
+    private Integer n19;
+
+    private Integer n20;
+
+    private Integer n21;
+
+    private Integer n22;
+
+    private Integer n23;
+
+    private Integer n24;
+
+    private Integer n25;
+
+    private Integer n26;
+
+    private Integer n27;
+
+    private Integer n28;
+
+    private Integer n29;
+
+    private Integer n30;
+
+    private Integer n31;
+
+    private Integer n32;
+
+    private Integer n33;
+
+    private Integer n34;
+
+    private Integer n35;
+
+    private Integer n36;
+
+    private Integer n37;
+
+    private Integer n38;
+
+    private Integer n39;
+
+    private Integer n40;
+
+    private Integer n41;
+
+    private Integer n42;
+
+    private Integer n43;
+
+    private Integer n44;
+
+    private Integer n45;
+
+    private Integer n46;
+
+    private Integer n47;
+
+    private Integer n48;
+
+    private Integer n49;
+
+    private Integer n50;
+
+    private Integer qualified;
+
+    private Integer unqualified;
+
+    private Integer power;
+
+
+}

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

@@ -0,0 +1,250 @@
+package com.gyee.generation.model.auto;
+
+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;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author xieshengjie
+ * @since 2023-04-27
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ProEconEquipmentDeviatSpeed extends Model {
+
+    private static final long serialVersionUID = 1L;
+    @TableId(value = "id",type = IdType.INPUT)
+    private String id;
+
+    private String windturbineId;
+
+    private Date recordDate;
+
+    private String windpowerstationId;
+
+    private String projectId;
+
+    private String lineId;
+
+    private String companyId;
+
+    private String regionId;
+
+    private Integer p50;
+
+    private Integer p49;
+
+    private Integer p48;
+
+    private Integer p47;
+
+    private Integer p46;
+
+    private Integer p45;
+
+    private Integer p44;
+
+    private Integer p43;
+
+    private Integer p42;
+
+    private Integer p41;
+
+    private Integer p40;
+
+    private Integer p39;
+
+    private Integer p38;
+
+    private Integer p37;
+
+    private Integer p36;
+
+    private Integer p35;
+
+    private Integer p34;
+
+    private Integer p33;
+
+    private Integer p32;
+
+    private Integer p31;
+
+    private Integer p30;
+
+    private Integer p29;
+
+    private Integer p28;
+
+    private Integer p27;
+
+    private Integer p26;
+
+    private Integer p25;
+
+    private Integer p24;
+
+    private Integer p23;
+
+    private Integer p22;
+
+    private Integer p21;
+
+    private Integer p20;
+
+    private Integer p19;
+
+    private Integer p18;
+
+    private Integer p17;
+
+    private Integer p16;
+
+    private Integer p15;
+
+    private Integer p14;
+
+    private Integer p13;
+
+    private Integer p12;
+
+    private Integer p11;
+
+    private Integer p10;
+
+    private Integer p9;
+
+    private Integer p8;
+
+    private Integer p7;
+
+    private Integer p6;
+
+    private Integer p5;
+
+    private Integer p4;
+
+    private Integer p3;
+
+    private Integer p2;
+
+    private Integer p1;
+
+    private Integer p0;
+
+    private Integer n1;
+
+    private Integer n2;
+
+    private Integer n3;
+
+    private Integer n4;
+
+    private Integer n5;
+
+    private Integer n6;
+
+    private Integer n7;
+
+    private Integer n8;
+
+    private Integer n9;
+
+    private Integer n10;
+
+    private Integer n11;
+
+    private Integer n12;
+
+    private Integer n13;
+
+    private Integer n14;
+
+    private Integer n15;
+
+    private Integer n16;
+
+    private Integer n17;
+
+    private Integer n18;
+
+    private Integer n19;
+
+    private Integer n20;
+
+    private Integer n21;
+
+    private Integer n22;
+
+    private Integer n23;
+
+    private Integer n24;
+
+    private Integer n25;
+
+    private Integer n26;
+
+    private Integer n27;
+
+    private Integer n28;
+
+    private Integer n29;
+
+    private Integer n30;
+
+    private Integer n31;
+
+    private Integer n32;
+
+    private Integer n33;
+
+    private Integer n34;
+
+    private Integer n35;
+
+    private Integer n36;
+
+    private Integer n37;
+
+    private Integer n38;
+
+    private Integer n39;
+
+    private Integer n40;
+
+    private Integer n41;
+
+    private Integer n42;
+
+    private Integer n43;
+
+    private Integer n44;
+
+    private Integer n45;
+
+    private Integer n46;
+
+    private Integer n47;
+
+    private Integer n48;
+
+    private Integer n49;
+
+    private Integer n50;
+
+    private Integer qualified;
+
+    private Integer unqualified;
+
+    private Integer speed;
+
+
+}

+ 372 - 0
realtime/generationXK-service/src/main/java/com/gyee/generation/service/WindDeviationService.java

@@ -0,0 +1,372 @@
+package com.gyee.generation.service;/*
+@author   谢生杰
+@date   2023/4/27-10:25
+*/
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.gyee.common.contant.ContantXk;
+import com.gyee.common.model.PointData;
+import com.gyee.common.model.StringUtils;
+import com.gyee.common.util.CommonUtils;
+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.ProBasicEquipmentPoint;
+import com.gyee.generation.model.auto.ProEconEquipmentDeviatPower;
+import com.gyee.generation.model.auto.ProEconEquipmentDeviatSpeed;
+import com.gyee.generation.model.vo.DeviationVo;
+import com.gyee.generation.service.auto.IProEconEquipmentDeviatPowerService;
+import com.gyee.generation.service.auto.IProEconEquipmentDeviatSpeedService;
+import com.gyee.generation.util.realtimesource.IEdosUtil;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Service
+public class WindDeviationService {
+    @Resource
+    private IEdosUtil edosUtil;
+    @Resource
+    private IProEconEquipmentDeviatSpeedService proEconEquipmentDeviatSpeedService;
+    @Resource
+    private IProEconEquipmentDeviatPowerService proEconEquipmentDeviatPowerService;
+
+    public void save(String begin,String end){
+
+        Map<String, Map<String, ProBasicEquipmentPoint>> wtpAimap = CacheContext.wtpAimap;
+        List<ProBasicEquipment> wtls = CacheContext.wtls;
+        Map<String, Double> modelpower = CacheContext.modelpower;
+        List<ProEconEquipmentDeviatSpeed> speedsResultList = new ArrayList<>();
+        List<ProEconEquipmentDeviatPower> powersResultList = new ArrayList<>();
+
+        List<String> days = DateUtils.getDays(begin, end);
+        days.stream().forEach(day->{
+            Date date = DateUtils.parseDate(day);
+            Date startOfDay = DateUtils.getStartOfDay(date);
+            Date endOfDay = DateUtils.getEndOfDay(date);
+
+            QueryWrapper<ProEconEquipmentDeviatSpeed> del = new QueryWrapper<>();
+            del.lambda().eq(ProEconEquipmentDeviatSpeed::getRecordDate,date);
+            proEconEquipmentDeviatSpeedService.remove(del);
+
+            wtls.stream().forEach(wt->{
+                if (wt.getEquipmentCategory()==-1){
+                    Map<String, ProBasicEquipmentPoint> equipmentPointMap = wtpAimap.get(wt.getId());
+
+                    ProBasicEquipmentPoint fxPoint = equipmentPointMap.get(ContantXk.CJ_FX);
+                    ProBasicEquipmentPoint dfjdPoint = equipmentPointMap.get(ContantXk.CJ_DFJD);
+                    ProBasicEquipmentPoint fsPoint = equipmentPointMap.get(ContantXk.CJ_SSFS);
+                    ProBasicEquipmentPoint glPoint = equipmentPointMap.get(ContantXk.CJ_SSGL);
+
+                    List<PointData> fxDatasSnap = null;
+                    List<PointData> dfjdDatasSnap = null;
+                    List<PointData> fsDatasSnap = null;
+                    List<PointData> glDatasSnap = null;
+                    try {
+                        fxDatasSnap = edosUtil.getHistoryDatasSnap(fxPoint.getNemCode(), startOfDay.getTime() / 1000, endOfDay.getTime() / 1000);
+                        dfjdDatasSnap = edosUtil.getHistoryDatasSnap(dfjdPoint.getNemCode(), startOfDay.getTime() / 1000, endOfDay.getTime() / 1000);
+                        fsDatasSnap = edosUtil.getHistoryDatasSnap(fsPoint.getNemCode(), startOfDay.getTime() / 1000, endOfDay.getTime() / 1000);
+                        glDatasSnap = edosUtil.getHistoryDatasSnap(glPoint.getNemCode(), startOfDay.getTime() / 1000, endOfDay.getTime() / 1000);
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+
+                    if (StringUtils.isNotEmpty(fxDatasSnap) && StringUtils.isNotEmpty(dfjdDatasSnap) && StringUtils.isNotEmpty(fsDatasSnap) && StringUtils.isNotEmpty(glDatasSnap)){
+                        List<DeviationVo> tempList = new ArrayList<>();
+                        for (int i =0;i<fxDatasSnap.size();i++){
+                            DeviationVo vo = new DeviationVo();
+                            vo.setWtid(wt.getId());
+                            vo.setSpeed(fsDatasSnap.get(i).getPointValueInDouble());
+                            vo.setPower(glDatasSnap.get(i).getPointValueInDouble());
+                            vo.setFx(fxDatasSnap.get(i).getPointValueInDouble());
+                            vo.setDfjd(dfjdDatasSnap.get(i).getPointValueInDouble());
+                            tempList.add(vo);
+                        }
+                        for (int i = 1;i<=25;i++){
+                            int finalI = i;
+                            List<DeviationVo> vos = tempList.stream().filter(t -> (int) Math.round(t.getSpeed()) == finalI).collect(Collectors.toList());
+                            int[] ints = windDeviationRatio(vos);
+                            ProEconEquipmentDeviatSpeed deviatSpeed = new ProEconEquipmentDeviatSpeed();
+                            int qualified = 0;
+                            int zqualified = 0;
+                            for (int x=0;x<ints.length;x++){
+                                if (x>=35 && x<=65){
+                                    qualified+=ints[x];
+                                }
+                                zqualified+=ints[x];
+                            }
+                            deviatSpeed.setSpeed(i);
+                            deviatSpeed.setUnqualified(zqualified-qualified);
+                            deviatSpeed.setQualified(qualified);
+                            deviatSpeed.setId(CommonUtils.getUUID());
+                            deviatSpeed.setWindturbineId(wt.getId());
+                            deviatSpeed.setLineId(wt.getLineId());
+                            deviatSpeed.setProjectId(wt.getProjectId());
+                            deviatSpeed.setWindpowerstationId(wt.getWindpowerstationId());
+                            deviatSpeed.setCompanyId(wt.getCompanyId());
+                            deviatSpeed.setRegionId(wt.getRegionId());
+                            deviatSpeed.setRecordDate(date);
+                            deviatSpeed.setN50(ints[0]);
+                            deviatSpeed.setN49(ints[1]);
+                            deviatSpeed.setN48(ints[2]);
+                            deviatSpeed.setN47(ints[3]);
+                            deviatSpeed.setN46(ints[4]);
+                            deviatSpeed.setN45(ints[5]);
+                            deviatSpeed.setN44(ints[6]);
+                            deviatSpeed.setN43(ints[7]);
+                            deviatSpeed.setN42(ints[8]);
+                            deviatSpeed.setN41(ints[9]);
+                            deviatSpeed.setN40(ints[10]);
+                            deviatSpeed.setN39(ints[11]);
+                            deviatSpeed.setN38(ints[12]);
+                            deviatSpeed.setN37(ints[13]);
+                            deviatSpeed.setN36(ints[14]);
+                            deviatSpeed.setN35(ints[15]);
+                            deviatSpeed.setN34(ints[16]);
+                            deviatSpeed.setN33(ints[17]);
+                            deviatSpeed.setN32(ints[18]);
+                            deviatSpeed.setN31(ints[19]);
+                            deviatSpeed.setN30(ints[20]);
+                            deviatSpeed.setN29(ints[21]);
+                            deviatSpeed.setN28(ints[22]);
+                            deviatSpeed.setN27(ints[23]);
+                            deviatSpeed.setN26(ints[24]);
+                            deviatSpeed.setN25(ints[25]);
+                            deviatSpeed.setN24(ints[26]);
+                            deviatSpeed.setN23(ints[27]);
+                            deviatSpeed.setN22(ints[28]);
+                            deviatSpeed.setN21(ints[29]);
+                            deviatSpeed.setN20(ints[30]);
+                            deviatSpeed.setN19(ints[31]);
+                            deviatSpeed.setN18(ints[32]);
+                            deviatSpeed.setN17(ints[33]);
+                            deviatSpeed.setN16(ints[34]);
+                            deviatSpeed.setN15(ints[35]);
+                            deviatSpeed.setN14(ints[36]);
+                            deviatSpeed.setN13(ints[37]);
+                            deviatSpeed.setN12(ints[38]);
+                            deviatSpeed.setN11(ints[39]);
+                            deviatSpeed.setN10(ints[40]);
+                            deviatSpeed.setN9(ints[41]);
+                            deviatSpeed.setN8(ints[42]);
+                            deviatSpeed.setN7(ints[43]);
+                            deviatSpeed.setN6(ints[44]);
+                            deviatSpeed.setN5(ints[45]);
+                            deviatSpeed.setN4(ints[46]);
+                            deviatSpeed.setN3(ints[47]);
+                            deviatSpeed.setN2(ints[48]);
+                            deviatSpeed.setN1(ints[49]);
+                            deviatSpeed.setP0(ints[50]);
+                            deviatSpeed.setP1(ints[51]);
+                            deviatSpeed.setP2(ints[52]);
+                            deviatSpeed.setP3(ints[53]);
+                            deviatSpeed.setP4(ints[54]);
+                            deviatSpeed.setP5(ints[55]);
+                            deviatSpeed.setP6(ints[56]);
+                            deviatSpeed.setP7(ints[57]);
+                            deviatSpeed.setP8(ints[58]);
+                            deviatSpeed.setP9(ints[59]);
+                            deviatSpeed.setP10(ints[60]);
+                            deviatSpeed.setP11(ints[61]);
+                            deviatSpeed.setP12(ints[62]);
+                            deviatSpeed.setP13(ints[63]);
+                            deviatSpeed.setP14(ints[64]);
+                            deviatSpeed.setP15(ints[65]);
+                            deviatSpeed.setP16(ints[66]);
+                            deviatSpeed.setP17(ints[67]);
+                            deviatSpeed.setP18(ints[68]);
+                            deviatSpeed.setP19(ints[69]);
+                            deviatSpeed.setP20(ints[70]);
+                            deviatSpeed.setP21(ints[71]);
+                            deviatSpeed.setP22(ints[72]);
+                            deviatSpeed.setP23(ints[73]);
+                            deviatSpeed.setP24(ints[74]);
+                            deviatSpeed.setP25(ints[75]);
+                            deviatSpeed.setP26(ints[76]);
+                            deviatSpeed.setP27(ints[77]);
+                            deviatSpeed.setP28(ints[78]);
+                            deviatSpeed.setP29(ints[79]);
+                            deviatSpeed.setP30(ints[80]);
+                            deviatSpeed.setP31(ints[81]);
+                            deviatSpeed.setP32(ints[82]);
+                            deviatSpeed.setP33(ints[83]);
+                            deviatSpeed.setP34(ints[84]);
+                            deviatSpeed.setP35(ints[85]);
+                            deviatSpeed.setP36(ints[86]);
+                            deviatSpeed.setP37(ints[87]);
+                            deviatSpeed.setP38(ints[88]);
+                            deviatSpeed.setP39(ints[89]);
+                            deviatSpeed.setP40(ints[90]);
+                            deviatSpeed.setP41(ints[91]);
+                            deviatSpeed.setP42(ints[92]);
+                            deviatSpeed.setP43(ints[93]);
+                            deviatSpeed.setP44(ints[94]);
+                            deviatSpeed.setP45(ints[95]);
+                            deviatSpeed.setP46(ints[96]);
+                            deviatSpeed.setP47(ints[97]);
+                            deviatSpeed.setP48(ints[98]);
+                            deviatSpeed.setP49(ints[99]);
+                            deviatSpeed.setP50(ints[100]);
+                            speedsResultList.add(deviatSpeed);
+                        }
+
+                        double zjrl = modelpower.get(wt.getModelId());
+                        int round = (int)zjrl/100;
+                        for (int i = 1;i<=round;i++){
+                            int finalI = i;
+                            List<DeviationVo> vos = tempList.stream().filter(t -> (int) Math.round(t.getPower()) == finalI).collect(Collectors.toList());
+                            int[] ints = windDeviationRatio(vos);
+                            ProEconEquipmentDeviatPower deviatPower = new ProEconEquipmentDeviatPower();
+                            int qualified = 0;
+                            int zqualified = 0;
+                            for (int x=0;x<ints.length;x++){
+                                if (x>=35 && x<=65){
+                                    qualified+=ints[x];
+                                }
+                                zqualified+=ints[x];
+                            }
+                            deviatPower.setPower(i*100);
+                            deviatPower.setUnqualified(zqualified-qualified);
+                            deviatPower.setQualified(qualified);
+                            deviatPower.setId(CommonUtils.getUUID());
+                            deviatPower.setWindturbineId(wt.getId());
+                            deviatPower.setLineId(wt.getLineId());
+                            deviatPower.setProjectId(wt.getProjectId());
+                            deviatPower.setWindpowerstationId(wt.getWindpowerstationId());
+                            deviatPower.setCompanyId(wt.getCompanyId());
+                            deviatPower.setRegionId(wt.getRegionId());
+                            deviatPower.setRecordDate(date);
+                            deviatPower.setN50(ints[0]);
+                            deviatPower.setN49(ints[1]);
+                            deviatPower.setN48(ints[2]);
+                            deviatPower.setN47(ints[3]);
+                            deviatPower.setN46(ints[4]);
+                            deviatPower.setN45(ints[5]);
+                            deviatPower.setN44(ints[6]);
+                            deviatPower.setN43(ints[7]);
+                            deviatPower.setN42(ints[8]);
+                            deviatPower.setN41(ints[9]);
+                            deviatPower.setN40(ints[10]);
+                            deviatPower.setN39(ints[11]);
+                            deviatPower.setN38(ints[12]);
+                            deviatPower.setN37(ints[13]);
+                            deviatPower.setN36(ints[14]);
+                            deviatPower.setN35(ints[15]);
+                            deviatPower.setN34(ints[16]);
+                            deviatPower.setN33(ints[17]);
+                            deviatPower.setN32(ints[18]);
+                            deviatPower.setN31(ints[19]);
+                            deviatPower.setN30(ints[20]);
+                            deviatPower.setN29(ints[21]);
+                            deviatPower.setN28(ints[22]);
+                            deviatPower.setN27(ints[23]);
+                            deviatPower.setN26(ints[24]);
+                            deviatPower.setN25(ints[25]);
+                            deviatPower.setN24(ints[26]);
+                            deviatPower.setN23(ints[27]);
+                            deviatPower.setN22(ints[28]);
+                            deviatPower.setN21(ints[29]);
+                            deviatPower.setN20(ints[30]);
+                            deviatPower.setN19(ints[31]);
+                            deviatPower.setN18(ints[32]);
+                            deviatPower.setN17(ints[33]);
+                            deviatPower.setN16(ints[34]);
+                            deviatPower.setN15(ints[35]);
+                            deviatPower.setN14(ints[36]);
+                            deviatPower.setN13(ints[37]);
+                            deviatPower.setN12(ints[38]);
+                            deviatPower.setN11(ints[39]);
+                            deviatPower.setN10(ints[40]);
+                            deviatPower.setN9(ints[41]);
+                            deviatPower.setN8(ints[42]);
+                            deviatPower.setN7(ints[43]);
+                            deviatPower.setN6(ints[44]);
+                            deviatPower.setN5(ints[45]);
+                            deviatPower.setN4(ints[46]);
+                            deviatPower.setN3(ints[47]);
+                            deviatPower.setN2(ints[48]);
+                            deviatPower.setN1(ints[49]);
+                            deviatPower.setP0(ints[50]);
+                            deviatPower.setP1(ints[51]);
+                            deviatPower.setP2(ints[52]);
+                            deviatPower.setP3(ints[53]);
+                            deviatPower.setP4(ints[54]);
+                            deviatPower.setP5(ints[55]);
+                            deviatPower.setP6(ints[56]);
+                            deviatPower.setP7(ints[57]);
+                            deviatPower.setP8(ints[58]);
+                            deviatPower.setP9(ints[59]);
+                            deviatPower.setP10(ints[60]);
+                            deviatPower.setP11(ints[61]);
+                            deviatPower.setP12(ints[62]);
+                            deviatPower.setP13(ints[63]);
+                            deviatPower.setP14(ints[64]);
+                            deviatPower.setP15(ints[65]);
+                            deviatPower.setP16(ints[66]);
+                            deviatPower.setP17(ints[67]);
+                            deviatPower.setP18(ints[68]);
+                            deviatPower.setP19(ints[69]);
+                            deviatPower.setP20(ints[70]);
+                            deviatPower.setP21(ints[71]);
+                            deviatPower.setP22(ints[72]);
+                            deviatPower.setP23(ints[73]);
+                            deviatPower.setP24(ints[74]);
+                            deviatPower.setP25(ints[75]);
+                            deviatPower.setP26(ints[76]);
+                            deviatPower.setP27(ints[77]);
+                            deviatPower.setP28(ints[78]);
+                            deviatPower.setP29(ints[79]);
+                            deviatPower.setP30(ints[80]);
+                            deviatPower.setP31(ints[81]);
+                            deviatPower.setP32(ints[82]);
+                            deviatPower.setP33(ints[83]);
+                            deviatPower.setP34(ints[84]);
+                            deviatPower.setP35(ints[85]);
+                            deviatPower.setP36(ints[86]);
+                            deviatPower.setP37(ints[87]);
+                            deviatPower.setP38(ints[88]);
+                            deviatPower.setP39(ints[89]);
+                            deviatPower.setP40(ints[90]);
+                            deviatPower.setP41(ints[91]);
+                            deviatPower.setP42(ints[92]);
+                            deviatPower.setP43(ints[93]);
+                            deviatPower.setP44(ints[94]);
+                            deviatPower.setP45(ints[95]);
+                            deviatPower.setP46(ints[96]);
+                            deviatPower.setP47(ints[97]);
+                            deviatPower.setP48(ints[98]);
+                            deviatPower.setP49(ints[99]);
+                            deviatPower.setP50(ints[100]);
+                            powersResultList.add(deviatPower);
+                        }
+                    }
+
+
+                }
+            });
+
+        });
+        proEconEquipmentDeviatSpeedService.saveBatch(speedsResultList);
+        proEconEquipmentDeviatPowerService.saveBatch(powersResultList);
+    }
+
+    private static int[] windDeviationRatio(List<DeviationVo> list){
+        int[] pc = new int[101];  //正负偏差 [-50,-49,....,0,1,2,.....50]
+        //次数统计
+        for (int i = 0; i < list.size(); i++){
+            DeviationVo item = list.get(i);
+            int ele = (int) (Math.abs(item.getFx()) + Math.abs(item.getDfjd()));
+            int index = ele - 180;
+            if (index >= -50 && index <= 50)
+                pc[50-(index > 0 ? -index : Math.abs(index))]++;
+        }
+
+        return pc;
+    }
+
+}

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

@@ -0,0 +1,16 @@
+package com.gyee.generation.service.auto;
+
+import com.gyee.generation.model.auto.ProEconEquipmentDeviatPower;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author xieshengjie
+ * @since 2023-04-27
+ */
+public interface IProEconEquipmentDeviatPowerService extends IService<ProEconEquipmentDeviatPower> {
+
+}

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

@@ -0,0 +1,16 @@
+package com.gyee.generation.service.auto;
+
+import com.gyee.generation.model.auto.ProEconEquipmentDeviatSpeed;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author xieshengjie
+ * @since 2023-04-27
+ */
+public interface IProEconEquipmentDeviatSpeedService extends IService<ProEconEquipmentDeviatSpeed> {
+
+}

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

@@ -0,0 +1,20 @@
+package com.gyee.generation.service.auto.impl;
+
+import com.gyee.generation.model.auto.ProEconEquipmentDeviatPower;
+import com.gyee.generation.mapper.auto.ProEconEquipmentDeviatPowerMapper;
+import com.gyee.generation.service.auto.IProEconEquipmentDeviatPowerService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author xieshengjie
+ * @since 2023-04-27
+ */
+@Service
+public class ProEconEquipmentDeviatPowerServiceImpl extends ServiceImpl<ProEconEquipmentDeviatPowerMapper, ProEconEquipmentDeviatPower> implements IProEconEquipmentDeviatPowerService {
+
+}

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

@@ -0,0 +1,20 @@
+package com.gyee.generation.service.auto.impl;
+
+import com.gyee.generation.model.auto.ProEconEquipmentDeviatSpeed;
+import com.gyee.generation.mapper.auto.ProEconEquipmentDeviatSpeedMapper;
+import com.gyee.generation.service.auto.IProEconEquipmentDeviatSpeedService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author xieshengjie
+ * @since 2023-04-27
+ */
+@Service
+public class ProEconEquipmentDeviatSpeedServiceImpl extends ServiceImpl<ProEconEquipmentDeviatSpeedMapper, ProEconEquipmentDeviatSpeed> implements IProEconEquipmentDeviatSpeedService {
+
+}