From c971825d2a2bc48c74f2ffe97127b50b14445e12 Mon Sep 17 00:00:00 2001
From: whycxzp <glperry@163.com>
Date: 星期一, 09 六月 2025 20:56:16 +0800
Subject: [PATCH] 压入变动的时间列的总电压和电流

---
 src/main/java/com/whyc/service/ExcelService.java |  394 +++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 293 insertions(+), 101 deletions(-)

diff --git a/src/main/java/com/whyc/service/ExcelService.java b/src/main/java/com/whyc/service/ExcelService.java
index cbba9d6..4927078 100644
--- a/src/main/java/com/whyc/service/ExcelService.java
+++ b/src/main/java/com/whyc/service/ExcelService.java
@@ -22,8 +22,11 @@
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 @Service
 public class ExcelService {
@@ -54,12 +57,12 @@
         //鍒涘缓涓�涓伐浣滅翱
         XSSFWorkbook workbook = new XSSFWorkbook();
         //鍒涘缓sheet1
-        //createSheet1(workbook,battGroupId,testRecordCount);
+        createSheet1(workbook,battGroupId,testRecordCount);
         //鍒涘缓sheet2 -- 姣忔湀鐢靛帇,12涓湀,鍙栨瘡鏈�1鍙烽浂鐐归浂鍒�
         //鍒涘缓sheet3 -- 姣忔湀鍐呴樆, 12涓湀,鍙栨瘡鏈�1鍙烽浂鐐归浂鍒�
-        createSheet2And3(workbook,battGroupId);
+        //createSheet2And3(workbook,battGroupId);
         //鍒涘缓sheet4 -- 姣忓ぉ娓╁害, 30澶�, 鍙栨瘡澶╅浂鐐归浂鍒�
-        createSheet4(workbook,battGroupId);
+        //createSheet4(workbook,battGroupId);
 
         // 灏嗗伐浣滅翱鍐欏叆鏂囦欢
         FileOutputStream fileOut = new FileOutputStream(filePath);
@@ -214,12 +217,12 @@
 
 
         // 鍒涘缓缁樺浘宸ュ叿
-        createChart(sheet2, columnCount,"鐢靛帇鎶樼嚎鍥�");
-        createChart(sheet3, columnCount,"鍐呴樆鎶樼嚎鍥�");
+        createChart(sheet2, columnCount,3,"鐢靛帇鎶樼嚎鍥�");
+        createChart(sheet3, columnCount,3,"鍐呴樆鎶樼嚎鍥�");
 
     }
 
