From 0fa45101a494897fe93b90d805b3ff0aedd36e17 Mon Sep 17 00:00:00 2001
From: tangzy <tangzy123456>
Date: Wed, 15 Sep 2021 16:24:35 +0800
Subject: [PATCH] 1.山洪

---
 src/main/java/org/springblade/modules/mountainrain/controller/MountainrainController.java |  267 ++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 180 insertions(+), 87 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 d829e5e..c870d42 100644
--- a/src/main/java/org/springblade/modules/mountainrain/controller/MountainrainController.java
+++ b/src/main/java/org/springblade/modules/mountainrain/controller/MountainrainController.java
@@ -41,6 +41,7 @@
 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;
@@ -49,7 +50,7 @@
 import java.util.*;
 
 /**
- *  控制器
+ * 控制器
  *
  * @author BladeX
  * @since 2020-02-27
@@ -384,69 +385,68 @@
 	 */
 	@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) {
+	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 timess = timei;
 
 			//三个小时前的时间
-			String dateEnd3 =dateEnds3;
+			String dateEnd3 = dateEnds3;
 
 			//六个小时前的时间
-			String dateEnd6 =dateEnds6;
+			String dateEnd6 = dateEnds6;
 
 			//二十四个小时前的时间
-			String dateEnd24 =dateEnds24;
+			String dateEnd24 = dateEnds24;
 
 			//对应雨量站
-			long startTime=System.currentTimeMillis();
-			List<MountainrainsCVO> mountainrainsCVOS = mountainrainService.selectcInfos(times, dateEnd24, dateEnd1, dateEnd3, dateEnd6,timess);
+			long startTime = System.currentTimeMillis();
+			List<MountainrainsCVO> mountainrainsCVOS = mountainrainService.selectcInfos(times, dateEnd24, dateEnd1, dateEnd3, dateEnd6, timess);
 			List<Map<String, Object>> lists = new ArrayList<>();
 			for (int i = 0; i < mountainrainsCVOS.size(); i++) {
-				if (mountainrainsCVOS.get(i).getCenconding()==null){
+				if (mountainrainsCVOS.get(i).getCenconding() == null) {
 					continue;
 				}
 				Map<String, Object> map = new HashMap<String, Object>();
-					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);
+				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 {
+		} else {
 			//当前时间
 			String times = time;
 
 			String dateEnd1 = dateEnds1;
 
-			String timess=timei;
+			String timess = timei;
 
 			//三个小时前的时间
-			String dateEnd3 =dateEnds3;
+			String dateEnd3 = dateEnds3;
 
 			//六个小时前的时间
-			String dateEnd6 =dateEnds6;
+			String dateEnd6 = dateEnds6;
 
 			//二十四个小时前的时间
-			String dateEnd24 =dateEnds24;
+			String dateEnd24 = dateEnds24;
 
 			//对应雨量站
-			List<MountainrainsCVO> mountainrainsCVOS = mountainrainService.selectcInfo(times, dateEnd24, dateEnd1, dateEnd3, dateEnd6,timess);
+			List<MountainrainsCVO> mountainrainsCVOS = mountainrainService.selectcInfo(times, dateEnd24, dateEnd1, dateEnd3, dateEnd6, timess);
 			List<Map<String, Object>> lists = new ArrayList<>();
 			for (int i = 0; i < mountainrainsCVOS.size(); i++) {
 				Map<String, Object> map = new HashMap<String, Object>();
-					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);
+				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);
@@ -460,19 +460,19 @@
 	 */
 	@ApiLog("查询洪水预警")
 	@GetMapping("/sss")
-	public R selectcInfoss(int type,String time,String dateEnds1,String dateEnds2,String dateEnds3,int k) {
+	public R selectcInfoss(int type, String time, String dateEnds1, String dateEnds2, String dateEnds3) {
 		//第二种方式预警
-		if (type == 0 && k==13) {
+		if (type == 0) {
 			//当前时间
 			String times = time;
 
 			String dateEnd1 = dateEnds1;
 
 			//2个小时前的时间
-			String dateEnd2 =dateEnds2;
+			String dateEnd2 = dateEnds2;
 
 			//3个小时前的时间
-			String dateEnd3 =dateEnds3;
+			String dateEnd3 = dateEnds3;
 
 			//对应雨量站
 			String s = mountainrainService.selectCode();
@@ -482,26 +482,65 @@
 				strArrays += "'" + split[i] + "',";
 			}
 			String code = strArrays.substring(0, strArrays.length() - 1);
-			List<MountainrainsCVO> mountainrainsCVOS = mountainrainService.Mountains(times, dateEnd1, dateEnd2, dateEnd3,code);
+			List<MountainrainsCVO> mountainrainsCVOS = mountainrainService.Mountains(times, dateEnd1, dateEnd2, dateEnd3, code);
 			List<Map<String, Object>> lists = new ArrayList<>();
 			for (int i = 0; i < mountainrainsCVOS.size(); i++) {
-				if (mountainrainsCVOS.get(i).getCenconding()==null){
+				if (mountainrainsCVOS.get(i).getCenconding() == null) {
 					continue;
 				}
 				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);
-				}
-				else {
-					int Max =mountainrainService .Max(mountainrainsCVOS.get(i).getDrp1(), mountainrainsCVOS.get(i).getDrp3(),
+				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));
+						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());
-					map.put("List", mountainrainsCVOS.get(i));
-					map.put("Max", Max);
-					lists.add(map);
+//					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");
+						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);
+					}
 				}
 
 			}
