malijun 5 maanden geleden
bovenliggende
commit
6a7354c661

+ 283 - 257
ruoyi-admin/src/test/java/com/ruoyi/JavaFunctionJobHandler.java

@@ -1169,327 +1169,354 @@ public class JavaFunctionJobHandler extends IJobHandler {
 
     public void cutInWindSpeed() {
         //date当天零点
-        DateTime timeNow = DateUtil.beginOfDay(new Date());
+        DateTime timeNow00 = DateUtil.beginOfDay(new Date());
         //date昨天零点
-        DateTime timeBegin = DateUtil.offsetDay(timeNow, -1);
-        List<PointInfo> turbineZt = calcTurbineAizt(timeBegin, timeNow, 60);
-        List<PointInfo> turbineZtDI = calcTurbineDizt(timeBegin, timeNow, 60);
-        turbineZt.addAll(turbineZtDI);
-
-        //所有风机的风速测点
-        QueryWrapper<PointInfo> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("uniform_code", "AI066");
-
-        List<PointInfo> pointInfos = getEntity("AI066", "turbine");
+        DateTime timeBegin00 = DateUtil.offsetDay(timeNow00, -1);
+        //上个月
+        DateTime timeBegin2 = DateUtil.offsetMonth(timeBegin00, -1);
+        //上个月第一天
+        DateTime timeBegin1 = DateUtil.beginOfMonth(timeBegin2);
+        //上个月最后一天
+        DateTime timeEnd2 = DateUtil.endOfMonth(timeBegin2);
+        //上个月天数
+        int days = (int) DateUtil.betweenDay(timeBegin1, timeEnd2, false);
+        //遍历天数
+        for (int i = 1; i <= days; i++) {
+            DateTime timeNow = DateUtil.offsetDay(timeBegin1, i);
+            DateTime timeBegin = DateUtil.offsetDay(timeBegin1, i - 1);
+
+
+            List<PointInfo> turbineZt = calcTurbineAizt(timeBegin, timeNow, 60);
+            List<PointInfo> turbineZtDI = calcTurbineDizt(timeBegin, timeNow, 60);
+            turbineZt.addAll(turbineZtDI);
+
+            //所有风机的风速测点
+            QueryWrapper<PointInfo> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("uniform_code", "AI066");
+
+            List<PointInfo> pointInfos = getEntity("AI066", "turbine");
 //        List<PointInfo> pointInfos = pointInfo.selectList(queryWrapper);
 
-        //定义切入风速map集合
-        ConcurrentHashMap<String, ConcurrentHashMap<String, Double>> mapIn = new ConcurrentHashMap<>();
+            //定义切入风速map集合
+            ConcurrentHashMap<String, ConcurrentHashMap<String, Double>> mapIn = new ConcurrentHashMap<>();
 
-        //定义切出风速集合
-        ConcurrentHashMap<String, ConcurrentHashMap<String, Double>> mapOut = new ConcurrentHashMap<>();
+            //定义切出风速集合
+            ConcurrentHashMap<String, ConcurrentHashMap<String, Double>> mapOut = new ConcurrentHashMap<>();
 
 
-        //插入集合
-        List<TurbineInfoDay> interest = new ArrayList<>();
-        //更新集合
-        List<TurbineInfoDay> update = new ArrayList<>();
-        //遍历每台风机,取出每台风机的pointDatas
-        for (PointInfo turbine : turbineZt) {
+            //插入集合
+            List<TurbineInfoDay> interest = new ArrayList<>();
+            //更新集合
+            List<TurbineInfoDay> update = new ArrayList<>();
+            //遍历每台风机,取出每台风机的pointDatas
+            for (PointInfo turbine : turbineZt) {
 
-            mapIn.put(turbine.getTurbineId(), new ConcurrentHashMap<>());
-            mapOut.put(turbine.getTurbineId(), new ConcurrentHashMap<>());
+                mapIn.put(turbine.getTurbineId(), new ConcurrentHashMap<>());
+                mapOut.put(turbine.getTurbineId(), new ConcurrentHashMap<>());
 
-            List<PointData> pointDatas = turbine.getPointDatas();
+                List<PointData> pointDatas = turbine.getPointDatas();
 
-            //风速测点key
-            String windSpeedKey = null;
+                //风速测点key
+                String windSpeedKey = null;
 
 
-            //遍历pointInfos,找出pointData1的id和pointInfos中相等的,取出pointInfo的pointKey
-            for (PointInfo info : pointInfos) {
-                if (Objects.equals(turbine.getTurbineId(), info.getTurbineId())) {
-                    windSpeedKey = info.getPointKey();
+                //遍历pointInfos,找出pointData1的id和pointInfos中相等的,取出pointInfo的pointKey
+                for (PointInfo info : pointInfos) {
+                    if (Objects.equals(turbine.getTurbineId(), info.getTurbineId())) {
+                        windSpeedKey = info.getPointKey();
+                    }
                 }
-            }
 
 
-            //遍历pointDatas,取出当前状态和后一个状态
-            for (int k = 1; k < pointDatas.size(); k++) {
-                PointData pointData1 = pointDatas.get(k - 1);
-                PointData pointData2 = pointDatas.get(k);
-                double value1 = pointData1.getValue();
-                double value2 = pointData2.getValue();
-                //切入时间
-                long ts1;
-                //切出时间
-                long ts2;
-
-                //如果1的值为0,2的值为2,则为切入状态
-                if (value1 == 0 && value2 == 2) {
-                    ts1 = pointData2.getTs();
+                //遍历pointDatas,取出当前状态和后一个状态
+                for (int k = 1; k < pointDatas.size(); k++) {
+                    PointData pointData1 = pointDatas.get(k - 1);
+                    PointData pointData2 = pointDatas.get(k);
+                    double value1 = pointData1.getValue();
+                    double value2 = pointData2.getValue();
+                    //切入时间
+                    long ts1;
+                    //切出时间
+                    long ts2;
+
+                    //如果1的值为0,2的值为2,则为切入状态
+                    if (value1 == 0 && value2 == 2) {
+                        ts1 = pointData2.getTs();
 //                    String stringDate = DateUtil.date(ts1).toString("yyyy-MM-dd HH:mm:ss");
 //                    System.out.println(turbine.getTurbineId() + "切入" + stringDate);
-                    //切入时间前5分钟
-                    long ts11 = ts1 - 300000;
-                    //根据风速key,从适配器取切入前5分钟的所有风速
-                    List<PointData> pointDatas1 = adapter.getHistorySnap(goldenUri(), windSpeedKey, ts11, ts1, 10);
-                    //平均所有风速即为平均切入风速
-                    double avgCutInWindSpeed = pointDatas1.stream().mapToDouble(PointData::getValue).average().orElse(0);
+                        //切入时间前5分钟
+                        long ts11 = ts1 - 300000;
+                        //根据风速key,从适配器取切入前5分钟的所有风速
+                        List<PointData> pointDatas1 = adapter.getHistorySnap(goldenUri(), windSpeedKey, ts11, ts1, 10);
+                        //平均所有风速即为平均切入风速
+                        double avgCutInWindSpeed = pointDatas1.stream().mapToDouble(PointData::getValue).average().orElse(0);
 //                    System.out.println(turbine.getTurbineId() + "切入风速" + avgCutInWindSpeed);
 
-                    //存入map集合,外层key为turbineId,内层key为ts1,value为平均切入风速
+                        //存入map集合,外层key为turbineId,内层key为ts1,value为平均切入风速
 
-                    mapIn.get(turbine.getTurbineId()).put(String.valueOf(ts1), avgCutInWindSpeed);
+                        mapIn.get(turbine.getTurbineId()).put(String.valueOf(ts1), avgCutInWindSpeed);
 
-                }
+                    }
 
-                //切出
-                if (value1 == 2 && value2 != 2) {
-                    ts2 = pointData2.getTs();
-                    String stringDate = DateUtil.date(ts2).toString("yyyy-MM-dd HH:mm:ss");
+                    //切出
+                    if (value1 == 2 && value2 != 2) {
+                        ts2 = pointData2.getTs();
+                        String stringDate = DateUtil.date(ts2).toString("yyyy-MM-dd HH:mm:ss");
 //                    System.out.println(turbine.getTurbineId() + "切出" + stringDate);
-                    //切出时间前5分钟
-                    long ts22 = ts2 - 300000;
-                    List<PointData> pointDatas2 = adapter.getHistorySnap(goldenUri(), windSpeedKey, ts22, ts2, 10);
-                    double avgCutOutWindSpeed = pointDatas2.stream().mapToDouble(PointData::getValue).average().orElse(0);
+                        //切出时间前5分钟
+                        long ts22 = ts2 - 300000;
+                        List<PointData> pointDatas2 = adapter.getHistorySnap(goldenUri(), windSpeedKey, ts22, ts2, 10);
+                        double avgCutOutWindSpeed = pointDatas2.stream().mapToDouble(PointData::getValue).average().orElse(0);
 //                    System.out.println(turbine.getTurbineId() + "切出风速" + avgCutOutWindSpeed);
 
-                    //存入map集合,外层key为turbineId,内层key为ts2,value为平均切出风速
-
-                    mapOut.get(turbine.getTurbineId()).put(String.valueOf(ts2), avgCutOutWindSpeed);
-                }
+                        //存入map集合,外层key为turbineId,内层key为ts2,value为平均切出风速
 
-            }
-            //遍历map集合,取出每个风机的所有切入风速,算一个平均值
-            ConcurrentHashMap<String, Double> mapTurbineValues = mapIn.get(turbine.getTurbineId());
-            //平均切入风速
-            double avgCutInWindSpeed = 0;
-            if (mapTurbineValues != null) {
-                AtomicReference<Double> sum = new AtomicReference<>(0.0);
-                //遍历mapTurbineValues,V大于5的舍弃,剩余算平均值
-                for (String key : mapTurbineValues.keySet()) {
-                    if (mapTurbineValues.get(key) > 5) {
-                        mapTurbineValues.remove(key);
+                        mapOut.get(turbine.getTurbineId()).put(String.valueOf(ts2), avgCutOutWindSpeed);
                     }
-                }
-                mapTurbineValues.forEach((k1, v) -> {
-                    sum.updateAndGet(v1 -> v1 + v);
-                });
 
-                //如果值为空则置0
-                if (sum.get() == 0) {
-                    avgCutInWindSpeed = 0;
-                } else {
-                    avgCutInWindSpeed = sum.get() / mapTurbineValues.size();
                 }
-                System.out.println(turbine.getTurbineId() + "切入平均风速" + avgCutInWindSpeed + "时间" + timeBegin);
-            }
+                //遍历map集合,取出每个风机的所有切入风速,算一个平均值
+                ConcurrentHashMap<String, Double> mapTurbineValues = mapIn.get(turbine.getTurbineId());
+                //平均切入风速
+                double avgCutInWindSpeed = 0;
+                if (mapTurbineValues != null) {
+                    AtomicReference<Double> sum = new AtomicReference<>(0.0);
+                    //遍历mapTurbineValues,V大于5的舍弃,剩余算平均值
+                    for (String key : mapTurbineValues.keySet()) {
+                        if (mapTurbineValues.get(key) > 5) {
+                            mapTurbineValues.remove(key);
+                        }
+                    }
+                    mapTurbineValues.forEach((k1, v) -> {
+                        sum.updateAndGet(v1 -> v1 + v);
+                    });
+
+                    //如果值为空则置0
+                    if (sum.get() == 0) {
+                        avgCutInWindSpeed = 0;
+                    } else {
+                        avgCutInWindSpeed = sum.get() / mapTurbineValues.size();
+                    }
+                    System.out.println(turbine.getTurbineId() + "切入平均风速" + avgCutInWindSpeed + "时间" + timeBegin);
+                }
 
-            //遍历map集合,取出每个风机的所有切出风速,算一个平均值
-            ConcurrentHashMap<String, Double> mapTurbineValues2 = mapOut.get(turbine.getTurbineId());
+                //遍历map集合,取出每个风机的所有切出风速,算一个平均值
+                ConcurrentHashMap<String, Double> mapTurbineValues2 = mapOut.get(turbine.getTurbineId());
 
-            double avgCutOutWindSpeed;
-            if (mapTurbineValues2 != null) {
-                AtomicReference<Double> sum = new AtomicReference<>(0.0);
+                double avgCutOutWindSpeed;
+                if (mapTurbineValues2 != null) {
+                    AtomicReference<Double> sum = new AtomicReference<>(0.0);
 
-                for (String key : mapTurbineValues2.keySet()) {
-                    if (mapTurbineValues2.get(key) > 5) {
-                        mapTurbineValues2.remove(key);
+                    for (String key : mapTurbineValues2.keySet()) {
+                        if (mapTurbineValues2.get(key) > 5) {
+                            mapTurbineValues2.remove(key);
+                        }
                     }
+                    mapTurbineValues2.forEach((k2, v) -> {
+                        sum.updateAndGet(v1 -> v1 + v);
+                    });
+
+                    if (sum.get() == 0) {
+                        avgCutOutWindSpeed = 0;
+                    } else {
+                        avgCutOutWindSpeed = sum.get() / mapTurbineValues2.size();
+                    }
+                    System.out.println(turbine.getTurbineId() + "切出平均风速" + avgCutOutWindSpeed + "时间" + timeBegin);
                 }
-                mapTurbineValues2.forEach((k2, v) -> {
-                    sum.updateAndGet(v1 -> v1 + v);
-                });
-
-                if (sum.get() == 0) {
-                    avgCutOutWindSpeed = 0;
-                } else {
-                    avgCutOutWindSpeed = sum.get() / mapTurbineValues2.size();
-                }
-                System.out.println(turbine.getTurbineId() + "切出平均风速" + avgCutOutWindSpeed + "时间" + timeBegin);
-            }
 
-            //存入数据库
-            String turbineId = turbine.getTurbineId();
-            Date jdkDate = timeBegin.toJdkDate();
-            System.out.println(turbineId + " " + jdkDate);
-            QueryWrapper<TurbineInfoDay> turbineInfoDayQueryWrapper = new QueryWrapper<>();
-            turbineInfoDayQueryWrapper.eq("turbine_id", turbine.getTurbineId());
-            turbineInfoDayQueryWrapper.eq("record_date", timeBegin.toJdkDate());
-            TurbineInfoDay one = turbineInfoDayService.getOne(turbineInfoDayQueryWrapper);
-            System.out.println(one);
-            if (one == null) {
-                TurbineInfoDay turbineInfoDay = new TurbineInfoDay();
-                turbineInfoDay.setTurbineId(turbine.getTurbineId());
-                turbineInfoDay.setRecordDate(timeBegin.toJdkDate());
-                turbineInfoDay.setXfqrfs(avgCutInWindSpeed);
-                System.out.println(turbineInfoDay);
+                //存入数据库
+                String turbineId = turbine.getTurbineId();
+                Date jdkDate = timeBegin.toJdkDate();
+                System.out.println(turbineId + " " + jdkDate);
+                QueryWrapper<TurbineInfoDay> turbineInfoDayQueryWrapper = new QueryWrapper<>();
+                turbineInfoDayQueryWrapper.eq("turbine_id", turbine.getTurbineId());
+                turbineInfoDayQueryWrapper.eq("record_date", timeBegin.toJdkDate());
+                TurbineInfoDay one = turbineInfoDayService.getOne(turbineInfoDayQueryWrapper);
+                System.out.println(one);
+                if (one == null) {
+                    TurbineInfoDay turbineInfoDay = new TurbineInfoDay();
+                    turbineInfoDay.setTurbineId(turbine.getTurbineId());
+                    turbineInfoDay.setRecordDate(timeBegin.toJdkDate());
+                    turbineInfoDay.setXfqrfs(avgCutInWindSpeed);
+                    System.out.println(turbineInfoDay);
 
-                interest.add(turbineInfoDay);
+                    interest.add(turbineInfoDay);
 //                turbineInfoDayService.save(turbineInfoDay);
-            } else {
-                one.setXfqrfs(avgCutInWindSpeed);
-                System.out.println(one);
+                } else {
+                    one.setXfqrfs(avgCutInWindSpeed);
+                    System.out.println(one);
 //                turbineInfoDayService.updateById(one);
-                update.add(one);
-            }
+                    update.add(one);
+                }
 
-        }
+            }
 
-        //        //批量插入
+            //        //批量插入
 //        turbineInfoDayService.saveBatch(interest);
 //        //批量更新
 //        turbineInfoDayService.updateBatchById(update);
 //        //批量插入或更新
-        turbineInfoDayService.saveOrUpdateBatch(interest);
-        turbineInfoDayService.saveOrUpdateBatch(update);
+            turbineInfoDayService.saveOrUpdateBatch(interest);
+            turbineInfoDayService.saveOrUpdateBatch(update);
+        }
     }
 
     //算额定风速
     public void calcGlqxnh_edfs() {
-
         //date当天零点
-        Date end = DateUtil.beginOfDay(new Date()).toJdkDate();
+        DateTime timeNow00 = DateUtil.beginOfDay(new Date());
         //date昨天零点
-        Date start = DateUtil.offsetDay(end, -1).toJdkDate();
-
-        //风速
-        List<PointInfo> entityFs = getEntity("AI066", "turbine");
-        //功率
-        List<PointInfo> entityGl = getEntity("AI114", "turbine");
-        Map<String, PointInfo> glMap = entityGl.stream().collect(Collectors.toMap(PointInfo::getTurbineId, Function.identity()));
-
-        Map<String, EquipmentModel> map = equipmentModelService.map();
-
-        List<PointInfo> entity = new ArrayList<>();
-        List<PointInfo> entity0 = getEntity("MX000", "state");
-        List<PointInfo> entity1 = getEntity("MX001", "state");
-        List<PointInfo> entity2 = getEntity("MX002", "state");
-        List<PointInfo> entity4 = getEntity("MX004", "state");
-        List<PointInfo> entity6 = getEntity("MX006", "state");
-        entity.addAll(entity0);
-        entity.addAll(entity1);
-        entity.addAll(entity2);
-        entity.addAll(entity4);
-        entity.addAll(entity6);
-        List<String> keys = entity.stream().map(PointInfo::getPointKey).collect(Collectors.toList());
-        Map<String, PointData> latest = adapter.getHistorySection(goldenUri(), String.join(",", keys), start.getTime());
-        Map<String, Map<String, PointInfo>> wtUcPis = entity.stream().collect(Collectors.groupingBy(PointInfo::getTurbineId, Collectors.toMap(PointInfo::getUniformCode, Function.identity())));
-
-        List<PointInfo> entityAiZt = getEntity("AI422", "state");
-        Map<String, PointInfo> aiztMap = entityAiZt.stream().collect(Collectors.toMap(PointInfo::getTurbineId, Function.identity()));
-        List<StateAi> list = stateAiService.list();
-        Map<String, Map<Integer, Integer>> collectAi = list.stream().collect(Collectors.groupingBy(
-                StateAi::getModel, Collectors.toMap(StateAi::getOriginalState, StateAi::getMappingState)));
+        DateTime timeBegin00 = DateUtil.offsetDay(timeNow00, -1);
+        //上个月
+        DateTime timeBegin2 = DateUtil.offsetMonth(timeBegin00, -1);
+        //上个月第一天
+        DateTime timeBegin1 = DateUtil.beginOfMonth(timeBegin2);
+        //上个月最后一天
+        DateTime timeEnd2 = DateUtil.endOfMonth(timeBegin2);
+        //上个月天数
+        int days = (int) DateUtil.betweenDay(timeBegin1, timeEnd2, false);
+        //遍历天数
+        for (int i = 1; i <= days; i++) {
+            DateTime timeNow = DateUtil.offsetDay(timeBegin1, i);
+            DateTime timeBegin = DateUtil.offsetDay(timeBegin1, i - 1);
+
+            //风速
+            List<PointInfo> entityFs = getEntity("AI066", "turbine");
+            //功率
+            List<PointInfo> entityGl = getEntity("AI114", "turbine");
+            Map<String, PointInfo> glMap = entityGl.stream().collect(Collectors.toMap(PointInfo::getTurbineId, Function.identity()));
+
+            Map<String, EquipmentModel> map = equipmentModelService.map();
+
+            List<PointInfo> entity = new ArrayList<>();
+            List<PointInfo> entity0 = getEntity("MX000", "state");
+            List<PointInfo> entity1 = getEntity("MX001", "state");
+            List<PointInfo> entity2 = getEntity("MX002", "state");
+            List<PointInfo> entity4 = getEntity("MX004", "state");
+            List<PointInfo> entity6 = getEntity("MX006", "state");
+            entity.addAll(entity0);
+            entity.addAll(entity1);
+            entity.addAll(entity2);
+            entity.addAll(entity4);
+            entity.addAll(entity6);
+            List<String> keys = entity.stream().map(PointInfo::getPointKey).collect(Collectors.toList());
+            Map<String, PointData> latest = adapter.getHistorySection(goldenUri(), String.join(",", keys), start.getTime());
+            Map<String, Map<String, PointInfo>> wtUcPis = entity.stream().collect(Collectors.groupingBy(PointInfo::getTurbineId, Collectors.toMap(PointInfo::getUniformCode, Function.identity())));
+
+            List<PointInfo> entityAiZt = getEntity("AI422", "state");
+            Map<String, PointInfo> aiztMap = entityAiZt.stream().collect(Collectors.toMap(PointInfo::getTurbineId, Function.identity()));
+            List<StateAi> list = stateAiService.list();
+            Map<String, Map<Integer, Integer>> collectAi = list.stream().collect(Collectors.groupingBy(
+                    StateAi::getModel, Collectors.toMap(StateAi::getOriginalState, StateAi::getMappingState)));
 
 //        Map<String, Map<Double,Double>> fitMap = new HashMap<>();
-        int i = 0;
-
-        //插入集合
-        List<TurbineInfoDay> interest = new ArrayList<>();
-        //更新集合
-        List<TurbineInfoDay> update = new ArrayList<>();
-
-
-        for (PointInfo ef : entityFs) {
-            String wtId = ef.getTurbineId();
-            PointInfo glInfo = glMap.get(wtId);
-            getSnapDataByEntity(ef, start, end, 60);
-            getSnapDataByEntity(glInfo, start, end, 60);
-            List<PointData> peek = ef.getPointDatas().stream().peek(pd -> pd.setDoubleValue(
-                    NumberUtil.round(pd.getValue(), 2).doubleValue())).collect(Collectors.toList());
-            ef.setPointDatas(peek);
-
-            try {
-                PointInfo turbineZt = calcTurbineDizt2(wtUcPis.get(wtId), latest, start, end, 60);
-                PointInfo turbineAizt = calcTurbineAizt2(aiztMap.get(wtId), collectAi, start, end, 60);
-
-
-                Map<Double, Double> fit = new TreeMap<>();
-                double capacity = 2000;
-                if (turbineZt != null) {
-                    System.out.println("数据处理拟合");
-                    capacity = map.get(turbineZt.getSpare()).getPowerProduction();
-                    fit = dataProcessAndFit(ef, glInfo, turbineZt, CalcCache.bzgl.get(turbineZt.getSpare()), capacity);
+            int i = 0;
+
+            //插入集合
+            List<TurbineInfoDay> interest = new ArrayList<>();
+            //更新集合
+            List<TurbineInfoDay> update = new ArrayList<>();
+
+
+            for (PointInfo ef : entityFs) {
+                String wtId = ef.getTurbineId();
+                PointInfo glInfo = glMap.get(wtId);
+                getSnapDataByEntity(ef, start, end, 60);
+                getSnapDataByEntity(glInfo, start, end, 60);
+                List<PointData> peek = ef.getPointDatas().stream().peek(pd -> pd.setDoubleValue(
+                        NumberUtil.round(pd.getValue(), 2).doubleValue())).collect(Collectors.toList());
+                ef.setPointDatas(peek);
+
+                try {
+                    PointInfo turbineZt = calcTurbineDizt2(wtUcPis.get(wtId), latest, start, end, 60);
+                    PointInfo turbineAizt = calcTurbineAizt2(aiztMap.get(wtId), collectAi, start, end, 60);
+
+
+                    Map<Double, Double> fit = new TreeMap<>();
+                    double capacity = 2000;
+                    if (turbineZt != null) {
+                        System.out.println("数据处理拟合");
+                        capacity = map.get(turbineZt.getSpare()).getPowerProduction();
+                        fit = dataProcessAndFit(ef, glInfo, turbineZt, CalcCache.bzgl.get(turbineZt.getSpare()), capacity);
 //                fitMap.put(wtId, fit);
-                    turbineZt.setPointDatas(null);
-                }
-                if (turbineAizt != null) {
-                    System.out.println("数据处理拟合");
-                    capacity = map.get(turbineAizt.getSpare()).getPowerProduction();
-                    fit = dataProcessAndFit(ef, glInfo, turbineAizt, CalcCache.bzgl.get(turbineAizt.getSpare()), capacity);
+                        turbineZt.setPointDatas(null);
+                    }
+                    if (turbineAizt != null) {
+                        System.out.println("数据处理拟合");
+                        capacity = map.get(turbineAizt.getSpare()).getPowerProduction();
+                        fit = dataProcessAndFit(ef, glInfo, turbineAizt, CalcCache.bzgl.get(turbineAizt.getSpare()), capacity);
 //                fitMap.put(wtId, fit);
-                    turbineAizt.setPointDatas(null);
-                }
-                ef.setPointDatas(null);
-                glInfo.setPointDatas(null);
+                        turbineAizt.setPointDatas(null);
+                    }
+                    ef.setPointDatas(null);
+                    glInfo.setPointDatas(null);
 
-                //存redis
+                    //存redis
 //            stringRedisTemplate.opsForValue().set("glqxnh:" + end.getMonth() + ":" + wtId, JSON.toJSONString(fit));
 
-                System.out.println("拟合曲线的大小" + fit.size() + ":" + wtId);
-
-                //符合条件的风速和
-                List<Double> listDouble = new ArrayList<>();
-                //遍历fit集合,取出值与capacity相等的key
-                if (!fit.isEmpty()) {
-                    for (double key : fit.keySet()) {
-                        Double v = fit.get(key);
-                        //如果v-capacity的值小于10大于-10,则把key加入listDouble
-                        if ((Math.abs(v - capacity) <= 10) && Math.abs(v - capacity) >= -10) {
-                            listDouble.add(key);
+                    System.out.println("拟合曲线的大小" + fit.size() + ":" + wtId);
+
+                    //符合条件的风速和
+                    List<Double> listDouble = new ArrayList<>();
+                    //遍历fit集合,取出值与capacity相等的key
+                    if (!fit.isEmpty()) {
+                        for (double key : fit.keySet()) {
+                            Double v = fit.get(key);
+                            //如果v-capacity的值小于10大于-10,则把key加入listDouble
+                            if ((Math.abs(v - capacity) <= 10) && Math.abs(v - capacity) >= -10) {
+                                listDouble.add(key);
+                            }
                         }
                     }
-                }
-                //取出listDouble的值求平均值
-                double agValue = 0;
-                if (!listDouble.isEmpty()) {
-                    for (Double aDouble : listDouble) {
-                        agValue += aDouble;
+                    //取出listDouble的值求平均值
+                    double agValue = 0;
+                    if (!listDouble.isEmpty()) {
+                        for (Double aDouble : listDouble) {
+                            agValue += aDouble;
+                        }
+                        agValue = agValue / listDouble.size();
                     }
-                    agValue = agValue / listDouble.size();
-                }
-                System.out.println("wtId:" + wtId + "agValue平均额定风速:" + agValue);
+                    System.out.println("wtId:" + wtId + "agValue平均额定风速:" + agValue);
 
 
-                //存入数据库
-                System.out.println(wtId + " " + start);
-                QueryWrapper<TurbineInfoDay> turbineInfoDayQueryWrapper = new QueryWrapper<>();
-                turbineInfoDayQueryWrapper.eq("turbine_id", wtId);
-                turbineInfoDayQueryWrapper.eq("record_date", start);
-                TurbineInfoDay one = turbineInfoDayService.getOne(turbineInfoDayQueryWrapper);
-                System.out.println(one);
-                if (one == null) {
-                    TurbineInfoDay turbineInfoDay = new TurbineInfoDay();
-                    turbineInfoDay.setTurbineId(wtId);
-                    turbineInfoDay.setRecordDate(start);
-                    turbineInfoDay.setEdfs(agValue);
-                    System.out.println(turbineInfoDay);
-//                    turbineInfoDayService.save(turbineInfoDay);
-                    interest.add(turbineInfoDay);
-                } else {
-                    one.setEdfs(agValue);
+                    //存入数据库
+                    System.out.println(wtId + " " + start);
+                    QueryWrapper<TurbineInfoDay> turbineInfoDayQueryWrapper = new QueryWrapper<>();
+                    turbineInfoDayQueryWrapper.eq("turbine_id", wtId);
+                    turbineInfoDayQueryWrapper.eq("record_date", start);
+                    TurbineInfoDay one = turbineInfoDayService.getOne(turbineInfoDayQueryWrapper);
                     System.out.println(one);
+                    if (one == null) {
+                        TurbineInfoDay turbineInfoDay = new TurbineInfoDay();
+                        turbineInfoDay.setTurbineId(wtId);
+                        turbineInfoDay.setRecordDate(start);
+                        turbineInfoDay.setEdfs(agValue);
+                        System.out.println(turbineInfoDay);
+//                    turbineInfoDayService.save(turbineInfoDay);
+                        interest.add(turbineInfoDay);
+                    } else {
+                        one.setEdfs(agValue);
+                        System.out.println(one);
 //                    turbineInfoDayService.updateById(one);
-                    update.add(one);
-                }
+                        update.add(one);
+                    }
 
-            } catch (Exception e) {
-                System.out.println(wtId + " " + start);
-            }
+                } catch (Exception e) {
+                    System.out.println(wtId + " " + start);
+                }
 
 
-        }
+            }
 
 
-        //        //批量插入
+            //        //批量插入
 //        turbineInfoDayService.saveBatch(interest);
 //        //批量更新
 //        turbineInfoDayService.updateBatchById(update);
 //        //批量插入或更新
-        turbineInfoDayService.saveOrUpdateBatch(interest);
-        turbineInfoDayService.saveOrUpdateBatch(update);
+            turbineInfoDayService.saveOrUpdateBatch(interest);
+            turbineInfoDayService.saveOrUpdateBatch(update);
+        }
 
 
 //        stringRedisTemplate.opsForValue().set("glqxnh", JSON.toJSONString(fitMap));
@@ -1596,7 +1623,7 @@ public class JavaFunctionJobHandler extends IJobHandler {
                 .in("foreign_key_id", days.stream().map(StationInfoDay::getStationId).collect(Collectors.toList()));
         List<ProEconReportIndicatorPool> pools = reportIndicatorPoolService.list(wrapperrp);
 
-        if (!pools.isEmpty()){
+        if (!pools.isEmpty()) {
             StationInfoDay day, month, year;
             List<ProEconReportIndicatorPool> poolList = new ArrayList<>();
             for (ProEconReportIndicatorPool pool : pools) {
@@ -1622,7 +1649,7 @@ public class JavaFunctionJobHandler extends IJobHandler {
                 poolList.add(pool);
             }
             reportIndicatorPoolService.saveOrUpdateBatch(poolList);
-        }else {
+        } else {
 
             List<ProEconReportIndicatorPool> poolList = new ArrayList<>();
             for (StationInfoDay day : days) {
@@ -1686,19 +1713,19 @@ public class JavaFunctionJobHandler extends IJobHandler {
                 pool.setRswdldb(day.getSwdl());
                 pool.setRgwgwdldb(day.getGwdl());
                 pool.setRfdcydldb(day.getCydl());
-                pool.setRzhcydldb(day.getRfdl().doubleValue()+day.getGwdl()-day.getSwdl());
+                pool.setRzhcydldb(day.getRfdl().doubleValue() + day.getGwdl() - day.getSwdl());
                 month = monthMap.get(projectId);
                 pool.setYfdldb(month.getRfdl().doubleValue());
                 pool.setYswdldb(month.getSwdl());
                 pool.setYgwgwdldb(month.getGwdl());
                 pool.setYfdcydldb(month.getCydl());
-                pool.setRzhcydldb(month.getRfdl().doubleValue()+month.getGwdl()-month.getSwdl());
+                pool.setRzhcydldb(month.getRfdl().doubleValue() + month.getGwdl() - month.getSwdl());
                 year = yearMap.get(projectId);
                 pool.setNfdldb(year.getRfdl().doubleValue());
                 pool.setNswdldb(year.getSwdl());
                 pool.setNgwgwdldb(year.getGwdl());
                 pool.setNfdcydldb(year.getCydl());
-                pool.setRzhcydldb(year.getRfdl().doubleValue()+year.getGwdl()-year.getSwdl());
+                pool.setRzhcydldb(year.getRfdl().doubleValue() + year.getGwdl() - year.getSwdl());
                 poolList.add(pool);
             }
             reportIndicatorPoolService.saveOrUpdateBatch(poolList);
@@ -1759,7 +1786,6 @@ public class JavaFunctionJobHandler extends IJobHandler {
         reportIndicatorPoolService.save(GSPJFS);
 
 
-
         wrapperrp = new QueryWrapper<>();
         wrapperrp.eq("record_date", time0).eq("foreign_key_id", "GJNY_SXGS_DBXNY_ZGS0");
         List<ProEconReportIndicatorPool> pools2 = reportIndicatorPoolService.list(wrapperrp);
@@ -1767,7 +1793,7 @@ public class JavaFunctionJobHandler extends IJobHandler {
         TurbineInfoDay day, month, year;
         String projectId;
 
-        if (!pools.isEmpty()){
+        if (!pools.isEmpty()) {
             for (ProEconReportIndicatorPool pool : pools) {
                 projectId = pool.getForeignKeyId();
                 day = dayMap.get(projectId);
@@ -1787,7 +1813,7 @@ public class JavaFunctionJobHandler extends IJobHandler {
                 reportIndicatorPoolService.saveOrUpdateBatch(pools2);
             }
             reportIndicatorPoolService.saveOrUpdateBatch(pools);
-        }else {
+        } else {
             List<ProEconReportIndicatorPool> poolList = new ArrayList<>();
             for (TurbineInfoDay day2 : days) {
                 ProEconReportIndicatorPool pool = new ProEconReportIndicatorPool();

+ 64 - 57
ruoyi-admin/src/test/java/com/ruoyi/Test.java

@@ -46,66 +46,78 @@ public class Test {
     @org.junit.Test
     public void ambientTemperature() {
         //date当天零点
-        DateTime timeNow = DateUtil.beginOfDay(new Date());
+        DateTime timeNow00 = DateUtil.beginOfDay(new Date());
         //date昨天零点
-        DateTime timeBegin = DateUtil.offsetDay(timeNow, -1);
-
-
-        //所有风机的温度
-        QueryWrapper<PointInfo> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("uniform_code", "AI072");
-
-        List<PointInfo> pointInfos = javaFunctionJobHandler.getEntity("AI072", "turbine");
-
-        //插入集合
-        List<TurbineInfoDay > interest = new ArrayList<>();
-        //更新集合
-        List<TurbineInfoDay > update = new ArrayList<>();
-
-
-        //遍历pointInfos
-        for (PointInfo turbine : pointInfos) {
-            List<PointData> pointDatas = adapter.getHistorySnap(javaFunctionJobHandler.goldenUri(), turbine.getPointKey(), timeBegin.getTime(), timeNow.getTime(), 10);
-            //遍历pointDatas,取出数据算平均值
-            double avgCutInWindSpeed = 0;
-            for (PointData pointData : pointDatas) {
-                avgCutInWindSpeed += pointData.getValue();
-            }
-            avgCutInWindSpeed /= pointDatas.size();
-
-            //存入数据库
-            String turbineId = turbine.getTurbineId();
-            Date jdkDate = timeBegin.toJdkDate();
-            System.out.println(turbineId + " " + jdkDate);
-            QueryWrapper<TurbineInfoDay> turbineInfoDayQueryWrapper = new QueryWrapper<>();
-            turbineInfoDayQueryWrapper.eq("turbine_id", turbine.getTurbineId());
-            turbineInfoDayQueryWrapper.eq("record_date", timeBegin.toJdkDate());
-            TurbineInfoDay one = turbineInfoDayService.getOne(turbineInfoDayQueryWrapper);
-            System.out.println(one);
-            if (one == null) {
-                TurbineInfoDay turbineInfoDay = new TurbineInfoDay();
-                turbineInfoDay.setTurbineId(turbine.getTurbineId());
-                turbineInfoDay.setRecordDate(timeBegin.toJdkDate());
-                turbineInfoDay.setHjwd(avgCutInWindSpeed);
-                System.out.println(turbineInfoDay);
-                interest.add(turbineInfoDay);
-//                turbineInfoDayService.save(turbineInfoDay);
-            } else {
-                one.setHjwd(avgCutInWindSpeed);
+        DateTime timeBegin00 = DateUtil.offsetDay(timeNow00, -1);
+        //上个月
+        DateTime timeBegin2 = DateUtil.offsetMonth(timeBegin00, -1);
+        //上个月第一天
+        DateTime timeBegin1 = DateUtil.beginOfMonth(timeBegin2);
+        //上个月最后一天
+        DateTime timeEnd2 = DateUtil.endOfMonth(timeBegin2);
+        //上个月天数
+        int days = (int) DateUtil.betweenDay(timeBegin1, timeEnd2, false);
+        //遍历天数
+        for (int i = 1; i <= days; i++) {
+            DateTime timeNow = DateUtil.offsetDay(timeBegin1, i);
+            DateTime timeBegin = DateUtil.offsetDay(timeBegin1, i - 1);
+
+
+            //所有风机的温度
+            QueryWrapper<PointInfo> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("uniform_code", "AI072");
+
+            List<PointInfo> pointInfos = javaFunctionJobHandler.getEntity("AI072", "turbine");
+
+            //插入集合
+            List<TurbineInfoDay> interest = new ArrayList<>();
+            //更新集合
+            List<TurbineInfoDay> update = new ArrayList<>();
+
+
+            //遍历pointInfos
+            for (PointInfo turbine : pointInfos) {
+                List<PointData> pointDatas = adapter.getHistorySnap(javaFunctionJobHandler.goldenUri(), turbine.getPointKey(), timeBegin.getTime(), timeNow.getTime(), 10);
+                //遍历pointDatas,取出数据算平均值
+                double avgCutInWindSpeed = 0;
+                for (PointData pointData : pointDatas) {
+                    avgCutInWindSpeed += pointData.getValue();
+                }
+                avgCutInWindSpeed /= pointDatas.size();
+
+                //存入数据库
+                String turbineId = turbine.getTurbineId();
+                Date jdkDate = timeBegin.toJdkDate();
+                System.out.println(turbineId + " " + jdkDate);
+                QueryWrapper<TurbineInfoDay> turbineInfoDayQueryWrapper = new QueryWrapper<>();
+                turbineInfoDayQueryWrapper.eq("turbine_id", turbine.getTurbineId());
+                turbineInfoDayQueryWrapper.eq("record_date", timeBegin.toJdkDate());
+                TurbineInfoDay one = turbineInfoDayService.getOne(turbineInfoDayQueryWrapper);
                 System.out.println(one);
-                update.add(one);
+                if (one == null) {
+                    TurbineInfoDay turbineInfoDay = new TurbineInfoDay();
+                    turbineInfoDay.setTurbineId(turbine.getTurbineId());
+                    turbineInfoDay.setRecordDate(timeBegin.toJdkDate());
+                    turbineInfoDay.setHjwd(avgCutInWindSpeed);
+                    System.out.println(turbineInfoDay);
+                    interest.add(turbineInfoDay);
+//                turbineInfoDayService.save(turbineInfoDay);
+                } else {
+                    one.setHjwd(avgCutInWindSpeed);
+                    System.out.println(one);
+                    update.add(one);
 //                turbineInfoDayService.updateById(one);
-            }
+                }
 
-        }
+            }
 //        //批量插入
 //        turbineInfoDayService.saveBatch(interest);
 //        //批量更新
 //        turbineInfoDayService.updateBatchById(update);
 //        //批量插入或更新
-//        turbineInfoDayService.saveOrUpdateBatch(interest);
-//        turbineInfoDayService.saveOrUpdateBatch(update);
-
+        turbineInfoDayService.saveOrUpdateBatch(interest);
+        turbineInfoDayService.saveOrUpdateBatch(update);
+        }
 
     }
 
@@ -115,15 +127,10 @@ public class Test {
         Date date = DateUtil.date().toJdkDate();
         javaFunctionJobHandler.writeReportPool(date);
         javaFunctionJobHandler.writeReportPoolProject(date);
-        javaFunctionJobHandler. writeReportPoolPjfs(date);
+        javaFunctionJobHandler.writeReportPoolPjfs(date);
 
     }
 
 
-
-
-
-
-
 }