From 39caebba35fc84824f5cd51d189fe322d5145803 Mon Sep 17 00:00:00 2001
From: tangzy <tangzy123456>
Date: Tue, 09 Nov 2021 16:15:14 +0800
Subject: [PATCH] 1.山洪

---
 src/main/java/org/springblade/modules/mountainrain/controller/MountainrainController.java | 1445 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 1,413 insertions(+), 32 deletions(-)

diff --git a/src/main/java/org/springblade/modules/mountainrain/controller/MountainrainController.java b/src/main/java/org/springblade/modules/mountainrain/controller/MountainrainController.java
index 6ecac8b..8179737 100644
--- a/src/main/java/org/springblade/modules/mountainrain/controller/MountainrainController.java
+++ b/src/main/java/org/springblade/modules/mountainrain/controller/MountainrainController.java
@@ -20,9 +20,10 @@
 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.apache.poi.hssf.usermodel.*;
 import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.excel.util.ExcelUtil;
 import org.springblade.core.log.annotation.ApiLog;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
@@ -33,24 +34,32 @@
 import org.springblade.modules.mountain.vo.MountainVO;
 import org.springblade.modules.mountainrain.entity.Mountainrain;
 import org.springblade.modules.mountainrain.entity.Yucpptn;
+import org.springblade.modules.mountainrain.excel.BgrExcel;
+import org.springblade.modules.mountainrain.excel.BgrImporter;
+import org.springblade.modules.mountainrain.excel.MgrExcel;
+import org.springblade.modules.mountainrain.excel.MgrImporter;
 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.springblade.modules.system.excel.UserExcel;
+import org.springblade.modules.system.excel.UserImporter;
 import org.springframework.stereotype.Component;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 import springfox.documentation.annotations.ApiIgnore;
 
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
+import java.io.*;
 import java.math.BigDecimal;
+import java.net.URLEncoder;
+import java.sql.Timestamp;
 import java.text.DateFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.time.LocalDateTime;
-import java.time.temporal.ChronoUnit;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 控制器
@@ -493,11 +502,6 @@
 				}
 				Map<String, Object> map = new HashMap<String, Object>();
 				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);
 					//0.8雨量湿度
 					if (mountainrainsCVOS.get(i).getDrp1() > mountainrainsCVOS.get(i).getGohours()) {
 						map.put("List", mountainrainsCVOS.get(i));
@@ -520,11 +524,6 @@
 					}
 				} else {
 					//0.5雨量湿度
-					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);
 					if (mountainrainsCVOS.get(i).getDrp1() > mountainrainsCVOS.get(i).getGohour()) {
 						map.put("List", mountainrainsCVOS.get(i));
 						map.put("flage1", "true");
@@ -547,6 +546,87 @@
 				}
 
 			}
+			//色斑图
+			String file = "";
+			// 第一步,创建一个webbook,对应一个Excel文件
+			HSSFWorkbook wb = new HSSFWorkbook();
+			// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
+			HSSFSheet sheet = wb.createSheet("山洪预警表");
+			// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
+			HSSFRow row = sheet.createRow((int) 0);
+			// 第四步,创建单元格,并设置值表头 设置表头居中
+			HSSFCellStyle style = wb.createCellStyle();
+			//style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
+			HSSFCell cell = row.createCell((short) 0);
+			cell.setCellValue("lon");
+			cell = row.createCell((short) 1);
+			cell.setCellValue("lat");
+			cell = row.createCell((short) 2);
+			cell.setCellValue("rain");
+			for (int i = 0; i < mountainrainsCVOS.size(); i++) {
+				row = sheet.createRow((int) i + 1);
+				HSSFCell celli = row.createCell((short) 0);
+				row.createCell((short) 0).setCellValue(mountainrainsCVOS.get(i).getDj());
+				row.createCell((short) 1).setCellValue(mountainrainsCVOS.get(i).getBw());
+				if (mountainrainsCVOS.get(i).getCenconding() == null) {
+					continue;
+				}
+				if (mountainrainsCVOS.get(i).getSoilval() > 30) {
+					//0.8雨量湿度
+					if (mountainrainsCVOS.get(i).getDrp1() > mountainrainsCVOS.get(i).getGohours()) {
+						row.createCell((short) 2).setCellValue(2);
+						continue;
+					} else if (mountainrainsCVOS.get(i).getDrp3() > mountainrainsCVOS.get(i).getGthours()) {
+						row.createCell((short) 2).setCellValue(2);
+						continue;
+					} else {
+						row.createCell((short) 2).setCellValue(1);
+						continue;
+					}
+				} else {
+					//0.5雨量湿度
+					if (mountainrainsCVOS.get(i).getDrp1() > mountainrainsCVOS.get(i).getGohour()) {
+						row.createCell((short) 2).setCellValue(2);
+						continue;
+					} else if (mountainrainsCVOS.get(i).getDrp3() > mountainrainsCVOS.get(i).getGthour()) {
+						row.createCell((short) 2).setCellValue(2);
+						continue;
+					} else {
+						row.createCell((short) 2).setCellValue(1);
+						continue;
+					}
+				}
+			}
+			try {
+				file = "D:/mou.xlsx";
+				FileOutputStream fout = new FileOutputStream(file);
+				wb.write(fout);
+				fout.close();
+				wb.close();
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+			Process proc;
+			Timestamp timestamp = new Timestamp(System.currentTimeMillis());
+			long url = timestamp.getTime();
+			Map m = new HashMap();
+			m.put("url", url + ".png");
+			String[] args1 = new String[]{"python", "D:\\fz\\mou.py", String.valueOf(url)};
+			try {
+				proc = Runtime.getRuntime().exec(args1);
+				BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
+				String line = null;
+				while ((line = in.readLine()) != null) {
+					System.out.println(line);
+				}
+				in.close();
+				proc.waitFor();
+			} catch (IOException e) {
+				e.printStackTrace();
+			} catch (InterruptedException e) {
+				e.printStackTrace();
+			}
+			lists.add(m);
 			return R.data(lists);
 
 		}
@@ -565,7 +645,6 @@
 			String dateEnd3 = dateEnds3;
 
 			String s = regionWeightService.selectCode();
-			//String s = "62334490";
 			String[] split = s.split(",");
 			String strArrays = "";
 			for (int i = 0; i < split.length; i++) {
@@ -584,23 +663,98 @@
 				double drp3 = w3.doubleValue();
 				if (drp1 > 30) {
 					map.put("flage1", "true");
+				} else {
+					map.put("flage1", "false");
 				}
 				if (drp2 > 50) {
 					map.put("flage2", "true");
-					lists.add(map);
+				} else {
+					map.put("flage2", "false");
 				}
 				if (drp3 > 80) {
 					map.put("flage3", "true");
-					lists.add(map);
 				} else {
-					map.put("flage1", "false");
-					map.put("flage2", "false");
 					map.put("flage3", "false");
-					lists.add(map);
 				}
 				map.put("List", list.get(i));
 				lists.add(map);
 			}
