tangzy
2021-09-15 0fa45101a494897fe93b90d805b3ff0aedd36e17
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;
   }
}