/* * 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.mountainrain.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 liquibase.pro.packaged.M; 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.mountain.entity.Mountain; import org.springblade.modules.mountain.service.IMountainService; import org.springblade.modules.mountain.vo.MountainVO; import org.springblade.modules.mountainrain.entity.Mountainrain; import org.springblade.modules.mountainrain.service.IMountainrainService; import org.springblade.modules.mountainrain.vo.*; import org.springblade.modules.mountainrain.wrapper.MountainrainWrapper; import org.springblade.modules.regionWeight.service.IRegionWeightService; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import springfox.documentation.annotations.ApiIgnore; import javax.validation.Valid; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; import java.util.*; /** * 控制器 * * @author BladeX * @since 2020-02-27 */ @RestController @AllArgsConstructor @RequestMapping("/mountainrain") @Component @Api(value = "", tags = "接口") public class MountainrainController extends BladeController { private IMountainrainService mountainrainService; private IMountainService mountainService; private final IRegionWeightService regionWeightService; /** * 分页 */ @GetMapping("/pages") public R> page(@ApiIgnore @RequestParam Map blog, Query query) { IPage pages = mountainrainService.page(Condition.getPage(query), Condition.getQueryWrapper(blog, Mountainrain.class)); return R.data(pages); } /** * 详情 */ @ApiLog("详情") @GetMapping("/detail") @ApiOperationSupport(order = 1) @ApiOperation(value = "详情", notes = "传入mountainrain") public R detail(Mountainrain mountainrain) { Mountainrain detail = mountainrainService.getOne(Condition.getQueryWrapper(mountainrain)); return R.data(MountainrainWrapper.build().entityVO(detail)); } /** * 详情 */ @ApiLog("详情") @GetMapping("/details") @ApiOperationSupport(order = 1) public R detail(String id) { return R.data(mountainrainService.selectInfo(id)); } /** * 分页 */ @GetMapping("/list") @ApiOperationSupport(order = 2) @ApiOperation(value = "分页", notes = "传入mountainrain") public R> list(Mountainrain mountainrain, Query query) { IPage pages = mountainrainService.page(Condition.getPage(query), Condition.getQueryWrapper(mountainrain)); return R.data(MountainrainWrapper.build().pageVO(pages)); } /** * 自定义分页 */ @GetMapping("/page") @ApiOperationSupport(order = 3) @ApiOperation(value = "分页", notes = "传入mountainrain") public R> page(MountainrainVO mountainrain, Query query) { IPage pages = mountainrainService.selectMountainrainPage(Condition.getPage(query), mountainrain); return R.data(pages); } /** * 新增 */ @PostMapping("/save") @ApiOperationSupport(order = 4) @ApiOperation(value = "新增", notes = "传入mountainrain") public R save(@Valid @RequestBody Mountainrain mountainrain) { return R.status(mountainrainService.save(mountainrain)); } /** * 修改 */ @PostMapping("/update") @ApiOperationSupport(order = 5) @ApiOperation(value = "修改", notes = "传入mountainrain") public R update(@Valid @RequestBody Mountainrain mountainrain) { return R.status(mountainrainService.updateById(mountainrain)); } /** * 新增或修改 */ @PostMapping("/submit") @ApiOperationSupport(order = 6) @ApiOperation(value = "新增或修改", notes = "传入mountainrain") public R submit(@Valid @RequestBody Mountainrain mountainrain) { return R.status(mountainrainService.saveOrUpdate(mountainrain)); } /** * 新增或修改 */ @PostMapping("/submits") public R submits(@Valid @RequestBody MountainrainSSVO mountainrain) { String crainfall = mountainrain.getCrainfall(); String cenconding = mountainrain.getCenconding(); String arainfall = mountainrain.getArainfall(); String aconding = mountainrain.getAconding(); Integer gohour = mountainrain.getGohour(); Integer gthour = mountainrain.getGthour(); Integer gshour = mountainrain.getGshour(); Integer imohour = mountainrain.getImohour(); Integer imthour = mountainrain.getImthour(); Integer imshour = mountainrain.getImshour(); Long id = mountainrain.getId(); //Long mid = mountainrain.getMid(); Mountainrain mountainrain1 = new Mountainrain(); mountainrain1.setCrainfall(crainfall); mountainrain1.setCenconding(cenconding); mountainrain1.setGohour(gohour); mountainrain1.setGthour(gthour); mountainrain1.setGshour(gshour); mountainrain1.setImohour(imohour); mountainrain1.setImthour(imthour); mountainrain1.setImshour(imshour); mountainrain1.setId(id); //山洪详情表数据修改 String township = mountainrain.getTownship(); String village = mountainrain.getVillage(); String villagegroup = mountainrain.getVillage_group(); String bw = mountainrain.getBw(); String dj = mountainrain.getDj(); String fyear = mountainrain.getFyear(); String tyear = mountainrain.getTyear(); String oyear = mountainrain.getOyear(); String county = mountainrain.getCounty(); Mountain mountain = new Mountain(); mountain.setCenconding(cenconding); mountain.setAconding(aconding); mountain.setTownship(township); mountain.setVillage(village); mountain.setVillage_group(villagegroup); mountain.setBw(bw); mountain.setDj(dj); mountain.setFyear(fyear); mountain.setTyear(tyear); mountain.setOyear(oyear); mountain.setCounty(county); //mountain.setId(mid); mountainrainService.saveOrUpdate(mountainrain1); mountainService.saveOrUpdate(mountain); return R.success("修改成功"); } /** * 新增或修改 */ @ApiLog("新增或修改") @PostMapping("/submitde") public R submitde(@Valid @RequestBody MountainrainSSVO mountainrain) { String crainfall = mountainrain.getCrainfall(); String cenconding = mountainrain.getCenconding(); String arainfall = mountainrain.getArainfall(); String aconding = mountainrain.getAconding(); Integer gohour = mountainrain.getGohour(); Integer gthour = mountainrain.getGthour(); Integer gshour = mountainrain.getGshour(); Integer imohour = mountainrain.getImohour(); Integer imthour = mountainrain.getImthour(); Integer imshour = mountainrain.getImshour(); Mountainrain mountainrain1 = new Mountainrain(); mountainrain1.setCrainfall(crainfall); mountainrain1.setCenconding(cenconding); mountainrain1.setGohour(gohour); mountainrain1.setGthour(gthour); mountainrain1.setGshour(gshour); mountainrain1.setImohour(imohour); mountainrain1.setImthour(imthour); mountainrain1.setImshour(imshour); //山洪详情表数据修改 String township = mountainrain.getTownship(); String village = mountainrain.getVillage(); String villagegroup = mountainrain.getVillage_group(); String bw = mountainrain.getBw(); String dj = mountainrain.getDj(); String fyear = mountainrain.getFyear(); String tyear = mountainrain.getTyear(); String oyear = mountainrain.getOyear(); String county = mountainrain.getCounty(); Mountain mountain = new Mountain(); mountain.setCenconding(cenconding); mountain.setAconding(aconding); mountain.setTownship(township); mountain.setVillage(village); mountain.setVillage_group(villagegroup); mountain.setBw(bw); mountain.setDj(dj); mountain.setFyear(fyear); mountain.setTyear(tyear); mountain.setOyear(oyear); mountain.setCounty(county); mountainrainService.saveOrUpdate(mountainrain1); mountainService.saveOrUpdate(mountain); return R.success("新增成功"); } /** * 删除 @PostMapping("/remove") @ApiOperationSupport(order = 7) @ApiOperation(value = "逻辑删除", notes = "传入ids") public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { return R.status(mountainrainService.deleteLogic(Func.toLongList(ids))); }*/ /** * 删除 */ @PostMapping("/remove") public R remove(@RequestParam String ids, String mid) { //mountainrainService.removeByIds(Func.toIntList(ids)); mountainService.removeByIds(Func.toIntList(mid)); return R.success("删除成功"); } /** * 顶级列表 */ @ApiLog("详情") @GetMapping("/parent-lists") @ApiOperation(value = "列表", notes = "传入dict") public R> parentList(@ApiIgnore @RequestParam Map blog, Query query) { return R.data(mountainrainService.parentList(blog, query)); } /** * 子列表 */ @ApiLog("详情") @GetMapping("/child-list") @ApiOperation(value = "列表", notes = "传入dict") public R> childList(@ApiIgnore @RequestParam Map dict, @RequestParam(required = false, defaultValue = "-1") String parentId, Query query) { return R.data(mountainService.childList(dict, parentId, query)); } @ApiLog("详情") @RequestMapping(value = "/cs", method = RequestMethod.POST) @ResponseBody public R saveImg(@RequestParam("file") MultipartFile file) { mountainrainService.upLoadFile(file); return R.success("成功"); } /** * 多表联合查询自定义分页 */ @ApiLog("详情") @GetMapping("/pagess") @ApiOperationSupport(order = 3) @ApiOperation(value = "分页", notes = "传入notice") public R> page(@ApiIgnore MountainrainSSVO mountainrainSSVO, Query query) { IPage pages = mountainrainService.selectNoticePage(Condition.getPage(query), mountainrainSSVO); return R.data(pages); } /** * 分页 */ @ApiLog("详情") @GetMapping("/listss") @ApiOperationSupport(order = 4) @ApiOperation(value = "分页", notes = "传入tmpR") public R> listss(String query) { List list = mountainrainService.selectNoticeList(query); return R.data(list); } /** * 山洪分析接口:按行政区分 */ @GetMapping("/queryXZ") public List queryXZ() { List list = mountainrainService.queryXZ(); return list; } /** * 山洪分析接口:按行政区分 */ @GetMapping("/queryZL") public List> queryZL() { List list = mountainrainService.queryZL(); List> data = new ArrayList<>(); for (int i = 0; i < list.size(); i++) { Map map = new HashMap<>(); if (list.get(i).getSttp() != null) { if (list.get(i).getSttp().equals("PP")) { map.put("name", "雨量站"); map.put("value", list.get(i).getCount()); } else if (list.get(i).getSttp().equals("ZQ")) { map.put("name", "水文站"); map.put("value", list.get(i).getCount()); } else if (list.get(i).getSttp().equals("ZZ")) { map.put("name", "水位站"); map.put("value", list.get(i).getCount()); } else if (list.get(i).getSttp().equals("RR")) { map.put("name", "水库站"); map.put("value", list.get(i).getCount()); } } data.add(map); } return data; } /** * 查询洪水预警 */ @ApiLog("查询洪水预警") @GetMapping("/ss") public R selectcInfos(int type, String time, String dateEnds1, String dateEnds3, String dateEnds6, String dateEnds24, int k, String timei) { if (type == 0 && k == 13) { //当前时间 String times = time; String dateEnd1 = dateEnds1; String timess = timei; //三个小时前的时间 String dateEnd3 = dateEnds3; //六个小时前的时间 String dateEnd6 = dateEnds6; //二十四个小时前的时间 String dateEnd24 = dateEnds24; //对应雨量站 long startTime = System.currentTimeMillis(); List mountainrainsCVOS = mountainrainService.selectcInfos(times, dateEnd24, dateEnd1, dateEnd3, dateEnd6, timess); List> lists = new ArrayList<>(); for (int i = 0; i < mountainrainsCVOS.size(); i++) { if (mountainrainsCVOS.get(i).getCenconding() == null) { continue; } Map map = new HashMap(); int Max = mountainrainService.Max(mountainrainsCVOS.get(i).getDrp1(), mountainrainsCVOS.get(i).getDrp3(), mountainrainsCVOS.get(i).getGohour(), mountainrainsCVOS.get(i).getGthour()); map.put("List", mountainrainsCVOS.get(i)); map.put("Max", Max); lists.add(map); } return R.data(lists); } else { //当前时间 String times = time; String dateEnd1 = dateEnds1; String timess = timei; //三个小时前的时间 String dateEnd3 = dateEnds3; //六个小时前的时间 String dateEnd6 = dateEnds6; //二十四个小时前的时间 String dateEnd24 = dateEnds24; //对应雨量站 List mountainrainsCVOS = mountainrainService.selectcInfo(times, dateEnd24, dateEnd1, dateEnd3, dateEnd6, timess); List> lists = new ArrayList<>(); for (int i = 0; i < mountainrainsCVOS.size(); i++) { Map map = new HashMap(); int Max = mountainrainService.Max(mountainrainsCVOS.get(i).getDrp1(), mountainrainsCVOS.get(i).getDrp3(), mountainrainsCVOS.get(i).getGohour(), mountainrainsCVOS.get(i).getGthour()); map.put("List", mountainrainsCVOS.get(i)); map.put("Max", Max); lists.add(map); } return R.data(lists); } } /** * 查询洪水预警 */ @ApiLog("查询洪水预警") @GetMapping("/sss") public R selectcInfoss(int type, String time, String dateEnds1, String dateEnds2, String dateEnds3) { //第二种方式预警 if (type == 0) { //当前时间 String times = time; String dateEnd1 = dateEnds1; //2个小时前的时间 String dateEnd2 = dateEnds2; //3个小时前的时间 String dateEnd3 = dateEnds3; //对应雨量站 String s = mountainrainService.selectCode(); String[] split = s.split(","); String strArrays = ""; for (int i = 0; i < split.length; i++) { strArrays += "'" + split[i] + "',"; } String code = strArrays.substring(0, strArrays.length() - 1); List mountainrainsCVOS = mountainrainService.Mountains(times, dateEnd1, dateEnd2, dateEnd3, code); List> lists = new ArrayList<>(); for (int i = 0; i < mountainrainsCVOS.size(); i++) { if (mountainrainsCVOS.get(i).getCenconding() == null) { continue; } Map map = new HashMap(); if (mountainrainsCVOS.get(i).getSoilval() > 30) { int Max = mountainrainService.Max(mountainrainsCVOS.get(i).getDrp1(), mountainrainsCVOS.get(i).getDrp3(), mountainrainsCVOS.get(i).getGohours(), mountainrainsCVOS.get(i).getGthours()); map.put("List", mountainrainsCVOS.get(i)); map.put("Max", Max); lists.add(map); } else { int Max = mountainrainService.Max(mountainrainsCVOS.get(i).getDrp1(), mountainrainsCVOS.get(i).getDrp3(), mountainrainsCVOS.get(i).getGohour(), mountainrainsCVOS.get(i).getGthour()); map.put("List", mountainrainsCVOS.get(i)); map.put("Max", Max); lists.add(map); } } return R.data(lists); } //第一种方式预警(雨量表数据) else { //当前时间 String times = time; //一个小时前的时间 String dateEnd1 = dateEnds1; //两个小时前的时间 String dateEnd2 = dateEnds2; //三个小时前的时间 String dateEnd3 = dateEnds3; String s = regionWeightService.selectCode(); String[] split = s.split(","); String strArrays = ""; for (int i = 0; i < split.length; i++) { strArrays += "'" + split[i] + "',"; } String code = strArrays.substring(0, strArrays.length() - 1); List> list = mountainrainService.selecMone(times, dateEnd1, dateEnd2, dateEnd3, code); List> lists = new ArrayList<>(); Map map = new HashMap(); for (int i = 0; i < list.size(); i++) { if (list.get(i).get("drp1") >= 30) { map.put("List", list.get(i)); map.put("Max", 1); } if (list.get(i).get("drp2") >= 50) { map.put("List", list.get(i)); map.put("Max", 2); } if (list.get(i).get("drp3") >= 80) { map.put("List", list.get(i)); map.put("Max", 3); } } lists.add(map); return R.data(lists); } } /** * 土壤湿度计算 * * @return */ //@Scheduled(cron = "0 0 8 * * ?") @GetMapping("/soleval") public R soleval() { mountainrainService.soildel(); int intervals = 31; ArrayList passDaysList = new ArrayList<>(); for (int i = 0; i < intervals; i++) { passDaysList.add(getDays(i, false)); } Collections.sort(passDaysList); String s = mountainrainService.selectCode(); //String s = "62310356,62310305"; String[] split = s.split(","); String strArrays = ""; for (int i = 0; i < split.length; i++) { strArrays += "'" + split[i] + "',"; } String code = strArrays.substring(0, strArrays.length() - 1); for (int i = 0; i < split.length; i++) { Integer num = 30; double v1 = 0; String stcd = null; for (int j = 0; j < passDaysList.size() - 1; j++) { List> map = mountainrainService.selectMtwo(passDaysList.get(j).toString(), passDaysList.get(j + 1).toString(), code); if (map.size()==0){ continue; } BigDecimal w = (BigDecimal) map.get(i).get("drp"); double drp = w.doubleValue(); stcd = map.get(i).get("STCD").toString(); //计算湿度 if (i == 0) { v1 = formatDouble1((num + drp) * 0.85); } else { v1 += drp; v1 = formatDouble1(v1 * 0.85); } } if (v1 > 60) { mountainrainService.soleInster(stcd, "60"); } else { String a = String.valueOf(v1); mountainrainService.soleInster(stcd, a); } } return R.success("成功"); } public static double formatDouble1(double d) { return (double) Math.round(d * 10) / 10; } private static String getDays(int i, boolean b) { Calendar calendar = Calendar.getInstance(); if (b) { calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + i); } else { calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - i); } Date today = calendar.getTime(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd 08:00:00"); String result = format.format(today); return result; } }