+			String fileName = "";
+			// 第一步,创建一个webbook,对应一个Excel文件
+			HSSFWorkbook wb = new HSSFWorkbook();
+			// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
+			HSSFSheet sheet = wb.createSheet("山洪雨量表");
+			// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
+			HSSFRow row = sheet.createRow((int) 0);
+			// 第四步,创建单元格,并设置值表头 设置表头居中
+			HSSFCellStyle style = wb.createCellStyle();
+			//style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
+			HSSFCell cell = row.createCell((short) 0);
+			cell.setCellValue(new HSSFRichTextString("lon"));
+			cell = row.createCell((short) 1);
+			cell.setCellValue(new HSSFRichTextString("lat"));
+			cell = row.createCell((short) 2);
+			cell.setCellValue(new HSSFRichTextString("rain"));
+			for (int i = 0; i < list.size(); i++) {
+				// 第四步,创建单元格,并设置值
+				row = sheet.createRow((int) i + 1);
+				HSSFCell celli = row.createCell((short) 0);
+				BigDecimal w1 = (BigDecimal) list.get(i).get("drp1");
+				double drp1 = w1.doubleValue();
+				BigDecimal w2 = (BigDecimal) list.get(i).get("drp2");
+				double drp2 = w2.doubleValue();
+				BigDecimal w3 = (BigDecimal) list.get(i).get("drp3");
+				double drp3 = w3.doubleValue();
+				row.createCell((short) 0).setCellValue(list.get(i).get("LGTD").toString());
+				row.createCell((short) 1).setCellValue(list.get(i).get("LTTD").toString());
+				if (drp1 > 30) {
+					row.createCell((short) 2).setCellValue(2);
+					continue;
+				}
+				if (drp2 > 50) {
+					row.createCell((short) 2).setCellValue(2);
+					continue;
+				}
+				if (drp3 > 80) {
+					row.createCell((short) 2).setCellValue(2);
+					continue;
+
+				} else {
+					row.createCell((short) 2).setCellValue(1);
+					continue;
+				}
+			}
+			// 第六步,将文件存到指定位置
+			try {
+				fileName = "D:/moup.xlsx";
+				FileOutputStream fout = new FileOutputStream(fileName);
+				wb.write(fout);
+				fout.close();
+				wb.close();
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+			Process proc;
+			Timestamp timestamp = new Timestamp(System.currentTimeMillis());
+			long url = timestamp.getTime();
+			Map m = new HashMap();
+			m.put("url", url + ".png");
+			String[] args1 = new String[]{"python", "D:\\fz\\moup.py", String.valueOf(url)};
+			try {
+				proc = Runtime.getRuntime().exec(args1);
+				BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
+				String line = null;
+				while ((line = in.readLine()) != null) {
+					System.out.println(line);
+				}
+				in.close();
+				proc.waitFor();
+			} catch (IOException e) {
+				e.printStackTrace();
+			} catch (InterruptedException e) {
+				e.printStackTrace();
+			}
+			lists.add(m);
 			return R.data(lists);
 		}
 
@@ -612,15 +766,19 @@
 	 * @return
 	 */
 	@GetMapping("/soleval")