-    private void createChart(XSSFSheet sheet2, int columnCount,  String titleTextSuffix) {
+    private void createChart(XSSFSheet sheet2, int columnCount,int rowStartIndex,  String titleTextSuffix) {
         XSSFDrawing drawing = sheet2.createDrawingPatriarch();
         //108涓崟浣�,10涓崟浣撲竴涓浘鏍�
         int chartCol = 1;
@@ -295,10 +298,10 @@
             XDDFLineChartData dataChart = (XDDFLineChartData) chart.createData(ChartTypes.LINE, categoryAxis, valueAxis);
             for (int j = i  ; j < i+10; j++) {
                 if(j<104) {
-                    XDDFNumericalDataSource<Double> ys = XDDFDataSourcesFactory.fromNumericCellRange(sheet2, new CellRangeAddress(j + 3, j + 3, 1, columnCount -2));
+                    XDDFNumericalDataSource<Double> ys = XDDFDataSourcesFactory.fromNumericCellRange(sheet2, new CellRangeAddress(j + rowStartIndex, j + rowStartIndex, 1, columnCount -2));
                     XDDFLineChartData.Series series = (XDDFLineChartData.Series) dataChart.addSeries(xs, ys);
                     //閫夋嫨甯冨眬1
-                    series.setTitle(((XSSFRow) sheet2.getRow(j + 3)).getCell(0).getStringCellValue(), new CellReference(sheet2.getSheetName(), j + 3, 0, true, true));
+                    series.setTitle(((XSSFRow) sheet2.getRow(j + 6)).getCell(0).getStringCellValue(), new CellReference(sheet2.getSheetName(), j + rowStartIndex, 0, true, true));
                     series.setMarkerStyle(MarkerStyle.CIRCLE); // 璁剧疆鏍囪鐐�
                 }
 
@@ -317,29 +320,65 @@
         XSSFCell cellOfSheet4 = sheet4.createRow(0).createCell(0);
         cellOfSheet4.setCellValue( battInfo.getPowerName()+ battInfo.getBattGroupName()+"娓╁害鏁版嵁");
 
-        int columnCount = 2;
+        //30澶�+2鍒楀叾浠栧垪
+        int columnCount = 30+2;
         //鏌ヨ鍘嗗彶瀹炴椂琛�. 瀛樺湪鐨勬湀浠�. 濡傛灉瀛樺湪鐨勮瘽,鍙栫涓�绗旇褰�(104鏉�)
         //棣栧厛鏌ヨ褰撳墠鏈堜唤瀵瑰簲鐨勬棩鏈�
         List<String> tableListLike = commonMapper.getTableListLike("db_power_history", "tb_batt_realdata_"+battGroupId);
-        //褰撳墠鏈堜唤寰�鍓嶆帹11涓湀
+        //鑾峰彇褰撳墠鏃ユ湡寰�鍓�30澶╃殑鍑屾櫒闆剁鐨勬暟鎹�. 寰�鍓嶆帹30澶�
         List<String> tableListInDB = new ArrayList<>();
         Calendar calendar = Calendar.getInstance();
-        for (int i = 0; i < 12; i++) {
-            int year = calendar.get(Calendar.YEAR);
-            int month = calendar.get(Calendar.MONTH) + 1;
-            String monthStr;
-            if (month < 10) {
-                monthStr = "0" + month;
-            } else {
-                monthStr = String.valueOf(month);
-            }
-            if (tableListLike.contains("tb_batt_realdata_" + battGroupId + "_" + year + "_" + monthStr)) {
-                //瀛樺湪,鍒楁暟+1
-                columnCount++;
-                tableListInDB.add("tb_batt_realdata_" + battGroupId + "_" + year + "_" + monthStr);
-            }
-            calendar.add(Calendar.MONTH, -1);
+        int year = calendar.get(Calendar.YEAR);
+        int month = calendar.get(Calendar.MONTH) + 1;
+        String monthStr;
+        if (month < 10) {
+            monthStr = "0" + month;
+        } else {
+            monthStr = String.valueOf(month);
         }
+        //褰撳墠鏃堕棿寰�鍓�30澶�
+        calendar.add(Calendar.DAY_OF_MONTH, -30);
+        Date timeAgo = calendar.getTime();
+        int yearAgo = calendar.get(Calendar.YEAR);
+        int monthAgo = calendar.get(Calendar.MONTH) + 1;
+        String monthAgoStr;
+        if (monthAgo < 10) {
+            monthAgoStr = "0" + (monthAgo);
+        } else {
+            monthAgoStr = String.valueOf(monthAgo);
+        }
+        String tableName  = "tb_batt_realdata_" + battGroupId + "_" + year + "_" + monthStr;
+        //30澶╁墠鐨勬椂闂�
+        String tableNameAgo = "tb_batt_realdata_" + battGroupId + "_" + yearAgo + "_" + monthAgoStr;
+        if (tableListLike.contains(tableName)) {
+            tableListInDB.add(tableName);
+        }
+        if (tableListLike.contains(tableNameAgo)) {
+            tableListInDB.add(tableNameAgo);
+        }
+
+        //鑾峰彇鎵�鏈夋暟鎹�
+        List<BattRealTimeDataHistory> dataList = new ArrayList<>();
+        for (int i = 0; i < tableListInDB.size(); i++) {
+            String tableNameTmp = tableListInDB.get(i);
+            List<BattRealTimeDataHistory> list;
+            if(tableNameTmp.equals(tableName)){
+                list = battRTDataHisService.getFirstRecordListOfDay(tableNameTmp, null);
+            }else{
+                //璇存槑鏄笂涓湀鐨勮褰�,闇�瑕佽褰曟椂闂村ぇ浜�30澶╁墠鐨勬椂闂�
+                list = battRTDataHisService.getFirstRecordListOfDay(tableNameTmp, timeAgo);
+            }
+            dataList.addAll(list);
+        }
+        //鎸夋椂闂存帓搴忓拰鍒嗙粍
+        dataList.sort(Comparator.comparing(BattRealTimeDataHistory::getRecordTime));
+        Map<Date, List<BattRealTimeDataHistory>> dataListMap = dataList.stream().collect(Collectors.groupingBy(BattRealTimeDataHistory::getRecordTime));
+        Set<Date> dateKeySet = dataListMap.keySet();
+        dataListMap.forEach((key,data)->{
+            addStatistics(data, "tmp");
+        });
+        //缁欏垪鏁拌祴鍊�
+        columnCount = dateKeySet.size()+2;
 
         //鍒楁牴鎹疄闄呮儏鍐靛彉鍔�
         sheet4.addMergedRegion(new CellRangeAddress(0, 0,  0, columnCount-1));
@@ -348,7 +387,7 @@
             if(j==0){
                 sheet4.setColumnWidth(j, 170 * 20);
             }else {
-                sheet4.setColumnWidth(j, 128 * 20);
+                sheet4.setColumnWidth(j, 138 * 20);
             }
         }
         //琛屽
@@ -380,35 +419,33 @@
                 } else if (i == 107) {
                     sheet4.createRow(i + 2).createCell(0).setCellValue("鍗曡妭鏈�灏忔俯搴�");
                 }else if (i == 108) {
-                    sheet4.createRow(i + 2).createCell(0).setCellValue("鍗曡妭鏈�澶ф俯搴�");
+                    sheet4.createRow(i + 2).createCell(0).setCellValue("鍗曡妭鏈�澶у樊鍊�");
                 }
             }
         }
         //鍒涘缓绗笁琛�
         XSSFRow row2OfSheet4 = sheet4.createRow(2);
