|
|
@ -10,17 +10,16 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
|
import lombok.RequiredArgsConstructor; |
|
|
|
import org.dromara.demo.domain.vo.AllGoatAchieveDataVo; |
|
|
|
import org.dromara.demo.domain.vo.ProjectPerformanceVo; |
|
|
|
import org.dromara.demo.domain.vo.*; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.dromara.demo.domain.bo.ProjectInfoBo; |
|
|
|
import org.dromara.demo.domain.vo.ProjectInfoVo; |
|
|
|
import org.dromara.demo.domain.ProjectInfo; |
|
|
|
import org.dromara.demo.mapper.ProjectInfoMapper; |
|
|
|
import org.dromara.demo.service.IProjectInfoService; |
|
|
|
|
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.math.RoundingMode; |
|
|
|
import java.time.LocalDateTime; |
|
|
|
import java.util.*; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
@ -299,6 +298,134 @@ public class ProjectInfoServiceImpl extends ServiceImpl<ProjectInfoMapper, Proje |
|
|
|
return avgVo; // ✅ 返回真实计算出的平均值
|
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public List<DeaResultVo> getDeaSimulationResults() { |
|
|
|
List<DeaResultVo> resultList = new ArrayList<>(); |
|
|
|
|
|
|
|
resultList.add(new DeaResultVo("城镇污水处理及配套", 0.85, 0.92, 0.92, "递增", 1.10)); |
|
|
|
resultList.add(new DeaResultVo("河道整治", 1.00, 1.00, 1.00, "不变", 1.42)); |
|
|
|
resultList.add(new DeaResultVo("农业农村面源污染治理", 0.76, 0.85, 0.89, "递增", 0.88)); |
|
|
|
resultList.add(new DeaResultVo("饮用水源地保护建设", 1.00, 1.00, 1.00, "不变", 1.25)); |
|
|
|
resultList.add(new DeaResultVo("内源治理", 0.68, 0.78, 0.87, "递增", 0.75)); |
|
|
|
resultList.add(new DeaResultVo("水资源综合利用及调度", 0.93, 0.96, 0.97, "递增", 1.05)); |
|
|
|
|
|
|
|
return resultList; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public PH getPH() { |
|
|
|
PH ph = new PH(); |
|
|
|
List<Integer> timeList = ph.getTimeList(); |
|
|
|
List<Double> phList = ph.getPhList(); |
|
|
|
double[] phValues = { |
|
|
|
6.72, 6.71, 6.70, 6.70, 6.71, 6.73, 6.75, 6.77, |
|
|
|
6.78, 6.80, 6.82, 6.83, 6.84, 6.85, 6.84, 6.83, |
|
|
|
6.82, 6.81, 6.80, 6.78, 6.76, 6.74, 6.73, 6.72 |
|
|
|
}; |
|
|
|
|
|
|
|
for (int hour = 0; hour < 24; hour++) { |
|
|
|
timeList.add(hour); // 直接添加小时数字
|
|
|
|
phList.add(phValues[hour]); |
|
|
|
} |
|
|
|
ph.setTimeList(timeList); |
|
|
|
ph.setPhList(phList); |
|
|
|
ph.setCurrentTime(LocalDateTime.now()); |
|
|
|
ph.setCurrentValue(phValues[ph.getCurrentTime().getHour()]); |
|
|
|
ph.setLongitude("121.434112"); |
|
|
|
ph.setLatitude("29.580099"); |
|
|
|
return ph; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public List<StationInfoVo> getStations() { |
|
|
|
StationInfoVo target = new StationInfoVo("方门江", "121.434112", "29.580099"); |
|
|
|
List<StationInfoVo> rs= new ArrayList<>(); |
|
|
|
rs.add(target); |
|
|
|
return rs; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public StationDetailVo getWaterQualityData(String type) { |
|
|
|
// 模拟站点位置
|
|
|
|
String longitude = "121.434112"; |
|
|
|
String latitude = "29.580099"; |
|
|
|
|
|
|
|
double[] values; |
|
|
|
|
|
|
|
// 根据 type 分支返回不同数据
|
|
|
|
switch (type.toUpperCase()) { |
|
|
|
case "PH": |
|
|
|
values = new double[]{ |
|
|
|
6.72, 6.71, 6.70, 6.70, 6.71, 6.73, 6.75, 6.77, |
|
|
|
6.78, 6.80, 6.82, 6.83, 6.84, 6.85, 6.84, 6.83, |
|
|
|
6.82, 6.81, 6.80, 6.78, 6.76, 6.74, 6.73, 6.72 |
|
|
|
}; |
|
|
|
break; |
|
|
|
|
|
|
|
case "DO": |
|
|
|
values = new double[]{ |
|
|
|
7.8, 7.6, 7.4, 7.2, 7.3, 7.6, 8.0, 8.5, |
|
|
|
8.8, 9.0, 9.2, 9.3, 9.4, 9.3, 9.1, 8.9, |
|
|
|
8.7, 8.5, 8.3, 8.1, 7.9, 7.7, 7.6, 7.5 |
|
|
|
}; |
|
|
|
break; |
|
|
|
|
|
|
|
case "COD": |
|
|
|
values = new double[]{ |
|
|
|
12.5, 12.4, 12.3, 12.3, 12.2, 12.3, 12.4, 12.5, |
|
|
|
12.6, 12.7, 12.8, 12.7, 12.6, 12.5, 12.4, 12.3, |
|
|
|
12.3, 12.2, 12.2, 12.3, 12.4, 12.5, 12.5, 12.4 |
|
|
|
}; |
|
|
|
break; |
|
|
|
|
|
|
|
case "TP": |
|
|
|
values = new double[]{ |
|
|
|
0.060, 0.059, 0.058, 0.057, 0.058, 0.059, 0.060, 0.062, |
|
|
|
0.064, 0.065, 0.066, 0.065, 0.064, 0.063, 0.062, 0.061, |
|
|
|
0.060, 0.059, 0.058, 0.057, 0.057, 0.058, 0.059, 0.060 |
|
|
|
}; |
|
|
|
break; |
|
|
|
|
|
|
|
case "NH3": |
|
|
|
case "NH3-N": |
|
|
|
values = new double[]{ |
|
|
|
0.32, 0.33, 0.35, 0.36, 0.35, 0.34, 0.33, 0.31, |
|
|
|
0.30, 0.28, 0.27, 0.26, 0.25, 0.26, 0.27, 0.28, |
|
|
|
0.29, 0.30, 0.31, 0.32, 0.33, 0.34, 0.35, 0.36 |
|
|
|
}; |
|
|
|
break; |
|
|
|
|
|
|
|
default: |
|
|
|
// 如果类型不支持,返回 PH 作为默认值,避免报错
|
|
|
|
values = new double[]{ |
|
|
|
6.72, 6.71, 6.70, 6.70, 6.71, 6.73, 6.75, 6.77, |
|
|
|
6.78, 6.80, 6.82, 6.83, 6.84, 6.85, 6.84, 6.83, |
|
|
|
6.82, 6.81, 6.80, 6.78, 6.76, 6.74, 6.73, 6.72 |
|
|
|
}; |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
|
// 构建返回对象
|
|
|
|
StationDetailVo vo = new StationDetailVo(); |
|
|
|
List<XY> xyList = new ArrayList<>(); |
|
|
|
|
|
|
|
for (int hour = 0; hour < 24; hour++) { |
|
|
|
xyList.add(new XY(hour, values[hour])); |
|
|
|
} |
|
|
|
|
|
|
|
vo.setXyList(xyList); |
|
|
|
|
|
|
|
LocalDateTime now = LocalDateTime.now(); |
|
|
|
vo.setCurrentTime(now); |
|
|
|
int currentHour = now.getHour(); |
|
|
|
vo.setCurrentValue(values[currentHour < 24 ? currentHour : 23]); |
|
|
|
|
|
|
|
vo.setLongitude(longitude); |
|
|
|
vo.setLatitude(latitude); |
|
|
|
|
|
|
|
return vo; |
|
|
|
} |
|
|
|
|
|
|
|
// --------------------- private 辅助方法 ---------------------
|
|
|
|
private Double getApprovalLevelScore(ProjectInfoVo projectInfo) { |
|
|
|
Double score = 0.0; |
|
|
|