diff --git a/src/main/java/com/gunshi/project/ss/controller/JcskGnssRController.java b/src/main/java/com/gunshi/project/ss/controller/JcskGnssRController.java index 2b52c8a..f1e00e5 100644 --- a/src/main/java/com/gunshi/project/ss/controller/JcskGnssRController.java +++ b/src/main/java/com/gunshi/project/ss/controller/JcskGnssRController.java @@ -118,18 +118,34 @@ public class JcskGnssRController { return R.ok(service.yearStat(osmoticQuerySo)); } + @Operation(summary = "时间范围位移统计(表格)") + @PostMapping("/range/stat") + public R> rangeStat(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { + return R.ok(service.rangeStat(osmoticQuerySo)); + } + @Operation(summary = "年度位移统计(全年度特征值统计)") @PostMapping("/year/stat/value") public R> yearStatValue(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { return R.ok(service.yearStatValue(osmoticQuerySo)); } + @Operation(summary = "范围位移统计(范围特征值统计)") + @PostMapping("/range/stat/value") + public R> rangeStatValue(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { + return R.ok(service.rangeStatValue(osmoticQuerySo)); + } + + + @Operation(summary = "年度位移统计导出") @PostMapping( "/year/stat/export") public void yearStatExport(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) { service.yearStatExport(osmoticQuerySo,response); } + + @Operation(summary = "布置图-位移监测") @GetMapping("/list/value") public R> listValue() { diff --git a/src/main/java/com/gunshi/project/ss/service/JcskGnssRService.java b/src/main/java/com/gunshi/project/ss/service/JcskGnssRService.java index bcf84d1..bf5ec71 100644 --- a/src/main/java/com/gunshi/project/ss/service/JcskGnssRService.java +++ b/src/main/java/com/gunshi/project/ss/service/JcskGnssRService.java @@ -135,6 +135,36 @@ public class JcskGnssRService extends ServiceImpl { return resList; } + + + public List rangeStat(OsmoticQuerySo osmoticQuerySo) { + List resList = new ArrayList<>(); + //查询位移监测记录 + List valueList = baseMapper.queryReorganizeValue(osmoticQuerySo); + List dateList = DateUtil.getDatesBetween(osmoticQuerySo.getDateTimeRangeSo().getStart(), osmoticQuerySo.getDateTimeRangeSo().getEnd(), false); + //数据处理 + for(String str : dateList){ + OsmoticShiftVo2 vo = new OsmoticShiftVo2(); + vo.setTm(str); + // 筛选出该日期8点的数据 + List collect = valueList.stream() + .filter(o -> { + if (o.getTm() != null && o.getTm().startsWith(str)) { + // 提取时间部分,检查是否为08:00:00 + String timePart = o.getTm().substring(11, 13); // 获取 HH:mm:ss 部分 + return "08".equals(timePart); + } + return false; + }) + .peek(o->o.setTm(str)) + .collect(Collectors.toList()); + vo.setList(collect); + resList.add(vo); + } + return resList; + } + + // 新增:生成指定年份的所有日期(确保只包含当年日期) private List generateYearDates(Integer year) { List dates = new ArrayList<>(); @@ -222,6 +252,61 @@ public class JcskGnssRService extends ServiceImpl { return resList; } + + public List rangeStatValue(OsmoticQuerySo osmoticQuerySo) { + // 定义时间格式化器 + List resList = new ArrayList<>(); + try { + //查询位移监测记录 + List valueList = baseMapper.queryValue(osmoticQuerySo); + //按测站分组 + Map> map = valueList.stream().collect(Collectors.groupingBy(OsmoticShiftValueVo2::getCd)); + map.entrySet().forEach(o->{ + String key = o.getKey(); + List value = o.getValue(); + + OsmoticChartVo2 xVo = new OsmoticChartVo2(); + OsmoticShiftValueVo2 xMax = value.stream().max(Comparator.comparing(OsmoticShiftValueVo2::getDe)).get(); + OsmoticShiftValueVo2 xMin = value.stream().min(Comparator.comparing(OsmoticShiftValueVo2::getDe)).get(); + xVo.setCd(key + X_PREFIX); + xVo.setMaxValue(xMax.getDe()); + xVo.setMaxTm(xMax.getTm()); + xVo.setMinValue(xMin.getDe()); + xVo.setMinTm(xMin.getTm()); + xVo.setDiff(xMax.getDe().subtract(xMin.getDe())); + resList.add(xVo); + + OsmoticChartVo2 yVo = new OsmoticChartVo2(); + OsmoticShiftValueVo2 yMax = value.stream().max(Comparator.comparing(OsmoticShiftValueVo2::getDn)).get(); + OsmoticShiftValueVo2 yMin = value.stream().min(Comparator.comparing(OsmoticShiftValueVo2::getDn)).get(); + yVo.setCd(key + Y_PREFIX); + yVo.setMaxValue(yMax.getDn()); + yVo.setMaxTm(yMax.getTm()); + yVo.setMinValue(yMin.getDn()); + yVo.setMinTm(yMin.getTm()); + yVo.setDiff(yMax.getDn().subtract(yMin.getDn())); + resList.add(yVo); + + OsmoticChartVo2 hVo = new OsmoticChartVo2(); + OsmoticShiftValueVo2 hMax = value.stream().max(Comparator.comparing(OsmoticShiftValueVo2::getDu)).get(); + OsmoticShiftValueVo2 hMin = value.stream().min(Comparator.comparing(OsmoticShiftValueVo2::getDu)).get(); + hVo.setCd(key + H_PREFIX); + hVo.setMaxValue(hMax.getDu()); + hVo.setMaxTm(hMax.getTm()); + hVo.setMinValue(hMin.getDu()); + hVo.setMinTm(hMin.getTm()); + hVo.setDiff(hMax.getDu().subtract(hMin.getDu())); + resList.add(hVo); + + }); + } catch (Exception e) { + log.info("year/state/value报错"); + e.printStackTrace(); + throw new IllegalArgumentException("报错"); + } + return resList; + } + public void yearStatExport(OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) { String fileName = "年度位移统计"; String sheetName = "年度位移统计"; @@ -553,4 +638,7 @@ public class JcskGnssRService extends ServiceImpl { public JcskGnssR queryByCDNM(String stationCode) { return this.baseMapper.queryByCDNM(stationCode); } + + + }