-	public R soleval() {
-		mountainrainService.soildel();
-		int intervals = 31;
+	public R soleval(String time, int b) {
+		//SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+		//String dateNow = sdf.format(new Date());
+		String dateNow = time;
+		//mountainrainService.soildel();
+		int intervals = 32 + b;
 		ArrayList passDaysList = new ArrayList<>();
-		for (int i = 0; i < intervals; i++) {
+		for (int i = 1 + b; i < intervals; i++) {
 			passDaysList.add(getDays(i, false));
 		}
 		Collections.sort(passDaysList);
-		String s = mountainrainService.selectCode();
+		//String s = mountainrainService.selectCode();
+		String s = regionWeightService.selectCode();
 		String[] split = s.split(",");
 		String strArrays = "";
 		for (int i = 0; i < split.length; i++) {
@@ -634,6 +792,7 @@
 			for (int j = 0; j < passDaysList.size() - 2; j++) {
 				List<Map<String, Object>> map = mountainrainService.selectMtwo(passDaysList.get(j).toString(), passDaysList.get(j + 1).toString(), code);
 				if (map.size() == 0 || i > map.size() - 1) {
+					//stcd=split[i];
 					break;
 				}
 				BigDecimal w = (BigDecimal) map.get(i).get("drp");
@@ -653,12 +812,15 @@
 					}
 				}
 			}
-			if (v1 > 60) {
-				mountainrainService.soleInster(stcd, "60");
-			} else {
-				String a = String.valueOf(v1);
-				mountainrainService.soleInster(stcd, a);
+			if (stcd != null) {
+				if (v1 > 60) {
+					mountainrainService.soleInster(stcd, "60", dateNow);
+				} else {
+					String a = String.valueOf(v1);
+					mountainrainService.soleInster(stcd, a, dateNow);
+				}
 			}
+
 		}
 
 		return R.success("成功");
@@ -691,7 +853,8 @@
 	 * @return
 	 */
 	@GetMapping("/yuc")
-	public R yuc(String addvcd, String time, String intv,String drp) throws ParseException {
+	public R yuc(String addvcd, String time, String intv, String drp, int type) throws ParseException {
+		mountainrainService.del();
 		List yucpptnList = new ArrayList<>();
 		//通过行政区查询站点编码
 		List<Map<String, Object>> list = mountainrainService.selectAddvcd(addvcd);
@@ -707,7 +870,1225 @@
 		}
 		//预警信息添加
 		mountainrainService.insertYuc(yucpptnList);
-		return R.data("");
+		//第二种预警
+		if (type == 0) {
+			List<MountainrainsCVO> mountainrainsCVOS = mountainrainService.selectYum();
+			List<Map<String, Object>> lists = new ArrayList<>();
+			for (int i = 0; i < mountainrainsCVOS.size(); i++) {
+				if (mountainrainsCVOS.get(i).getCenconding() == null) {
+					continue;
+				}
+				Map<String, Object> map = new HashMap<String, Object>();
+				if (mountainrainsCVOS.get(i).getSoilval() > 30) {
+					//0.8雨量湿度
+					if (mountainrainsCVOS.get(i).getDrp1() > mountainrainsCVOS.get(i).getGohours()) {
+						map.put("List", mountainrainsCVOS.get(i));
+						map.put("flage1", "true");
+						map.put("flage3", "false");
+						map.put("status", 2);
+						lists.add(map);
+					} else if (mountainrainsCVOS.get(i).getDrp3() > mountainrainsCVOS.get(i).getGthours()) {
+						map.put("List", mountainrainsCVOS.get(i));
+						map.put("flage1", "false");
+						map.put("flage3", "true");
+						map.put("status", 2);
+						lists.add(map);
+					} else {
+						map.put("List", mountainrainsCVOS.get(i));
+						map.put("flage1", "false");
+						map.put("flage3", "false");
+						map.put("status", 2);
+						lists.add(map);
+					}
+				} else {
+					//0.5雨量湿度
+					int Max = mountainrainService.Max(mountainrainsCVOS.get(i).getDrp1(), mountainrainsCVOS.get(i).getDrp3(),
+						mountainrainsCVOS.get(i).getGohour(), mountainrainsCVOS.get(i).getGthour());
+					if (mountainrainsCVOS.get(i).getDrp1() > mountainrainsCVOS.get(i).getGohour()) {
+						map.put("List", mountainrainsCVOS.get(i));
+						map.put("flage1", "true");
+						map.put("flage3", "false");
+						map.put("status", 1);
+						lists.add(map);
+					} else if (mountainrainsCVOS.get(i).getDrp3() > mountainrainsCVOS.get(i).getGthour()) {
+						map.put("List", mountainrainsCVOS.get(i));
+						map.put("flage1", "false");
+						map.put("flage3", "true");
+						map.put("status", 1);
+						lists.add(map);
+					} else {
+						map.put("List", mountainrainsCVOS.get(i));
+						map.put("flage1", "false");
+						map.put("flage3", "false");
+						map.put("status", 1);
+						lists.add(map);
+					}
+				}
+
+			}
+			return R.data(lists);
+		} else {
+			//第一种方式预警(雨量表)
+			List<Map<String, Object>> list1 = mountainrainService.selectYup();
+			List<Map<String, Object>> listyp = new ArrayList<>();
+			for (int i = 0; i < list.size(); i++) {
+				Map<String, Object> map = new HashMap<String, Object>();
+				String w1 = list1.get(i).get("drp").toString();
+				double drp1 = Double.parseDouble(w1);
+				String intv1 = list1.get(i).get("INTV").toString();
+				//一小时预警
+				if (intv1.equals("1")) {
+					if (drp1 > 30) {
+						map.put("flage1", "true");
+						map.put("flage2", "false");
+						map.put("flage3", "false");
+					} else {
+						map.put("flage1", "false");
+						map.put("flage2", "false");
+						map.put("flage3", "false");
+					}
+				} else if (intv1.equals("2")) {
+					if (drp1 > 50) {
+						map.put("flage2", "true");
+						map.put("flage1", "false");
+						map.put("flage3", "false");
+					} else {
+						map.put("flage1", "false");
+						map.put("flage2", "false");
+						map.put("flage3", "false");
+					}
+				} else {
+					if (drp1 > 80) {
+						map.put("flage3", "true");
+						map.put("flage1", "false");
+						map.put("flage2", "false");
+					} else {
+						map.put("flage1", "false");
+						map.put("flage2", "false");
+						map.put("flage3", "false");
+					}
+				}
+				map.put("List", list1.get(i));
+				listyp.add(map);
+			}
+			return R.data(listyp);
+		}
 	}
 
+	/**
+	 * 中小河流预警
+	 *
+	 * @return
+	 */
+	@GetMapping("/selectsmriver")
+	public R selectsmriver(String time) throws ParseException {
+		Date date = null;
+		// 把Date按照格式转换成字符串
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+		try {
+			date = sdf.parse(time);
+		} catch (ParseException e) {
+			e.printStackTrace();
+		}
+		String dateEnd = sdf.format(date);
+		DateFormat sdfc = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+		Date datess = sdfc.parse(time);
+		String now = sdfc.format(datess);
+		//当前时间的前24小时
+		Date beforeHour1 = beforeHourToNowDate(now, 24);
+		String begintime24 = sdf.format(beforeHour1);
+		List<Map<String, Object>> selctsmriver = mountainrainService.selctsmriver(time, dateEnd, begintime24);
+		//预警数据
+		List listyj = new ArrayList();
+		//无预警数据
+		List listzc = new ArrayList();
+		for (int i = 0; i < selctsmriver.size(); i++) {
+			//警戒水位
+			String yjsw = selctsmriver.get(i).get("yjsw").toString();
+			Double yjz = Double.parseDouble(yjsw);
+			//水位
+			String zs = selctsmriver.get(i).get("Z").toString();
+			Double z = Double.parseDouble(zs);
+			if (z > yjz) {
+				listyj.add(selctsmriver.get(i));
+			} else {
+				listzc.add(selctsmriver.get(i));
+			}
+		}
+		Map map = new HashMap();
+		map.put("yj", listyj);
+		map.put("zc", listzc);
+		List list = new ArrayList();
+		list.add(map);
+		return R.data(list);
+	}
+
+
+	/**
+	 * 大江大河预警
+	 *
+	 * @return
+	 */
+	@GetMapping("/selectbgriver")
+	public R selectbgriver(String time) throws ParseException {
+		Date date = null;
+		// 把Date按照格式转换成字符串
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+		try {
+			date = sdf.parse(time);
+		} catch (ParseException e) {
+			e.printStackTrace();
+		}
+		String dateEnd = sdf.format(date);
+		DateFormat sdfc = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+		Date datess = sdfc.parse(time);
+		String now = sdfc.format(datess);
+		//当前时间的前24小时
+		Date beforeHour1 = beforeHourToNowDate(now, 24);
+		String begintime24 = sdf.format(beforeHour1);
+		List<Map<String, Object>> selctsmriver = mountainrainService.selctbgriver(time, dateEnd, begintime24);
+		//预警数据
+		List listyj = new ArrayList();
+		//无预警数据
+		List listzc = new ArrayList();
+		for (int i = 0; i < selctsmriver.size(); i++) {
+			//警戒水位
+			String yjsw = selctsmriver.get(i).get("yjsw").toString();
+			Double yjz = Double.parseDouble(yjsw);
+			//水位
+			String zs = selctsmriver.get(i).get("Z").toString();
+			Double z = Double.parseDouble(zs);
+			if (z > yjz) {
+				listyj.add(selctsmriver.get(i));
+			} else {
+				listzc.add(selctsmriver.get(i));
+			}
+		}
+		Map map = new HashMap();
+		map.put("yj", listyj);
+		map.put("zc", listzc);
+		List list = new ArrayList();
+		list.add(map);
+		return R.data(list);
+	}
+
+	/**
+	 * 土壤
+	 *
+	 * @return
+	 */
+	@GetMapping("/selectTu")
+	public R selectTu() {
+		List<Map<String, Object>> maps = mountainrainService.selectTu();
+		List<Map<Object, Object>> list = new ArrayList();
+		//镇
+		List<Map<Object, Object>> listz = new ArrayList();
+		//乡
+		List<Map<Object, Object>> listx = new ArrayList();
+		Map mapZ = new HashMap();
+		for (int i = 0; i < maps.size(); i++) {
+			Map map = new HashMap();
+			String village = maps.get(i).get("village").toString();
+			String soilval = maps.get(i).get("soilval").toString();
+			String county = maps.get(i).get("county").toString();
+			String cenconding = maps.get(i).get("cenconding").toString();
+			//土壤湿度
+			Double soilv = Double.parseDouble(soilval);
+			boolean status = village.contains("镇");
+			if (status) {
+				String str1 = village.substring(0, village.indexOf("镇") + 1);
+				map.put("name", str1);
+				map.put("soilv", soilv);
+				map.put("addvnm", county);
+				map.put("cenconding", cenconding);
+				listz.add(map);
+			} else {
+				String str2 = village.substring(0, village.indexOf("乡") + 1);
+				map.put("name", str2);
+				map.put("soilv", soilv);
+				map.put("addvnm", county);
+				map.put("cenconding", cenconding);
+				listx.add(map);
+			}
+		}
+		System.out.println("镇" + listz.size());
+		System.out.println("乡" + listx.size());
+		Map<String, List<Map<Object, Object>>> mapMap = new HashMap<>();
+		for (Map<Object, Object> newMap : listz) {
+			List<Map<Object, Object>> newl = new ArrayList<>();
+			// map是否包含此key,若已经包含则添加一个新的数字到对应value集合中
+			if (mapMap.containsKey(newMap.get("name").toString())) {
+				//mapList.add(Integer.valueOf(newMap.get("C").toString()),newMap);
+				mapMap.get(newMap.get("name").toString()).add(newMap);
+			} else {
+				newl.add(newMap);
+				mapMap.put(newMap.get("name").toString(), newl);
+			}
+		}
+		mapZ.put("listz", mapMap);
+		//乡
+		Map<String, List<Map<Object, Object>>> mapMapx = new HashMap<>();
+		for (Map<Object, Object> newMap : listx) {
+			List<Map<Object, Object>> newl = new ArrayList<>();
+			// map是否包含此key,若已经包含则添加一个新的数字到对应value集合中
+			if (mapMapx.containsKey(newMap.get("name").toString())) {
+				//mapList.add(Integer.valueOf(newMap.get("C").toString()),newMap);
+				mapMapx.get(newMap.get("name").toString()).add(newMap);
+			} else {
+				newl.add(newMap);
+				mapMapx.put(newMap.get("name").toString(), newl);
+			}
+		}
+		mapZ.put("listx", mapMapx);
+		list.add(mapZ);
+		return R.data(list);
+	}
+
+	/**
+	 * 查询预警1小时
+	 */
+	@GetMapping("/Yi")
+	public R Yi(int type, String time, String dateEnds1) {
+		//第二种方式预警
+		if (type == 0) {
+			//当前时间
+			String times = time;
+
+			String dateEnd1 = dateEnds1;
+			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+			Date date = null;
+			try {
+				date = sdf.parse(time);
+			} catch (ParseException e) {
+				e.printStackTrace();
+			}
+			String stime = sdf.format(date);
+			//对应雨量站
+			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<MountainrainsCVO> mountainrainsCVOS = mountainrainService.MountainYi(times, dateEnd1, code, stime);
+			List<Map<String, Object>> lists = new ArrayList<>();
+			for (int i = 0; i < mountainrainsCVOS.size(); i++) {
+				if (mountainrainsCVOS.get(i).getCenconding() == null) {
+					continue;
+				}
+				Map<String, Object> map = new HashMap<String, Object>();
+				if (mountainrainsCVOS.get(i).getSoilval() > 30) {
+					//0.8雨量湿度
+					if (mountainrainsCVOS.get(i).getDrp1() > mountainrainsCVOS.get(i).getGohours()) {
+						int drp1 = mountainrainsCVOS.get(i).getDrp1();
+						Integer gohours = mountainrainsCVOS.get(i).getGohours();
+						float i1 = (float) drp1 - gohours;
+						float v = (float) (Math.round(i1 * 10)) / 10;
+						String a = String.valueOf(v);
+						map.put("List", mountainrainsCVOS.get(i));
+						map.put("flage1", "true");
+						map.put("status", 2);
+						map.put("num", a);
+						lists.add(map);
+					} else {
+						map.put("List", mountainrainsCVOS.get(i));
+						map.put("flage1", "false");
+						map.put("status", 2);
+						lists.add(map);
+					}
+				} else {
+					//0.5雨量湿度
+					if (mountainrainsCVOS.get(i).getDrp1() > mountainrainsCVOS.get(i).getGohour()) {
+						int drp1 = mountainrainsCVOS.get(i).getDrp1();
+						Integer gohour = mountainrainsCVOS.get(i).getGohour();
+						float i1 = (float) drp1 - gohour;
+						float v = (float) (Math.round(i1 * 10)) / 10;
+						String a = String.valueOf(v);
+						map.put("List", mountainrainsCVOS.get(i));
+						map.put("flage1", "true");
+						map.put("status", 1);
+						map.put("num", a);
+						lists.add(map);
+					} else {
+						map.put("List", mountainrainsCVOS.get(i));
+						map.put("flage1", "false");
+						map.put("status", 1);
+						lists.add(map);
+					}
+				}
+
+			}
+			Timestamp timestamp = new Timestamp(System.currentTimeMillis());
+			long url = timestamp.getTime();
+			Map m = new HashMap();
+			m.put("url", url + ".png");
+			lists.add(m);
+			Thread thread = new Thread(new Runnable() {
+				@Override
+				public void run() {
+					//色斑图
+					String file = "";
+					// 第一步,创建一个webbook,对应一个Excel文件
+					HSSFWorkbook wb = new HSSFWorkbook();
+					// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
+					HSSFSheet sheet = wb.createSheet("山洪预警表");
+					// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
+					HSSFRow row = sheet.createRow((int) 0);
+					// 第四步,创建单元格,并设置值表头 设置表头居中
+					HSSFCellStyle style = wb.createCellStyle();
+					//style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
+					HSSFCell cell = row.createCell((short) 0);
+					cell.setCellValue("lon");
+					cell = row.createCell((short) 1);
+					cell.setCellValue("lat");
+					cell = row.createCell((short) 2);
+					cell.setCellValue("rain");
+					for (int i = 0; i < mountainrainsCVOS.size(); i++) {
+						row = sheet.createRow((int) i + 1);
+						HSSFCell celli = row.createCell((short) 0);
+						row.createCell((short) 0).setCellValue(mountainrainsCVOS.get(i).getDj());
+						row.createCell((short) 1).setCellValue(mountainrainsCVOS.get(i).getBw());
+						if (mountainrainsCVOS.get(i).getCenconding() == null) {
+							continue;
+						}
+						if (mountainrainsCVOS.get(i).getSoilval() > 30) {
+							//0.8雨量湿度
+							if (mountainrainsCVOS.get(i).getDrp1() > mountainrainsCVOS.get(i).getGohours()) {
+								row.createCell((short) 2).setCellValue(2);
+								continue;
+							} else {
+								row.createCell((short) 2).setCellValue(1);
+								continue;
+							}
+						} else {
+							//0.5雨量湿度
+							if (mountainrainsCVOS.get(i).getDrp1() > mountainrainsCVOS.get(i).getGohour()) {
+								row.createCell((short) 2).setCellValue(2);
+								continue;
+							} else {
+								row.createCell((short) 2).setCellValue(1);
+								continue;
+							}
+						}
+					}
+					try {
+						file = "D:/mou.xlsx";
+						FileOutputStream fout = new FileOutputStream(file);
+						wb.write(fout);
+						fout.close();
+						wb.close();
+					} catch (Exception e) {
+						e.printStackTrace();
+					}
+					Process proc;
+					String[] args1 = new String[]{"python", "D:\\fz\\mou.py", String.valueOf(url)};
+					try {
+						proc = Runtime.getRuntime().exec(args1);
+						BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
+						String line = null;
+						while ((line = in.readLine()) != null) {
+							System.out.println(line);
+						}
+						in.close();
+						proc.waitFor();
+					} catch (IOException e) {
+						e.printStackTrace();
+					} catch (InterruptedException e) {
+						e.printStackTrace();
+					}
+				}
+			});
+			thread.start();
+			return R.data(lists);
+
+		}
+		//第一种方式预警(雨量表数据)
+		else {
+			//当前时间
+			String times = time;
+
+			//一个小时前的时间
+			String dateEnd1 = dateEnds1;
+
+			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<Map<String, Object>> list = mountainrainService.selecMoneYi(times, dateEnd1, code);
+			List<Map<String, Object>> lists = new ArrayList<>();
+			for (int i = 0; i < list.size(); i++) {
+				Map<String, Object> map = new HashMap<String, Object>();
+				BigDecimal w1 = (BigDecimal) list.get(i).get("drp1");
+				double drp1 = w1.doubleValue();
+				if (drp1 > 30) {
+					double v = drp1 - 30;
+					double v1 = (double) Math.round(v * 100) / 100;
+					String a = String.valueOf(v1);
+					map.put("flage1", "true");
+					map.put("num", a);
+				} else {
+					map.put("flage1", "false");
+				}
+				map.put("List", list.get(i));
+				lists.add(map);
+			}
+			Timestamp timestamp = new Timestamp(System.currentTimeMillis());
+			long url = timestamp.getTime();
+			Map m = new HashMap();
+			m.put("url", url + ".png");
+			lists.add(m);
+			Thread thread = new Thread(new Runnable() {
+				@Override
+				public void run() {
+					String fileName = "";
+					// 第一步,创建一个webbook,对应一个Excel文件
+					HSSFWorkbook wb = new HSSFWorkbook();
+					// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
+					HSSFSheet sheet = wb.createSheet("山洪雨量表");
+					// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
+					HSSFRow row = sheet.createRow((int) 0);
+					// 第四步,创建单元格,并设置值表头 设置表头居中
+					HSSFCellStyle style = wb.createCellStyle();
+					//style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
+					HSSFCell cell = row.createCell((short) 0);
+					cell.setCellValue(new HSSFRichTextString("lon"));
+					cell = row.createCell((short) 1);
+					cell.setCellValue(new HSSFRichTextString("lat"));
+					cell = row.createCell((short) 2);
+					cell.setCellValue(new HSSFRichTextString("rain"));
+					for (int i = 0; i < list.size(); i++) {
+						// 第四步,创建单元格,并设置值
+						row = sheet.createRow((int) i + 1);
+						HSSFCell celli = row.createCell((short) 0);
+						BigDecimal w1 = (BigDecimal) list.get(i).get("drp1");
+						double drp1 = w1.doubleValue();
+						row.createCell((short) 0).setCellValue(list.get(i).get("LGTD").toString());
+						row.createCell((short) 1).setCellValue(list.get(i).get("LTTD").toString());
+						if (drp1 > 30) {
+							row.createCell((short) 2).setCellValue(2);
+							continue;
+						} else {
+							row.createCell((short) 2).setCellValue(1);
+							continue;
+						}
+					}
+					// 第六步,将文件存到指定位置
+					try {
+						fileName = "D:/moup.xlsx";
+						FileOutputStream fout = new FileOutputStream(fileName);
+						wb.write(fout);
+						fout.close();
+						wb.close();
+					} catch (Exception e) {
+						e.printStackTrace();
+					}
+					Process proc;
+					String[] args1 = new String[]{"python", "D:\\fz\\moup.py", String.valueOf(url)};
+					try {
+						proc = Runtime.getRuntime().exec(args1);
+						BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
+						String line = null;
+						while ((line = in.readLine()) != null) {
+							System.out.println(line);
+						}
+						in.close();
+						proc.waitFor();
+					} catch (IOException e) {
+						e.printStackTrace();
+					} catch (InterruptedException e) {
+						e.printStackTrace();
+					}
+				}
+			});
+			thread.start();
+			return R.data(lists);
+		}
+
+	}
+
+	/**
+	 * 查询预警2小时
+	 */
+	@GetMapping("/Tw")
+	public R Tw(int type, String time, String dateEnds2) {
+		//第二种方式预警
+		if (type == 0) {
+			//当前时间
+			String times = time;
+
+			//2个小时前的时间
+			String dateEnd2 = dateEnds2;
+			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+			Date date = null;
+			try {
+				date = sdf.parse(time);
+			} catch (ParseException e) {
+				e.printStackTrace();
+			}
+			String stime = sdf.format(date);
+			//对应雨量站
+			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<MountainrainsCVO> mountainrainsCVOS = mountainrainService.MountainTw(times, dateEnd2, code, stime);
+			List<Map<String, Object>> lists = new ArrayList<>();
+			for (int i = 0; i < mountainrainsCVOS.size(); i++) {
+				if (mountainrainsCVOS.get(i).getCenconding() == null) {
+					continue;
+				}
+				Map<String, Object> map = new HashMap<String, Object>();
+				if (mountainrainsCVOS.get(i).getSoilval() > 30) {
+					//0.8雨量湿度
+					if (mountainrainsCVOS.get(i).getDrp1() > mountainrainsCVOS.get(i).getGohours()) {
+						int drp1 = mountainrainsCVOS.get(i).getDrp1();
+						Integer gohours = mountainrainsCVOS.get(i).getGohours();
+						float i1 = (float) drp1 - gohours;
+						float v = (float) (Math.round(i1 * 10)) / 10;
+						String a = String.valueOf(v);
+						map.put("List", mountainrainsCVOS.get(i));
+						map.put("flage1", "true");
+						map.put("flage3", "false");
+						map.put("status", 2);
+						map.put("num", a);
+						lists.add(map);
+					} else if (mountainrainsCVOS.get(i).getDrp3() > mountainrainsCVOS.get(i).getGthours()) {
+						map.put("List", mountainrainsCVOS.get(i));
+						map.put("flage1", "false");
+						map.put("flage3", "true");
+						map.put("status", 2);
+						lists.add(map);
+					} else {
+						map.put("List", mountainrainsCVOS.get(i));
+						map.put("flage1", "false");
+						map.put("flage3", "false");
+						map.put("status", 2);
+						lists.add(map);
+					}
+				} else {
+					//0.5雨量湿度
+					if (mountainrainsCVOS.get(i).getDrp1() > mountainrainsCVOS.get(i).getGohour()) {
+						int drp1 = mountainrainsCVOS.get(i).getDrp1();
+						Integer gohour = mountainrainsCVOS.get(i).getGohour();
+						float i1 = (float) drp1 - gohour;
+						float v = (float) (Math.round(i1 * 10)) / 10;
+						String a = String.valueOf(v);
+						map.put("List", mountainrainsCVOS.get(i));
+						map.put("flage1", "true");
+						map.put("flage3", "false");
+						map.put("status", 1);
+						map.put("num", a);
+						lists.add(map);
+					} else if (mountainrainsCVOS.get(i).getDrp3() > mountainrainsCVOS.get(i).getGthour()) {
+						map.put("List", mountainrainsCVOS.get(i));
+						map.put("flage1", "false");
+						map.put("flage3", "true");
+						map.put("status", 1);
+						lists.add(map);
+					} else {
+						map.put("List", mountainrainsCVOS.get(i));
+						map.put("flage1", "false");
+						map.put("flage3", "false");
+						map.put("status", 1);
+						lists.add(map);
+					}
+				}
+
+			}
+			Timestamp timestamp = new Timestamp(System.currentTimeMillis());
+			long url = timestamp.getTime();
+			Map m = new HashMap();
+			m.put("url", url + ".png");
+			lists.add(m);
+			Thread thread = new Thread(new Runnable() {
+				@Override
+				public void run() {
+					//色斑图
+					String file = "";
+					// 第一步,创建一个webbook,对应一个Excel文件
+					HSSFWorkbook wb = new HSSFWorkbook();
+					// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
+					HSSFSheet sheet = wb.createSheet("山洪预警表");
+					// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
+					HSSFRow row = sheet.createRow((int) 0);
+					// 第四步,创建单元格,并设置值表头 设置表头居中
+					HSSFCellStyle style = wb.createCellStyle();
+					//style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
+					HSSFCell cell = row.createCell((short) 0);
+					cell.setCellValue("lon");
+					cell = row.createCell((short) 1);
+					cell.setCellValue("lat");
+					cell = row.createCell((short) 2);
+					cell.setCellValue("rain");
+					for (int i = 0; i < mountainrainsCVOS.size(); i++) {
+						row = sheet.createRow((int) i + 1);
+						HSSFCell celli = row.createCell((short) 0);
+						row.createCell((short) 0).setCellValue(mountainrainsCVOS.get(i).getDj());
+						row.createCell((short) 1).setCellValue(mountainrainsCVOS.get(i).getBw());
+						if (mountainrainsCVOS.get(i).getCenconding() == null) {
+							continue;
+						}
+						if (mountainrainsCVOS.get(i).getSoilval() > 30) {
+							//0.8雨量湿度
+							if (mountainrainsCVOS.get(i).getDrp1() > mountainrainsCVOS.get(i).getGohours()) {
+								row.createCell((short) 2).setCellValue(2);
+								continue;
+							} else if (mountainrainsCVOS.get(i).getDrp3() > mountainrainsCVOS.get(i).getGthours()) {
+								row.createCell((short) 2).setCellValue(2);
+								continue;
+							} else {
+								row.createCell((short) 2).setCellValue(1);
+								continue;
+							}
+						} else {
+							//0.5雨量湿度
+							if (mountainrainsCVOS.get(i).getDrp1() > mountainrainsCVOS.get(i).getGohour()) {
+								row.createCell((short) 2).setCellValue(2);
+								continue;
+							} else if (mountainrainsCVOS.get(i).getDrp3() > mountainrainsCVOS.get(i).getGthour()) {
+								row.createCell((short) 2).setCellValue(2);
+								continue;
+							} else {
+								row.createCell((short) 2).setCellValue(1);
+								continue;
+							}
+						}
+					}
+					try {
+						file = "D:/mou.xlsx";
+						FileOutputStream fout = new FileOutputStream(file);
+						wb.write(fout);
+						fout.close();
+						wb.close();
+					} catch (Exception e) {
+						e.printStackTrace();
+					}
+					Process proc;
+					String[] args1 = new String[]{"python", "D:\\fz\\mou.py", String.valueOf(url)};
+					try {
+						proc = Runtime.getRuntime().exec(args1);
+						BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
+						String line = null;
+						while ((line = in.readLine()) != null) {
+							System.out.println(line);
+						}
+						in.close();
+						proc.waitFor();
+					} catch (IOException e) {
+						e.printStackTrace();
+					} catch (InterruptedException e) {
+						e.printStackTrace();
+					}
+				}
+			});
+			thread.start();
+			return R.data(lists);
+
+		}
+		//第一种方式预警(雨量表数据)
+		else {
+			//当前时间
+			String times = time;
+
+			//两个小时前的时间
+			String dateEnd2 = dateEnds2;
+
+			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<Map<String, Object>> list = mountainrainService.selecMoneYi(times, dateEnd2, code);
+			List<Map<String, Object>> lists = new ArrayList<>();
+			for (int i = 0; i < list.size(); i++) {
+				Map<String, Object> map = new HashMap<String, Object>();
+				BigDecimal w1 = (BigDecimal) list.get(i).get("drp1");
+				double drp1 = w1.doubleValue();
+				if (drp1 > 50) {
+					double v = drp1 - 50;
+					double v1 = (double) Math.round(v * 10) / 10;
+					map.put("flage2", "true");
+					map.put("num", v1);
+				} else {
+					map.put("flage2", "false");
+				}
+				map.put("List", list.get(i));
+				lists.add(map);
+			}
+			Timestamp timestamp = new Timestamp(System.currentTimeMillis());
+			long url = timestamp.getTime();
+			Map m = new HashMap();
+			m.put("url", url + ".png");
+			lists.add(m);
+			Thread thread = new Thread(new Runnable() {
+				@Override
+				public void run() {
+					String fileName = "";
+					// 第一步,创建一个webbook,对应一个Excel文件
+					HSSFWorkbook wb = new HSSFWorkbook();
+					// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
+					HSSFSheet sheet = wb.createSheet("山洪雨量表");
+					// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
+					HSSFRow row = sheet.createRow((int) 0);
+					// 第四步,创建单元格,并设置值表头 设置表头居中
+					HSSFCellStyle style = wb.createCellStyle();
+					//style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
+					HSSFCell cell = row.createCell((short) 0);
+					cell.setCellValue(new HSSFRichTextString("lon"));
+					cell = row.createCell((short) 1);
+					cell.setCellValue(new HSSFRichTextString("lat"));
+					cell = row.createCell((short) 2);
+					cell.setCellValue(new HSSFRichTextString("rain"));
+					for (int i = 0; i < list.size(); i++) {
+						// 第四步,创建单元格,并设置值
+						row = sheet.createRow((int) i + 1);
+						HSSFCell celli = row.createCell((short) 0);
+						BigDecimal w1 = (BigDecimal) list.get(i).get("drp1");
+						double drp1 = w1.doubleValue();
+						row.createCell((short) 0).setCellValue(list.get(i).get("LGTD").toString());
+						row.createCell((short) 1).setCellValue(list.get(i).get("LTTD").toString());
+						if (drp1 > 50) {
+							row.createCell((short) 2).setCellValue(2);
+							continue;
+						} else {
+							row.createCell((short) 2).setCellValue(1);
+							continue;
+						}
+					}
+					// 第六步,将文件存到指定位置
+					try {
+						fileName = "D:/moup.xlsx";
+						FileOutputStream fout = new FileOutputStream(fileName);
+						wb.write(fout);
+						fout.close();
+						wb.close();
+					} catch (Exception e) {
+						e.printStackTrace();
+					}
+					Process proc;
+					Timestamp timestamp = new Timestamp(System.currentTimeMillis());
+					long url = timestamp.getTime();
+					Map m = new HashMap();
+					m.put("url", url + ".png");
+					String[] args1 = new String[]{"python", "D:\\fz\\moup.py", String.valueOf(url)};
+					try {
+						proc = Runtime.getRuntime().exec(args1);
+						BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
+						String line = null;
+						while ((line = in.readLine()) != null) {
+							System.out.println(line);
+						}
+						in.close();
+						proc.waitFor();
+					} catch (IOException e) {
+						e.printStackTrace();
+					} catch (InterruptedException e) {
+						e.printStackTrace();
+					}
+				}
+			});
+			thread.start();
+			return R.data(lists);
+		}
+
+	}
+
+
+	/**
+	 * 查询预警3小时
+	 */
+	@GetMapping("/Tr")
+	public R Tr(int type, String time, String dateEnds3) {
+		//第二种方式预警
+		if (type == 0) {
+			//当前时间
+			String times = time;
+
+			//2个小时前的时间
+			String dateEnd3 = dateEnds3;
+			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+			Date date = null;
+			try {
+				date = sdf.parse(time);
+			} catch (ParseException e) {
+				e.printStackTrace();
+			}
+			String stime = sdf.format(date);
+			//对应雨量站
+			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<MountainrainsCVO> mountainrainsCVOS = mountainrainService.MountainTr(times, dateEnd3, code, stime);
+			List<Map<String, Object>> lists = new ArrayList<>();
+			for (int i = 0; i < mountainrainsCVOS.size(); i++) {
+				if (mountainrainsCVOS.get(i).getCenconding() == null) {
+					continue;
+				}
+				Map<String, Object> map = new HashMap<String, Object>();
+				if (mountainrainsCVOS.get(i).getSoilval() > 30) {
+					//0.8雨量湿度
+					if (mountainrainsCVOS.get(i).getDrp1() > mountainrainsCVOS.get(i).getGthours()) {
+						int drp1 = mountainrainsCVOS.get(i).getDrp1();
+						Integer gohours = mountainrainsCVOS.get(i).getGohours();
+						float i1 = (float) drp1 - gohours;
+						float v = (float) (Math.round(i1 * 10)) / 10;
+						String a = String.valueOf(v);
+						map.put("List", mountainrainsCVOS.get(i));
+						map.put("flage3", "true");
+						map.put("status", 2);
+						map.put("num", a);
+						lists.add(map);
+					} else {
+						map.put("List", mountainrainsCVOS.get(i));
+						map.put("flage3", "false");
+						map.put("status", 2);
+						lists.add(map);
+					}
+				} else {
+					//0.5雨量湿度
+					if (mountainrainsCVOS.get(i).getDrp1() > mountainrainsCVOS.get(i).getGthour()) {
+						int drp1 = mountainrainsCVOS.get(i).getDrp1();
+						Integer gohour = mountainrainsCVOS.get(i).getGohour();
+						float i1 = (float) drp1 - gohour;
+						float v = (float) (Math.round(i1 * 10)) / 10;
+						String a = String.valueOf(v);
+						map.put("List", mountainrainsCVOS.get(i));
+						map.put("flage3", "true");
+						map.put("status", 1);
+						map.put("num", a);
+						lists.add(map);
+					} else {
+						map.put("List", mountainrainsCVOS.get(i));
+						map.put("flage3", "false");
+						map.put("status", 1);
+						lists.add(map);
+					}
+				}
+
+			}
+			Timestamp timestamp = new Timestamp(System.currentTimeMillis());
+			long url = timestamp.getTime();
+			Map m = new HashMap();
+			m.put("url", url + ".png");
+			lists.add(m);
+			Thread thread = new Thread(new Runnable() {
+				@Override
+				public void run() {
+					//色斑图
+					String file = "";
+					// 第一步,创建一个webbook,对应一个Excel文件
+					HSSFWorkbook wb = new HSSFWorkbook();
+					// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
+					HSSFSheet sheet = wb.createSheet("山洪预警表");
+					// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
+					HSSFRow row = sheet.createRow((int) 0);
+					// 第四步,创建单元格,并设置值表头 设置表头居中
+					HSSFCellStyle style = wb.createCellStyle();
+					//style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
+					HSSFCell cell = row.createCell((short) 0);
+					cell.setCellValue("lon");
+					cell = row.createCell((short) 1);
+					cell.setCellValue("lat");
+					cell = row.createCell((short) 2);
+					cell.setCellValue("rain");
+					for (int i = 0; i < mountainrainsCVOS.size(); i++) {
+						row = sheet.createRow((int) i + 1);
+						HSSFCell celli = row.createCell((short) 0);
+						row.createCell((short) 0).setCellValue(mountainrainsCVOS.get(i).getDj());
+						row.createCell((short) 1).setCellValue(mountainrainsCVOS.get(i).getBw());
+						if (mountainrainsCVOS.get(i).getCenconding() == null) {
+							continue;
+						}
+						if (mountainrainsCVOS.get(i).getSoilval() > 30) {
+							//0.8雨量湿度
+							if (mountainrainsCVOS.get(i).getDrp1() > mountainrainsCVOS.get(i).getGthours()) {
+								row.createCell((short) 2).setCellValue(2);
+								continue;
+							} else {
+								row.createCell((short) 2).setCellValue(1);
+								continue;
+							}
+						} else {
+							//0.5雨量湿度
+							if (mountainrainsCVOS.get(i).getDrp1() > mountainrainsCVOS.get(i).getGthour()) {
+								row.createCell((short) 2).setCellValue(2);
+								continue;
+							} else {
+								row.createCell((short) 2).setCellValue(1);
+								continue;
+							}
+						}
+					}
+					try {
+						file = "D:/mou.xlsx";
+						FileOutputStream fout = new FileOutputStream(file);
+						wb.write(fout);
+						fout.close();
+						wb.close();
+					} catch (Exception e) {
+						e.printStackTrace();
+					}
+					Process proc;
+					String[] args1 = new String[]{"python", "D:\\fz\\mou.py", String.valueOf(url)};
+					try {
+						proc = Runtime.getRuntime().exec(args1);
+						BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
+						String line = null;
+						while ((line = in.readLine()) != null) {
+							System.out.println(line);
+						}
+						in.close();
+						proc.waitFor();
+					} catch (IOException e) {
+						e.printStackTrace();
+					} catch (InterruptedException e) {
+						e.printStackTrace();
+					}
+				}
+			});
+			thread.start();
+			return R.data(lists);
+
+		}
+		//第一种方式预警(雨量表数据)
+		else {
+			//当前时间
+			String times = time;
+
+			//两个小时前的时间
+			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<Map<String, Object>> list = mountainrainService.selecMoneYi(times, dateEnd3, code);
+			List<Map<String, Object>> lists = new ArrayList<>();
+			for (int i = 0; i < list.size(); i++) {
+				Map<String, Object> map = new HashMap<String, Object>();
+				BigDecimal w1 = (BigDecimal) list.get(i).get("drp1");
+				double drp1 = w1.doubleValue();
+				if (drp1 > 80) {
+					double v = drp1 - 80;
+					double v1 = (double) Math.round(v * 10) / 10;
+					map.put("flage3", "true");
+					map.put("num", v1);
+				} else {
+					map.put("flage3", "false");
+				}
+				map.put("List", list.get(i));
+				lists.add(map);
+			}
+			Timestamp timestamp = new Timestamp(System.currentTimeMillis());
+			long url = timestamp.getTime();
+			Map m = new HashMap();
+			m.put("url", url + ".png");
+			lists.add(m);
+			Thread thread = new Thread(new Runnable() {
+				@Override
+				public void run() {
+					String fileName = "";
+					// 第一步,创建一个webbook,对应一个Excel文件
+					HSSFWorkbook wb = new HSSFWorkbook();
+					// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
+					HSSFSheet sheet = wb.createSheet("山洪雨量表");
+					// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
+					HSSFRow row = sheet.createRow((int) 0);
+					// 第四步,创建单元格,并设置值表头 设置表头居中
+					HSSFCellStyle style = wb.createCellStyle();
+					//style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
+					HSSFCell cell = row.createCell((short) 0);
+					cell.setCellValue(new HSSFRichTextString("lon"));
+					cell = row.createCell((short) 1);
+					cell.setCellValue(new HSSFRichTextString("lat"));
+					cell = row.createCell((short) 2);
+					cell.setCellValue(new HSSFRichTextString("rain"));
+					for (int i = 0; i < list.size(); i++) {
+						// 第四步,创建单元格,并设置值
+						row = sheet.createRow((int) i + 1);
+						HSSFCell celli = row.createCell((short) 0);
+						BigDecimal w1 = (BigDecimal) list.get(i).get("drp1");
+						double drp1 = w1.doubleValue();
+						row.createCell((short) 0).setCellValue(list.get(i).get("LGTD").toString());
+						row.createCell((short) 1).setCellValue(list.get(i).get("LTTD").toString());
+						if (drp1 > 80) {
+							row.createCell((short) 2).setCellValue(2);
+							continue;
+
+						} else {
+							row.createCell((short) 2).setCellValue(1);
+							continue;
+						}
+					}
+					// 第六步,将文件存到指定位置
+					try {
+						fileName = "D:/moup.xlsx";
+						FileOutputStream fout = new FileOutputStream(fileName);
+						wb.write(fout);
+						fout.close();
+						wb.close();
+					} catch (Exception e) {
+						e.printStackTrace();
+					}
+					Process proc;
+					String[] args1 = new String[]{"python", "D:\\fz\\moup.py", String.valueOf(url)};
+					try {
+						proc = Runtime.getRuntime().exec(args1);
+						BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
+						String line = null;
+						while ((line = in.readLine()) != null) {
+							System.out.println(line);
+						}
+						in.close();
+						proc.waitFor();
+					} catch (IOException e) {
+						e.printStackTrace();
+					} catch (InterruptedException e) {
+						e.printStackTrace();
+					}
+				}
+			});
+			thread.start();
+			return R.data(lists);
+		}
+
+	}
+
+	/**
+	 * 土壤色斑图
+	 */
+	@GetMapping("/selectS")
+	public R selectS(String time) {
+		List<Map<String, Object>> list = mountainrainService.selectS(time);
+		String fileName = "";
+		// 第一步,创建一个webbook,对应一个Excel文件
+		HSSFWorkbook wb = new HSSFWorkbook();
+		// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
+		HSSFSheet sheet = wb.createSheet("土壤色斑图");
+		// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
+		HSSFRow row = sheet.createRow((int) 0);
+		// 第四步,创建单元格,并设置值表头 设置表头居中
+		HSSFCellStyle style = wb.createCellStyle();
+		//style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
+		HSSFCell cell = row.createCell((short) 0);
+		cell.setCellValue(new HSSFRichTextString("lon"));
+		cell = row.createCell((short) 1);
+		cell.setCellValue(new HSSFRichTextString("lat"));
+		cell = row.createCell((short) 2);
+		cell.setCellValue(new HSSFRichTextString("rain"));
+		for (int i = 0; i < list.size(); i++) {
+			String stcd = list.get(i).get("stcd").toString();
+			// 第四步,创建单元格,并设置值
+			row = sheet.createRow((int) i + 1);
+			HSSFCell celli = row.createCell((short) 0);
+			row.createCell((short) 0).setCellValue(list.get(i).get("LGTD").toString());
+			row.createCell((short) 1).setCellValue(list.get(i).get("LTTD").toString());
+			row.createCell((short) 2).setCellValue(list.get(i).get("soilval").toString());
+			if (stcd.equals("62455350")) {
+				row.createCell((short) 0).setCellValue("117.344876");
+				row.createCell((short) 1).setCellValue("27.827067");
+				row.createCell((short) 2).setCellValue(list.get(i).get("soilval").toString());
+			}
+			if (stcd.equals("62334845")) {
+				row.createCell((short) 0).setCellValue("115.625720");
+				row.createCell((short) 1).setCellValue("27.152794");
+				row.createCell((short) 2).setCellValue(list.get(i).get("soilval").toString());
+			}
+			if (stcd.equals("62433800")) {
+				row.createCell((short) 0).setCellValue("115.618546");
+				row.createCell((short) 1).setCellValue("27.683604");
+				row.createCell((short) 2).setCellValue(list.get(i).get("soilval").toString());
+			}
+			if (stcd.equals("62436760")) {
+				row.createCell((short) 0).setCellValue("116.060889");
+				row.createCell((short) 1).setCellValue("28.216806");
+				row.createCell((short) 2).setCellValue(list.get(i).get("soilval").toString());
+			}
+			if (stcd.equals("62437250")) {
+				row.createCell((short) 0).setCellValue("116.622783");
+				row.createCell((short) 1).setCellValue("28.489384");
+				row.createCell((short) 2).setCellValue(list.get(i).get("soilval").toString());
+			}
+			if (stcd.equals("62433700")) {
+				row.createCell((short) 0).setCellValue("115.558771");
+				row.createCell((short) 1).setCellValue("27.518623");
+				row.createCell((short) 2).setCellValue(list.get(i).get("soilval").toString());
+			}
+			if (stcd.equals("62425740")) {
+				row.createCell((short) 0).setCellValue("117.208587");
+				row.createCell((short) 1).setCellValue("27.298647");
+				row.createCell((short) 2).setCellValue(list.get(i).get("soilval").toString());
+			}
+			if (stcd.equals("62437235")) {
+				row.createCell((short) 0).setCellValue("116.780591");
+				row.createCell((short) 1).setCellValue("28.391352");
+				row.createCell((short) 2).setCellValue(list.get(i).get("soilval").toString());
+			}
+			if (stcd.equals("62437250")) {
+				row.createCell((short) 0).setCellValue("116.555834");
+				row.createCell((short) 1).setCellValue("28.518077");
+				row.createCell((short) 2).setCellValue(list.get(i).get("soilval").toString());
+			}
+		}
+		// 第六步,将文件存到指定位置
+		try {
+			fileName = "D:/tur.xlsx";
+			FileOutputStream fout = new FileOutputStream(fileName);
+			wb.write(fout);
+			fout.close();
+			wb.close();
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		Process proc;
+		Timestamp timestamp = new Timestamp(System.currentTimeMillis());
+		long url = timestamp.getTime();
+		Map m = new HashMap();
+		m.put("url", url + ".png");
+		String[] args1 = new String[]{"python", "D:\\fz\\tur.py", String.valueOf(url)};
+		try {
+			proc = Runtime.getRuntime().exec(args1);
+			BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
+			String line = null;
+			while ((line = in.readLine()) != null) {
+				System.out.println(line);
+			}
+			in.close();
+			proc.waitFor();
+		} catch (IOException e) {
+			e.printStackTrace();
+		} catch (InterruptedException e) {
+			e.printStackTrace();
+		}
+		return R.data(m);
+	}
+
+	public static Date beforeHourToNowDate(String date, int hours) {
+		Calendar c = Calendar.getInstance();
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+		try {
+			c.setTime(sdf.parse(date));
+			c.set(Calendar.HOUR_OF_DAY, c.get(Calendar.HOUR_OF_DAY) - hours);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return c.getTime();
+	}
 }
+

--
Gitblit v1.9.3