gunshi-project-ss/src/main/java/com/gunshi/project/hsz/service/OsmoticPressRService.java

486 lines
23 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

//package com.gunshi.project.hsz.service;
//
//import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
//import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
//import com.gunshi.db.dto.DateTimeRangeSo;
//import com.gunshi.project.hsz.common.model.so.OsmoticDetailQuerySo;
//import com.gunshi.project.hsz.common.model.so.OsmoticQueryPageSo;
//import com.gunshi.project.hsz.common.model.so.OsmoticQuerySo;
//import com.gunshi.project.hsz.entity.vo.*;
//import com.gunshi.project.hsz.mapper.OsmoticPressRMapper;
//import com.gunshi.project.hsz.model.OsmoticPressR;
//import com.gunshi.project.hsz.util.DataHandleUtil;
//import com.gunshi.project.hsz.util.DateUtil;
//import com.gunshi.project.hsz.util.ExcelUtil;
//import com.gunshi.project.hsz.util.MyBeanUtil;
//import jakarta.servlet.http.HttpServletResponse;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.BeanUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//import org.springframework.transaction.annotation.Transactional;
//
//import java.math.BigDecimal;
//import java.util.*;
//import java.util.stream.Collectors;
//import java.util.stream.Stream;
//
///**
// * 描述: 渗压监测记录表
// * author: xusan
// * date: 2024-07-08 17:30:37
// */
//@Service
//@Slf4j
//@Transactional(rollbackFor = Exception.class)
//public class OsmoticPressRService extends ServiceImpl<OsmoticPressRMapper, OsmoticPressR>
//{
// @Autowired
// private OsmoticShiftRService shiftRService;
//
// public Page<OsmoticPressR> queryPage(OsmoticQueryPageSo osmoticQueryPageSo) {
// return baseMapper.queryPage(osmoticQueryPageSo.getPageSo().toPage(),osmoticQueryPageSo);
// }
//
// /**
// * 测值查询管水位和库水位数据固定查询每日早8点
// * @param osmoticQuerySo
// * @return
// */
// public List<OsmoticStationVo> queryValue(OsmoticQuerySo osmoticQuerySo,Integer year) {
// if(osmoticQuerySo.getType() == null) {
// osmoticQuerySo.setType(1);
// }
// List<OsmoticStationVo> resList = new ArrayList<>();
// if(CollectionUtils.isEmpty(osmoticQuerySo.getStationCodes())){
// return resList;
// }
// String stcd = shiftRService.getStcd();
// Boolean isDesc = true;
// //查询测站降雨量
// Map<String,BigDecimal> drpMap = new HashMap<>();
// if(year != null){
// isDesc = false;
// List<StRzVo> drpList = baseMapper.queryDrp(year,stcd);
// drpMap = drpList.stream().collect(Collectors.toMap(StRzVo::getTm, StRzVo::getRz));
// }
// List<String> dateList = DateUtil.getDatesBetween(osmoticQuerySo.getDateTimeRangeSo().getStart(), osmoticQuerySo.getDateTimeRangeSo().getEnd(),isDesc);
//
// //查询库水位
// List<StRzVo> list = baseMapper.queryRz(osmoticQuerySo,stcd);
// Map<String, BigDecimal> rzMap = list.stream().collect(Collectors.toMap(StRzVo::getTm, StRzVo::getRz));
// //查询测站管水位/渗流量
// List<OsmoticValueVo> valueList = baseMapper.queryValue(osmoticQuerySo);
// //数据处理
// for(String str : dateList){
// OsmoticStationVo vo = new OsmoticStationVo();
// vo.setTm(str);
// vo.setRz(rzMap.get(str));
// vo.setDrp(drpMap.get(str));
// vo.setList(valueList.stream().filter(o->str.equals(o.getTm())).map(t->{
// t.setRz(vo.getRz());
// return t;
// }).collect(Collectors.toList()));
// resList.add(vo);
// }
// return resList;
// }
//
// public List<OsmoticChartVo> queryChart(OsmoticQuerySo osmoticQuerySo,Integer year) {
// List<OsmoticChartVo> resList = new ArrayList<>();
// List<String> stationCodes = osmoticQuerySo.getStationCodes();
// if(CollectionUtils.isEmpty(stationCodes)){
// return resList;
// }
// String stcd = shiftRService.getStcd();
// //查询库水位
// List<StRzVo> list = baseMapper.queryRz(osmoticQuerySo,stcd);
// //查询测站管水位
// List<OsmoticValueVo> valueList = baseMapper.queryValue(osmoticQuerySo);
// //按测站分组
// Map<String, List<OsmoticValueVo>> map = valueList.stream().collect(Collectors.groupingBy(OsmoticValueVo::getStationCode));
// for(String code : stationCodes){
// OsmoticChartVo vo = new OsmoticChartVo();
// vo.setStationCode(code);
// if(map.containsKey(code)){
// List<OsmoticValueVo> voList = map.get(code);
// OsmoticValueVo max = voList.stream().max(Comparator.comparing(OsmoticValueVo::getValue)).get();
// OsmoticValueVo min = voList.stream().min(Comparator.comparing(OsmoticValueVo::getValue)).get();
// vo.setStationCode(code);
// vo.setMaxValue(max.getValue());
// vo.setMaxTm(max.getTm());
// vo.setMinValue(min.getValue());
// vo.setMinTm(min.getTm());
// vo.setDiff(max.getValue().subtract(min.getValue()));
// if(year == null){
// vo.setDetailVos(bindData(MyBeanUtil.collectionCopy(list,OsmoticChartDetailVo.class),MyBeanUtil.collectionCopy(voList,OsmoticChartDetailVo.class)));
// }
// }else {
// vo.setDetailVos(new ArrayList<>());
// }
// resList.add(vo);
// }
// //查询测站降雨量
// List<StRzVo> drpList;
// if(year != null){
// drpList = baseMapper.queryDrp(year,stcd);
// OsmoticChartVo chartVo = new OsmoticChartVo();
// chartVo.setStationCode("rz");
// if(CollectionUtils.isNotEmpty(list)){
// StRzVo max = list.stream().max(Comparator.comparing(StRzVo::getRz)).get();
// StRzVo min = list.stream().min(Comparator.comparing(StRzVo::getRz)).get();
// chartVo.setMaxValue(max.getRz());
// chartVo.setMaxTm(max.getTm());
// chartVo.setMinValue(min.getRz());
// chartVo.setMinTm(min.getTm());
// chartVo.setDiff(max.getRz().subtract(min.getRz()));
// resList.add(chartVo);
// }
//
// if(CollectionUtils.isNotEmpty(drpList)){
// OsmoticChartVo drpVo = new OsmoticChartVo();
// drpVo.setStationCode("drp");
// StRzVo maxDrp = drpList.stream().max(Comparator.comparing(StRzVo::getRz)).get();
// StRzVo minDrp = drpList.stream().min(Comparator.comparing(StRzVo::getRz)).get();
// drpVo.setMaxValue(maxDrp.getRz());
// drpVo.setMaxTm(maxDrp.getTm());
// drpVo.setMinValue(minDrp.getRz());
// drpVo.setMinTm(minDrp.getTm());
// drpVo.setDiff(maxDrp.getRz().subtract(minDrp.getRz()));
// resList.add(drpVo);
// }
// }
// return resList;
// }
//
//
//
// //根据监测时间合并管水位和库水位数据
// private List<OsmoticChartDetailVo> bindData(List<OsmoticChartDetailVo> tmRzList, List<OsmoticChartDetailVo> voList) {
// HashSet<String> strings = new HashSet<>();
// tmRzList.stream().forEach(v1 -> strings.add(v1.getTm()));
// voList.stream().forEach(v1 -> strings.add(v1.getTm()));
//
// List<OsmoticChartDetailVo> result = new ArrayList<>();
// strings.stream().forEach(v1 ->{
// OsmoticChartDetailVo v = new OsmoticChartDetailVo();
// v.setTm(v1);
// result.add(v);
// });
//
// List<OsmoticChartDetailVo> list = result.stream().map(v1 -> {
// tmRzList.stream().filter(v2 -> v1.getTm().equals(v2.getTm())).forEach(v2 -> {
// v1.setRz(v2.getRz());
// });
//
// voList.stream().filter(v2 -> v1.getTm().equals(v2.getTm())).forEach(v2 -> {
// v1.setValue(v2.getValue());
// });
// return v1;
// }).collect(Collectors.toList());
// return list.stream().sorted(Comparator.comparing(OsmoticChartDetailVo::getTm)).collect(Collectors.toList());
// }
//
// public List<OsmoticStationVo> infiltraLine(OsmoticQuerySo osmoticQuerySo) {
// List<OsmoticStationVo> resList = new ArrayList<>();
// String stcd = shiftRService.getStcd();
// //查询库水位
// List<StRzVo> list = baseMapper.queryLineRz(osmoticQuerySo,stcd);
// Map<String, BigDecimal> rzMap = list.stream().collect(Collectors.toMap(StRzVo::getTm, StRzVo::getRz));
// //查询测站管水位
// List<OsmoticValueVo> valueList = baseMapper.queryLineValue(osmoticQuerySo);
// //查询测站预警信息
// List<OsmoticValueVo> warnList = baseMapper.queryWarn(osmoticQuerySo);
// valueList.stream().map(vo->{
// Boolean b = warnList.stream().filter(o->o.getStationCode().equals(vo.getStationCode()) && o.getTm().equals(vo.getTm())).findAny().isPresent();
// if(b){
// vo.setStatus(0);
// }
// return vo;
// }).collect(Collectors.toList());
// HashSet<String> dateList = new HashSet<>();
// list.stream().forEach(v1 -> dateList.add(v1.getTm()));
// valueList.stream().forEach(v1 -> dateList.add(v1.getTm()));
// for(String str : dateList){
// OsmoticStationVo vo = new OsmoticStationVo();
// vo.setTm(str);
// vo.setRz(rzMap.get(str));
// List<OsmoticValueVo> newList = valueList.stream().filter(o->str.equals(o.getTm())).collect(Collectors.toList());
// vo.setList(newList);
// if(CollectionUtils.isNotEmpty(newList) && newList.stream().filter(o->o.getStatus() == 0).findAny().isPresent()){
// vo.setStatus(0);
// }
// resList.add(vo);
// }
// return resList.stream().sorted(Comparator.comparing(OsmoticStationVo::getTm)).collect(Collectors.toList());
// }
//
//
// public void export(OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) {
// //通过断面查询渗压设备
// List<String> stationCodes = osmoticQuerySo.getStationCodes();
// //表头信息
// List<String> heads = new ArrayList<>();
// heads.add("序号");
// heads.add("时间");
// heads.add("库水位(m)");
// heads.addAll(stationCodes);
// heads.add("结果分析");
//
// //表格数据
// List<OsmoticStationVo> resList = infiltraLine(osmoticQuerySo);
// List<Map<String, Object>> list = new ArrayList<>();
// for (int j = 0;j < resList.size(); j++) {
// OsmoticStationVo vo = resList.get(j);
// Map<String, Object> test = new LinkedHashMap<>();
// test.put("t0",j+1);
// test.put("t1", vo.getTm());
// test.put("t2", vo.getRz());
// for(int i = 0;i < stationCodes.size();i++){
// String code = stationCodes.get(i);
// OsmoticValueVo valueVo = vo.getList().stream().filter(o->code.equals(o.getStationCode())).findFirst().orElse(null);
// test.put(code,valueVo != null ? valueVo.getValue() : "");
// }
// test.put("t4", vo.getStatus() == 0 ? "异常":"正常");
// list.add(test);
// }
// List<List<String>> hs = new ArrayList<>();
// for (String s : heads) {
// hs.add(Arrays.asList(s));
// }
// ExcelUtil.exportExcel(hs, DataHandleUtil.tableData(list), "浸润线", response, "浸润线");
// }
//
// private OsmoticQuerySo commonQueryHandle(OsmoticQuerySo osmoticQuerySo){
// Integer year = osmoticQuerySo.getYear();
// Date start = DateUtil.convertStringToDate(year + "-01-01 00:00:00");
// Date end = DateUtil.convertStringToDate(year + "-12-31 00:00:00");
// DateTimeRangeSo so = new DateTimeRangeSo();
// so.setStart(start);
// so.setEnd(end);
// osmoticQuerySo.setDateTimeRangeSo(so);
// return osmoticQuerySo;
// }
//
// public List<OsmoticStationVo> yearStat(OsmoticQuerySo osmoticQuerySo) {
// commonQueryHandle(osmoticQuerySo);
// return queryValue(osmoticQuerySo,osmoticQuerySo.getYear());
// }
//
// public List<OsmoticChartVo> yearStatValue(OsmoticQuerySo osmoticQuerySo) {
// commonQueryHandle(osmoticQuerySo);
// return queryChart(osmoticQuerySo,osmoticQuerySo.getYear());
// }
//
// public void yearStatExport(OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) {
// String headName = osmoticQuerySo.getProfileName() + "断面测压管水位(m)";
// String fileName = "断面年度渗压统计";
// String sheetName = "年度渗压统计";
// if(osmoticQuerySo.getType() == 1){
// fileName = osmoticQuerySo.getProfileName() + fileName;
// }else {
// headName = "渗流量(L/s)";
// fileName = "年度渗流统计";
// sheetName = "年度渗流统计";
// }
//
// //上方表格数据
// List<OsmoticStationVo> resList = yearStat(osmoticQuerySo);
// //下方特征值数据
// List<OsmoticChartVo> chartList = queryChart(osmoticQuerySo,osmoticQuerySo.getYear());
// List<String> stationCodes = osmoticQuerySo.getStationCodes();
// //表头信息
// List<List<String>> headList = new ArrayList<>();
// List<String> heads1 = new ArrayList<>();
// heads1.add("序号");
// heads1.add("序号");
// headList.add(heads1);
//
// List<String> heads2 = new ArrayList<>();
// heads2.add("监测日期");
// heads2.add("监测日期");
// headList.add(heads2);
//
// for(String code : stationCodes){
// List<String> heads = new ArrayList<>();
// heads.add(headName);
// heads.add(code);
// headList.add(heads);
// }
//
// List<String> heads3 = new ArrayList<>();
// heads3.add("库水位(m)");
// heads3.add("库水位(m)");
// headList.add(heads3);
//
// List<String> heads4 = new ArrayList<>();
// heads4.add("降雨量(mm)");
// heads4.add("降雨量(mm)");
// headList.add(heads4);
//
// List<Map<String, Object>> list = new ArrayList<>();
// for (int j = 0;j < resList.size(); j++) {
// OsmoticStationVo vo = resList.get(j);
// Map<String, Object> test = new LinkedHashMap<>();
// test.put("t0",j+1);
// test.put("t1", vo.getTm());
// for(int i = 0;i < stationCodes.size();i++){
// String code = stationCodes.get(i);
// OsmoticValueVo valueVo = vo.getList().stream().filter(o->code.equals(o.getStationCode())).findFirst().orElse(null);
// test.put(code,valueVo != null ? valueVo.getValue() : "");
// }
// test.put("t2", vo.getRz());
// test.put("t3", vo.getDrp());
// list.add(test);
// }
//
// Map<String, Object> max = new LinkedHashMap<>();
// max.put("t0","全年度特征值统计");
// max.put("t1", "最大值");
// for(int i = 0;i < stationCodes.size();i++){
// String code = stationCodes.get(i);
// max.put(code,chartList.stream().filter(o->code.equals(o.getStationCode())).findFirst().get().getMaxValue());
// }
// max.put("t2", chartList.stream().filter(o->"rz".equals(o.getStationCode())).findFirst().get().getMaxValue());
// max.put("t3", chartList.stream().filter(o->"drp".equals(o.getStationCode())).findFirst().get().getMaxValue());
// list.add(max);
//
// Map<String, Object> maxTm = new LinkedHashMap<>();
// maxTm.put("t0","全年度特征值统计");
// maxTm.put("t1", "日期");
// for(int i = 0;i < stationCodes.size();i++){
// String code = stationCodes.get(i);
// maxTm.put(code,chartList.stream().filter(o->code.equals(o.getStationCode())).findFirst().get().getMaxTm());
// }
// maxTm.put("t2", chartList.stream().filter(o->"rz".equals(o.getStationCode())).findFirst().get().getMaxTm());
// maxTm.put("t3", chartList.stream().filter(o->"drp".equals(o.getStationCode())).findFirst().get().getMaxTm());
// list.add(maxTm);
//
// Map<String, Object> min = new LinkedHashMap<>();
// min.put("t0","全年度特征值统计");
// min.put("t1", "最小值");
// for(int i = 0;i < stationCodes.size();i++){
// String code = stationCodes.get(i);
// min.put(code,chartList.stream().filter(o->code.equals(o.getStationCode())).findFirst().get().getMinValue());
// }
// min.put("t2", chartList.stream().filter(o->"rz".equals(o.getStationCode())).findFirst().get().getMinValue());
// min.put("t3", chartList.stream().filter(o->"drp".equals(o.getStationCode())).findFirst().get().getMinValue());
// list.add(min);
//
// Map<String, Object> minTm = new LinkedHashMap<>();
// minTm.put("t0","全年度特征值统计");
// minTm.put("t1", "日期");
// for(int i = 0;i < stationCodes.size();i++){
// String code = stationCodes.get(i);
// minTm.put(code,chartList.stream().filter(o->code.equals(o.getStationCode())).findFirst().get().getMinTm());
// }
// minTm.put("t2", chartList.stream().filter(o->"rz".equals(o.getStationCode())).findFirst().get().getMinTm());
// minTm.put("t3", chartList.stream().filter(o->"drp".equals(o.getStationCode())).findFirst().get().getMinTm());
// list.add(minTm);
//
// Map<String, Object> diff = new LinkedHashMap<>();
// diff.put("t0","全年度特征值统计");
// diff.put("t1", "年变幅");
// for(int i = 0;i < stationCodes.size();i++){
// String code = stationCodes.get(i);
// diff.put(code,chartList.stream().filter(o->code.equals(o.getStationCode())).findFirst().get().getDiff());
// }
// diff.put("t2", chartList.stream().filter(o->"rz".equals(o.getStationCode())).findFirst().get().getDiff());
// diff.put("t3", chartList.stream().filter(o->"drp".equals(o.getStationCode())).findFirst().get().getDiff());
// list.add(diff);
//
// ExcelUtil.exportExcel(headList, DataHandleUtil.tableData(list),2,new int[]{0},fileName,response,sheetName);
// }
//
// public List<OsmoticPressVo> listValue(Integer type) {
// List<OsmoticPressVo> list;
// if(type == 1){
// list = baseMapper.listValue();
// }else {
// list = baseMapper.flowListValue();
// }
// OsmoticQuerySo so = new OsmoticQuerySo();
// List<String> stationCodes = list.stream().map(OsmoticPressVo::getStationCode).collect(Collectors.toList());
// if(list.stream().filter(o->o.getTm() != null).collect(Collectors.toList()).size() > 0 ){
// String maxTm = list.stream().filter(o->o.getTm() != null).max(Comparator.comparing(OsmoticPressVo::getTm)).get().getTm();
// String minTm = list.stream().filter(o->o.getTm() != null).min(Comparator.comparing(OsmoticPressVo::getTm)).get().getTm();
// so.setStationCodes(stationCodes);
// DateTimeRangeSo dateTimeRangeSo = new DateTimeRangeSo();
// dateTimeRangeSo.setStart(DateUtil.convertStringToDate(minTm));
// dateTimeRangeSo.setEnd(DateUtil.convertStringToDate(maxTm));
// so.setDateTimeRangeSo(dateTimeRangeSo);
// List<OsmoticValueVo> warnList = baseMapper.queryWarn(so);
// list.stream().map(o->{
// if(o.getTm() != null && DateUtil.hoursBetweenDate(DateUtil.convertStringToDate(o.getTm()), new Date()) > 48){
// o.setFlag(1);
// }
// Boolean b = warnList.stream().filter(t->t.getStationCode().equals(o.getStationCode()) && t.getTm().equals(o.getTm())).findAny().isPresent();
// if(b){
// o.setStatus(1);
// }
// return o;
// }).collect(Collectors.toList());
// }
// return list;
// }
//
// public List<OsmoticPressDetailVo> detailValue(OsmoticDetailQuerySo so) {
// List<OsmoticPressDetailVo> list = baseMapper.detailValue(so);
// if(so.getType() == 2){
// return list;
// }
// OsmoticQuerySo osmoticQuerySo = new OsmoticQuerySo();
// BeanUtils.copyProperties(so,osmoticQuerySo);
// List<StRzVo> stRzVos = baseMapper.queryLineRz(osmoticQuerySo,shiftRService.getStcd());
// return bindPressDetail(list,stRzVos);
// }
//
// private List<OsmoticPressDetailVo> bindPressDetail(List<OsmoticPressDetailVo> list, List<StRzVo> stRzVos) {
// HashSet<String> strings = new HashSet<>();
// list.stream().forEach(v1 -> strings.add(v1.getTm()));
// stRzVos.stream().forEach(v1 -> strings.add(v1.getTm()));
//
// List<OsmoticPressDetailVo> result = new ArrayList<>();
// strings.stream().forEach(v1 ->{
// OsmoticPressDetailVo v = new OsmoticPressDetailVo();
// v.setTm(v1);
// result.add(v);
// });
//
// List<OsmoticPressDetailVo> resList = result.stream().map(v1 -> {
// stRzVos.stream().filter(v2 -> v1.getTm().equals(v2.getTm())).forEach(v2 -> {
// v1.setRz(v2.getRz());
// });
//
// list.stream().filter(v2 -> v1.getTm().equals(v2.getTm())).forEach(v2 -> {
// v1.setValue(v2.getValue());
// });
// return v1;
// }).collect(Collectors.toList());
// return resList.stream().sorted(Comparator.comparing(OsmoticPressDetailVo::getTm)).collect(Collectors.toList());
// }
//
// public Map<Integer, Integer> stat() {
// Map<Integer, Integer> map = new HashMap<>();
// List<OsmoticPressVo> press = this.listValue(1);
// Integer pressSize = press.size();
// Long pressWarn = press.stream().filter(o -> o.getStatus() == 1).collect(Collectors.counting());
//
// List<OsmoticPressVo> flow = this.listValue(2);
// Integer flowSize = flow.size();
// Long flowWarn = flow.stream().filter(o -> o.getStatus() == 1).collect(Collectors.counting());
//
// List<OsmoticShiftListVo> shift = shiftRService.listValue();
// Integer shiftSize = shift.size();
// Long shiftWarn = shift.stream().filter(o -> o.getXStatus() == 1 || o.getYStatus() ==1 || o.getHStatus() == 1).collect(Collectors.counting());
//
// Integer size = pressSize + flowSize + shiftSize;
// Integer warn = Stream.of(pressWarn, flowWarn, shiftWarn).mapToInt(Long::intValue).sum();
// map.put(warn,size);
// return map;
// }
//}
//
//