-
+        row2OfSheet4.setHeightInPoints(40);
         sheet4.getRow(0).createCell(columnCount-1);
-        for (int i = 0; i <= tableListInDB.size(); i++) { //杩欎釜鏄垪鐨勯亶鍘�
-            if (i == tableListInDB.size()) {
-                //鏈�鍚庝竴鍒楀娉�:鍏ㄩ儴濉┖
-                row2OfSheet4.createCell(i + 1);
-                for (int j = 1; j <= 108; j++) { //杩欎釜鏄鐨勯亶鍘�
-                    sheet4.getRow(j + 2).createCell(i + 1);
-                }
-            } else {
-                //鑾峰彇鏁版嵁
-                List<BattRealTimeDataHistory> list = battRTDataHisService.getFirstRecordList(tableListInDB.get(i));
-                list.sort(Comparator.comparing(BattRealTimeDataHistory::getMonNum));
-                //绗笁琛岀殑鏃堕棿鍒楀~鍏�
-                Date testStartTime = list.get(0).getTestStartTime();
-                //鑾峰彇骞存湀
-                String testMonth = DateUtil.YYYY_DOT_MM.format(testStartTime);
-                row2OfSheet4.createCell(i + 1).setCellValue(testMonth);
-                addStatistics(list, "vol", "res");
-                for (int j = 1; j <= 108; j++) { //杩欎釜鏄鐨勯亶鍘�
-                    sheet4.getRow(j + 2).createCell(i + 1).setCellValue((list.get(j - 1).getMonVol()));
-                }
+
+        //濉厖鏁版嵁鍒�,key鏄垪鏃ユ湡. value鏄垪鏁版嵁
+        AtomicInteger count = new AtomicInteger();
+        //瀵筪ateKeySet鎸夋椂闂存帓搴�
+        Stream<Date> dateKeySetSorted = dateKeySet.stream().sorted(Comparator.comparing(Date::getTime));
+        dateKeySetSorted.forEach(key -> {
+            List<BattRealTimeDataHistory> value = dataListMap.get(key);
+            //绗笁琛屾椂闂村垪濉厖
+            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd\nHH:mm:ss");
+            row2OfSheet4.createCell(count.get() + 1).setCellValue(format.format(key));
+            for (int j = 1; j <= 108; j++) { //杩欎釜鏄鐨勯亶鍘�
+                sheet4.getRow(j + 2).createCell(count.get() + 1).setCellValue(value.get(j - 1).getMonTmp());
             }
+            count.getAndIncrement();
+        });
+        //鏈�鍚庝竴鍒楀娉�:鍏ㄩ儴濉┖
+        row2OfSheet4.createCell(columnCount-1);
+        for (int j = 1; j <= 108; j++) { //杩欎釜鏄鐨勯亶鍘�
+            sheet4.getRow(j + 2).createCell(columnCount-1);
         }
 
         addGlobalStylesToAllCells(sheet4, workbook);
@@ -418,7 +455,17 @@
         XSSFCellStyle cellStyleNew = getCellStyleFont(cellStyleOriginal,workbook, true, 15);
         cellOfSheet4.setCellStyle(cellStyleNew);
 
-        createChart(sheet4, columnCount,"娓╁害鎶樼嚎鍥�");
+        //绗笁琛� 鎵�鏈夊垪姘村钩鍨傜洿灞呬腑,鑷姩鎹㈣
+        for (int i = 1; i < columnCount; i++) {
+            XSSFCell cell = sheet4.getRow(2).getCell(i);
+            XSSFCellStyle cellStyle = cell.getCellStyle();
+            cellStyle.setAlignment(HorizontalAlignment.CENTER);
+            cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
+            cellStyle.setWrapText(true);
+            cell.setCellStyle(cellStyle);
+        }
+
+        createChart(sheet4, columnCount,3,"娓╁害鎶樼嚎鍥�");
 
     }
     public CTValAx getCTValAx(XDDFValueAxis valueAxis, XSSFChart chart) {
@@ -541,15 +588,14 @@
         CellRangeAddress region25 = new CellRangeAddress(1, 1,  18, 24);
         sheet.addMergedRegion(region25);
 
-        //绗笁琛岀殑鍚堝苟鍒�
-        CellRangeAddress region31 = new CellRangeAddress(2, 2,  1, 2);
-        CellRangeAddress region32 = new CellRangeAddress(2, 2,  3, 4);
-        CellRangeAddress region33 = new CellRangeAddress(2, 2,  5, 6);
-        CellRangeAddress region34 = new CellRangeAddress(2, 2,  7, 8);
+        //绗笁琛�,绗簲琛�,绗叚琛岀殑鍚堝苟鍒�,鍓嶄袱涓崟鍏冩ā鍧楁槸鍥哄畾鐨�,鍏朵腑1涓悎骞跺崟鍏�
+        CellRangeAddress region31 = new CellRangeAddress(2, 2,  2, 3);
+        CellRangeAddress region51 = new CellRangeAddress(4, 4,  2, 3);
+        CellRangeAddress region61 = new CellRangeAddress(5, 5,  2, 3);
         sheet.addMergedRegion(region31);
-        sheet.addMergedRegion(region32);
-        sheet.addMergedRegion(region33);
-        sheet.addMergedRegion(region34);
+        sheet.addMergedRegion(region51);
+        sheet.addMergedRegion(region61);
+
 
         // 鍒涘缓灞呬腑鏍峰紡
         CellStyle style = workbook.createCellStyle();
@@ -588,24 +634,55 @@
         //setRowStyle(sheet.getRow(1),cellStyleFontBold);
 
         //绗笁琛屾槸鐢垫睜鍙峰拰鐢靛帇绛夌浉鍏虫姮澶�
+        //绗洓琛屾槸鐢靛帇鍒楀拰娓╁害鍒楁爣璇�
         XSSFRow row2 = sheet.createRow(2);
+        XSSFRow row3 = sheet.createRow(3);
+        XSSFRow row4 = sheet.createRow(4);
+        XSSFRow row5 = sheet.createRow(5);
+
         row2.createCell(0).setCellValue("钃勭數姹犲彿锛�#锛�");
         row2.createCell(1).setCellValue("钃勭數姹犳诞鍏呯數鍘嬪�硷紙V锛�");
-        row2.createCell(3).setCellValue("鏀剧數鍓嶈搫鐢垫睜寮�璺數鍘嬪�硷紙V锛�");
+        row2.createCell(2).setCellValue("鏀剧數鍓嶈搫鐢垫睜寮�璺數鍘嬪�硷紙V锛�");
+
+        row3.createCell(0).setCellValue("椤圭洰");
+        row3.createCell(1).setCellValue("-1锛堢數鍘嬶級");
+        row3.createCell(2).setCellValue("0锛堢數鍘嬶級");
+        row3.createCell(3).setCellValue("0锛堟俯搴︼級");
 
         //鏀剧數鐗瑰畾鐢靛帇鍊�
         int columnIndex = 3;
         if(dischargeColumnCount > 0){
             row2.createCell(5).setCellValue("鏀剧數0.5h钃勭數姹犵數鍘嬪�硷紙V锛�");
+            CellRangeAddress region33 = new CellRangeAddress(2, 2,  4, 5);
+            CellRangeAddress region53 = new CellRangeAddress(4, 4,  4, 5);
+            CellRangeAddress region63 = new CellRangeAddress(5, 5,  4, 5);
+
+            sheet.addMergedRegion(region33);
+            sheet.addMergedRegion(region53);
+            sheet.addMergedRegion(region63);
+
+            row3.createCell(4).setCellValue("0.5锛堢數鍘嬶級");
+            row3.createCell(5).setCellValue("0.5锛堟俯搴︼級");
             columnIndex+=2;
             if(dischargeColumnCount > 2){ //鍚堝苟鍗曞厓鏍间簡,鎵�浠ョ储寮�+2
                 row2.createCell(7).setCellValue("鏀剧數1h钃勭數姹犵數鍘嬪�硷紙V锛�");
+                CellRangeAddress region34 = new CellRangeAddress(2, 2,  6, 7);
+                CellRangeAddress region54 = new CellRangeAddress(4, 2,  6, 7);
+                CellRangeAddress region64 = new CellRangeAddress(5, 2,  6, 7);
+
+                sheet.addMergedRegion(region34);
+                sheet.addMergedRegion(region54);
+                sheet.addMergedRegion(region64);
+
+                row3.createCell(6).setCellValue("1锛堢數鍘嬶級");
+                row3.createCell(7).setCellValue("1锛堟俯搴︼級");
                 columnIndex+=2;
                 if(dischargeColumnCount > 4){
                     columnIndex++;
                     //鏀剧數nh钃勭數姹犵數鍘嬪�硷紙V锛�,n浠�2寮�濮�
                     for(int i = 4;i < dischargeColumnCount;i++){
                         row2.createCell(i+5).setCellValue("鏀剧數" + (i-2) + "h钃勭數姹犵數鍘嬪�硷紙V锛�");
+                        row3.createCell(i+5).setCellValue(String.valueOf(i-2));
                         columnIndex++;
                     }
 
@@ -615,6 +692,7 @@
 
         //鍏呯數鐗瑰畾鐢靛帇鍊�
         row2.createCell(++columnIndex).setCellValue("鏀剧數缁撴潫0.5h鍚庤搫鐢垫睜寮�璺數鍘嬪�硷紙V锛�");
+        row3.createCell(columnIndex).setCellValue("10.5");
         if(chargeColumnCount > 0){
             columnIndex++;
             row2.createCell(columnIndex).setCellValue("鍏呯數0.5h");
@@ -624,40 +702,130 @@
                 for(int i = 1;i < chargeColumnCount;i++){
                     columnIndex++;
                     row2.createCell(columnIndex).setCellValue("鍏呯數" + (i) + "h钃勭數姹犵數鍘嬪�硷紙V锛�");
+                    row3.createCell(columnIndex);//濉厖鍗曞厓鏍肩殑浣滅敤
                 }
 
             }
         }
         row2.createCell(++columnIndex).setCellValue("鍏呮弧鍚庤搫鐢垫睜鐢靛帇鍊硷紙V)锛堢數娴佷负0锛�");
+        row3.createCell(columnIndex).setCellValue("11");
         row2.createCell(++columnIndex).setCellValue("澶囨敞");
+        row3.createCell(columnIndex);//濉厖鍗曞厓鏍肩殑浣滅敤
 
 
-        //浠巖owIndex=6寮�濮�
-        int rowIndex = 6;
+
+        //浠巖owIndex=4寮�濮�
+        int rowIndex = 4;
         // 鍏�104鑺傚崟浣�,104琛�. 杩涜閬嶅巻,濉厖
         //钃勭數姹犳诞鍏呯數鍘嬪�煎垪琛�
         List<BattRealTimeDataHistory> fcVolList = new ArrayList<>();
-        fcVolList = battRTDataHisService.getFcVolList(battGroupId,dischargeStartTime);
+        List<BattRealTimeDataHistory> fcVolListOriginal = battRTDataHisService.getFcVolList(battGroupId,dischargeStartTime);
         //鎸夊崟浣撶紪鍙锋帓搴�,鎸夌紪鍙峰崌搴�
-        fcVolList.sort(Comparator.comparingInt(BattRealTimeDataHistory::getMonNum));
+        fcVolListOriginal.sort(Comparator.comparingInt(BattRealTimeDataHistory::getMonNum));
+        addStatistics(fcVolListOriginal,"vol");
+        //鎬荤數娴佹�荤數鍘嬪垪鍏�
+        Float fcGroupVol = fcVolListOriginal.get(0).getGroupVol();
+        Float fcGroupCurr = fcVolListOriginal.get(0).getGroupCurr();
+
+        BattRealTimeDataHistory fcGroupVolData = new BattRealTimeDataHistory();
+        fcGroupVolData.setMonNum(-2);
+        fcGroupVolData.setGroupVol(fcGroupVol);
+
+        BattRealTimeDataHistory fcGroupCurrData = new BattRealTimeDataHistory();
+        fcGroupCurrData.setMonNum(-1);
+        fcGroupCurrData.setGroupCurr(fcGroupCurr);
+
+        fcVolList.add(fcGroupVolData);
+        fcVolList.add(fcGroupCurrData);
+        fcVolList.addAll(fcVolListOriginal);
+
         //鏀剧偣鍓嶈搫鐢垫睜寮�璺數鍘嬪��
         List<BattRealTimeDataHistory> preVolList = new ArrayList<>();
-        preVolList = battRTDataHisService.getPreVolList(battGroupId,dischargeStartTime);
+        List<BattRealTimeDataHistory> preVolListOriginal = battRTDataHisService.getPreVolList(battGroupId,dischargeStartTime);
+        addStatistics(preVolListOriginal,"vol","tmp");
+        //鎬荤數娴佹�荤數鍘嬪垪鍏�
+        Float preGroupVol = preVolListOriginal.get(0).getGroupVol();
+        Float preGroupCurr = preVolListOriginal.get(0).getGroupCurr();
 
-        addStatistics(fcVolList,"vol");
-        addStatistics(preVolList,"vol");
+        BattRealTimeDataHistory preGroupVolData = new BattRealTimeDataHistory();
+        preGroupVolData.setMonNum(-2);
+        preGroupVolData.setGroupVol(preGroupVol);
 
-        //涓�鍏�104鑺傚崟浣�,鍐嶅姞涓婄粺璁℃暟鎹�4鍒�,涓�鍏�108
-        for(int j = 0; j < 108; j++){
+        BattRealTimeDataHistory preGroupCurrData = new BattRealTimeDataHistory();
+        preGroupCurrData.setMonNum(-1);
+        preGroupCurrData.setGroupCurr(preGroupCurr);
+
+        preVolList.add(preGroupVolData);
+        preVolList.add(preGroupCurrData);
+        preVolList.addAll(preVolListOriginal);
+
+        //鏀剧數缁撴潫0.5h鍚庤搫鐢垫睜寮�璺數鍘嬪��
+        Calendar dischargeEndCalendar = Calendar.getInstance();
+        dischargeEndCalendar.setTime(dischargeEndTime.getTime());
+        dischargeEndCalendar.add(Calendar.MINUTE,30);
+        List<BattRealTimeDataHistory> dischargeSetVolListOne = new ArrayList<>();
+        List<BattRealTimeDataHistory> dischargeSetVolListOneOriginal = battRTDataHisService.getRecordList(battGroupId, dischargeEndCalendar.getTime());
+        dischargeSetVolListOneOriginal.sort(Comparator.comparingInt(BattRealTimeDataHistory::getMonNum));
+        addStatistics(dischargeSetVolListOneOriginal,"vol","tmp");
+        //鎬荤數娴佹�荤數鍘嬪垪鍏�
+        Float groupVolOne = dischargeSetVolListOneOriginal.get(0).getGroupVol();
+        Float groupCurrOne = dischargeSetVolListOneOriginal.get(0).getGroupCurr();
+
+        BattRealTimeDataHistory groupVolDataOne = new BattRealTimeDataHistory();
+        groupVolDataOne.setMonNum(-2);
+        groupVolDataOne.setGroupVol(groupVolOne);
+
+        BattRealTimeDataHistory groupCurrDataOne = new BattRealTimeDataHistory();
+        groupCurrDataOne.setMonNum(-1);
+        groupCurrDataOne.setGroupCurr(groupCurrOne);
+
+        dischargeSetVolListOne.add(groupVolDataOne);
+        dischargeSetVolListOne.add(groupCurrDataOne);
+        dischargeSetVolListOne.addAll(dischargeSetVolListOneOriginal);
+
+        //瀹氫綅鍒板厖鐢靛紑濮嬫椂闂�,鐘舵�佸彉涓哄厖鐢电殑璁板綍鏃堕棿
+        Date chargeStartTime = battRTDataHisService.getChargeStartTime(battGroupId, dischargeEndTime.getTime());
+        //鍏呮弧鍚庤搫鐢垫睜鐨勭數鍘�
+        Calendar chargeCalendar = Calendar.getInstance();
+        chargeCalendar.setTime(chargeStartTime);
+        List<BattRealTimeDataHistory> fcVolListAfter = new ArrayList<>();
+        List<BattRealTimeDataHistory> fcVolListAfterOriginal = battRTDataHisService.getFcVolListAfter(battGroupId, chargeCalendar.getTime());
+        fcVolListAfterOriginal.sort(Comparator.comparingInt(BattRealTimeDataHistory::getMonNum));
+        addStatistics(fcVolListAfterOriginal,"vol","tmp");
+        //鎬荤數娴佹�荤數鍘嬪垪鍏�
+        if(fcVolListAfterOriginal.size()>0) {
+            Float groupVolAfter = fcVolListAfterOriginal.get(0).getGroupVol();
+            Float groupCurrAfter = fcVolListAfterOriginal.get(0).getGroupCurr();
+
+            BattRealTimeDataHistory groupVolDataAfter = new BattRealTimeDataHistory();
+            groupVolDataAfter.setMonNum(-2);
+            groupVolDataAfter.setGroupVol(groupVolAfter);
+
+            BattRealTimeDataHistory groupCurrDataAfter = new BattRealTimeDataHistory();
+            groupCurrDataAfter.setMonNum(-1);
+            groupCurrDataAfter.setGroupCurr(groupCurrAfter);
+
+            fcVolListAfter.add(groupVolDataAfter);
+            fcVolListAfter.add(groupCurrDataAfter);
+            fcVolListAfter.addAll(fcVolListAfterOriginal);
+        }
+
+        //涓�鍏�104鑺傚崟浣�,鍐嶅姞涓婂墠闈㈡�荤數鍘嬪拰鎬荤數娴�2鍒�,鍚庨潰缁熻鏁版嵁4鍒�,涓�鍏�110
+        for(int j = 0; j < 110; j++){
             XSSFRow rowTemp = sheet.createRow(rowIndex++);
-            if(j<104) {
-                rowTemp.createCell(0).setCellValue((j + 1) + "#");
+            if(j == 0){
+                rowTemp.createCell(0).setCellValue("鎬荤數鍘�");
+            }else if(j == 1){
+                rowTemp.createCell(0).setCellValue("鎬荤數娴�");
+            }
+            else if(j<106) {
+                rowTemp.createCell(0).setCellValue((j - 1) + "#");
             }else{
-                if(j == 104){
+                if(j == 106){
                     rowTemp.createCell(0).setCellValue("鍗曡妭骞冲潎鐢靛帇");
-                }else if (j == 105){
+                }else if (j == 107){
                     rowTemp.createCell(0).setCellValue("鍗曡妭鏈�澶х數鍘�");
-                }else if (j == 106){
+                }else if (j == 108){
                     rowTemp.createCell(0).setCellValue("鍗曡妭鏈�灏忕數鍘�");
                 }else{
                     rowTemp.createCell(0).setCellValue("鍗曡妭鏈�澶у樊鍊�");
@@ -667,11 +835,19 @@
             //rowTemp.createCell(2).setCellValue("钃勭數姹犳诞鍏呮俯搴﹀��:"+(j+1)+"#");
             //rowTemp.createCell(3).setCellValue("鏀剧數鍓嶈搫鐢垫睜寮�璺數鍘嬪�硷紙V锛�:"+(j+1)+"#");
             //rowTemp.createCell(4).setCellValue("鏀剧數鍓嶈搫鐢垫睜寮�璺俯搴﹀��:"+(j+1)+"#");
-            rowTemp.createCell(1).setCellValue(fcVolList.get(j).getMonVol());
-            rowTemp.createCell(1).setCellValue(fcVolList.get(j).getMonTmp());
-
-            rowTemp.createCell(1).setCellValue(preVolList.get(j).getMonVol());
-            rowTemp.createCell(1).setCellValue(preVolList.get(j).getMonTmp());
+            if(j == 0){
+                rowTemp.createCell(1).setCellValue(fcVolList.get(j).getGroupVol());
+                rowTemp.createCell(2).setCellValue(preVolList.get(j).getGroupVol());
+                rowTemp.createCell(3);
+            }else if (j == 1){
+                rowTemp.createCell(1).setCellValue(fcVolList.get(j).getGroupCurr());
+                rowTemp.createCell(2).setCellValue(preVolList.get(j).getGroupCurr());
+                rowTemp.createCell(3);
+            }else {
+                rowTemp.createCell(1).setCellValue(fcVolList.get(j).getMonVol());
+                rowTemp.createCell(2).setCellValue(preVolList.get(j).getMonVol());
+                rowTemp.createCell(3).setCellValue(preVolList.get(j).getMonTmp());
+            }
 
 
             //鏀剧數鐗瑰畾鐢靛帇鍊�
@@ -682,14 +858,18 @@
                 //鏃堕棿鍦ㄦ祴璇曞紑濮嬫椂闂�+0.5h
                 dischargeCalendar.add(Calendar.MINUTE,30);
                 Date recordTime = dischargeCalendar.getTime();
-                List<BattRealTimeDataHistory> dischargeListOne = battRTDataHisService.getRecordList(battGroupId,recordTime);
+                List<BattRealTimeDataHistory> dischargeListOne  = new ArrayList<>();
+                List<BattRealTimeDataHistory> dischargeListOneOriginal = battRTDataHisService.getRecordList(battGroupId,recordTime);
                 //鎸夊崟浣撶紪鍙锋帓搴�,鎸夌紪鍙峰崌搴�
-                dischargeListOne.sort(Comparator.comparingInt(BattRealTimeDataHistory::getMonNum));
-                addStatistics(dischargeListOne,"vol");
+                dischargeListOneOriginal.sort(Comparator.comparingInt(BattRealTimeDataHistory::getMonNum));
+                addStatistics(dischargeListOneOriginal,"vol");
+                //鎬荤數娴佹�荤數鍘嬪垪鍏�
+
+
                 //rowTemp.createCell(5).setCellValue("鏀剧數0.5h鐢靛帇鍊硷紙V锛�:"+(j+1)+"#");
                 //rowTemp.createCell(6).setCellValue("鏀剧數0.5h娓╁害鍊�:"+(j+1)+"#");
-                rowTemp.createCell(5).setCellValue(dischargeListOne.get(j).getMonVol());
-                rowTemp.createCell(6).setCellValue(dischargeListOne.get(j).getMonTmp());
+                rowTemp.createCell(4).setCellValue(dischargeListOne.get(j).getMonVol());
+                rowTemp.createCell(5).setCellValue(dischargeListOne.get(j).getMonTmp());
                 columnIndexTemp+=2;
                 if(dischargeColumnCount > 2){ //鍚堝苟鍗曞厓鏍间簡,鎵�浠ョ储寮�+2
                     //鏃堕棿鍦ㄦ祴璇曞紑濮嬫椂闂�+1h
@@ -701,8 +881,8 @@
                     addStatistics(dischargeListTwo,"vol");
                     //rowTemp.createCell(7).setCellValue("鏀剧數1h鐢靛帇鍊硷紙V锛�:"+(j+1)+"#");
                     //rowTemp.createCell(8).setCellValue("鏀剧數1h娓╁害鍊�:"+(j+1)+"#");
-                    rowTemp.createCell(7).setCellValue(dischargeListTwo.get(j).getMonVol());
-                    rowTemp.createCell(8).setCellValue(dischargeListTwo.get(j).getMonTmp());
+                    rowTemp.createCell(6).setCellValue(dischargeListTwo.get(j).getMonVol());
+                    rowTemp.createCell(7).setCellValue(dischargeListTwo.get(j).getMonTmp());
                     columnIndexTemp+=2;
                     if(dischargeColumnCount > 4){
                         columnIndexTemp++;
@@ -725,19 +905,17 @@
                 }
             }
 
-            //鍏呯數鐗瑰畾鐢靛帇鍊�
-            Calendar dischargeEndCalendar = Calendar.getInstance();
-            dischargeEndCalendar.setTime(dischargeEndTime.getTime());
-            dischargeEndCalendar.add(Calendar.MINUTE,30);
-            List<BattRealTimeDataHistory> dischargeSetVolListOne = battRTDataHisService.getRecordList(battGroupId, dischargeEndCalendar.getTime());
-            dischargeSetVolListOne.sort(Comparator.comparingInt(BattRealTimeDataHistory::getMonNum));
-            addStatistics(dischargeSetVolListOne,"vol");
-            rowTemp.createCell(++columnIndexTemp).setCellValue(dischargeSetVolListOne.get(j).getMonVol());
+            //濉厖鏀剧數0.5h鍚庡紑璺數鍘嬪��
+            if(j == 0){
+                rowTemp.createCell(++columnIndexTemp).setCellValue(dischargeSetVolListOne.get(j).getGroupVol());
+            }else if(j == 1){
+                rowTemp.createCell(++columnIndexTemp).setCellValue(dischargeSetVolListOne.get(j).getGroupCurr());
+            }else {
+                rowTemp.createCell(++columnIndexTemp).setCellValue(dischargeSetVolListOne.get(j).getMonVol());
+            }
 
-            //瀹氫綅鍒板厖鐢靛紑濮嬫椂闂�,鐘舵�佸彉涓哄厖鐢电殑璁板綍鏃堕棿
-            Date chargeStartTime = battRTDataHisService.getChargeStartTime(battGroupId, dischargeEndTime.getTime());
             if(chargeColumnCount > 0){
-                Calendar chargeCalendar = Calendar.getInstance();
+                chargeCalendar = Calendar.getInstance();
                 chargeCalendar.setTime(chargeStartTime);
                 chargeCalendar.add(Calendar.MINUTE,30);
                 List<BattRealTimeDataHistory> chargeVolListOne = battRTDataHisService.getRecordList(battGroupId, chargeCalendar.getTime());
@@ -764,14 +942,16 @@
                 }
             }
 
-            Calendar chargeCalendar = Calendar.getInstance();
-            chargeCalendar.setTime(chargeStartTime);
-            List<BattRealTimeDataHistory> fcVolListAfter = battRTDataHisService.getFcVolListAfter(battGroupId, chargeCalendar.getTime());
-            fcVolListAfter.sort(Comparator.comparingInt(BattRealTimeDataHistory::getMonNum));
-            addStatistics(fcVolListAfter,"vol");
+            //濉厖鍏呮弧鍚庤搫鐢垫睜鐢靛帇
             //rowTemp.createCell(++columnIndexTemp).setCellValue("鍏呮弧鍚庤搫鐢垫睜鐢靛帇鍊硷紙V)锛堢數娴佷负0锛�");
             if (fcVolListAfter.size() > 0){
-                rowTemp.createCell(++columnIndexTemp).setCellValue(fcVolListAfter.get(j).getMonVol());
+                if(j ==  0){
+                    rowTemp.createCell(++columnIndexTemp).setCellValue(fcVolListAfter.get(j).getGroupVol());
+                }else if(j == 1){
+                    rowTemp.createCell(++columnIndexTemp).setCellValue(fcVolListAfter.get(j).getGroupCurr());
+                }else {
+                    rowTemp.createCell(++columnIndexTemp).setCellValue(fcVolListAfter.get(j).getMonVol());
+                }
             }else {
                 rowTemp.createCell(++columnIndexTemp).setCellValue("-");
             }
@@ -790,6 +970,9 @@
         setRowStyle(workbook,sheet.getRow(0),true,15);
         //绗簩琛岃缃姞绮�
         setRowStyle(workbook,sheet.getRow(1),true,15);
+
+        //鐢熸垚鍥捐〃
+        createChart(sheet, columnCount, 6,"");
     }
 
     private XSSFCellStyle getCellStyleFont(XSSFCellStyle cellStyleOriginal, XSSFWorkbook workbook, boolean isFontBold, int fontSize) {
@@ -889,10 +1072,19 @@
                 //鏈�澶у樊鍊�
                 float tmpGap = tmpMax - tmpMin;
 
+                Date now = new Date();
+
                 hisAvg.setMonTmp(tmpAvg);
+                hisAvg.setRecordTime(now);
+
                 hisMax.setMonTmp(tmpMax);
+                hisMax.setRecordTime(now);
+
                 hisMin.setMonTmp(tmpMin);
+                hisMin.setRecordTime(now);
+
                 hisGap.setMonTmp(tmpGap);
+                hisGap.setRecordTime(now);
             }
 
 

--
Gitblit v1.9.1