/*
|
* Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
|
*
|
* Redistribution and use in source and binary forms, with or without
|
* modification, are permitted provided that the following conditions are met:
|
*
|
* Redistributions of source code must retain the above copyright notice,
|
* this list of conditions and the following disclaimer.
|
* Redistributions in binary form must reproduce the above copyright
|
* notice, this list of conditions and the following disclaimer in the
|
* documentation and/or other materials provided with the distribution.
|
* Neither the name of the dreamlu.net developer nor the names of its
|
* contributors may be used to endorse or promote products derived from
|
* this software without specific prior written permission.
|
* Author: Chill 庄骞 (smallchill@163.com)
|
*/
|
package org.springblade.modules.floodinundation.controller;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiParam;
|
import lombok.AllArgsConstructor;
|
import org.springblade.core.boot.ctrl.BladeController;
|
import org.springblade.core.log.annotation.ApiLog;
|
import org.springblade.core.mp.support.Condition;
|
import org.springblade.core.mp.support.Query;
|
import org.springblade.core.tool.api.R;
|
import org.springblade.core.tool.utils.Func;
|
import org.springblade.modules.city.service.CityService;
|
import org.springblade.modules.dvoule.service.DvouleService;
|
import org.springblade.modules.floodinundation.entity.floodinundation;
|
import org.springblade.modules.floodinundation.service.IfloodinundationService;
|
import org.springblade.modules.floodinundation.vo.FloodinundationVO;
|
import org.springblade.modules.floodinundation.vo.FloodinundationsVOS;
|
import org.springblade.modules.floodinundation.wrapper.FloodinundationWrapper;
|
import org.springblade.modules.mountain.service.IMountainService;
|
import org.springblade.modules.mountainrain.service.IMountainrainService;
|
import org.springblade.modules.river.service.IRiverRService;
|
import org.springblade.modules.rsvr.service.IRsvrRService;
|
import org.springblade.modules.water.entity.water;
|
import org.springblade.modules.water.service.WaterService;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.multipart.MultipartFile;
|
import javax.validation.Valid;
|
import java.text.ParseException;
|
import java.text.SimpleDateFormat;
|
import java.util.*;
|
|
/**
|
* 控制器
|
*
|
* @author BladeX
|
* @since 2020-02-27
|
*/
|
@RestController
|
@AllArgsConstructor
|
@RequestMapping("/floodinundation")
|
@Api(value = "", tags = "接口")
|
public class FloodinundationController extends BladeController {
|
|
private IfloodinundationService ifloodinundationServicel;
|
private CityService cityService;
|
private IMountainService mountainService;
|
private IMountainrainService mountainrainService;
|
private IRsvrRService rsvrRService;
|
private IRiverRService riverRService;
|
private WaterService waterService;
|
private DvouleService dvouleService;
|
|
/**
|
* 详情
|
*/
|
@ApiLog("风险区详情")
|
@GetMapping("/detail")
|
@ApiOperationSupport(order = 1)
|
@ApiOperation(value = "详情", notes = "传入floodinundation")
|
public R detail(String id) {
|
return R.data(ifloodinundationServicel.selectfId(id));
|
}
|
|
/**
|
* 分页
|
*/
|
@ApiLog("风险区列表")
|
@GetMapping("/list")
|
@ApiOperationSupport(order = 2)
|
@ApiOperation(value = "分页", notes = "传入floodinundation")
|
public R<IPage<FloodinundationVO>> list(floodinundation floodinundation, Query query) {
|
IPage<floodinundation> pages = ifloodinundationServicel.page(Condition.getPage(query), Condition.getQueryWrapper(floodinundation));
|
return R.data(FloodinundationWrapper.build().pageVO(pages));
|
}
|
|
/**
|
* 分页
|
*/
|
@ApiLog("Blog详情")
|
@GetMapping("/listss")
|
@ApiOperation(value = "分页", notes = "传入floodinundation")
|
public R<List> listss(String query) {
|
List<floodinundation> list = ifloodinundationServicel.selectNoticeList(query);
|
return R.data(list);
|
}
|
|
|
/**
|
* 自定义分页
|
*/
|
@GetMapping("/page")
|
@ApiOperationSupport(order = 3)
|
@ApiOperation(value = "分页", notes = "传入floodinundation")
|
public R<IPage<FloodinundationVO>> page(FloodinundationVO floodinundationVO, Query query) {
|
IPage<FloodinundationVO> pages = ifloodinundationServicel.selectfloodinundationPage(Condition.getPage(query), floodinundationVO);
|
return R.data(pages);
|
}
|
|
/**
|
* 新增
|
*/
|
@PostMapping("/save")
|
@ApiOperationSupport(order = 4)
|
@ApiOperation(value = "新增", notes = "传入floodinundation")
|
public R save(@Valid @RequestBody floodinundation floodinundation) {
|
return R.status(ifloodinundationServicel.save(floodinundation));
|
}
|
|
/**
|
* 修改
|
*/
|
@ApiLog("Blog详情")
|
@PostMapping("/update")
|
@ApiOperationSupport(order = 5)
|
@ApiOperation(value = "修改", notes = "传入floodinundation")
|
public R update(@Valid @RequestBody floodinundation floodinundation) {
|
return R.status(ifloodinundationServicel.updateById(floodinundation));
|
}
|
|
/**
|
* 新增或修改
|
*/
|
@ApiLog("风险区新增修改")
|
@PostMapping("/submit")
|
@ApiOperationSupport(order = 6)
|
@ApiOperation(value = "新增或修改", notes = "传入floodinundation")
|
public R submit(@Valid @RequestBody floodinundation floodinundation) {
|
return R.status(ifloodinundationServicel.saveOrUpdate(floodinundation));
|
}
|
|
|
/**
|
* 删除
|
*/
|
@ApiLog("风险区删除")
|
@PostMapping("/remove")
|
@ApiOperationSupport(order = 7)
|
@ApiOperation(value = "逻辑删除", notes = "传入ids")
|
public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
|
return R.status(ifloodinundationServicel.removeByIds(Func.toLongList(ids)));
|
}
|
|
|
@ApiLog("风险区导入")
|
@RequestMapping(value = "/cs", method = RequestMethod.POST)
|
@ResponseBody
|
public R saveImg(@RequestParam("file") MultipartFile file) {
|
ifloodinundationServicel.upLoadFile(file);
|
return R.success("成功");
|
}
|
|
|
/**
|
* 洪水预警淹没区完善接口
|
*
|
* @return
|
*/
|
@ApiLog("Blog详情")
|
@GetMapping("/selectC")
|
public R selectC(String times, int k) {
|
Date date = null;
|
// 把Date按照格式转换成字符串
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
try {
|
date = sdf.parse(times);
|
} catch (ParseException e) {
|
e.printStackTrace();
|
}
|
String dateEnd = sdf.format(date);
|
|
List<Map<String, Object>> lists = new ArrayList<>();
|
List<Map<Object, String>> list=null;
|
//13库
|
if (k == 13) {
|
list = ifloodinundationServicel.selectCS(times, dateEnd);
|
}
|
int size = list.size();
|
/* String log = "水文站";
|
//根据名称查询
|
List<water> watersInfo = waterService.queryList(null, log);*/
|
String waterid;
|
String gl_code;
|
String zs;
|
Double dss;
|
Double bzgcs;
|
Double ds;
|
Double hz;
|
double d = 0;
|
double bzgc = 0;
|
for (int i = 0; i < size; i++) {
|
Map<String, Object> map = new HashMap<String, Object>();
|
waterid = list.get(i).get("default_smx");
|
//拿到站码
|
gl_code = list.get(i).get("gl_code");
|
//实时水位
|
zs = String.valueOf(list.get(i).get("Z"));
|
dss = Double.parseDouble(zs);
|
//水面线高程水位
|
bzgcs = Double.parseDouble(list.get(i).get("bzgc"));
|
//通过站码查询差值表的黄海高程
|
Map selecthz = dvouleService.selecthz(gl_code);
|
if (selecthz == null) {
|
d = dss;
|
bzgc = bzgcs;
|
} else {
|
double hzs = (double) selecthz.get("hz");
|
if (hzs <= 0) {
|
double abs = Math.abs(hzs);
|
d = dss - abs;
|
bzgc = bzgcs - abs;
|
} else {
|
d = dss + hzs;
|
bzgc = bzgcs + hzs;
|
}
|
}
|
//淹没区起点距
|
ds = Double.parseDouble(list.get(i).get("origin"));
|
//灾水位(85黄海)
|
hz = Double.parseDouble(list.get(i).get("hz"));
|
//根据id查询
|
List<water> waters = waterService.queryList(waterid, "");
|
if (waters.size() == 0) {
|
continue;
|
}
|
Double aDouble = ifloodinundationServicel.selectSS(waters, d, ds, bzgc);
|
if (aDouble < 0) {
|
continue;
|
} else {
|
//比较实时数据里的房屋高程数据与最新统计的水面线值对比
|
//(-0.5-0m)蓝色预警
|
double l = hz - 0.5;
|
//(0-1m)黄色预警
|
double h = hz + 1;
|
//(1-3m)橙色预警
|
double c = hz + 3;
|
//(>3)红色预警
|
if (aDouble < l) {
|
map.put("yj", "无预警");
|
list.get(i).put("aDouble", String.valueOf(aDouble));
|
map.put("List", list.get(i));
|
lists.add(map);
|
} else if (aDouble >= l && aDouble < hz) {
|
map.put("yj", "蓝色预警");
|
list.get(i).put("aDouble", String.valueOf(aDouble));
|
map.put("List", list.get(i));
|
lists.add(map);
|
} else if (aDouble >= hz && aDouble < h) {
|
map.put("yj", "黄色预警");
|
list.get(i).put("aDouble", String.valueOf(aDouble));
|
map.put("List", list.get(i));
|
lists.add(map);
|
} else if (aDouble >= h && aDouble < c) {
|
map.put("yj", "橙色预警");
|
list.get(i).put("aDouble", String.valueOf(aDouble));
|
map.put("List", list.get(i));
|
lists.add(map);
|
} else {
|
map.put("yj", "红色预警");
|
list.get(i).put("aDouble", String.valueOf(aDouble));
|
map.put("List", list.get(i));
|
lists.add(map);
|
}
|
}
|
|
}
|
return R.data(lists);
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|