@@ -517,86 +556,140 @@
 			String dateEnd1 = dateEnds1;
 
 			//两个小时前的时间
-			String dateEnd2 =dateEnds2;
+			String dateEnd2 = dateEnds2;
 
 			//三个小时前的时间
-			String dateEnd3 =dateEnds3;
+			String dateEnd3 = dateEnds3;
 
 			String s = regionWeightService.selectCode();
+			//String s = "62334490";
 			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, Integer>> list = mountainrainService.selecMone(times, dateEnd1, dateEnd2, dateEnd3, code);
-		    List list1= new ArrayList();
-		    List list2= new ArrayList();
-		    List list3= new ArrayList();
-			for (int i=0;i<list.size();i++){
-				if (list.get(i).get("drp1")>=30){
-						list1.add(list.get(i));
+			List<Map<String, Object>> list = mountainrainService.selecMone(times, dateEnd1, dateEnd2, dateEnd3, code);
+			List<Map<String, Object>> lists = new ArrayList<>();
+			for (int i = 0; i < list.size(); i++) {
+				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();
+				if (drp1 > 30) {
+					Map<String, Object> map = new HashMap<String, Object>();
+					map.put("List", list.get(i));
+					map.put("flage1", "true");
+					map.put("flage2", "false");
+					map.put("flage3", "false");
+					lists.add(map);
 				}
-				if (list.get(i).get("drp2")>=50) {
-					list2.add(list.get(i));
+				if (drp2 > 50) {
+					Map<String, Object> map = new HashMap<String, Object>();
+					map.put("List", list.get(i));
+					map.put("flage1", "false");
+					map.put("flage2", "true");
+					map.put("flage3", "false");
+					lists.add(map);
 				}
-				if (list.get(i).get("drp3")>=80) {
-					list3.add(list.get(i));
+				if (drp3 > 80) {
+					Map<String, Object> map = new HashMap<String, Object>();
+					map.put("List", list.get(i));
+					map.put("flage1", "false");
+					map.put("flage2", "false");
+					map.put("flage3", "true");
+					lists.add(map);
+				} else {
+					Map<String, Object> map = new HashMap<String, Object>();
+					map.put("List", list.get(i));
+					map.put("flage1", "false");
+					map.put("flage2", "false");
+					map.put("flage3", "false");
+					lists.add(map);
 				}
 
 			}
-			Map map = new HashMap();
-			map.put("list1",list1);
-			map.put("list2",list2);
-			map.put("list2",list3);
-			return R.data(map);
+			return R.data(lists);
 		}
 
 	}
 
 	/**
 	 * 土壤湿度计算
+	 *
 	 * @return
 	 */
 	@Scheduled(cron = "0 0 8 * * ?")
 	@GetMapping("/soleval")
 	public R soleval() {
-		SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd 08:00:00" );
-		Date today = new Date();
-		String endDate = sdf .format( today ); //当前日期
-		//获取三十天前日期
-		Calendar theCa = Calendar. getInstance ();
-		theCa .setTime( today );
-		theCa .add( theCa . DATE , -30); //最后一个数字30可改,30天的意思
-		Date start = theCa .getTime();
-		String startDate = sdf .format( start ); //三十天之前日期
+		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[] split = s.split(",");
 		String strArrays = "";
-		Integer num=60;
 		for (int i = 0; i < split.length; i++) {
 			strArrays += "'" + split[i] + "',";
 		}
 		String code = strArrays.substring(0, strArrays.length() - 1);
-		mountainrainService.soildel();
-		List<Map<String, Object>> list = mountainrainService.selectMtwo(startDate, endDate, code);
-		for (int i=0;i<list.size();i++){ ;
-			BigDecimal w = (BigDecimal) list.get(i).get("drp");
-			double drp = w.doubleValue();
-			String stcd = list.get(i).get("STCD").toString();
-			//计算湿度
-			double v = (num + drp) * 0.85;
-			if (v>60){
-				mountainrainService.soleInster(stcd,"60");
+		for (int i = 0; i < split.length; i++) {
+			Integer num = 30;
+			double v1 = 0;
+			String stcd = null;
+			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) {
+					break;
+				}
+				BigDecimal w = (BigDecimal) map.get(i).get("drp");
+				double drp = w.doubleValue();
+				stcd = map.get(i).get("STCD").toString();
+				//计算湿度
+				if (j == 0) {
+					v1 = formatDouble1((num + drp) * 0.85);
+					if (v1 > 60) {
+						v1 = 60;
+					}
+				} else {
+					v1 += drp;
+					v1 = formatDouble1(v1 * 0.85);
+					if (v1 > 60) {
+						v1 = 60;
+					}
+				}
 			}
-			else {
-				String a= String.valueOf(v);
-				mountainrainService.soleInster(stcd,a);
+			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;
+	}
 
 }
-

--
Gitblit v1.9.3