Sfoglia il codice sorgente

BUG修复 导出成果报错

qinguocai 1 anno fa
parent
commit
e0ba3e927f

+ 11 - 3
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AchievementServiceImpl.java

@@ -146,10 +146,16 @@ public class AchievementServiceImpl implements AchievementService {
             map.put("acreagesum",taskResult.getAcreagesum());
             map.put("acreagesum",taskResult.getAcreagesum());
             List<Double> WspeedsList = JSONUtil.parseArray(taskResult.getWspeeds()).toList(Double.class);
             List<Double> WspeedsList = JSONUtil.parseArray(taskResult.getWspeeds()).toList(Double.class);
             double averageWspeed = WspeedsList.stream().mapToDouble(d -> d).average().orElse(Double.NaN);
             double averageWspeed = WspeedsList.stream().mapToDouble(d -> d).average().orElse(Double.NaN);
+            if (Double.isNaN(averageWspeed)){
+                averageWspeed = 0.0;
+            }
             BigDecimal averageWspeedBigDecimal = new BigDecimal(averageWspeed).setScale(2, RoundingMode.HALF_UP);
             BigDecimal averageWspeedBigDecimal = new BigDecimal(averageWspeed).setScale(2, RoundingMode.HALF_UP);
             Double maxWspeed = WspeedsList.stream().max(Double::compareTo).orElse(Double.NaN);
             Double maxWspeed = WspeedsList.stream().max(Double::compareTo).orElse(Double.NaN);
             List<Double> waterlevelList = JSONUtil.parseArray(taskResult.getWaterlevels()).toList(Double.class);
             List<Double> waterlevelList = JSONUtil.parseArray(taskResult.getWaterlevels()).toList(Double.class);
             double averageWaterlevel = waterlevelList.stream().mapToDouble(d -> d).average().orElse(Double.NaN);
             double averageWaterlevel = waterlevelList.stream().mapToDouble(d -> d).average().orElse(Double.NaN);
+            if (Double.isNaN(averageWaterlevel)){
+                averageWaterlevel = 0.0;
+            }
             BigDecimal averageWaterlevelBigDecimal = new BigDecimal(averageWaterlevel).setScale(2, RoundingMode.HALF_UP);
             BigDecimal averageWaterlevelBigDecimal = new BigDecimal(averageWaterlevel).setScale(2, RoundingMode.HALF_UP);
             Double maxWaterlevel = waterlevelList.stream().max(Double::compareTo).orElse(Double.NaN);
             Double maxWaterlevel = waterlevelList.stream().max(Double::compareTo).orElse(Double.NaN);
             map.put("agWaterlevels",averageWaterlevelBigDecimal.toString());
             map.put("agWaterlevels",averageWaterlevelBigDecimal.toString());
@@ -251,12 +257,14 @@ public class AchievementServiceImpl implements AchievementService {
                     bd2 = new BigDecimal(temp2.get("x").toString());
                     bd2 = new BigDecimal(temp2.get("x").toString());
                     BigDecimal subx = bd2.subtract(bd1);
                     BigDecimal subx = bd2.subtract(bd1);
                     pgData.put("subx", subx.toString()); //间距
                     pgData.put("subx", subx.toString()); //间距
-                    pgData.put("acreages", acreages.get(i)); //垂线间
+                    if (i <= acreages.size() - 1) {
+                        pgData.put("acreages", acreages.get(i));
+                    }  else {
+                        pgData.put("acreages", "");
+                    }//垂线间
                     pgList.add(pgData);
                     pgList.add(pgData);
                 }
                 }
             }
             }
-
-
             dataList = insertEmptyDataOnEvenRows(dataList);
             dataList = insertEmptyDataOnEvenRows(dataList);
             pgList = insertEmptyDataOnEvenRows(pgList);
             pgList = insertEmptyDataOnEvenRows(pgList);
             excelWriter.fill(new FillWrapper("details", dataList), writeSheet);
             excelWriter.fill(new FillWrapper("details", dataList), writeSheet);