xieshengjie преди 3 години
родител
ревизия
3692768c6b

+ 9 - 4
src/main/java/com/gyee/frame/common/spring/Constant.java

@@ -22,10 +22,13 @@ public class Constant {
 	public static final String TPOINT_ALL_SJGL = "RPJGL"; // 汇总日实际功率
 	public static final String TPOINT_ALL_PJFS = "RPJFS"; // 汇总日平均风速
 
-	public static final String[] TPOINT_WP_AGC = { "AGC001", "AGC002",
-			"AGC004", "AGC005", "AGC006", "AGC007", "AGC008", "AGC011",
-			"AGC014", "AGC015", "AGC021", "AGC022", "AGC023", "AGC024",
-			"AGC025", "AGC026", "AGC031" };
+//	public static final String[] TPOINT_WP_AGC = { "AGC001", "AGC002",
+//			"AGC004", "AGC005", "AGC006", "AGC007", "AGC008", "AGC011",
+//			"AGC014", "AGC015", "AGC021", "AGC022", "AGC023", "AGC024",
+//			"AGC025", "AGC026", "AGC031" };
+
+	public static final String[] TPOINT_WP_AGC = { "ZZSGL","SSZGL","AGC001", "AGC002",
+			"AGC003", "AGC004", "AGC005", "AGC006", "AGC007", "AGC008"};
 
 	public static final String[] TPOINT_WP_AGCYCGL = { "FCFGCDQ0001",
 			"FCFGCDQ0002", "FCFGCDQ0003", "FCFGCDQ0004", "FCFGCDQ0005",
@@ -36,6 +39,8 @@ public class Constant {
 	public static final String TPOINT_WP_FGLYC2 = "FCFGCDQ0002,FCFGCDQ0004,FCFGCDQ0006,FCFGCDQ0008,FCFGCDQ0010,FCFGCDQ0012,FCFGCDQ0014,FCFGCDQ0016";
 	public static final String TPOINT_WP_FGLYC1HOUR2 = "FCFGCDQ0004,FCFGCDQ0008,FCFGCDQ0012,FCFGCDQ0016";
 	public static final String TPOINT_QS3_YGCL = "SLFGL.NX_GD_QSF_YC_P1_L1_001_CDQ002,SLFGL.NX_GD_QSF_YC_P1_L1_001_CDQ004,SLFGL.NX_GD_QSF_YC_P1_L1_001_CDQ006,SLFGL.NX_GD_QSF_YC_P1_L1_001_CDQ008,SLFGL.NX_GD_QSF_YC_P1_L1_001_CDQ010,SLFGL.NX_GD_QSF_YC_P1_L1_001_CDQ012,SLFGL.NX_GD_QSF_YC_P1_L1_001_CDQ014,SLFGL.NX_GD_QSF_YC_P1_L1_001_CDQ016";
+	public static final String TPOINT_WP_FGLYCSB = "FCFGCDQ0001A,FCFGCDQ0003A,FCFGCDQ0005A,FCFGCDQ0007A,FCFGCDQ0009A,FCFGCDQ0011A,FCFGCDQ0013A,FCFGCDQ0015A";
+	public static final String TPOINT_WP_FGLYC2SB = "FCFGCDQ0002A,FCFGCDQ0004A,FCFGCDQ0006A,FCFGCDQ0008A,FCFGCDQ0010A,FCFGCDQ0012A,FCFGCDQ0014A,FCFGCDQ0016A";
 
 	public static final String TPOINT_WP_FGLYCDT = "FCFGDQDT00";
 	public static final String TPOINT_WP_FGLYCST = "FCFGDQST00";

+ 19 - 0
src/main/java/com/gyee/frame/model/agc/AgcVo.java

@@ -0,0 +1,19 @@
+package com.gyee.frame.model.agc;
+
+import lombok.Data;
+
+/**
+ * @ClassName : AgcVo
+ * @Author : xieshengjie
+ * @Date: 2021/6/1 14:22
+ * @Description : agcvo
+ */
+@Data
+public class AgcVo {
+    private Long time;
+    private Double sjgl;
+    private Double llgl;
+    private Double xdzl;
+    private Double ycgl;
+
+}

+ 583 - 0
src/main/java/com/gyee/frame/service/websocket/AgcService.java

@@ -0,0 +1,583 @@
+package com.gyee.frame.service.websocket;
+
+import com.gyee.frame.common.spring.Constant;
+import com.gyee.frame.common.spring.InitialRunner;
+import com.gyee.frame.model.agc.AgcVo;
+import com.gyee.frame.model.auto.WindPowerStationTestingPoint2;
+import com.gyee.frame.model.auto.Windpowerstation;
+import com.gyee.frame.model.custom.DataVo;
+import com.gyee.frame.model.custom.PointData;
+import com.gyee.frame.util.DateUtils;
+import com.gyee.frame.util.IRealTimeDataBaseUtil;
+import com.gyee.frame.util.MathUtil;
+import com.gyee.frame.util.StringUtils;
+import com.gyee.frame.util.golden.EdosUtil;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.*;
+
+/**
+ * @ClassName : AgcService
+ * @Author : xieshengjie
+ * @Date: 2021/5/29 11:47
+ * @Description : AGCservice
+ */
+@Service
+public class AgcService {
+    private IRealTimeDataBaseUtil ednaApiUtil = new EdosUtil();
+
+    /**
+     * 获取agc页面点实时数据
+     * @return
+     * @throws Exception
+     */
+    public Map<String, Double> getAgcVals() throws Exception {
+        Map<String, Double> resultmap = new HashMap<String, Double>();
+        List<Windpowerstation> wpList = InitialRunner.wpallls;
+        for (Windpowerstation wp : wpList) {
+            if (wp.getId().equals("MCH_GDC")) {
+                continue;
+            }
+
+            String[] agcPoints = Constant.TPOINT_WP_AGC;
+
+            Map<String, WindPowerStationTestingPoint2> map = InitialRunner.wpPointmap.get(wp.getId());
+
+            for (int i = 0; i < agcPoints.length; i++) {
+                String ai;
+                if (map.get(agcPoints[i])!=null) {
+                    ai = map.get(agcPoints[i]).getCode();
+                    if (ai != null) {
+                        PointData data;
+                        try {
+                            data = ednaApiUtil.getRealData(ai);
+                            if (data != null) {
+                                resultmap.put(wp.getId() + "_" + agcPoints[i],
+                                        MathUtil.decimal(data.getPointValueInDouble(), 2));
+                            }else{
+                                resultmap.put(wp.getId() + "_" + agcPoints[i],0.0);
+                            }
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
+                    }
+                }
+
+            }
+
+            if (wp.getId().equals("SBQ_FDC")){
+                /*牛五*/
+                double nwllgl = ednaApiUtil.getRealData("SBQFCJSFW.NX_GD_SBQF_FJ_P2_XXX_XXX_CI0192").getPointValueInDouble()
+                        +ednaApiUtil.getRealData("SBQFCJSFW.NX_GD_SBQF_FJ_P3_XXX_XXX_CI0192").getPointValueInDouble()
+                        +ednaApiUtil.getRealData("SBQFCJSFW.NX_GD_SBQF_FJ_P4_XXX_XXX_CI0192").getPointValueInDouble();
+                double nwcxgl = ednaApiUtil.getRealData("SBQNWDQ.NX_GD_SBQF_DQ_P1_L1_001_AI0817").getPointValueInDouble();
+                double nwxdzl = ednaApiUtil.getRealData("SBQNWDQ.NX_GD_SBQF_DQ_P1_L1_001_AI0818").getPointValueInDouble();
+                double nwygsx = ednaApiUtil.getRealData("SBQNWDQ.NX_GD_SBQF_DQ_P1_L1_001_AI0819").getPointValueInDouble();
+                double nwygxx = ednaApiUtil.getRealData("SBQNWDQ.NX_GD_SBQF_DQ_P1_L1_001_AI0820").getPointValueInDouble();
+                double nwyf =  ednaApiUtil.getRealData("SBQNWDQ.NX_GD_SBQF_DQ_P1_L1_001_DI3832").getPointValueInDouble();
+                double nwtt =  ednaApiUtil.getRealData("SBQNWDQ.NX_GD_SBQF_DQ_P1_L1_001_DI3831").getPointValueInDouble();
+                double nwjbs =ednaApiUtil.getRealData("SBQNWDQ.NX_GD_SBQF_DQ_P1_L1_001_DI3834").getPointValueInDouble();
+                double nwzbs = ednaApiUtil.getRealData("SBQNWDQ.NX_GD_SBQF_DQ_P1_L1_001_DI3833").getPointValueInDouble();
+                double nwzzttzt = ednaApiUtil.getRealData("SBQNWDQ.NX_GD_SBQF_DQ_P1_L1_001_DI2253").getPointValueInDouble();
+                double xlllgl = ednaApiUtil.getRealData("SBQFCJSFW.NX_GD_SBQF_FJ_P1_XXX_XXX_CI0192").getPointValueInDouble();
+
+                resultmap.put("SBQ_FDC_LLGL", MathUtil.decimal(xlllgl/1000,2));
+                resultmap.put("SBQ_FDC02_LLGL", MathUtil.decimal(nwllgl,2));
+                resultmap.put("SBQ_FDC02_AGC001", MathUtil.decimal(nwcxgl,2));
+                resultmap.put("SBQ_FDC02_AGC002", MathUtil.decimal(nwxdzl,2));
+                resultmap.put("SBQ_FDC02_AGC003", MathUtil.decimal(nwygsx,2));
+                resultmap.put("SBQ_FDC02_AGC004", MathUtil.decimal(nwygxx,2));
+                resultmap.put("SBQ_FDC02_AGC005", MathUtil.decimal(nwyf,2));
+                resultmap.put("SBQ_FDC02_AGC006", MathUtil.decimal(nwtt,2));
+                resultmap.put("SBQ_FDC02_AGC007", MathUtil.decimal(nwjbs,2));
+                resultmap.put("SBQ_FDC02_AGC008", MathUtil.decimal(nwzbs,2));
+                resultmap.put("SBQ_FDC02_AVC005", MathUtil.decimal(nwzzttzt,2));
+            }else if(wp.getId().equals("QS_FDC")){
+                /*宋六*/
+                double slllgl = ednaApiUtil.getRealData("QSFCJSFW.NX_GD_QSF_FJ_P3_XXX_XXX_CI0192").getPointValueInDouble();
+                double slcxgl = ednaApiUtil.getRealData("SLDQ.NX_GD_QSF_DQ_P1_L1_001_AI0013").getPointValueInDouble()/1000;
+                double slxdzl = ednaApiUtil.getRealData("SLAGC.NX_GD_QSF_DQ_P1_L1_001_AI0052").getPointValueInDouble();
+                double slygsx = ednaApiUtil.getRealData("SLAGC.NX_GD_QSF_DQ_P1_L1_001_AI0053").getPointValueInDouble();
+                double slygxx = ednaApiUtil.getRealData("SLAGC.NX_GD_QSF_DQ_P1_L1_001_AI0054").getPointValueInDouble();
+                double slyf =  ednaApiUtil.getRealData("SLAGC.NX_GD_QSF_DQ_P1_L1_001_DI0143").getPointValueInDouble();
+                double sltt =  ednaApiUtil.getRealData("SLAGC.NX_GD_QSF_DQ_P1_L1_001_DI0142").getPointValueInDouble();
+                double sljbs =ednaApiUtil.getRealData("SLAGC.NX_GD_QSF_DQ_P1_L1_001_DI0163").getPointValueInDouble();
+                double slzbs = ednaApiUtil.getRealData("SLAGC.NX_GD_QSF_DQ_P1_L1_001_DI0162").getPointValueInDouble();
+
+                double mxdysj = ednaApiUtil.getRealData("SLAGC.NX_GD_QSF_DQ_P1_L1_001_AI0025").getPointValueInDouble();
+                double mxdytk = ednaApiUtil.getRealData("SLAGC.NX_GD_QSF_DQ_P1_L1_001_AI0026").getPointValueInDouble();
+                double mxkjwg = ednaApiUtil.getRealData("SLAGC.NX_GD_QSF_DQ_P1_L1_001_AI0022").getPointValueInDouble();
+                double qsllgl = ednaApiUtil.getRealData("QSFCJSFW.NX_GD_QSF_FJ_P1_XXX_XXX_CI0192").getPointValueInDouble()
+                        + ednaApiUtil.getRealData("QSFCJSFW.NX_GD_QSF_FJ_P2_XXX_XXX_CI0192").getPointValueInDouble();
+                double mxkzwg = ednaApiUtil.getRealData("SLAGC.NX_GD_QSF_DQ_P1_L1_001_AI0021").getPointValueInDouble();
+                double zztt = ednaApiUtil.getRealData("SLAGC.NX_GD_QSF_DQ_P1_L1_001_DI0170").getPointValueInDouble();
+                double zzyx = ednaApiUtil.getRealData("SLAGC.NX_GD_QSF_DQ_P1_L1_001_DI0171") .getPointValueInDouble();
+                double jwgbs = ednaApiUtil.getRealData("SLAGC.NX_GD_QSF_DQ_P1_L1_001_DI0133").getPointValueInDouble();
+                double zwgbs = ednaApiUtil.getRealData("SLAGC.NX_GD_QSF_DQ_P1_L1_001_DI0114").getPointValueInDouble();
+                resultmap.put("QS_FDC_LLGL", MathUtil.decimal(qsllgl / 1000, 2));
+                resultmap.put("QS_FDC02_LLGL", MathUtil.decimal(slllgl, 2));
+                resultmap.put("QS_FDC02_AGC001", MathUtil.decimal(slcxgl, 2));
+                resultmap.put("QS_FDC02_AGC002", MathUtil.decimal(slxdzl, 2));
+                resultmap.put("QS_FDC02_AGC003", MathUtil.decimal(slygsx, 2));
+                resultmap.put("QS_FDC02_AGC004", MathUtil.decimal(slygxx, 2));
+                resultmap.put("QS_FDC02_AGC005", MathUtil.decimal(slyf, 2));
+                resultmap.put("QS_FDC02_AGC006", MathUtil.decimal(sltt, 2));
+                resultmap.put("QS_FDC02_AGC007", MathUtil.decimal(sljbs, 2));
+                resultmap.put("QS_FDC02_AGC008", MathUtil.decimal(slzbs, 2));
+
+                resultmap.put("QS_FDC02_AVC001", MathUtil.decimal(mxdysj, 2));
+                resultmap.put("QS_FDC02_AVC002", MathUtil.decimal(mxdytk, 2));
+                resultmap.put("QS_FDC02_AVC003", MathUtil.decimal(mxkjwg, 2));
+                resultmap.put("QS_FDC02_AVC004", MathUtil.decimal(mxkzwg, 2));
+                resultmap.put("QS_FDC02_AVC005", MathUtil.decimal(zztt, 2));
+                resultmap.put("QS_FDC02_AVC006", MathUtil.decimal(zzyx, 2));
+                resultmap.put("QS_FDC02_AVC007", MathUtil.decimal(jwgbs, 2));
+                resultmap.put("QS_FDC02_AVC008", MathUtil.decimal(zwgbs, 2));
+
+            }
+        }
+        return resultmap;
+    }
+
+    /**
+     * agc页面曲线
+     * @return
+     * @throws Exception
+     */
+    public Map<String, Object> getAgcLine() throws Exception {
+        Map<String, Object> resultmap = new HashMap<String, Object>();
+
+        List<Windpowerstation> wpList = InitialRunner.wpallls;
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(DateUtils.now());
+        cal.set(Calendar.HOUR_OF_DAY, 0);
+        cal.set(Calendar.MINUTE, 0);
+        cal.set(Calendar.SECOND, 0);
+
+        Date beginDate = cal.getTime();
+
+        Date endDate = DateUtils.getCurrHourTime(DateUtils.now());
+
+        long num = DateUtils.hoursDiff(beginDate, endDate) * 2 + 1;
+        if (cal.getInstance().get(Calendar.MINUTE) > 30) {
+            num++;
+        }
+        String[] agcPoints = Constant.TPOINT_WP_AGC;
+        String[] ycPoints = Constant.TPOINT_WP_FGLYC.split(",");
+        String[] ycPointsSB = Constant.TPOINT_WP_FGLYCSB.split(",");
+        String[] ycPoints2 = Constant.TPOINT_WP_FGLYC2.split(",");
+        String[] ycPoints2SB = Constant.TPOINT_WP_FGLYC2SB.split(",");
+        int length = 48;
+        for (Windpowerstation wp : wpList) {
+            Calendar cal2 = Calendar.getInstance();
+            cal2.setTime(beginDate);
+            List<AgcVo> vos = new ArrayList<>();
+            for (int i = 0; i < length; i++) {
+                AgcVo vo = new AgcVo();
+//                vo.setSjgl(0.0);
+//                vo.setLlgl(0.0);
+//                vo.setXdzl(0.0);
+                vo.setTime(cal2.getTime().getTime());
+                cal2.add(Calendar.MINUTE, 30);
+                vos.add(vo);
+            }
+
+            Map<String, WindPowerStationTestingPoint2> map = InitialRunner.wpPointmap.get(wp.getId());
+
+            WindPowerStationTestingPoint2 sjgl = map.get(agcPoints[3]);
+            if (null != sjgl) {
+                List<PointData> sjglls = ednaApiUtil.getHistoryDatasSnap(sjgl, beginDate.getTime() / 1000,
+                        endDate.getTime() / 1000, (long) length, 1800L);
+                double temp1 = 0;
+                for (int i = 0; i < vos.size(); i++) {
+                    if (i < sjglls.size() && StringUtils.notEmp(sjglls.get(i).getPointTime())) {
+                        if (vos.get(i).getTime() <= new Date().getTime()) {
+                            temp1 = sjglls.get(i).getPointValueInDouble();
+                            temp1 = new BigDecimal(temp1).divide(new BigDecimal(1), 4, RoundingMode.HALF_EVEN)
+                                    .doubleValue();
+                            if ("MHS_FDC".equals(wp.getId())) {
+                                vos.get(i).setSjgl(
+                                        StringUtils.round(temp1, 2));
+                            }else if("SBQ_FDC".equals(wp.getId())){
+                                vos.get(i).setSjgl(StringUtils.round(temp1/1000, 2));
+                            } else if ("DWK_GDC".equals(wp.getId())) {
+                                vos.get(i).setSjgl(
+                                        StringUtils.round(temp1 / 100, 2));
+                            }else{
+                                vos.get(i).setSjgl(StringUtils.round(temp1, 2));// 实际功率
+                            }
+                        } else {
+                            vos.get(i).setSjgl(0d);// 实际功率
+                        }
+                    }
+                }
+
+
+            }
+            WindPowerStationTestingPoint2 llgl = map.get(Constant.TPOINT_WP_ZZSGL);
+            if (null != llgl) {
+                List<PointData> llglls;
+                if (wp.getId().equals("SBQ_FDC")) {
+                    llglls= ednaApiUtil.getHistoryDatasSnap("SBQFCJSFW.NX_GD_SBQF_FJ_P1_XXX_XXX_CI0192", beginDate.getTime() / 1000,
+                            endDate.getTime() / 1000, (long) length, 1800L);
+                } else if (wp.getId().equals("QS_FDC")) {
+                    llglls = ednaApiUtil.getHistoryDatasSnap(
+                            "QSFCJSFW.NX_GD_QSF_FJ_P1_XXX_XXX_CI0192",
+                            beginDate.getTime() / 1000,
+                            endDate.getTime() / 1000, (long) length, 1800L);
+                    llglls = ednaApiUtil.getHistoryDatasSnap(
+                            "QSFCJSFW.NX_GD_QSF_FJ_P2_XXX_XXX_CI0192",
+                            beginDate.getTime() / 1000,
+                            endDate.getTime() / 1000, (long) length, 1800L);
+
+                } else {
+                    llglls= ednaApiUtil.getHistoryDatasSnap(llgl, beginDate.getTime() / 1000,
+                            endDate.getTime() / 1000, (long) length, 1800L);
+                }
+                int count = 0;
+                double temp1 = 0;
+                for (int i = 0; i < vos.size(); i++) {
+
+                    if (i < llglls.size() && StringUtils.notEmp(llglls.get(i).getPointTime())) {
+
+                        if (vos.get(i).getTime() <= new Date().getTime()) {
+                            temp1 = llglls.get(i).getPointValueInDouble() / 1000;
+                            vos.get(i).setLlgl(StringUtils.round(temp1, 2));// 理论功率
+                        } else {
+                            vos.get(i).setLlgl(0d);// 理论功率
+                        }
+                    }
+                }
+
+            }
+            WindPowerStationTestingPoint2 xdgl = map.get(agcPoints[2]);
+            if (null != xdgl) {
+                List<PointData> xdglls = ednaApiUtil.getHistoryDatasSnap(xdgl, beginDate.getTime() / 1000,
+                        endDate.getTime() / 1000, (long) length, 1800L);
+                double temp1 = 0;
+                for (int i = 0; i < vos.size(); i++) {
+
+                    if (i < xdglls.size() && StringUtils.notEmp(xdglls.get(i).getPointTime())) {
+
+                        if (vos.get(i).getTime() <= new Date().getTime()) {
+                            temp1 = xdglls.get(i).getPointValueInDouble();
+                            vos.get(i).setXdzl(StringUtils.round(temp1, 2));// 限电功率
+                        } else {
+                            vos.get(i).setXdzl(0d);// 限电功率
+                        }
+                    }
+                }
+
+            }
+            if (wp.getId().equals("SBQ_FDC")) {
+                if (map.containsKey(ycPointsSB[0])) {
+                    if ("CL_FDC".equals(wp.getId())) {
+
+                    } else {
+                        WindPowerStationTestingPoint2 ycgl1 = map.get(ycPoints[0]);
+                        if (num > 0) {
+                            List<PointData> datas = new ArrayList<PointData>();
+                            datas = ednaApiUtil.getHistoryDatasSnap(ycgl1, beginDate.getTime() / 1000,
+                                    endDate.getTime() / 1000, num, 1800L);
+                            for (int j = 0; j < datas.size(); j++) {
+                                vos.get(j).setYcgl(StringUtils.round(datas.get(j).getPointValueInDouble(), 2));
+                            }
+                            int subresult = 0;
+                            int total = 0;
+                            if (length > datas.size()) {
+                                subresult = length - datas.size();
+                                if (subresult >= 8) {
+                                    subresult = 8;
+                                }
+                                for (int i = 0; i < subresult; i++) {
+                                    WindPowerStationTestingPoint2 ycgl = map.get(ycPoints2SB[i]);
+                                    double value = 0.0;
+                                    value = ednaApiUtil.getRealData(ycgl).getPointValueInDouble();
+                                    vos.get(datas.size() + i).setYcgl(StringUtils.round(value, 2));
+                                }
+                                total = datas.size() + subresult;
+                                subresult = length - (total);
+                                if (subresult > 0) {
+                                    for (int i = 0; i < subresult; i++) {
+                                        cal.add(Calendar.MINUTE, 30);
+                                        vos.get(total + i).setYcgl(null);
+                                    }
+                                }
+
+                            }
+                        }
+                    } // else结束
+                }
+            }else{
+                if (map.containsKey(ycPoints[0])) {
+                    if ("CL_FDC".equals(wp.getId())) {
+
+                    } else {
+                        WindPowerStationTestingPoint2 ycgl1 = map.get(ycPoints[0]);
+                        if (num > 0) {
+                            List<PointData> datas = new ArrayList<PointData>();
+                            datas = ednaApiUtil.getHistoryDatasSnap(ycgl1, beginDate.getTime() / 1000,
+                                    endDate.getTime() / 1000, num, 1800L);
+                            for (int j = 0; j < datas.size(); j++) {
+                                vos.get(j).setYcgl(StringUtils.round(datas.get(j).getPointValueInDouble(), 2));
+                            }
+                            int subresult = 0;
+                            int total = 0;
+                            if (length > datas.size()) {
+                                subresult = length - datas.size();
+                                if (subresult >= 8) {
+                                    subresult = 8;
+                                } else {
+                                    subresult = length - datas.size();
+                                }
+                                for (int i = 0; i < subresult; i++) {
+                                    WindPowerStationTestingPoint2 ycgl = map
+                                            .get(ycPoints2[i]);
+                                    WindPowerStationTestingPoint2 ycgld = map
+                                            .get(ycPoints[i]);
+                                    double value = 0.0;
+                                    int minute = Calendar.getInstance().get(
+                                            Calendar.MINUTE);
+                                    if ((minute >= 0 && minute < 15)
+                                            || (minute >= 30 && minute < 45)) {
+                                        value = ednaApiUtil.getRealData(ycgld)
+                                                .getPointValueInDouble();
+                                    } else {
+                                        value = ednaApiUtil.getRealData(ycgl)
+                                                .getPointValueInDouble();
+                                    }
+                                    vos.get(datas.size() + i).setYcgl(
+                                            StringUtils.round(value, 2));
+                                }
+                                total = datas.size() + subresult;
+                                subresult = length - (total);
+                                if (subresult > 0) {
+                                    for (int i = 0; i < subresult; i++) {
+                                        cal.add(Calendar.MINUTE, 30);
+                                        vos.get(total + i).setYcgl(null);
+                                    }
+                                }
+
+                            }
+                        }
+                    } // else结束
+                }
+            }
+
+
+            resultmap.put(wp.getId(), vos);
+        }
+
+        // 牛五
+        Calendar cal2 = Calendar.getInstance();
+        cal2.setTime(beginDate);
+        List<AgcVo> vos = new ArrayList<>();
+        for (int i = 0; i < length; i++) {
+            AgcVo vo = new AgcVo();
+//            vo.setValue1(0.0);
+//            vo.setValue2(0.0);
+//            vo.setValue3(0.0);
+            vo.setTime(cal2.getTime().getTime());
+            cal2.add(Calendar.MINUTE, 30);
+            vos.add(vo);
+        }
+        List<PointData> nwsjglls = ednaApiUtil.getHistoryDatasSnap("SBQNWDQ.NX_GD_SBQF_DQ_P1_L1_001_AI0817",
+                beginDate.getTime() / 1000, endDate.getTime() / 1000, (long) length, 1800L);
+        double temp1 = 0;
+        for (int i = 0; i < vos.size(); i++) {
+            if (i < nwsjglls.size() && StringUtils.notEmp(nwsjglls.get(i).getPointTime())) {
+                if (vos.get(i).getTime() <= new Date().getTime()) {
+                    temp1 = nwsjglls.get(i).getPointValueInDouble();
+                    temp1 = new BigDecimal(temp1).divide(new BigDecimal(1), 4, RoundingMode.HALF_EVEN).doubleValue();
+
+                    vos.get(i).setSjgl(StringUtils.round(temp1, 2));// 实际功率
+                } else {
+                    vos.get(i).setSjgl(0d);// 实际功率
+                }
+            }
+
+        }
+
+        List<PointData> nwllglly = ednaApiUtil.getHistoryDatasSnap("SBQFCJSFW.NX_GD_SBQF_FJ_P2_XXX_XXX_CI0192",
+                beginDate.getTime() / 1000, endDate.getTime() / 1000, (long) length, 1800L);
+        List<PointData> nwllglle = ednaApiUtil.getHistoryDatasSnap("SBQFCJSFW.NX_GD_SBQF_FJ_P3_XXX_XXX_CI0192",
+                beginDate.getTime() / 1000, endDate.getTime() / 1000, (long) length, 1800L);
+        List<PointData> nwllglls = ednaApiUtil.getHistoryDatasSnap("SBQFCJSFW.NX_GD_SBQF_FJ_P4_XXX_XXX_CI0192",
+                beginDate.getTime() / 1000, endDate.getTime() / 1000, (long) length, 1800L);
+
+        for (int i = 0; i < vos.size(); i++) {
+
+            if (i < nwllglls.size() && StringUtils.notEmp(nwllglls.get(i).getPointTime())) {
+
+                if (vos.get(i).getTime() <= new Date().getTime()) {
+                    temp1 = (nwllglly.get(i).getPointValueInDouble()+nwllglle.get(i).getPointValueInDouble()+nwllglls.get(i).getPointValueInDouble()) / 1000;
+                    vos.get(i).setLlgl(StringUtils.round(temp1, 2));// 理论功率
+                } else {
+                    vos.get(i).setLlgl(0d);// 理论功率
+                }
+            }
+        }
+
+        List<PointData> nwxdglls = ednaApiUtil.getHistoryDatasSnap("SBQNWDQ.NX_GD_SBQF_DQ_P1_L1_001_AI0818",
+                beginDate.getTime() / 1000, endDate.getTime() / 1000, (long) length, 1800L);
+        for (int i = 0; i < vos.size(); i++) {
+
+            if (i < nwxdglls.size() && StringUtils.notEmp(nwxdglls.get(i).getPointTime())) {
+
+                if (vos.get(i).getTime() <= new Date().getTime()) {
+                    temp1 = nwxdglls.get(i).getPointValueInDouble();
+                    vos.get(i).setXdzl(StringUtils.round(temp1, 2));// 限电功率
+                } else {
+                    vos.get(i).setXdzl(0d);// 限电功率
+                }
+            }
+        }
+
+        List<PointData> datas = new ArrayList<PointData>();
+        datas = ednaApiUtil.getHistoryDatasSnap("SBQFGL.NX_GD_SBQF_YC_P1_L1_002_DQ0001", beginDate.getTime() / 1000,
+                endDate.getTime() / 1000, num, 1800L);
+        for (int j = 0; j < datas.size(); j++) {
+            vos.get(j).setYcgl(StringUtils.round(datas.get(j).getPointValueInDouble(), 2));
+        }
+        int subresult = 0;
+        int total = 0;
+        if (length > datas.size()) {
+            subresult = length - datas.size();
+            if (subresult >= 8) {
+                subresult = 8;
+            }
+            for (int i = 0; i < subresult; i++) {
+
+                double value = 0.0;
+                value = ednaApiUtil.getRealData("SBQFGL.NX_GD_SBQF_YC_P1_L1_002_DQ0001").getPointValueInDouble();
+                vos.get(datas.size() + i).setYcgl(StringUtils.round(value, 2));
+            }
+            total = datas.size() + subresult;
+            subresult = length - (total);
+            if (subresult > 0) {
+                for (int i = 0; i < subresult; i++) {
+                    cal.add(Calendar.MINUTE, 30);
+                    vos.get(total + i).setYcgl(null);
+                }
+            }
+
+        }
+        resultmap.put("SBQ_FDC02", vos);
+
+        // 宋六
+        Calendar cal3 = Calendar.getInstance();
+        cal3.setTime(beginDate);
+        List<AgcVo> slvos = new ArrayList<>();
+        for (int i = 0; i < length; i++) {
+            AgcVo vo = new AgcVo();
+//            vo.setValue1(0.0);
+//            vo.setValue2(0.0);
+//            vo.setValue3(0.0);
+            vo.setTime(cal3.getTime().getTime());
+            cal3.add(Calendar.MINUTE, 30);
+            slvos.add(vo);
+        }
+
+        List<PointData> slsjglls = ednaApiUtil.getHistoryDatasSnap(
+                "QSFCJSFW.NX_GD_QSF_FJ_P3_XXX_XXX_CI0134",
+                beginDate.getTime() / 1000, endDate.getTime() / 1000,
+                (long) length, 1800L);
+        // double temp2 = 0;
+        for (int i = 0; i < slvos.size(); i++) {
+            if (i < slsjglls.size()
+                    && StringUtils.notEmp(slsjglls.get(i).getPointTime())) {
+                if (slvos.get(i).getTime() <= new Date().getTime()) {
+                    temp1 = slsjglls.get(i).getPointValueInDouble();
+                    temp1 = new BigDecimal(temp1).divide(new BigDecimal(1), 4,
+                            RoundingMode.HALF_EVEN).doubleValue();
+
+                    slvos.get(i).setSjgl(StringUtils.round(temp1, 2));// 实际功率
+                } else {
+                    slvos.get(i).setSjgl(0d);// 实际功率
+                }
+            }
+
+        }
+        List<PointData> slllglly = ednaApiUtil.getHistoryDatasSnap(
+                "QSFCJSFW.NX_GD_QSF_FJ_P3_XXX_XXX_CI0192",
+                beginDate.getTime() / 1000, endDate.getTime() / 1000,
+                (long) length, 1800L);
+
+        for (int i = 0; i < slvos.size(); i++) {
+
+            if (i < slllglly.size()
+                    && StringUtils.notEmp(slllglly.get(i).getPointTime())) {
+
+                if (slvos.get(i).getTime() <= new Date().getTime()) {
+                    temp1 = slllglly.get(i).getPointValueInDouble() / 1000;
+                    slvos.get(i).setLlgl(StringUtils.round(temp1, 2));// 理论功率
+                } else {
+                    slvos.get(i).setLlgl(0d);// 理论功率
+                }
+            }
+        }
+        List<PointData> slxdglls = ednaApiUtil.getHistoryDatasSnap(
+                "SLAGC.NX_GD_QSF_DQ_P1_L1_001_AI0052",
+                beginDate.getTime() / 1000, endDate.getTime() / 1000,
+                (long) length, 1800L);
+        for (int i = 0; i < slvos.size(); i++) {
+
+            if (i < slxdglls.size()
+                    && StringUtils.notEmp(slxdglls.get(i).getPointTime())) {
+
+                if (slvos.get(i).getTime() <= new Date().getTime()) {
+                    temp1 = slxdglls.get(i).getPointValueInDouble();
+                    slvos.get(i).setXdzl(StringUtils.round(temp1, 2));// 限电功率
+                } else {
+                    slvos.get(i).setXdzl(0d);// 限电功率
+                }
+            }
+        }
+        List<PointData> datas1 = ednaApiUtil.getHistoryDatasSnap(
+                "SLFGL.NX_GD_QSF_YC_P1_L1_001_DQ0001",
+                beginDate.getTime() / 1000, endDate.getTime() / 1000, num,
+                1800L);
+        for (int j = 0; j < datas1.size(); j++) {
+            slvos.get(j)
+                    .setYcgl(
+                            StringUtils.round(datas1.get(j)
+                                    .getPointValueInDouble(), 2));
+        }
+        int subresult1 = 0;
+        int total1 = 0;
+        if (length > datas1.size()) {
+            subresult1 = length - datas1.size();
+            if (subresult1 >= 8) {
+                subresult1 = 8;
+            }
+            for (int i = 0; i < subresult1; i++) {
+
+                double value = 0.0;
+                value = ednaApiUtil.getRealData(
+                        "SLFGL.NX_GD_QSF_YC_P1_L1_001_DQ0001")
+                        .getPointValueInDouble();
+                slvos.get(datas1.size() + i).setYcgl(
+                        StringUtils.round(value, 2));
+            }
+            total1 = datas1.size() + subresult1;
+            subresult1 = length - (total1);
+            if (subresult1 > 0) {
+                for (int i = 0; i < subresult1; i++) {
+                    cal.add(Calendar.MINUTE, 30);
+                    slvos.get(total1 + i).setYcgl(null);
+                }
+            }
+        }
+        resultmap.put("QS_FDC02", slvos);
+        return resultmap;
+    }
+
+
+
+
+
+
+
+}

+ 20 - 0
src/main/java/com/gyee/frame/util/DateUtils.java

@@ -298,4 +298,24 @@ public class DateUtils  extends org.apache.commons.lang3.time.DateUtils {
         return (int) Math.floor(Math.abs((d1.getTime() - d2.getTime())) / (60 * 60 * 1000));
     }
 
+    /**
+     * 获取当前整点数
+     *
+     * @return
+     */
+    public static Date getCurrHourTime(Date date) {
+        Calendar ca = Calendar.getInstance();
+        int minute = ca.get(Calendar.MINUTE);
+        if (minute < 30) {
+            ca.set(Calendar.MINUTE, 30);
+        } else {
+            ca.add(Calendar.HOUR, 1);
+            ca.set(Calendar.MINUTE, 0);
+        }
+
+        ca.set(Calendar.SECOND, 5);
+        date = ca.getTime();
+
+        return date;
+    }
 }