Forráskód Böngészése

综合场用电量代码优化

wangb 5 napja
szülő
commit
9996b5bc32

+ 164 - 138
runeconomy-xk/src/main/java/com/gyee/runeconomy/service/Comprehensive/ComprehensiveelectricityService.java

@@ -401,168 +401,194 @@ public class ComprehensiveelectricityService {
 
 
             for (ProBasicPowerstation wp : wpls) {
-                //当前场站本年循环所有指标取值集合
+                //添加各指标
+                ComprehensiveVo vo = new ComprehensiveVo();
 
-                double rfdlsj = 0.0;
-                List<StationInfoDay> zbls = iStationInfoDayService.getmax(wp.getId(), firstDayZeroHour);
-                List<StationInfoDay> tbzbls = iStationInfoDayService.getmax(wp.getId(), tbjssj);
-                List<StationInfoDay> hbzbls = iStationInfoDayService.getmax(wp.getId(), hbjssj);
+                if (i > currentMonth) {
+                    vo.setHours(i);
+                    vo.setSjdl(0.0);
+                    vo.setSjdltb(0.0);
+                    vo.setSjdlhb(0.0);
+                    vo.setGwdl(0.0);
+                    vo.setGwdltb(0.0);
+                    vo.setGwdlhb(0.0);
+                    vo.setSwdl(0.0);
+                    vo.setSwdltb(0.0);
+                    vo.setSwdlhb(0.0);
+                    vo.setZhcydl(0.0);
+                    vo.setZhcydltb(0.0);
+                    vo.setZhcydlhb(0.0);
+                    vo.setZhcydll(0.0);
+                    vo.setZhcydlltb(0.0);
+                    vo.setZhcydllhb(0.0);
+                    vos.add(vo);
+                    SortUtils.sort(vos, "hours", SortUtils.ASC);
+                    map.put("value", vos);
+                } else {
+                    //当前场站本年循环所有指标取值集合
+
+                    double rfdlsj = 0.0;
+//                List<StationInfoDay> zbls = iStationInfoDayService.getmax(wp.getId(), firstDayZeroHour);
+//                List<StationInfoDay> tbzbls = iStationInfoDayService.getmax(wp.getId(), tbjssj);
+//                List<StationInfoDay> hbzbls = iStationInfoDayService.getmax(wp.getId(), hbjssj);
+
+                    List<StationInfoDay> zbls = iStationInfoDayService.getSum(wp.getId(), firstDayZeroHour);
+                    List<StationInfoDay> tbzbls = iStationInfoDayService.getSum(wp.getId(), tbjssj);
+                    List<StationInfoDay> hbzbls = iStationInfoDayService.getSum(wp.getId(), hbjssj);
+
+
+                    ProBasicPowerstationPoint rfdlvalue = proBasicPowerstationPointService.getPowerstationPoint(wp.getId(), ContantXk.RFDL);
+                    rfdlsj = edosUtil.getRealData(rfdlvalue).getPointValueInDouble();
+
+                    if (!zbls.isEmpty() && zbls != null) {
+                        //综合场用电量取值
+                        zhcydl = zbls.get(0).getZhcydl().doubleValue();
+                        zhcydlsum += zhcydl;
+                        //发电量取值
+                        if (calFirstMonth == currentMonth && currentyear == dqnf) {
+                            //                        sjdl = (zbls.get(0).getYfdldb().doubleValue() / 10000) + (rfdlsj / 10000);
+                            sjdl = (zbls.get(0).getRfdlFj().doubleValue());
+                        } else {
+                            sjdl = zbls.get(0).getRfdlFj().doubleValue();
+                        }
+                        sjdlsum += sjdl;
+
+                        //上网电量取值
+                        swdl = zbls.get(0).getSwdl().doubleValue();
+                        swdlsum += swdl;
+                        //购网电量取值
+                        gwdl = zbls.get(0).getGwdl().doubleValue();
+                        gwdlsum += gwdl;
+                        //综合场用电率计算 —— 综合场用电率=(发电量-上网电量+购网电量)/发电量
+                        if (sjdl != 0) {
+                            zhcydll = (sjdl - swdl + gwdl) / sjdl;
+                        } else {
+                            zhcydll = (sjdl - swdl + gwdl) / 1;
+                        }
+                        zhcydllsum += zhcydll;
+                    }
+                    if (!tbzbls.isEmpty() && tbzbls != null) {
+                        zhcydltb = tbzbls.get(0).getZhcydl().doubleValue();
+                        sjdltb = tbzbls.get(0).getRfdlFj().doubleValue();
+                        swdltb = tbzbls.get(0).getSwdl().doubleValue();
+                        gwdltb = tbzbls.get(0).getGwdl().doubleValue();
+                        if (sjdltb != 0) {
+                            zhcydlltb = (sjdltb - swdltb + gwdltb) / sjdltb;
+                        } else {
+                            zhcydlltb = (sjdltb - swdltb + gwdltb) / 1;
+                        }
+                    }
+                    if (!hbzbls.isEmpty() && hbzbls != null) {
+                        zhcydlhb = hbzbls.get(0).getZhcydl().doubleValue();
+                        sjdlhb = hbzbls.get(0).getRfdlFj().doubleValue();
+                        swdlhb = hbzbls.get(0).getSwdl().doubleValue();
+                        gwdlhb = hbzbls.get(0).getGwdl().doubleValue();
+                        if (sjdlhb != 0) {
+                            zhcydllhb = (sjdlhb - swdlhb + gwdlhb) / sjdlhb;
+                        } else {
+                            zhcydllhb = (sjdlhb - swdlhb + gwdlhb) / 1;
+                        }
+                    }
 
 
-                ProBasicPowerstationPoint rfdlvalue = proBasicPowerstationPointService.getPowerstationPoint(wp.getId(), ContantXk.RFDL);
-                rfdlsj = edosUtil.getRealData(rfdlvalue).getPointValueInDouble();
-
-                if (!zbls.isEmpty() && zbls != null) {
-                    //综合场用电量取值
-                    zhcydl = zbls.get(0).getZhcydl().doubleValue();
-                    zhcydlsum += zhcydl;
-                    //发电量取值
-                    if (calFirstMonth == currentMonth && currentyear == dqnf) {
-                        //                        sjdl = (zbls.get(0).getYfdldb().doubleValue() / 10000) + (rfdlsj / 10000);
-                        sjdl = (zbls.get(0).getRfdlFj().doubleValue() );
+                    //添加综合厂用电量数据
+                    vo.setZhcydl(StringUtils.round(zhcydl / 1000, 2));
+                    if (zhcydltb != 0) {
+                        //                    vo.setZhcydltb(StringUtils.round((zhcydl - zhcydltb) / zhcydltb * 100, 0));
+                        vo.setZhcydltb(StringUtils.round(zhcydltb / 1000, 2));
                     } else {
-                        sjdl = zbls.get(0).getRfdlFj().doubleValue();
+                        vo.setZhcydltb(0.0);
                     }
-                    sjdlsum += sjdl;
 
-                    //上网电量取值
-                    swdl = zbls.get(0).getSwdl().doubleValue();
-                    swdlsum += swdl;
-                    //购网电量取值
-                    gwdl = zbls.get(0).getGwdl().doubleValue();
-                    gwdlsum += gwdl;
-                    //综合场用电率计算 —— 综合场用电率=(发电量-上网电量+购网电量)/发电量
-                    if (sjdl != 0) {
-                        zhcydll = (sjdl - swdl + gwdl) / sjdl;
+                    if (zhcydlhb != 0) {
+                        //                    vo.setZhcydlhb(StringUtils.round((zhcydl - zhcydlhb) / zhcydlhb * 100, 0));
+                        vo.setZhcydlhb(StringUtils.round(zhcydlhb / 1000, 2));
                     } else {
-                        zhcydll = (sjdl - swdl + gwdl) / 1;
+                        vo.setZhcydlhb(0.0);
                     }
-                    zhcydllsum += zhcydll;
-                }
-                if (!tbzbls.isEmpty() && tbzbls != null) {
-                    zhcydltb = tbzbls.get(0).getZhcydl().doubleValue();
-                    sjdltb = tbzbls.get(0).getRfdlFj().doubleValue();
-                    swdltb = tbzbls.get(0).getSwdl().doubleValue();
-                    gwdltb = tbzbls.get(0).getGwdl().doubleValue();
+
+                    //添加时间戳
+                    vo.setHours(i);
+
+                    //添加实际电量数据
+                    vo.setSjdl(StringUtils.round(sjdl / 1000, 2));
+
                     if (sjdltb != 0) {
-                        zhcydlltb = (sjdltb - swdltb + gwdltb) / sjdltb;
+                        //                    vo.setSjdltb(StringUtils.round((sjdl - sjdltb) / sjdltb * 100, 0));
+                        vo.setSjdltb(StringUtils.round(sjdltb / 1000, 2));
                     } else {
-                        zhcydlltb = (sjdltb - swdltb + gwdltb) / 1;
+                        vo.setSjdltb(0.0);
                     }
-                }
-                if (!hbzbls.isEmpty() && hbzbls != null) {
-                    zhcydlhb = hbzbls.get(0).getZhcydl().doubleValue();
-                    sjdlhb = hbzbls.get(0).getRfdlFj().doubleValue();
-                    swdlhb = hbzbls.get(0).getSwdl().doubleValue();
-                    gwdlhb = hbzbls.get(0).getGwdl().doubleValue();
                     if (sjdlhb != 0) {
-                        zhcydllhb = (sjdlhb - swdlhb + gwdlhb) / sjdlhb;
+                        //                    vo.setSjdlhb(StringUtils.round((sjdl - sjdlhb) / sjdlhb * 100, 0));
+                        vo.setSjdlhb(StringUtils.round(sjdlhb / 1000, 2));
                     } else {
-                        zhcydllhb = (sjdlhb - swdlhb + gwdlhb) / 1;
+                        vo.setSjdlhb(0.0);
                     }
-                }
-
-
-                //添加各指标
-                ComprehensiveVo vo = new ComprehensiveVo();
-
-                //添加综合厂用电量数据
-                vo.setZhcydl(StringUtils.round(zhcydl, 2));
-                if (zhcydltb != 0) {
-                    //                    vo.setZhcydltb(StringUtils.round((zhcydl - zhcydltb) / zhcydltb * 100, 0));
-                    vo.setZhcydltb(StringUtils.round(zhcydltb, 2));
-                } else {
-                    vo.setZhcydltb(0.0);
-                }
 
-                if (zhcydlhb != 0) {
-                    //                    vo.setZhcydlhb(StringUtils.round((zhcydl - zhcydlhb) / zhcydlhb * 100, 0));
-                    vo.setZhcydlhb(StringUtils.round(zhcydlhb, 2));
-                } else {
-                    vo.setZhcydlhb(0.0);
-                }
-
-                //添加时间戳
-                vo.setHours(i);
-
-                //添加实际电量数据
-                vo.setSjdl(StringUtils.round(sjdl, 2));
-
-                if (sjdltb != 0) {
-                    //                    vo.setSjdltb(StringUtils.round((sjdl - sjdltb) / sjdltb * 100, 0));
-                    vo.setSjdltb(StringUtils.round(sjdltb, 2));
-                } else {
-                    vo.setSjdltb(0.0);
-                }
-                if (sjdlhb != 0) {
-                    //                    vo.setSjdlhb(StringUtils.round((sjdl - sjdlhb) / sjdlhb * 100, 0));
-                    vo.setSjdlhb(StringUtils.round(sjdlhb, 2));
-                } else {
-                    vo.setSjdlhb(0.0);
-                }
+                    //添加上网电量数据
+                    vo.setSwdl(StringUtils.round(swdl / 1000, 2));
+                    if (swdltb != 0) {
+                        //                    vo.setSwdltb(StringUtils.round((swdl - swdltb) / swdltb * 100, 0));
+                        vo.setSwdltb(StringUtils.round(swdltb / 1000, 2));
+                    } else {
+                        vo.setSwdltb(0.0);
+                    }
+                    if (swdlhb != 0) {
+                        //                    vo.setSwdlhb(StringUtils.round((swdl - swdlhb) / swdlhb * 100, 0));
+                        vo.setSwdlhb(StringUtils.round(swdlhb / 1000, 2));
+                    } else {
+                        vo.setSwdlhb(0.0);
+                    }
 
-                //添加上网电量数据
-                vo.setSwdl(StringUtils.round(swdl, 2));
-                if (swdltb != 0) {
-                    //                    vo.setSwdltb(StringUtils.round((swdl - swdltb) / swdltb * 100, 0));
-                    vo.setSwdltb(StringUtils.round(swdltb, 2));
-                } else {
-                    vo.setSwdltb(0.0);
-                }
-                if (swdlhb != 0) {
-                    //                    vo.setSwdlhb(StringUtils.round((swdl - swdlhb) / swdlhb * 100, 0));
-                    vo.setSwdlhb(StringUtils.round(swdlhb, 2));
-                } else {
-                    vo.setSwdlhb(0.0);
-                }
+                    //添加购网电量数据
+                    vo.setGwdl(StringUtils.round(gwdl / 1000, 2));
+                    if (gwdltb != 0) {
+                        //                    vo.setGwdltb(StringUtils.round((gwdl - gwdltb) / gwdltb * 100, 0));
+                        vo.setGwdltb(StringUtils.round(gwdltb / 1000, 2));
+                    } else {
+                        vo.setGwdltb(0.0);
+                    }
 
-                //添加购网电量数据
-                vo.setGwdl(StringUtils.round(gwdl, 2));
-                if (gwdltb != 0) {
-                    //                    vo.setGwdltb(StringUtils.round((gwdl - gwdltb) / gwdltb * 100, 0));
-                    vo.setGwdltb(StringUtils.round(gwdltb, 2));
-                } else {
-                    vo.setGwdltb(0.0);
-                }
+                    if (gwdlhb != 0) {
+                        //                    vo.setGwdlhb(StringUtils.round((gwdl - gwdlhb) / gwdlhb * 100, 0));
+                        vo.setGwdlhb(StringUtils.round(gwdlhb / 1000, 2));
+                    } else {
+                        vo.setGwdlhb(0.0);
+                    }
 
-                if (gwdlhb != 0) {
-                    //                    vo.setGwdlhb(StringUtils.round((gwdl - gwdlhb) / gwdlhb * 100, 0));
-                    vo.setGwdlhb(StringUtils.round(gwdlhb, 2));
-                } else {
-                    vo.setGwdlhb(0.0);
-                }
+                    //添加综合厂用电率数据
+                    vo.setZhcydll(StringUtils.round(zhcydll * 100, 0));
 
-                //添加综合厂用电率数据
-                vo.setZhcydll(StringUtils.round(zhcydll * 100, 0));
+                    if (zhcydlltb != 0) {
+                        //                    vo.setZhcydlltb(StringUtils.round((zhcydll - zhcydlltb) / zhcydlltb * 100, 0));
+                        vo.setZhcydlltb(StringUtils.round(zhcydlltb, 2));
+                    } else {
+                        vo.setZhcydlltb(0.0);
+                    }
 
-                if (zhcydlltb != 0) {
-                    //                    vo.setZhcydlltb(StringUtils.round((zhcydll - zhcydlltb) / zhcydlltb * 100, 0));
-                    vo.setZhcydlltb(StringUtils.round(zhcydlltb, 2));
-                } else {
-                    vo.setZhcydlltb(0.0);
-                }
+                    if (zhcydllhb != 0) {
+                        //                    vo.setZhcydllhb(StringUtils.round((zhcydll - zhcydllhb) / zhcydllhb * 100, 0));
+                        vo.setZhcydllhb(StringUtils.round(zhcydllhb, 2));
+                    } else {
+                        vo.setZhcydllhb(0.0);
+                    }
+                    vos.add(vo);
+                    SortUtils.sort(vos, "hours", SortUtils.ASC);
+                    map.put("value", vos);
 
-                if (zhcydllhb != 0) {
-                    //                    vo.setZhcydllhb(StringUtils.round((zhcydll - zhcydllhb) / zhcydllhb * 100, 0));
-                    vo.setZhcydllhb(StringUtils.round(zhcydllhb, 2));
-                } else {
-                    vo.setZhcydllhb(0.0);
                 }
-                vos.add(vo);
-                SortUtils.sort(vos, "hours", SortUtils.ASC);
-                map.put("value", vos);
-
+                firstDayZeroHour = DateUtils.addMonths(firstDayZeroHour, 1);
+                calFirstDayZeroHour.setTime(firstDayZeroHour);
+                calFirstMonth = calFirstDayZeroHour.get(Calendar.MONTH) + 1;
+                hbjssj = DateUtils.addMonths(hbjssj, 1);
+                tbjssj = DateUtils.addMonths(tbjssj, 1);
             }
-            firstDayZeroHour = DateUtils.addMonths(firstDayZeroHour, 1);
-            calFirstDayZeroHour.setTime(firstDayZeroHour);
-            calFirstMonth = calFirstDayZeroHour.get(Calendar.MONTH) + 1;
-            hbjssj = DateUtils.addMonths(hbjssj, 1);
-            tbjssj = DateUtils.addMonths(tbjssj, 1);
         }
-        map.put("zhcydlsum", StringUtils.round(zhcydlsum, 2));
-        map.put("sjdlsum", StringUtils.round(sjdlsum, 2));
-        map.put("swdlsum", StringUtils.round(swdlsum, 2));
-        map.put("gwdlsum", StringUtils.round(gwdlsum, 2));
+        map.put("zhcydlsum", StringUtils.round(zhcydlsum / 1000, 2));
+        map.put("sjdlsum", StringUtils.round(sjdlsum / 1000, 2));
+        map.put("swdlsum", StringUtils.round(swdlsum / 1000, 2));
+        map.put("gwdlsum", StringUtils.round(gwdlsum / 1000, 2));
         map.put("zhcydllsum", StringUtils.round(zhcydllsum * 100, 0));
 
         return map;

+ 2 - 0
runeconomy-xk/src/main/java/com/gyee/runeconomy/service/auto/IStationInfoDayService.java

@@ -19,4 +19,6 @@ public interface IStationInfoDayService extends IService<StationInfoDay> {
 
     List<StationInfoDay> getmax(String foreignKeyId, Date date);
     List<StationInfoDay> getTurbineList(String wpid, String kssj, String jssj) throws ParseException;
+
+    List<StationInfoDay> getSum(String foreignKeyId, Date date);
 }

+ 49 - 0
runeconomy-xk/src/main/java/com/gyee/runeconomy/service/auto/impl/StationInfoDayServiceImpl.java

@@ -77,6 +77,55 @@ public class StationInfoDayServiceImpl extends ServiceImpl<StationInfoDayMapper,
     }
 
     @Override
+    public List<StationInfoDay> getSum(String foreignKeyId, Date date) {
+        QueryWrapper<StationInfoDay> qw = null;
+
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        int specifiedYear = calendar.get(Calendar.YEAR);
+        int specifiedMonth = calendar.get(Calendar.MONTH) + 1;
+        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
+        calendar.set(Calendar.HOUR_OF_DAY, 23);
+        calendar.set(Calendar.MINUTE, 59);
+        calendar.set(Calendar.SECOND, 59);
+
+        Date endOfDayOfLastDayOfMonth = calendar.getTime();
+
+        // 获取当前日期的年份和月份
+        int currentYear = Calendar.getInstance().get(Calendar.YEAR);
+        int currentMonth = Calendar.getInstance().get(Calendar.MONTH) + 1;
+
+
+        // 判断指定日期是否是当前月份
+        if (currentYear == specifiedYear && currentMonth == specifiedMonth) {
+            // 如果是当前月份,则将endOfDayOfLastDayOfMonth减去一天
+            Calendar calendar2 = Calendar.getInstance();  // 创建 Calendar 对象,表示当前时间
+            calendar2.add(Calendar.DAY_OF_MONTH, -1);  // 减去一天
+
+            // 设置时、分、秒为最后时刻
+            calendar2.set(Calendar.HOUR_OF_DAY, 23);
+            calendar2.set(Calendar.MINUTE, 59);
+            calendar2.set(Calendar.SECOND, 59);
+
+            endOfDayOfLastDayOfMonth = calendar2.getTime();  // 获取计算后的时间
+        }
+
+        //当前数据
+        List<StationInfoDay> currlist = new ArrayList<>();
+        if (null != date) {
+            qw = new QueryWrapper<>();
+            if (StringUtils.isNotEmpty(foreignKeyId)) {
+                qw.lambda().eq(StationInfoDay::getStationId, foreignKeyId);
+            }
+            qw.lambda().between(StationInfoDay::getRecordDate, DateUtils.getMonthFirst(date), endOfDayOfLastDayOfMonth);
+            qw.select("COALESCE(sum(rfdl_fj),0) as rfdl_fj,COALESCE(sum(swdl),0) as swdl,COALESCE(sum(gwdl),0) as gwdl,COALESCE(sum(zhcydl),0) as zhcydl");
+            currlist = baseMapper.selectList(qw);
+
+        }
+        return currlist;
+    }
+
+    @Override
     public List<StationInfoDay> getTurbineList(String wpid, String kssj, String jssj) throws ParseException {
         QueryWrapper<StationInfoDay> qw = new QueryWrapper<>();
         Date kssjDate = new SimpleDateFormat("yyyy-MM-dd").parse(kssj);