|
@@ -100,20 +100,20 @@ public class AchievementServiceImpl implements AchievementService {
|
|
|
try {
|
|
|
//查询resultId结果
|
|
|
TaskResult taskResult = taskResultMapper.queryById(resultId);
|
|
|
- if (taskResult == null){
|
|
|
+ if (taskResult == null) {
|
|
|
throw new BaseException("该结果不存在");
|
|
|
}
|
|
|
- if (taskResult.getStatus() != 2){
|
|
|
+ if (taskResult.getStatus() != 2) {
|
|
|
throw new BaseException("结果未完成,不支持导出");
|
|
|
}
|
|
|
//查询站点信息
|
|
|
SiteInfo siteInfo = siteInfoMapper.queryById(taskResult.getSiteId());
|
|
|
- if (siteInfo == null){
|
|
|
+ if (siteInfo == null) {
|
|
|
throw new BaseException("该站点不存在");
|
|
|
}
|
|
|
//查站点详情
|
|
|
SiteConfig siteConfig = siteService.queryConfig(siteInfo.getSiteId());
|
|
|
- if (siteConfig == null){
|
|
|
+ if (siteConfig == null) {
|
|
|
throw new BaseException("该站点配置不存在");
|
|
|
}
|
|
|
//拿断面数据
|
|
@@ -123,16 +123,16 @@ public class AchievementServiceImpl implements AchievementService {
|
|
|
// }
|
|
|
//拿停泊点数据
|
|
|
BerthingPointConfig berthingPointConfig = berthingPointConfigMapper.queryById(taskResult.getStopId());
|
|
|
- if (berthingPointConfig == null){
|
|
|
+ if (berthingPointConfig == null) {
|
|
|
throw new BaseException("停泊点配置不存在");
|
|
|
}
|
|
|
|
|
|
//拿有水位的启点距和高程
|
|
|
List<BigDecimal> positionsList = JSONUtil.toList(taskResult.getPositions(), BigDecimal.class);
|
|
|
List<BigDecimal> elevationsList = JSONUtil.toList(taskResult.getElevations(), BigDecimal.class);
|
|
|
- if (positionsList.size() < 5){
|
|
|
+ if (positionsList.size() < 5) {
|
|
|
throw new BaseException("启点距少于5个不支持导出");
|
|
|
- } else if (positionsList.size() > 50){
|
|
|
+ } else if (positionsList.size() > 50) {
|
|
|
throw new BaseException("启点距大于50个点暂不支持导出");
|
|
|
}
|
|
|
|
|
@@ -149,26 +149,26 @@ public class AchievementServiceImpl implements AchievementService {
|
|
|
map.put("endTime", taskResult.getEndtime());
|
|
|
map.put("flowsum", taskResult.getFlowsum());
|
|
|
map.put("width", taskResult.getWidth());
|
|
|
- map.put("waterlevel",taskResult.getWaterlevel());
|
|
|
- map.put("acreagesum",taskResult.getAcreagesum());
|
|
|
+ map.put("waterlevel", taskResult.getWaterlevel());
|
|
|
+ map.put("acreagesum", taskResult.getAcreagesum());
|
|
|
List<Double> WspeedsList = JSONUtil.parseArray(taskResult.getWspeeds()).toList(Double.class);
|
|
|
double averageWspeed = WspeedsList.stream().mapToDouble(d -> d).average().orElse(Double.NaN);
|
|
|
- if (Double.isNaN(averageWspeed)){
|
|
|
+ if (Double.isNaN(averageWspeed)) {
|
|
|
averageWspeed = 0.0;
|
|
|
}
|
|
|
BigDecimal averageWspeedBigDecimal = new BigDecimal(averageWspeed).setScale(2, RoundingMode.HALF_UP);
|
|
|
Double maxWspeed = WspeedsList.stream().max(Double::compareTo).orElse(Double.NaN);
|
|
|
List<Double> waterlevelList = JSONUtil.parseArray(taskResult.getWaterlevels()).toList(Double.class);
|
|
|
double averageWaterlevel = waterlevelList.stream().mapToDouble(d -> d).average().orElse(Double.NaN);
|
|
|
- if (Double.isNaN(averageWaterlevel)){
|
|
|
+ if (Double.isNaN(averageWaterlevel)) {
|
|
|
averageWaterlevel = 0.0;
|
|
|
}
|
|
|
BigDecimal averageWaterlevelBigDecimal = new BigDecimal(averageWaterlevel).setScale(2, RoundingMode.HALF_UP);
|
|
|
Double maxWaterlevel = waterlevelList.stream().max(Double::compareTo).orElse(Double.NaN);
|
|
|
- map.put("agWaterlevels",averageWaterlevelBigDecimal.toString());
|
|
|
- map.put("maxWaterlevels",String.valueOf(maxWaterlevel));
|
|
|
- map.put("agWspeeds",averageWspeedBigDecimal.toString());
|
|
|
- map.put("maxWspeeds",String.valueOf(maxWspeed));
|
|
|
+ map.put("agWaterlevels", averageWaterlevelBigDecimal.toString());
|
|
|
+ map.put("maxWaterlevels", String.valueOf(maxWaterlevel));
|
|
|
+ map.put("agWspeeds", averageWspeedBigDecimal.toString());
|
|
|
+ map.put("maxWspeeds", String.valueOf(maxWspeed));
|
|
|
excelWriter.fill(map, writeSheet);
|
|
|
|
|
|
//拿断面数据
|
|
@@ -185,7 +185,7 @@ public class AchievementServiceImpl implements AchievementService {
|
|
|
List<String> taskFlows = JSONUtil.toList(taskResult.getFlows(), String.class);
|
|
|
|
|
|
//查询任务时间
|
|
|
- List<MeasureUpload> measureUploadList = measureUploadMapper.queryBySiteIdTime(taskResult.getSiteId(), null , taskResult.getTaskid());
|
|
|
+ List<MeasureUpload> measureUploadList = measureUploadMapper.queryBySiteIdTime(taskResult.getSiteId(), null, taskResult.getTaskid());
|
|
|
|
|
|
int pnIndex = 0;
|
|
|
for (int i = 0; i < positionsList.size(); i++) {
|
|
@@ -201,8 +201,8 @@ public class AchievementServiceImpl implements AchievementService {
|
|
|
}
|
|
|
data.put("x", positionsList.get(i).toString());
|
|
|
data.put("y", elevationsList.get(i).toString());
|
|
|
- data.put("waterlevel",taskResult.getWaterlevel());
|
|
|
- data.put("subWlevel",BigDecimal.valueOf(taskResult.getWaterlevel()).subtract(elevationsList.get(i)));
|
|
|
+ data.put("waterlevel", taskResult.getWaterlevel());
|
|
|
+ data.put("subWlevel", BigDecimal.valueOf(taskResult.getWaterlevel()).subtract(elevationsList.get(i)));
|
|
|
|
|
|
if (pnIndex < berthingPointList.size()) {
|
|
|
BigDecimal position = positionsList.get(i).setScale(4, RoundingMode.HALF_UP);
|
|
@@ -229,6 +229,11 @@ public class AchievementServiceImpl implements AchievementService {
|
|
|
} else {
|
|
|
data.put("partwspeeds", "");
|
|
|
}
|
|
|
+ if (pnIndex < taskStopwspeeds.size()) {
|
|
|
+ data.put("stopwspeeds", taskStopwspeeds.get(pnIndex));
|
|
|
+ } else {
|
|
|
+ data.put("stopwspeeds", "");
|
|
|
+ }
|
|
|
pnIndex = pnIndex + 1;
|
|
|
} else {
|
|
|
data.put("speed", "");
|
|
@@ -247,6 +252,8 @@ public class AchievementServiceImpl implements AchievementService {
|
|
|
dataList.add(data);
|
|
|
}
|
|
|
pnIndex = 0;
|
|
|
+ int oldIndex = 0;
|
|
|
+ BigDecimal add = new BigDecimal("0");
|
|
|
//新循环
|
|
|
for (int i = 0; i < positionsList.size(); i++) {
|
|
|
Map<String, Object> pgData = MapUtils.newHashMap();
|
|
@@ -260,15 +267,17 @@ public class AchievementServiceImpl implements AchievementService {
|
|
|
} else {
|
|
|
pgData.put("partwspeeds", "");
|
|
|
}
|
|
|
- if (i < 2) {
|
|
|
- pgData.put("add", acreages.get(0));//部分
|
|
|
- } else {
|
|
|
- BigDecimal bd1 = new BigDecimal(acreages.get(i));
|
|
|
- BigDecimal bd2 = new BigDecimal(acreages.get(i - 1));
|
|
|
- BigDecimal add = bd1.add(bd2);
|
|
|
- pgData.put("add", add.toString());
|
|
|
+ for (int j = oldIndex; j < acreages.size(); j++) {
|
|
|
+ if (j <= i ) {
|
|
|
+ add = add.add(new BigDecimal(acreages.get(j)));
|
|
|
+ } else {
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
-// pgData.put("flows", taskFlows.get(pnIndex));//部分流量
|
|
|
+ pgData.put("add", add.toString());//部分
|
|
|
+ oldIndex = i + 1 ;
|
|
|
+ add = new BigDecimal("0");
|
|
|
+// pgData.put("flows", taskFlows.get(pnIndex));//部分流量
|
|
|
pnIndex = pnIndex + 1;
|
|
|
} else {
|
|
|
pgData.put("partwspeeds", "");
|
|
@@ -297,7 +306,7 @@ public class AchievementServiceImpl implements AchievementService {
|
|
|
pgData.put("subx", subx.toString()); //间距
|
|
|
if (i <= acreages.size() - 1) {
|
|
|
pgData.put("acreages", acreages.get(i));
|
|
|
- } else {
|
|
|
+ } else {
|
|
|
pgData.put("acreages", "");
|
|
|
}//垂线间
|
|
|
pgList.add(pgData);
|