/* * 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> list(floodinundation floodinundation, Query query) { IPage 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 listss(String query) { List list = ifloodinundationServicel.selectNoticeList(query); return R.data(list); } /** * 自定义分页 */ @GetMapping("/page") @ApiOperationSupport(order = 3) @ApiOperation(value = "分页", notes = "传入floodinundation") public R> page(FloodinundationVO floodinundationVO, Query query) { IPage 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> lists = new ArrayList<>(); List> list=null; //13库 if (k == 13) { list = ifloodinundationServicel.selectCS(times, dateEnd); } int size = list.size(); /* String log = "水文站"; //根据名称查询 List 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 map = new HashMap(); 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 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); } }