package com.se.simu.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.se.simu.domain.po.DataPo; import com.se.simu.domain.po.SimuPo; import com.se.simu.domain.vo.CreateSimuVo; import com.se.simu.domain.vo.R; import com.se.simu.domain.vo.SimuVo; import com.se.simu.helper.StringHelper; import com.se.simu.service.GedbService; import com.se.simu.service.SimuService; import io.swagger.annotations.*; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; /** * 仿真管理 * * @author WWW * @date 2024-09-18 */ @Api(tags = "仿真管理") @Slf4j @RestController @RequestMapping("/simu") @SuppressWarnings("ALL") public class SimuController extends BaseController { @Resource GedbService gedbService; @Resource SimuService simuService; private final List FLOOD_TYPE = new ArrayList<>(Arrays.asList("沙袋", "防水板")); @ApiOperation(value = "创建") @PostMapping(value = "/create", produces = "application/json; charset=UTF-8") public R create(@RequestBody @ApiParam("创建仿真视图类") CreateSimuVo vo) { try { if (null == vo.getTotal() || vo.getTotal() < 1 || vo.getTotal() > 1000) { return fail("降雨量不能为空,且取值在1~1000之间"); } if (null == vo.getDuration() || vo.getDuration() < 1 || vo.getDuration() > 120) { return fail("仿真时长不能为空,且取值在1~120之间"); } if (null == vo.getMinx() || null == vo.getMiny() || null == vo.getMaxx() || null == vo.getMaxy()) { return fail("选择范围不能为空", false); } if (null == vo.getPid() || vo.getPid() < 0) { vo.setPid(0); } if (StringHelper.isEmpty(vo.getName())) { vo.setName(StringHelper.YMDHMS2_FORMAT.format(new Date())); } if (null == vo.getNum() || vo.getNum() < 1) { vo.setNum(simuService.getMaxId() + 1); } if (null == vo.getPid() || vo.getPid() < 0) { vo.setPid(0); } if (vo.getPid() > 0) { SimuPo pp = simuService.getSimuByPid(vo.getPid()); if (null == pp) { return fail("pid不存在"); } if (null == vo.getFloodStart() || vo.getFloodStart() < 1 || vo.getFloodStart() > vo.getDuration() * 60) { return fail("防汛开始时间不能为空,且取值在1~" + (vo.getDuration() * 60) + "之间"); } if (null == vo.getFloodEnd() || vo.getFloodEnd() < vo.getFloodStart() || vo.getFloodEnd() > vo.getDuration() * 60) { return fail("防汛结束时间不能为空,且取值在" + vo.getFloodStart() + "~" + (vo.getDuration() * 60) + "之间"); } if (null == vo.getFloodHeight() || vo.getFloodHeight() < 1 || vo.getFloodHeight() > 2000) { return fail("防汛高度不能为空,且取值在1~2000之间"); } if (!FLOOD_TYPE.contains(vo.getFloodType())) { return fail("防汛类型不能为空,且只能是沙袋和防水板"); } if (null == vo.getFloodMinx() || null == vo.getFloodMiny() || null == vo.getFloodMaxx() || null == vo.getFloodMaxy()) { return fail("防汛范围不能为空", false); } } boolean flag = simuService.create(vo); return success(flag, flag ? "成功" : "失败"); } catch (Exception ex) { return fail(ex, null); } } @ApiOperation(value = "删除") @ApiImplicitParams({ @ApiImplicitParam(name = "ids", value = "ID", dataType = "Integer", paramType = "query", allowMultiple = true, example = "0") }) @GetMapping(value = "/del") public R del(@RequestParam List ids) { try { if (ids == null || ids.isEmpty()) { return fail("日志ID不能为空", null); } int count = simuService.del(ids); return success(count); } catch (Exception ex) { return fail(ex, null); } } @ApiOperation(value = "获取") @GetMapping("/get") public R get(@ApiParam("仿真视图类") SimuVo vo) { try { if (null == vo) { vo = new SimuVo(); } if (null == vo.getPageSize() || vo.getPageSize() < 1) { vo.setPageSize(10); } if (null == vo.getPageIndex() || vo.getPageIndex() < 1) { vo.setPageIndex(1); } IPage paged = simuService.get(vo); if (null == paged) { return success(null, 0); } return success(paged.getRecords(), paged.getTotal()); } catch (Exception ex) { return fail(ex, null); } } @ApiOperation(value = "Test *") @GetMapping("/test") public R test() { try { // 469538.6536261877,4416744.922022615,469853.14714664617,4417049.378602433 //String bbox = "116.64388473935195,39.884315914604464,116.64754729082588,39.887069143903496"; DataPo data = new DataPo("20240913", "20240913", "20240913", 116.64388473935195, 39.884315914604464, 116.64754729082588, 39.887069143903496, 50.0, 25); Object rs = gedbService.test(data); return success(rs); } catch (Exception ex) { return fail(ex, null); } } @ApiOperation(value = "当前时间 *") @GetMapping("/getTime") public Object getTime() { return System.currentTimeMillis(); } }