tangzy
2021-10-07 2461281f7bdf6a4e7a016b528280ed5ec7b9f2a2
1.山洪
21 files modified
3930 ■■■■ changed files
src/main/java/org/springblade/modules/mountainrain/controller/MountainrainController.java 1325 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/mountainrain/controller/ss.java 8 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/mountainrain/mapper/MountainrainMapper.java 13 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/mountainrain/mapper/MountainrainMapper.xml 472 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/mountainrain/service/IMountainrainService.java 13 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/mountainrain/service/impl/MountainrainServiceImpl.java 65 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/regionWeight/controller/RegionWeightController.java 910 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/regionWeight/mapper/RegionWeightMapper.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/regionWeight/mapper/RegionWeightMapper.xml 109 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/regionWeight/service/IRegionWeightService.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/regionWeight/service/impl/RegionWeightServiceImpl.java 13 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/river/controller/RiverRController.java 564 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/river/mapper/RiverRMapper.java 1 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/river/mapper/RiverRMapper.xml 199 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/river/service/IRiverRService.java 1 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/river/service/impl/RiverRServiceImpl.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/rsvr/controller/RsvrRController.java 113 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/rsvr/mapper/RsvrRMapper.java 2 ●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/rsvr/mapper/RsvrRMapper.xml 99 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/rsvr/service/IRsvrRService.java 2 ●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/rsvr/service/impl/RsvrRServiceImpl.java 4 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/mountainrain/controller/MountainrainController.java
@@ -20,8 +20,8 @@
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.log.annotation.ApiLog;
import org.springblade.core.mp.support.Condition;
@@ -37,20 +37,20 @@
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.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.*;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.net.URLEncoder;
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 +493,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 +515,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 +537,81 @@
                }
            }
            //色斑图
            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;
            try {
                proc = Runtime.getRuntime().exec("python D:\\fz\\mou.py");
                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(lists);
        }
@@ -565,7 +630,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,22 +648,91 @@
                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;
            try {
                proc = Runtime.getRuntime().exec("python D:\\fz\\moup.py");
                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(lists);
        }
@@ -620,46 +753,48 @@
            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 = "";
        System.out.println("长度:"+split.length);
        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() - 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;
                    }
                }
            }
            if (v1 > 60) {
                mountainrainService.soleInster(stcd, "60");
            } else {
                String a = String.valueOf(v1);
                mountainrainService.soleInster(stcd, a);
            }
        }
//        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;
//                    }
//                }
//            }
//            if (v1 > 60) {
//                mountainrainService.soleInster(stcd, "60");
//            } else {
//                String a = String.valueOf(v1);
//                mountainrainService.soleInster(stcd, a);
//            }
//        }
        return R.success("成功");
    }
@@ -691,7 +826,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 +843,1082 @@
        }
        //预警信息添加
        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) {
        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);
        List<Map<String, Object>> selctsmriver = mountainrainService.selctsmriver(time, dateEnd);
        //预警数据
        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) {
        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);
        List<Map<String, Object>> selctsmriver = mountainrainService.selctbgriver(time, dateEnd);
        //预警数据
        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;
            //对应雨量站
            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);
            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();
                        int i1 = drp1 - gohours;
                        map.put("List", mountainrainsCVOS.get(i));
                        map.put("flage1", "true");
                        map.put("status", 2);
                        map.put("num", i1);
                        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();
                        int i1 = drp1 - gohour;
                        map.put("List", mountainrainsCVOS.get(i));
                        map.put("flage1", "true");
                        map.put("status", 1);
                        map.put("num", i1);
                        lists.add(map);
                    } else {
                        map.put("List", mountainrainsCVOS.get(i));
                        map.put("flage1", "false");
                        map.put("status", 1);
                        lists.add(map);
                    }
                }
            }
            //色斑图
            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;
            try {
                proc = Runtime.getRuntime().exec("python D:\\fz\\mou.py");
                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(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;
                    map.put("flage1", "true");
                    map.put("num", v);
                } else {
                    map.put("flage1", "false");
                }
                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();
                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;
            try {
                proc = Runtime.getRuntime().exec("python D:\\fz\\moup.py");
                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(lists);
        }
    }
    /**
     * 查询预警2小时
     */
    @GetMapping("/Tw")
    public R Tw(int type, String time, String dateEnds2) {
        //第二种方式预警
        if (type == 0) {
            //当前时间
            String times = time;
            //2个小时前的时间
            String dateEnd2 = dateEnds2;
            //对应雨量站
            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, dateEnd2, code);
            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();
                        int i1 = drp1 - gohours;
                        map.put("List", mountainrainsCVOS.get(i));
                        map.put("flage1", "true");
                        map.put("flage3", "false");
                        map.put("status", 2);
                        map.put("num", i1);
                        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();
                        int i1 = drp1 - gohour;
                        map.put("List", mountainrainsCVOS.get(i));
                        map.put("flage1", "true");
                        map.put("flage3", "false");
                        map.put("status", 1);
                        map.put("num", i1);
                        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);
                    }
                }
            }
            //色斑图
            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;
            try {
                proc = Runtime.getRuntime().exec("python D:\\fz\\mou.py");
                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(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;
                    map.put("flage2", "true");
                    map.put("num", v);
                } else {
                    map.put("flage2", "false");
                }
                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();
                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;
            try {
                proc = Runtime.getRuntime().exec("python D:\\fz\\moup.py");
                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(lists);
        }
    }
    /**
     * 查询预警3小时
     */
    @GetMapping("/Tr")
    public R Tr(int type, String time, String dateEnds3) {
        //第二种方式预警
        if (type == 0) {
            //当前时间
            String times = time;
            //2个小时前的时间
            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<MountainrainsCVO> mountainrainsCVOS = mountainrainService.MountainTr(times, dateEnd3, code);
            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();
                        int i1 = drp1 - gohours;
                        map.put("List", mountainrainsCVOS.get(i));
                        map.put("flage3", "true");
                        map.put("status", 2);
                        map.put("num", i1);
                        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();
                        int i1 = drp1 - gohour;
                        map.put("List", mountainrainsCVOS.get(i));
                        map.put("flage3", "true");
                        map.put("status", 1);
                        map.put("num", i1);
                        lists.add(map);
                    } else {
                        map.put("List", mountainrainsCVOS.get(i));
                        map.put("flage3", "false");
                        map.put("status", 1);
                        lists.add(map);
                    }
                }
            }
            //色斑图
            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;
            try {
                proc = Runtime.getRuntime().exec("python D:\\fz\\mou.py");
                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(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;
                    map.put("flage3", "true");
                    map.put("num", v);
                } else {
                    map.put("flage3", "false");
                }
                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();
                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;
            try {
                proc = Runtime.getRuntime().exec("python D:\\fz\\moup.py");
                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(lists);
        }
    }
    /**
     * 土壤色斑图
     */
    @GetMapping("/selectS")
    public void selectS(){
        List<Map<String, Object>> list = mountainrainService.selectS();
        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;
        try {
            proc = Runtime.getRuntime().exec("python D:\\fz\\tur.py");
            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();
        }
}
}
src/main/java/org/springblade/modules/mountainrain/controller/ss.java
@@ -16,6 +16,9 @@
@Component
public class ss {
    @Autowired
    private  IRegionWeightService regionWeightService;
    @Autowired
    private IMountainrainService mountainrainService;
    @Scheduled(cron = "0 0 8 * * ?")
@@ -27,7 +30,8 @@
            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++) {
@@ -41,7 +45,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];
                    stcd=split[i];
                    break;
                }
                BigDecimal w = (BigDecimal) map.get(i).get("drp");
src/main/java/org/springblade/modules/mountainrain/mapper/MountainrainMapper.java
@@ -61,6 +61,9 @@
    List<MountainrainsCVO> selectcInfos(String times, String dateEnd24, String dateEnd1, String dateEnd3, String dateEnd6, String timess);
    List<MountainrainsCVO> Mountains(String times, String dateEnd1, String dateEnd2, String dateEnd3, String code);
    List<MountainrainsCVO> MountainYi(String times, String dateEnd1,String code);
    List<MountainrainsCVO> MountainTw(String times, String dateEnd2,String code);
    List<MountainrainsCVO> MountainTr(String times, String dateEnd3,String code);
    List<MountainrainsCVO> selectcInfosdx(String times, String dateEnd24, String dateEnd1, String dateEnd3, String dateEnd6, String addvnm);
@@ -136,10 +139,19 @@
    String selectCode();
    List<Map<String, Object>> selecMone(String times, String dateEnd1, String dateEnd2, String dateEnd3, String code);
    List<Map<String, Object>> selecMoneYi(String times, String dateEnd1, String code);
    List<Map<String, Object>> selecMoneTw(String times, String dateEnd2, String code);
    List<Map<String, Object>> selecMoneTr(String times, String dateEnd3, String code);
    List<Map<String, Object>> selectMtwo(String time3, String time, String code);
    List<Map<String, Object>> selectAddvcd(String addvcd);
    List<Map<String, Object>> selectYup();
    List<Map<String, Object>> selctsmriver(String time,String dateEnd);
    List<Map<String, Object>> selctbgriver(String time,String dateEnd);
    List<Map<String, Object>> selectTu();
    List<Map<String, Object>> selectS();
    List<MountainrainsCVO> selectYum();
    void soleInster(String stcd, String soilval);
@@ -147,4 +159,5 @@
    //预报信息新增
    int insertYuc(@Param("list") List<Yucpptn> list);
    void del();
}
src/main/java/org/springblade/modules/mountainrain/mapper/MountainrainMapper.xml
@@ -267,6 +267,16 @@
    ) AS siteids
    </select>
<!--    <select id="selectCode" resultType="java.lang.String">-->
<!--        SELECT stuff((-->
<!--            SELECT ',' + CONVERT(VARCHAR (25), cenconding)-->
<!--            FROM dbo.blade_mountain FOR XML PATH ('')),-->
<!--        1,-->
<!--        1,-->
<!--    ''-->
<!--    ) AS siteids-->
<!--    </select>-->
    <select id="Mountains" resultMap="mountainrainResultMapcInfo">
        SELECT cs.id,
               cs.cenconding,
@@ -342,7 +352,7 @@
                   gthours
            FROM blade_mountain
        ) cs ON cs.cenconding = a.STCD
                 LEFT JOIN (
                 inner JOIN (
            SELECT stcd, soilval
            FROM sys_soleval
        ) so ON so.stcd = a.STCD
@@ -388,7 +398,7 @@
              AND strs.STCD IN (${code})
            GROUP BY STCD
        ) c ON a.STCD = c.STCD
                 LEFT JOIN (
                 INNER JOIN (
            SELECT STCD,
                   st.STNM,
                   st.ADDVCD,
@@ -432,7 +442,13 @@
    <select id="selectAddvcd" resultType="java.util.Map" >
        SELECT STCD
        FROM dbo.ST_STBPRP_B
        WHERE STTP='RR' AND ADDVCD=#{addvcd}
        WHERE 1=1
        <if test="addvcd!=null and addvcd!='' and addvcd!='361000'">
            and ADDVCD = #{addvcd}
        </if>
        AND (STTP = 'PP'
        OR STTP = 'ZQ'
        OR STTP = 'ZZ')
    </select>
    <!-- 批量插入预报信息-->
@@ -448,4 +464,454 @@
            )
        </foreach >
    </insert >
    <!--预报雨量站预警-->
    <select id="selectYup" resultType="java.util.Map">
        SELECT cs.STCD,
               cs.STNM,
               cs.STLC,
               cs.ADDVNM,
               cs.RVNM,
               cs.HNNM,
               cs.LTTD,
               cs.LGTD,
               isnull(a.drp, 0) AS drp,
               a.INTV
        FROM (SELECT str.DRP AS drp, STCD, INTV FROM sys_yucpptn str) a
                 LEFT JOIN (
            SELECT STCD,
                   st.STNM,
                   st.ADDVCD,
                   st.STLC,
                   st.LTTD,
                   st.LGTD,
                   st.RVNM,
                   st.HNNM,
                   ad.ADDVNM
            FROM dbo.ST_STBPRP_B st
                     INNER JOIN dbo.ST_ADDVCD_D ad ON ad.ADDVCD = st.ADDVCD
        ) cs ON cs.STCD = a.STCD
    </select>
    <delete id="del">
        delete
        from sys_yucpptn
    </delete>
    <!--第二种预警-->
    <select id="selectYum" resultMap="mountainrainResultMapcInfo">
        SELECT cs.id,
               cs.cenconding,
               cs.crainfall,
               isnull(cs.gohour, 0)     gohour,
               isnull(cs.gthour, 0)     gthour,
               isnull(cs.gshour, 0)     gshour,
               isnull(cs.imohour, 0)    imohour,
               isnull(cs.imthour, 0)    imthour,
               isnull(cs.imshour, 0)    imshour,
               isnull(cs.gohours, 0)    gohours,
               isnull(cs.gthours, 0)    gthours,
               a.drp1,
               cs.township,
               cs.village,
               cs.village_group,
               cs.dj,
               cs.bw,
               cs.county,
               isnull(cs.fyear, 0)   AS fyear,
               isnull(cs.tyear, 0)   AS tyear,
               isnull(cs.oyear, 0)   AS oyear,
               isnull(so.soilval, 0) AS soilval
        FROM (SELECT DRP AS drp1, STCD FROM sys_yucpptn) a
                 LEFT JOIN (
            SELECT id,
                   cenconding,
                   crainfall,
                   township,
                   village,
                   village_group,
                   dj,
                   bw,
                   county,
                   fyear,
                   tyear,
                   oyear,
                   gohour,
                   gthour,
                   gshour,
                   imohour,
                   imthour,
                   imshour,
                   gohours,
                   gthours
            FROM blade_mountain
        ) cs ON cs.cenconding = a.STCD
                 INNER JOIN (SELECT stcd, soilval FROM sys_soleval) so ON so.stcd = a.STCD
    </select>
    <!--中小河流-->
    <select id="selctsmriver" resultType="java.util.Map">
        SELECT cs1.STCD,
               cs1.TM,
               cs1.Z,
               sm.yjsw,
               sm.stname,
               sm.river,
               sm.addvnm,
               st.LGTD,
               st.LTTD
        FROM (
                 SELECT A.STCD,
                        MAX(A.TM) TM
                 FROM (SELECT STCD, TM FROM dbo.ST_RIVER_R where TM &gt; #{dateEnd} AND TM &lt;= #{time}) AS A
                 GROUP BY A.STCD
             ) cs
                 INNER JOIN (SELECT STCD, TM, Z FROM dbo.ST_RIVER_R where TM &gt; #{dateEnd} AND TM &lt;= #{time}) cs1
                            ON cs.STCD = cs1.STCD
                                AND cs.TM = cs1.TM
                 INNER JOIN (SELECT stcd, yjsw, stname, river, addvnm
                             FROM sys_smallriver
                             GROUP BY stcd, yjsw, stname, river, addvnm) sm ON sm.stcd = cs1.STCD
                 INNER JOIN (SELECT LGTD, LTTD, STCD FROM ST_STBPRP_B) st ON st.STCD = cs1.STCD
    </select>
    <!--大江大河-->
    <select id="selctbgriver" resultType="java.util.Map">
        SELECT cs1.STCD,
               cs1.TM,
               cs1.Z,
               sm.yjsw,
               sm.stname,
               sm.river,
               sm.addvnm,
               st.LGTD,
               st.LTTD
        FROM (
                 SELECT A.STCD,
                        MAX(A.TM) TM
                 FROM (SELECT STCD, TM FROM dbo.ST_RIVER_R where TM &gt; #{dateEnd} AND TM &lt;= #{time}) AS A
                 GROUP BY A.STCD
             ) cs
                 INNER JOIN (SELECT STCD, TM, Z FROM dbo.ST_RIVER_R where TM &gt; #{dateEnd} AND TM &lt;= #{time}) cs1
                            ON cs.STCD = cs1.STCD
                                AND cs.TM = cs1.TM
                 INNER JOIN (SELECT stcd, yjsw, stname, river, addvnm
                             FROM sys_bigriver
                             GROUP BY stcd, yjsw, stname, river, addvnm) sm ON sm.stcd = cs1.STCD
                 INNER JOIN (SELECT LGTD, LTTD, STCD FROM ST_STBPRP_B) st ON st.STCD = cs1.STCD
    </select>
    <select id="selectTu" resultType="java.util.Map">
        SELECT m.cenconding,
               m.village_group as village,
               m.county,
               isnull(s.soilval, 0) AS soilval
        FROM blade_mountain m
                 LEFT JOIN sys_soleval s ON s.stcd = m.cenconding
        GROUP BY m.cenconding,
                 s.soilval,
                 m.village_group,
                 m.county
    </select>
    <!--山洪1小时预警-->
    <select id="MountainYi" resultMap="mountainrainResultMapcInfo">
        SELECT cs.id,
               cs.cenconding,
               cs.crainfall,
               isnull(cs.gohour, 0)     gohour,
               isnull(cs.gthour, 0)     gthour,
               isnull(cs.gshour, 0)     gshour,
               isnull(cs.imohour, 0)    imohour,
               isnull(cs.imthour, 0)    imthour,
               isnull(cs.imshour, 0)    imshour,
               isnull(cs.gohours, 0)    gohours,
               isnull(cs.gthours, 0)    gthours,
               a.drp1,
               cs.township,
               cs.village,
               cs.village_group,
               cs.dj,
               cs.bw,
               cs.county,
               isnull(cs.fyear, 0)   as fyear,
               isnull(cs.tyear, 0)   as tyear,
               isnull(cs.oyear, 0)   as oyear,
               isnull(so.soilval, 0) as soilval
        FROM (
                 SELECT ISNULL(SUM(str.DRP), 0) AS drp1,
                        STCD
                 FROM dbo.ST_PPTN_R str
                 WHERE str.TM &gt; #{dateEnd1}
                   AND str.TM &lt;= #{times}
                   AND str.STCD IN (${code})
                 GROUP BY str.STCD
             ) a
                 LEFT JOIN (
            SELECT id,
                   cenconding,
                   crainfall,
                   township,
                   village,
                   village_group,
                   dj,
                   bw,
                   county,
                   fyear,
                   tyear,
                   oyear,
                   gohour,
                   gthour,
                   gshour,
                   imohour,
                   imthour,
                   imshour,
                   gohours,
                   gthours
            FROM blade_mountain
        ) cs ON cs.cenconding = a.STCD
                 LEFT JOIN (
            SELECT stcd, soilval
            FROM sys_soleval
        ) so ON so.stcd = a.STCD
    </select>
    <!--山洪2小时预警-->
    <select id="MountainTw" resultMap="mountainrainResultMapcInfo">
        SELECT cs.id,
               cs.cenconding,
               cs.crainfall,
               isnull(cs.gohour, 0)     gohour,
               isnull(cs.gthour, 0)     gthour,
               isnull(cs.gshour, 0)     gshour,
               isnull(cs.imohour, 0)    imohour,
               isnull(cs.imthour, 0)    imthour,
               isnull(cs.imshour, 0)    imshour,
               isnull(cs.gohours, 0)    gohours,
               isnull(cs.gthours, 0)    gthours,
               a.drp1,
               cs.township,
               cs.village,
               cs.village_group,
               cs.dj,
               cs.bw,
               cs.county,
               isnull(cs.fyear, 0)   as fyear,
               isnull(cs.tyear, 0)   as tyear,
               isnull(cs.oyear, 0)   as oyear,
               isnull(so.soilval, 0) as soilval
        FROM (
                 SELECT ISNULL(SUM(str.DRP), 0) AS drp1,
                        STCD
                 FROM dbo.ST_PPTN_R str
                 WHERE str.TM &gt; #{dateEnd2}
                   AND str.TM &lt;= #{times}
                   AND str.STCD IN (${code})
                 GROUP BY str.STCD
             ) a
                 LEFT JOIN (
            SELECT id,
                   cenconding,
                   crainfall,
                   township,
                   village,
                   village_group,
                   dj,
                   bw,
                   county,
                   fyear,
                   tyear,
                   oyear,
                   gohour,
                   gthour,
                   gshour,
                   imohour,
                   imthour,
                   imshour,
                   gohours,
                   gthours
            FROM blade_mountain
        ) cs ON cs.cenconding = a.STCD
                 LEFT JOIN (
            SELECT stcd, soilval
            FROM sys_soleval
        ) so ON so.stcd = a.STCD
    </select>
    <select id="MountainTr" resultMap="mountainrainResultMapcInfo">
        SELECT cs.id,
               cs.cenconding,
               cs.crainfall,
               isnull(cs.gohour, 0)     gohour,
               isnull(cs.gthour, 0)     gthour,
               isnull(cs.gshour, 0)     gshour,
               isnull(cs.imohour, 0)    imohour,
               isnull(cs.imthour, 0)    imthour,
               isnull(cs.imshour, 0)    imshour,
               isnull(cs.gohours, 0)    gohours,
               isnull(cs.gthours, 0)    gthours,
               a.drp1,
               cs.township,
               cs.village,
               cs.village_group,
               cs.dj,
               cs.bw,
               cs.county,
               isnull(cs.fyear, 0)   as fyear,
               isnull(cs.tyear, 0)   as tyear,
               isnull(cs.oyear, 0)   as oyear,
               isnull(so.soilval, 0) as soilval
        FROM (
                 SELECT ISNULL(SUM(str.DRP), 0) AS drp1,
                        STCD
                 FROM dbo.ST_PPTN_R str
                 WHERE str.TM &gt; #{dateEnd3}
                   AND str.TM &lt;= #{times}
                   AND str.STCD IN (${code})
                 GROUP BY str.STCD
             ) a
                 LEFT JOIN (
            SELECT id,
                   cenconding,
                   crainfall,
                   township,
                   village,
                   village_group,
                   dj,
                   bw,
                   county,
                   fyear,
                   tyear,
                   oyear,
                   gohour,
                   gthour,
                   gshour,
                   imohour,
                   imthour,
                   imshour,
                   gohours,
                   gthours
            FROM blade_mountain
        ) cs ON cs.cenconding = a.STCD
                 LEFT JOIN (
            SELECT stcd, soilval
            FROM sys_soleval
        ) so ON so.stcd = a.STCD
    </select>
    <!--第一种预警一小时-->
    <select id="selecMoneYi" resultType="java.util.Map">
        SELECT cs.STCD,
               cs.STNM,
               cs.STLC,
               cs.ADDVNM,
               cs.RVNM,
               cs.HNNM,
               cs.LTTD,
               cs.LGTD,
               isnull(a.drp1, 0) as drp1
        FROM (
                 SELECT SUM(str.DRP) AS drp1,
                        STCD
                 FROM dbo.ST_PPTN_R str
                 WHERE str.TM &gt; #{dateEnd1}
                   AND str.TM &lt;= #{times}
                   AND str.STCD IN (${code})
                 GROUP BY str.STCD
             ) a
                 INNER JOIN (
            SELECT STCD,
                   st.STNM,
                   st.ADDVCD,
                   st.STLC,
                   st.LTTD,
                   st.LGTD,
                   st.RVNM,
                   st.HNNM,
                   ad.ADDVNM
            FROM dbo.ST_STBPRP_B st
                     INNER JOIN dbo.ST_ADDVCD_D ad ON ad.ADDVCD = st.ADDVCD
        ) cs ON cs.STCD = a.STCD
    </select>
    <!--第一种预警两小时-->
    <select id="selecMoneTw" resultType="java.util.Map">
        SELECT cs.STCD,
               cs.STNM,
               cs.STLC,
               cs.ADDVNM,
               cs.RVNM,
               cs.HNNM,
               cs.LTTD,
               cs.LGTD,
               isnull(a.drp1, 0) as drp1
        FROM (
                 SELECT SUM(str.DRP) AS drp1,
                        STCD
                 FROM dbo.ST_PPTN_R str
                 WHERE str.TM &gt; #{dateEnd2}
                   AND str.TM &lt;= #{times}
                   AND str.STCD IN (${code})
                 GROUP BY str.STCD
             ) a
                 INNER JOIN (
            SELECT STCD,
                   st.STNM,
                   st.ADDVCD,
                   st.STLC,
                   st.LTTD,
                   st.LGTD,
                   st.RVNM,
                   st.HNNM,
                   ad.ADDVNM
            FROM dbo.ST_STBPRP_B st
                     INNER JOIN dbo.ST_ADDVCD_D ad ON ad.ADDVCD = st.ADDVCD
        ) cs ON cs.STCD = a.STCD
    </select>
    <select id="selecMoneTr" resultType="java.util.Map">
        SELECT cs.STCD,
               cs.STNM,
               cs.STLC,
               cs.ADDVNM,
               cs.RVNM,
               cs.HNNM,
               cs.LTTD,
               cs.LGTD,
               isnull(a.drp1, 0) as drp1
        FROM (
                 SELECT SUM(str.DRP) AS drp1,
                        STCD
                 FROM dbo.ST_PPTN_R str
                 WHERE str.TM &gt; #{dateEnd3}
                   AND str.TM &lt;= #{times}
                   AND str.STCD IN (${code})
                 GROUP BY str.STCD
             ) a
                 INNER JOIN (
            SELECT STCD,
                   st.STNM,
                   st.ADDVCD,
                   st.STLC,
                   st.LTTD,
                   st.LGTD,
                   st.RVNM,
                   st.HNNM,
                   ad.ADDVNM
            FROM dbo.ST_STBPRP_B st
                     INNER JOIN dbo.ST_ADDVCD_D ad ON ad.ADDVCD = st.ADDVCD
        ) cs ON cs.STCD = a.STCD
    </select>
    <!--土壤色斑图-->
    <select id="selectS" resultType="java.util.Map">
        SELECT
            so.stcd,
            so.soilval,
            st.LGTD,
            st.LTTD
        FROM
            sys_soleval so
            INNER JOIN dbo.ST_STBPRP_B st ON so.stcd= st.STCD
    </select>
</mapper>
src/main/java/org/springblade/modules/mountainrain/service/IMountainrainService.java
@@ -138,4 +138,17 @@
    void soildel();
    //预报信息新增
    int insertYuc(List<Yucpptn> yucpptnList);
    List<Map<String, Object>> selectYup();
    List<MountainrainsCVO> selectYum();
    List<Map<String, Object>> selctsmriver(String time,String dateEnd);
    List<Map<String, Object>> selctbgriver(String time,String dateEnd);
    List<MountainrainsCVO> MountainYi(String times, String dateEnd1,String code);
    List<MountainrainsCVO> MountainTw(String times, String dateEnd2,String code);
    List<MountainrainsCVO> MountainTr(String times, String dateEnd3,String code);
    List<Map<String, Object>> selecMoneYi(String times, String dateEnd1, String code);
    List<Map<String, Object>> selecMoneTw(String times, String dateEnd2, String code);
    List<Map<String, Object>> selecMoneTr(String times, String dateEnd3, String code);
    List<Map<String, Object>> selectTu();
    List<Map<String, Object>> selectS();
    void del();
}
src/main/java/org/springblade/modules/mountainrain/service/impl/MountainrainServiceImpl.java
@@ -430,6 +430,71 @@
        return baseMapper.insertYuc(yucpptnList);
    }
    @Override
    public List<Map<String, Object>> selectYup() {
        return baseMapper.selectYup();
    }
    @Override
    public List<MountainrainsCVO> selectYum() {
        return baseMapper.selectYum();
    }
    @Override
    public List<Map<String, Object>> selctsmriver(String time,String dateEnd) {
        return baseMapper.selctsmriver(time, dateEnd);
    }
    @Override
    public List<Map<String, Object>> selctbgriver(String time,String dateEnd) {
        return baseMapper.selctbgriver(time, dateEnd);
    }
    @Override
    public List<MountainrainsCVO> MountainYi(String times, String dateEnd1, String code) {
        return baseMapper.MountainYi(times, dateEnd1, code);
    }
    @Override
    public List<MountainrainsCVO> MountainTw(String times, String dateEnd2, String code) {
        return baseMapper.MountainTw(times, dateEnd2, code);
    }
    @Override
    public List<MountainrainsCVO> MountainTr(String times, String dateEnd3, String code) {
        return baseMapper.MountainTr(times, dateEnd3, code);
    }
    @Override
    public List<Map<String, Object>> selecMoneYi(String times, String dateEnd1, String code) {
        return baseMapper.selecMoneYi(times, dateEnd1, code);
    }
    @Override
    public List<Map<String, Object>> selecMoneTw(String times, String dateEnd2, String code) {
        return baseMapper.selecMoneTw(times, dateEnd2, code);
    }
    @Override
    public List<Map<String, Object>> selecMoneTr(String times, String dateEnd3, String code) {
        return baseMapper.selecMoneTr(times, dateEnd3, code);
    }
    @Override
    public List<Map<String, Object>> selectTu() {
        return baseMapper.selectTu();
    }
    @Override
    public List<Map<String, Object>> selectS() {
        return baseMapper.selectS();
    }
    @Override
    public void del() {
        baseMapper.del();
    }
    /*
     * 计算最大值
src/main/java/org/springblade/modules/regionWeight/controller/RegionWeightController.java
@@ -168,325 +168,325 @@
        return R.data(tree);
    }
    /**
     * 面降雨量
     */
    @GetMapping("/selectReM")
    public R selectReM(String beginTime, String endTime) {
        String substring = beginTime.substring(0, 10);
        String r = beginTime.substring(11, 13);
        //截取月日
        String[] strs = substring.split("-");
        //月
        String year = strs[1].toString();
        //日
        String day = strs[2].toString();
        String substrings = endTime.substring(0, 10);
        String rs = endTime.substring(11, 13);
        //截取月日
        String[] strss = substrings.split("-");
        //月
        String years = strss[1].toString();
        //日
        String days = strss[2].toString();
        String yday = year + "月" + day + "日" + r + "时-" + years + "月" + days + "日" + rs + "时";
        //最新雨量值
        List<Map<String, Object>> map = regionWeightService.selectReM(beginTime, endTime);
        List<Map<String, Object>> mapAll = regionWeightService.selectAll();
        //权重值
        List<Map<String, Object>> list = regionWeightService.selectWeight();
        Map map1 = new HashMap();
        Map mapc = new HashMap();
        List<Map<String, Object>> list1 = new ArrayList<Map<String, Object>>();
        List<Map<String, Object>> lists = new ArrayList<Map<String, Object>>();
        List<Map<String, Object>> listc = new ArrayList<Map<String, Object>>();
        double v = 0;
        //统计抚州市雨量
        Double num = 0.0;
        String region_code = null;
        if (map.size() == 0) {
            List<Map<String, Object>> l = new ArrayList<Map<String, Object>>();
            List<Map<String, Object>> m = new ArrayList<Map<String, Object>>();
            mapc.put("List", l);
            mapc.put("Num", m);
            mapc.put("text", yday + "暂无降雨信息。");
            lists.add(mapc);
        } else {
            for (int i = 0; i < map.size(); i++) {
                region_code = map.get(i).get("REGION_CODE").toString();
                //获取行政区编码
                if (i != 0) {
                    String region_code1 = map.get(i - 1).get("REGION_CODE").toString();
                    if (!region_code.equals(region_code1)) {
                        map1.put("id", region_code1);
                        map1.put("value", v);
                        list1.add(map1);
                        v = 0;
                        map1 = new HashMap();
                        for (int j = 0; j < list.size(); j++) {
                            if (region_code.equals(list.get(j).get("STATION_CODE").toString())) {
                                BigDecimal bigDecimaldrp = (BigDecimal) map.get(i).get("DRP");
                                double drp = bigDecimaldrp.floatValue();
                                String weight1 = map.get(i).get("WEIGHT").toString();
                                float weight = Float.parseFloat(weight1);
                                v += drp * weight;
                                break;
                            }
                        }
                    } else {
                        for (int j = 0; j < list.size(); j++) {
                            if (region_code.equals(list.get(j).get("STATION_CODE").toString())) {
                                BigDecimal bigDecimaldrp = (BigDecimal) map.get(i).get("DRP");
                                double drp = bigDecimaldrp.floatValue();
                                String weight1 = map.get(i).get("WEIGHT").toString();
                                float weight = Float.parseFloat(weight1);
                                System.out.println(Math.round(drp));
                                v += drp * weight;
                                break;
                            }
                        }
                    }
                } else {
                    for (int j = 0; j < list.size(); j++) {
                        if (region_code.equals(list.get(j).get("STATION_CODE").toString())) {
                            BigDecimal bigDecimaldrp = (BigDecimal) map.get(i).get("DRP");
                            double drp = bigDecimaldrp.floatValue();
                            String weight1 = map.get(i).get("WEIGHT").toString();
                            float weight = Float.parseFloat(weight1);
                            System.out.println(Math.round(drp));
                            v += drp * weight;
                            break;
                        }
                    }
                }
            }
            map1.put("id", region_code);
            map1.put("value", v);
            list1.add(map1);
            Map<String, Object> result1 = new HashMap<String, Object>();
            //县/区面雨量值
            for (Map<String, Object> maps : list1) {
                String id = maps.get("id").toString();
                Double value = Double.parseDouble(maps.get("value").toString());
                if (result1.containsKey(id)) {
                    Double temp = Double.parseDouble(result1.get(id).toString());
                    value += temp;
                }
                result1.put(id, value);
            }
            //计算市的面雨量
            for (String k : result1.keySet()) {
                for (int c = 0; c < list.size(); c++) {
                    if (k.equals(list.get(c).get("STATION_CODE").toString())) {
                        String s = result1.get(k).toString();
                        Double w = Double.parseDouble(s);
                        String weight = list.get(c).get("WEIGHT").toString();
                        Double weights = Double.parseDouble(weight);
                        double v1 = w * weights;
                        num += v1;
                    } else {
                        continue;
                    }
                }
            }
            // 排序
            List<Map.Entry<String, Object>> entryList2 = new ArrayList<Map.Entry<String, Object>>(result1.entrySet());
            Collections.sort(entryList2, new Comparator<Map.Entry<String, Object>>() {
                @Override
                public int compare(Entry<String, Object> me1, Entry<String, Object> me2) {
                    return me2.getValue().toString().compareTo(me1.getValue().toString()); // 升序排序
                }
            });
            //拼接前3位降雨最大的区域
            double v3 = (double) Math.round(num * 10) / 10;
            String text = "全市日平均降雨量:" + v3 + "毫米。 ";
            String text1 = "县市区平均降雨量前3位为: ";
            String tx = "";
            for (int i = 0; i < entryList2.size(); i++) {
                Map mapa = new HashMap();
                String codes = entryList2.get(i).getKey();
                String values = entryList2.get(i).getValue().toString();
                Double a = Double.parseDouble(values);
                double as = (double) Math.round(a * 10) / 10;
                for (int j = 0; j < list.size(); j++) {
                    if (codes.equals(list.get(j).get("STATION_CODE").toString())) {
                        String station_name = list.get(j).get("STATION_NAME").toString();
                        mapa.put("region", station_name);
                        mapa.put("dyp", as);
                        listc.add(mapa);
                        if (i < 3) {
                            tx += station_name + "降雨量为:" + as + "毫米,";
                        }
                    }
                }
            }
            mapc.put("List", listc);
            mapc.put("Num", mapAll);
            mapc.put("text", yday + text);
            lists.add(mapc);
        }
        return R.data(lists);
    }
//    /**
//     * 面降雨量
//     */
//    @GetMapping("/selectReM")
//    public R selectReM(String beginTime, String endTime) {
//        String substring = beginTime.substring(0, 10);
//        String r = beginTime.substring(11, 13);
//        //截取月日
//        String[] strs = substring.split("-");
//        //月
//        String year = strs[1].toString();
//        //日
//        String day = strs[2].toString();
//        String substrings = endTime.substring(0, 10);
//        String rs = endTime.substring(11, 13);
//        //截取月日
//        String[] strss = substrings.split("-");
//        //月
//        String years = strss[1].toString();
//        //日
//        String days = strss[2].toString();
//        String yday = year + "月" + day + "日" + r + "时-" + years + "月" + days + "日" + rs + "时";
//        //最新雨量值
//        List<Map<String, Object>> map = regionWeightService.selectReM(beginTime, endTime);
//        List<Map<String, Object>> mapAll = regionWeightService.selectAll();
//        //权重值
//        List<Map<String, Object>> list = regionWeightService.selectWeight();
//        Map map1 = new HashMap();
//        Map mapc = new HashMap();
//        List<Map<String, Object>> list1 = new ArrayList<Map<String, Object>>();
//        List<Map<String, Object>> lists = new ArrayList<Map<String, Object>>();
//        List<Map<String, Object>> listc = new ArrayList<Map<String, Object>>();
//        double v = 0;
//        //统计抚州市雨量
//        Double num = 0.0;
//        String region_code = null;
//        if (map.size() == 0) {
//            List<Map<String, Object>> l = new ArrayList<Map<String, Object>>();
//            List<Map<String, Object>> m = new ArrayList<Map<String, Object>>();
//            mapc.put("List", l);
//            mapc.put("Num", m);
//            mapc.put("text", yday + "暂无降雨信息。");
//            lists.add(mapc);
//        } else {
//            for (int i = 0; i < map.size(); i++) {
//                region_code = map.get(i).get("REGION_CODE").toString();
//                //获取行政区编码
//                if (i != 0) {
//                    String region_code1 = map.get(i - 1).get("REGION_CODE").toString();
//                    if (!region_code.equals(region_code1)) {
//                        map1.put("id", region_code1);
//                        map1.put("value", v);
//                        list1.add(map1);
//                        v = 0;
//                        map1 = new HashMap();
//                        for (int j = 0; j < list.size(); j++) {
//                            if (region_code.equals(list.get(j).get("STATION_CODE").toString())) {
//                                BigDecimal bigDecimaldrp = (BigDecimal) map.get(i).get("DRP");
//                                double drp = bigDecimaldrp.floatValue();
//                                String weight1 = map.get(i).get("WEIGHT").toString();
//                                float weight = Float.parseFloat(weight1);
//                                v += drp * weight;
//                                break;
//                            }
//                        }
//                    } else {
//                        for (int j = 0; j < list.size(); j++) {
//                            if (region_code.equals(list.get(j).get("STATION_CODE").toString())) {
//                                BigDecimal bigDecimaldrp = (BigDecimal) map.get(i).get("DRP");
//                                double drp = bigDecimaldrp.floatValue();
//                                String weight1 = map.get(i).get("WEIGHT").toString();
//                                float weight = Float.parseFloat(weight1);
//                                System.out.println(Math.round(drp));
//                                v += drp * weight;
//                                break;
//                            }
//                        }
//                    }
//                } else {
//                    for (int j = 0; j < list.size(); j++) {
//                        if (region_code.equals(list.get(j).get("STATION_CODE").toString())) {
//                            BigDecimal bigDecimaldrp = (BigDecimal) map.get(i).get("DRP");
//                            double drp = bigDecimaldrp.floatValue();
//                            String weight1 = map.get(i).get("WEIGHT").toString();
//                            float weight = Float.parseFloat(weight1);
//                            System.out.println(Math.round(drp));
//                            v += drp * weight;
//                            break;
//                        }
//                    }
//                }
//            }
//            map1.put("id", region_code);
//            map1.put("value", v);
//            list1.add(map1);
//            Map<String, Object> result1 = new HashMap<String, Object>();
//            //县/区面雨量值
//            for (Map<String, Object> maps : list1) {
//                String id = maps.get("id").toString();
//                Double value = Double.parseDouble(maps.get("value").toString());
//                if (result1.containsKey(id)) {
//                    Double temp = Double.parseDouble(result1.get(id).toString());
//                    value += temp;
//                }
//                result1.put(id, value);
//            }
//            //计算市的面雨量
//            for (String k : result1.keySet()) {
//                for (int c = 0; c < list.size(); c++) {
//                    if (k.equals(list.get(c).get("STATION_CODE").toString())) {
//                        String s = result1.get(k).toString();
//                        Double w = Double.parseDouble(s);
//                        String weight = list.get(c).get("WEIGHT").toString();
//                        Double weights = Double.parseDouble(weight);
//                        double v1 = w * weights;
//                        num += v1;
//                    } else {
//                        continue;
//                    }
//
//                }
//            }
//            // 排序
//            List<Map.Entry<String, Object>> entryList2 = new ArrayList<Map.Entry<String, Object>>(result1.entrySet());
//            Collections.sort(entryList2, new Comparator<Map.Entry<String, Object>>() {
//                @Override
//                public int compare(Entry<String, Object> me1, Entry<String, Object> me2) {
//                    return me2.getValue().toString().compareTo(me1.getValue().toString()); // 升序排序
//                }
//            });
//            //拼接前3位降雨最大的区域
//            double v3 = (double) Math.round(num * 10) / 10;
//            String text = "全市日平均降雨量:" + v3 + "毫米。 ";
//            String text1 = "县市区平均降雨量前3位为: ";
//            String tx = "";
//            for (int i = 0; i < entryList2.size(); i++) {
//                Map mapa = new HashMap();
//                String codes = entryList2.get(i).getKey();
//                String values = entryList2.get(i).getValue().toString();
//                Double a = Double.parseDouble(values);
//                double as = (double) Math.round(a * 10) / 10;
//                for (int j = 0; j < list.size(); j++) {
//                    if (codes.equals(list.get(j).get("STATION_CODE").toString())) {
//                        String station_name = list.get(j).get("STATION_NAME").toString();
//                        mapa.put("region", station_name);
//                        mapa.put("dyp", as);
//                        listc.add(mapa);
//                        if (i < 3) {
//                            tx += station_name + "降雨量为:" + as + "毫米,";
//                        }
//                    }
//
//                }
//            }
//            mapc.put("List", listc);
//            mapc.put("Num", mapAll);
//            mapc.put("text", yday + text);
//            lists.add(mapc);
//        }
//        return R.data(lists);
//    }
    /**
     * 点降雨量(时段降雨,自定义降雨)
     *
     * @param beginTime
     * @param endTime
     * @return
     */
    @GetMapping("/selectReD")
    public R selectReD(String beginTime, String endTime) {
        String substring = beginTime.substring(0, 10);
        String r = beginTime.substring(11, 13);
        //截取月日
        String[] strs = substring.split("-");
        //月
        String year = strs[1].toString();
        //日
        String day = strs[2].toString();
        String substrings = endTime.substring(0, 10);
        String rs = endTime.substring(11, 13);
        //截取月日
        String[] strss = substrings.split("-");
        //月
        String years = strss[1].toString();
        //日
        String days = strss[2].toString();
        List<Map<String, Object>> maps = regionWeightService.selectYjs(beginTime, endTime);
        List<Map<String, Object>> lists = new ArrayList<>();
        Map<String, Object> map = new HashMap<String, Object>();
        String text = "";
        String yday = year + "月" + day + "日" + r + "时-" + years + "月" + days + "日" + rs + "时。";
        //0-10降雨量范围
        List lista = new ArrayList<>();
        //10-25降雨量范围
        List listb = new ArrayList<>();
        //25-50降雨量范围
        List listc = new ArrayList<>();
        //50-100降雨量范围
        List listd = new ArrayList<>();
        //100-250降雨量范围
        List liste = new ArrayList<>();
        //250降雨量范围
        List listf = new ArrayList<>();
        for (int i = 0; i < maps.size(); i++) {
            if (i < 3) {
                String addvnm = maps.get(i).get("ADDVNM").toString();
                String stnm = maps.get(i).get("STNM").toString();
                BigDecimal bigDecimaldyp = (BigDecimal) maps.get(i).get("dyp");//日雨量
                double dyp = bigDecimaldyp.doubleValue();
                if (dyp > 0 && dyp <= 10) {
                    lista.add(maps.get(i));
                } else if (dyp > 10 && dyp <= 25) {
                    listb.add(maps.get(i));
                } else if (dyp > 25 && dyp <= 50) {
                    listc.add(maps.get(i));
                } else if (dyp > 50 && dyp <= 100) {
                    listd.add(maps.get(i));
                } else if (dyp > 100 && dyp <= 250) {
                    liste.add(maps.get(i));
                } else if (dyp > 250) {
                    listf.add(maps.get(i));
                }
                text += stnm + "站" + dyp + "毫米,";
            } else {
                BigDecimal bigDecimaldyp = (BigDecimal) maps.get(i).get("dyp");//日雨量
                double dyp = bigDecimaldyp.doubleValue();
                if (dyp > 0 && dyp <= 10) {
                    lista.add(maps.get(i));
                } else if (dyp > 10 && dyp <= 25) {
                    listb.add(maps.get(i));
                } else if (dyp > 25 && dyp <= 50) {
                    listc.add(maps.get(i));
                } else if (dyp > 50 && dyp <= 100) {
                    listd.add(maps.get(i));
                } else if (dyp > 100 && dyp <= 250) {
                    liste.add(maps.get(i));
                } else if (dyp > 250) {
                    listf.add(maps.get(i));
                }
            }
        }
        //0-10
        map.put("one", lista);
        //10-25
        map.put("two", listb);
        //25-50
        map.put("three", listc);
        //50-100
        map.put("four", listd);
        //100-250
        map.put("five", liste);
        //250
        map.put("six", listf);
        String a = "";
        if (maps.size() == 0) {
            a = yday + "暂无降雨信息。";
        } else {
            a = yday + "站点最大降雨量前3位为:" + text.substring(0, text.length() - 1) + "。";
        }
        map.put("text", a);
        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("lon");
        cell = row.createCell((short) 1);
        cell.setCellValue("lat");
        cell = row.createCell((short) 2);
        cell.setCellValue("rain");
        for (int i = 0; i < maps.size(); i++) {
            // 第四步,创建单元格,并设置值
            row = sheet.createRow((int) i + 1);
            HSSFCell celli = row.createCell((short) 0);
            row.createCell((short) 0).setCellValue(maps.get(i).get("LGTD").toString());
            row.createCell((short) 1).setCellValue(maps.get(i).get("LTTD").toString());
            row.createCell((short) 2).setCellValue(maps.get(i).get("dyp").toString());
        }
        // 第六步,将文件存到指定位置
        try {
            fileName = "D:/pptnd.xlsx";
            FileOutputStream fout = new FileOutputStream(fileName);
            wb.write(fout);
            fout.close();
            wb.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        Process proc;
        try {
            proc = Runtime.getRuntime().exec("python D:\\fz\\fz.py");
            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(lists);
    }
//    /**
//     * 点降雨量(时段降雨,自定义降雨)
//     *
//     * @param beginTime
//     * @param endTime
//     * @return
//     */
//    @GetMapping("/selectReD")
//    public R selectReD(String beginTime, String endTime) {
//        String substring = beginTime.substring(0, 10);
//        String r = beginTime.substring(11, 13);
//        //截取月日
//        String[] strs = substring.split("-");
//        //月
//        String year = strs[1].toString();
//        //日
//        String day = strs[2].toString();
//        String substrings = endTime.substring(0, 10);
//        String rs = endTime.substring(11, 13);
//        //截取月日
//        String[] strss = substrings.split("-");
//        //月
//        String years = strss[1].toString();
//        //日
//        String days = strss[2].toString();
//        List<Map<String, Object>> maps = regionWeightService.selectYjs(beginTime, endTime);
//        List<Map<String, Object>> lists = new ArrayList<>();
//        Map<String, Object> map = new HashMap<String, Object>();
//        String text = "";
//        String yday = year + "月" + day + "日" + r + "时-" + years + "月" + days + "日" + rs + "时。";
//        //0-10降雨量范围
//        List lista = new ArrayList<>();
//        //10-25降雨量范围
//        List listb = new ArrayList<>();
//        //25-50降雨量范围
//        List listc = new ArrayList<>();
//        //50-100降雨量范围
//        List listd = new ArrayList<>();
//        //100-250降雨量范围
//        List liste = new ArrayList<>();
//        //250降雨量范围
//        List listf = new ArrayList<>();
//        for (int i = 0; i < maps.size(); i++) {
//            if (i < 3) {
//                String addvnm = maps.get(i).get("ADDVNM").toString();
//                String stnm = maps.get(i).get("STNM").toString();
//                BigDecimal bigDecimaldyp = (BigDecimal) maps.get(i).get("dyp");//日雨量
//                double dyp = bigDecimaldyp.doubleValue();
//                if (dyp > 0 && dyp <= 10) {
//                    lista.add(maps.get(i));
//                } else if (dyp > 10 && dyp <= 25) {
//                    listb.add(maps.get(i));
//                } else if (dyp > 25 && dyp <= 50) {
//                    listc.add(maps.get(i));
//                } else if (dyp > 50 && dyp <= 100) {
//                    listd.add(maps.get(i));
//                } else if (dyp > 100 && dyp <= 250) {
//                    liste.add(maps.get(i));
//                } else if (dyp > 250) {
//                    listf.add(maps.get(i));
//                }
//                text += stnm + "站" + dyp + "毫米,";
//            } else {
//                BigDecimal bigDecimaldyp = (BigDecimal) maps.get(i).get("dyp");//日雨量
//                double dyp = bigDecimaldyp.doubleValue();
//                if (dyp > 0 && dyp <= 10) {
//                    lista.add(maps.get(i));
//                } else if (dyp > 10 && dyp <= 25) {
//                    listb.add(maps.get(i));
//                } else if (dyp > 25 && dyp <= 50) {
//                    listc.add(maps.get(i));
//                } else if (dyp > 50 && dyp <= 100) {
//                    listd.add(maps.get(i));
//                } else if (dyp > 100 && dyp <= 250) {
//                    liste.add(maps.get(i));
//                } else if (dyp > 250) {
//                    listf.add(maps.get(i));
//                }
//            }
//        }
//        //0-10
//        map.put("one", lista);
//        //10-25
//        map.put("two", listb);
//        //25-50
//        map.put("three", listc);
//        //50-100
//        map.put("four", listd);
//        //100-250
//        map.put("five", liste);
//        //250
//        map.put("six", listf);
//        String a = "";
//        if (maps.size() == 0) {
//            a = yday + "暂无降雨信息。";
//        } else {
//            a = yday + "站点最大降雨量前3位为:" + text.substring(0, text.length() - 1) + "。";
//        }
//        map.put("text", a);
//        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("lon");
//        cell = row.createCell((short) 1);
//        cell.setCellValue("lat");
//        cell = row.createCell((short) 2);
//        cell.setCellValue("rain");
//        for (int i = 0; i < maps.size(); i++) {
//            // 第四步,创建单元格,并设置值
//            row = sheet.createRow((int) i + 1);
//            HSSFCell celli = row.createCell((short) 0);
//            row.createCell((short) 0).setCellValue(maps.get(i).get("LGTD").toString());
//            row.createCell((short) 1).setCellValue(maps.get(i).get("LTTD").toString());
//            row.createCell((short) 2).setCellValue(maps.get(i).get("dyp").toString());
//        }
//        // 第六步,将文件存到指定位置
//        try {
//            fileName = "D:/pptnd.xlsx";
//            FileOutputStream fout = new FileOutputStream(fileName);
//            wb.write(fout);
//            fout.close();
//            wb.close();
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        Process proc;
//        try {
//            proc = Runtime.getRuntime().exec("python D:\\fz\\fz.py");
//            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(lists);
//    }
//
    /**
     * 流域
     */
     *//*
    @GetMapping("/selectReL")
    public R selectReL(String beginTime, String endTime) {
        String substring = beginTime.substring(0, 10);
@@ -642,7 +642,7 @@
            lists.add(mapc);
        }
        return R.data(lists);
    }
    }*/
    /**
     * @param type        类型 0:实时 1 历史
@@ -743,6 +743,13 @@
    }
    /**
     * 点降雨
     * @param beginTime
     * @param endTime
     * @return
     */
    @GetMapping("/selectReDc")
    public R selectReDc(String beginTime, String endTime) {
        String substring = beginTime.substring(0, 10);
@@ -765,6 +772,7 @@
        String s = regionWeightService.selectCode();
        String[] split = s.split(",");
        String strArrays = "";
        System.out.println("数量:"+split.length);
        for (int i = 0; i < split.length; i++) {
            strArrays += "'" + split[i] + "',";
        }
@@ -869,12 +877,58 @@
        cell = row.createCell((short) 2);
        cell.setCellValue("rain");
        for (int i = 0; i < maps.size(); i++) {
            String stcd = maps.get(i).get("STCD").toString();
            // 第四步,创建单元格,并设置值
            row = sheet.createRow((int) i + 1);
            HSSFCell celli = row.createCell((short) 0);
            row.createCell((short) 0).setCellValue(maps.get(i).get("LGTD").toString());
            row.createCell((short) 1).setCellValue(maps.get(i).get("LTTD").toString());
            row.createCell((short) 2).setCellValue(maps.get(i).get("dyp").toString());
            if (stcd.equals("62455350")){
                row.createCell((short) 0).setCellValue("117.344876");
                row.createCell((short) 1).setCellValue("27.827067");
                row.createCell((short) 2).setCellValue(maps.get(i).get("dyp").toString());
            }
            if (stcd.equals("62334845")){
                row.createCell((short) 0).setCellValue("115.625720");
                row.createCell((short) 1).setCellValue("27.152794");
                row.createCell((short) 2).setCellValue(maps.get(i).get("dyp").toString());
            }
            if (stcd.equals("62433800")){
                row.createCell((short) 0).setCellValue("115.618546");
                row.createCell((short) 1).setCellValue("27.683604");
                row.createCell((short) 2).setCellValue(maps.get(i).get("dyp").toString());
            }
            if (stcd.equals("62436760")){
                row.createCell((short) 0).setCellValue("116.060889");
                row.createCell((short) 1).setCellValue("28.216806");
                row.createCell((short) 2).setCellValue(maps.get(i).get("dyp").toString());
            }
            if (stcd.equals("62437250")){
                row.createCell((short) 0).setCellValue("116.622783");
                row.createCell((short) 1).setCellValue("28.489384");
                row.createCell((short) 2).setCellValue(maps.get(i).get("dyp").toString());
            }
            if (stcd.equals("62433700")){
                row.createCell((short) 0).setCellValue("115.558771");
                row.createCell((short) 1).setCellValue("27.518623");
                row.createCell((short) 2).setCellValue(maps.get(i).get("dyp").toString());
            }
            if (stcd.equals("62425740")){
                row.createCell((short) 0).setCellValue("117.208587");
                row.createCell((short) 1).setCellValue("27.298647");
                row.createCell((short) 2).setCellValue(maps.get(i).get("dyp").toString());
            }
            if (stcd.equals("62437235")){
                row.createCell((short) 0).setCellValue("116.780591");
                row.createCell((short) 1).setCellValue("28.391352");
                row.createCell((short) 2).setCellValue(maps.get(i).get("dyp").toString());
            }
            if (stcd.equals("62437250")){
                row.createCell((short) 0).setCellValue("116.555834");
                row.createCell((short) 1).setCellValue("28.518077");
                row.createCell((short) 2).setCellValue(maps.get(i).get("dyp").toString());
            }
        }
        // 第六步,将文件存到指定位置
        try {
@@ -892,7 +946,7 @@
            BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
            String line = null;
            while ((line = in.readLine()) != null) {
                System.out.println(line);
                //System.out.println(line);
            }
            in.close();
            proc.waitFor();
@@ -935,7 +989,7 @@
        String code = strArrays.substring(0, strArrays.length() - 1);
        //List<Map<String, Object>> map = regionWeightService.selectReM(beginTime, endTime);
        List<Map<String, Object>> map = regionWeightService.selectReMs(beginTime, endTime,code);
        List<Map<String, Object>> mapAll = regionWeightService.selectAll();
        List<Map<String, Object>> mapAll = regionWeightService.selectAll(beginTime, endTime,code);
        //权重值
        List<Map<String, Object>> list = regionWeightService.selectWeight();
        Map map1 = new HashMap();
@@ -983,7 +1037,7 @@
                                double drp = bigDecimaldrp.floatValue();
                                String weight1 = map.get(i).get("WEIGHT").toString();
                                float weight = Float.parseFloat(weight1);
                                System.out.println(Math.round(drp));
                                //System.out.println(Math.round(drp));
                                v += drp * weight;
                                break;
                            }
@@ -996,7 +1050,6 @@
                            double drp = bigDecimaldrp.floatValue();
                            String weight1 = map.get(i).get("WEIGHT").toString();
                            float weight = Float.parseFloat(weight1);
                            System.out.println(Math.round(drp));
                            v += drp * weight;
                            break;
                        }
@@ -1073,4 +1126,223 @@
        return R.data(lists);
    }
    /**
     * 流域
     */
    @GetMapping("/selectReL")
    public R selectReL(String beginTime, String endTime) {
        String substring = beginTime.substring(0, 10);
        String r = beginTime.substring(11, 13);
        //截取月日
        String[] strs = substring.split("-");
        //月
        String year = strs[1].toString();
        //日
        String day = strs[2].toString();
        String substrings = endTime.substring(0, 10);
        String rs = endTime.substring(11, 13);
        //截取月日
        String[] strss = substrings.split("-");
        //月
        String years = strss[1].toString();
        //日
        String days = strss[2].toString();
        String yday = year + "月" + day + "日" + r + "时-" + years + "月" + days + "日" + rs + "时。";
        String text = "";
        String ss = regionWeightService.selectCodeM();
        String[] split = ss.split(",");
        String strArrays = "";
        for (int i = 0; i < split.length; i++) {
            strArrays += "'" + split[i] + "',";
}
        String codel = strArrays.substring(0, strArrays.length() - 1);
        //最新雨量值
        List<Map<String, Object>> map = regionWeightService.selectReL(beginTime, endTime, codel);
//        //色斑图
//        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("lon");
//        cell = row.createCell((short) 1);
//        cell.setCellValue("lat");
//        cell = row.createCell((short) 2);
//        cell.setCellValue("rain");
//        for (int i = 0; i < map.size(); i++) {
//            // 第四步,创建单元格,并设置值
//            row = sheet.createRow((int) i + 1);
//            HSSFCell celli = row.createCell((short) 0);
//            row.createCell((short) 0).setCellValue(map.get(i).get("LGTD").toString());
//            row.createCell((short) 1).setCellValue(map.get(i).get("LTTD").toString());
//            row.createCell((short) 2).setCellValue(map.get(i).get("DRP").toString());
//        }
//        // 第六步,将文件存到指定位置
//        try {
//            fileName = "D:/myl.xlsx";
//            FileOutputStream fout = new FileOutputStream(fileName);
//            wb.write(fout);
//            fout.close();
//            wb.close();
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        Process proc;
//        try {
//            proc = Runtime.getRuntime().exec("python D:\\fz\\myl.py");
//            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();
//        }
        //权重值
        List<Map<String, Object>> list = regionWeightService.selectWeights();
        List<Map<String, Object>> list2 = regionWeightService.selectLALL();
        List<Map<String, Object>> list3 = regionWeightService.selectLNam();
        Map mc = new HashMap();
        for (int a = 0; a < list2.size(); a++) {
            for (int b = 0; b < list3.size(); b++) {
                String code = list2.get(a).get("code").toString();
                String num = list2.get(a).get("num").toString();
                String code1 = list3.get(b).get("code").toString();
                if (code.equals(code1)) {
                    mc.put(list3.get(b).get("cname").toString(), num);
                }
            }
        }
        Map map1 = new HashMap();
        Map mapc = new HashMap();
        List<Map<String, Object>> list1 = new ArrayList<Map<String, Object>>();
        List<Map<String, Object>> lists = new ArrayList<Map<String, Object>>();
        List<Map<String, Object>> listc = new ArrayList<Map<String, Object>>();
        double v = 0;
        //统计抚州市雨量
        Double num = 0.0;
        String region_code = null;
        if (map.size() == 0) {
            List<Map<String, Object>> l = new ArrayList<Map<String, Object>>();
            List<Map<String, Object>> m = new ArrayList<Map<String, Object>>();
            mapc.put("List", l);
            mapc.put("Num", m);
            mapc.put("text", yday + "暂无流域信息。");
            lists.add(mapc);
        } else {
            for (int i = 0; i < map.size(); i++) {
                region_code = map.get(i).get("REGION_CODE").toString();
                //获取行政区编码
                if (i != 0) {
                    String region_code1 = map.get(i - 1).get("REGION_CODE").toString();
                    if (!region_code.equals(region_code1)) {
                        map1.put("id", region_code1);
                        map1.put("value", v);
                        list1.add(map1);
                        v = 0;
                        map1 = new HashMap();
                        for (int j = 0; j < list.size(); j++) {
                            if (region_code.equals(list.get(j).get("STATION_CODE").toString())) {
                                BigDecimal bigDecimaldrp = (BigDecimal) map.get(i).get("DRP");
                                double drp = bigDecimaldrp.floatValue();
                                String weight1 = map.get(i).get("WEIGHT").toString();
                                float weight = Float.parseFloat(weight1);
                                v += drp * weight;
                                break;
                            }
                        }
                    } else {
                        for (int j = 0; j < list.size(); j++) {
                            if (region_code.equals(list.get(j).get("STATION_CODE").toString())) {
                                BigDecimal bigDecimaldrp = (BigDecimal) map.get(i).get("DRP");
                                double drp = bigDecimaldrp.floatValue();
                                String weight1 = map.get(i).get("WEIGHT").toString();
                                float weight = Float.parseFloat(weight1);
                                v += drp * weight;
                                break;
                            }
                        }
                    }
                } else {
                    for (int j = 0; j < list.size(); j++) {
                        if (region_code.equals(list.get(j).get("STATION_CODE").toString())) {
                            BigDecimal bigDecimaldrp = (BigDecimal) map.get(i).get("DRP");
                            double drp = bigDecimaldrp.floatValue();
                            String weight1 = map.get(i).get("WEIGHT").toString();
                            float weight = Float.parseFloat(weight1);
                            v += drp * weight;
                            break;
                        }
                    }
                }
            }
            map1.put("id", region_code);
            map1.put("value", v);
            list1.add(map1);
            Map<String, Object> result1 = new HashMap<String, Object>();
            //县/区面雨量值
            for (Map<String, Object> maps : list1) {
                String id = maps.get("id").toString();
                Double value = Double.parseDouble(maps.get("value").toString());
                if (result1.containsKey(id)) {
                    Double temp = Double.parseDouble(result1.get(id).toString());
                    value += temp;
                }
                result1.put(id, value);
            }
            // 排序
            List<Map.Entry<String, Object>> entryList2 = new ArrayList<Map.Entry<String, Object>>(result1.entrySet());
            Collections.sort(entryList2, new Comparator<Map.Entry<String, Object>>() {
                @Override
                public int compare(Entry<String, Object> me1, Entry<String, Object> me2) {
                    return me2.getValue().toString().compareTo(me1.getValue().toString()); // 升序排序
                }
            });
            for (int i = 0; i < entryList2.size(); i++) {
                Map mapa = new HashMap();
                String codes = entryList2.get(i).getKey();
                String values = entryList2.get(i).getValue().toString();
                Double a = Double.parseDouble(values);
                double as = (double) Math.round(a * 10) / 10;
                for (int j = 0; j < list.size(); j++) {
                    if (codes.equals(list.get(j).get("STATION_CODE").toString())) {
                        String station_name = list.get(j).get("STATION_NAME").toString();
                        mapa.put("region", station_name);
                        mapa.put("dyp", as);
                        listc.add(mapa);
                    }
                }
            }
            Collections.sort(listc, new Comparator<Map<String, Object>>() {
                public int compare(Map<String, Object> o1, Map<String, Object> o2) {
                    return (Double) o1.get("dyp") < (Double) o2.get("dyp") ? 1 : ((Double) o1.get("dyp") == (Double) o2.get("dyp") ? 0 : -1);
                }
            });
            for (int c = 0; c < listc.size(); c++) {
                if (c < 3) {
                    text += listc.get(c).get("region").toString() + ":" + listc.get(c).get("dyp") + "毫米,";
                }
            }
            String a = "流域前三的为:" + text.substring(0, text.length() - 1) + "。";
            mapc.put("List", listc);
            mapc.put("Num", mc);
            mapc.put("text", yday + a);
            lists.add(mapc);
        }
        return R.data(lists);
    }
}
src/main/java/org/springblade/modules/regionWeight/mapper/RegionWeightMapper.java
@@ -56,12 +56,13 @@
    //最新面降雨量
    List<Map<String, Object>>  selectReM(String beginTime,String endTime);
    List<Map<String, Object>>  selectReMs(String beginTime,String endTime,String code);
    List<Map<String, Object>>  selectReL(String beginTime,String endTime);
    List<Map<String, Object>>  selectReL(String beginTime,String endTime,String code);
    //List<Map<String, Object>>  selectReL(String beginTime,String endTime);
    List<Map<String, Object>>  selectWeight();
    List<Map<String, Object>>  selectWeights();
    List<Map<String, Object>> selectYjs(String beginTime,String endTime);
    List<Map<String, Object>> ss(String beginTime, String endTime, String code);
    List<Map<String, Object>> selectAll();
    List<Map<String, Object>> selectAll(String beginTime, String endTime, String code);
    List<Map<String, Object>> selectLALL();
    List<Map<String, Object>> selectLNam();
    /**
@@ -72,4 +73,5 @@
    String selectCode();
    String selectCodeM();
    String selectCodeL();
}
src/main/java/org/springblade/modules/regionWeight/mapper/RegionWeightMapper.xml
@@ -88,42 +88,6 @@
                 st.STTP
    </select>
    <!--流域-->
    <select id="selectReL" resultType="java.util.HashMap">
        SELECT cs1.STCD,
               isnull(cs1.DRP, 0) AS DRP,
               s.STATION_NAME,
               sc.STATION_NAME    AS REGION_NAME,
               s.WEIGHT,
               s.BASIN_CODE       as REGION_CODE,
               st.LGTD,
               st.LTTD,
               st.STTP
        FROM (
                 SELECT STCD,
                        SUM(DRP) AS DRP
                 FROM dbo.ST_PPTN_R
                 WHERE TM &gt; #{beginTime}
                   AND TM &lt;= #{endTime}
                 GROUP BY STCD
             ) cs1
                 INNER JOIN (SELECT STATION_CODE, STATION_NAME, WEIGHT, BASIN_CODE FROM ZHSW_BASIN_STATION) s
                            ON s.STATION_CODE = cs1.STCD
                 INNER JOIN (SELECT STCD, LGTD, LTTD, STTP, ADDVCD FROM dbo.ST_STBPRP_B) st ON st.STCD = cs1.STCD
                 INNER JOIN dbo.ST_ADDVCD_D ad ON ad.ADDVCD = st.ADDVCD
                 INNER JOIN (SELECT STATION_CODE, STATION_NAME, BASIN_CODE FROM ZHSW_BASIN_STATION) sc
                            ON sc.STATION_CODE = s.BASIN_CODE
        GROUP BY cs1.STCD,
                 cs1.DRP,
                 s.STATION_NAME,
                 sc.STATION_NAME,
                 s.WEIGHT,
                 s.BASIN_CODE,
                 st.LGTD,
                 st.LTTD,
                 st.STTP
    </select>
    <!--个县区权重值-->
    <select id="selectWeight" resultType="java.util.HashMap">
        SELECT STATION_CODE, STATION_NAME, WEIGHT
@@ -212,11 +176,29 @@
        order by csd.dyp desc
    </select>
    <select id="selectAll" resultType="java.util.HashMap">
        SELECT STATION_CODE AS STCD,
               STATION_NAME AS STNM,
               REGION_NAME  AS ADDVNM
        FROM ZHSW_REGION_WEIGHT
        WHERE SPARE1 != 0
        SELECT r.STATION_CODE AS STCD,
               r.STATION_NAME AS STNM,
               r.REGION_NAME AS ADDVNM,
               s.STNM,
               s.STLC,
               s.LTTD,
               s.LGTD,
               isnull(cs1.DRP, 0) as DRP
        FROM ZHSW_REGION_WEIGHT r
                 INNER JOIN ST_STBPRP_B s ON r.STATION_CODE = s.STCD
                 LEFT JOIN (
            SELECT
                STCD,
                SUM ( DRP ) AS DRP
            FROM
                ST_PPTN_R
            WHERE
                TM &gt; #{beginTime}
              AND TM&lt;= #{endTime} AND STCD IN (${code})
            GROUP BY
                STCD
        ) cs1 ON cs1.STCD= r.STATION_CODE
        WHERE r.SPARE1 != 0
    </select>
    <select id="selectLALL" resultType="java.util.HashMap">
@@ -314,6 +296,16 @@
    ''
    ) AS siteids
    </select>
    <select id="selectCodeL" resultType="java.lang.String">
        SELECT stuff((
            SELECT ',' + CONVERT(VARCHAR (25), STATION_CODE)
            FROM ZHSW_BASIN_STATION
            WHERE BASIN_CODE!=0 FOR XML PATH ('')),
        1,
        1,
    ''
    ) AS siteids
    </select>
    <select id="ss" resultType="java.util.Map">
        SELECT c.STCD,
@@ -368,7 +360,8 @@
        FROM (SELECT STCD, SUM(DRP) AS DRP
              FROM dbo.ST_PPTN_R
              WHERE TM &gt; #{beginTime}
                AND TM &lt;= #{endTime} AND STCD IN (${code})
                AND TM &lt;= #{endTime}
                AND STCD IN (${code})
              GROUP BY STCD) cs1
                 INNER JOIN (SELECT STATION_CODE, STATION_NAME, REGION_NAME, WEIGHT, REGION_CODE
                             FROM ZHSW_REGION_WEIGHT) s ON s.STATION_CODE = cs1.STCD
@@ -384,5 +377,37 @@
                 st.LTTD,
                 st.STTP
    </select>
    <!--流域-->
    <select id="selectReL" resultType="java.util.HashMap">
        SELECT cs1.STCD,
               isnull(cs1.DRP, 0) AS DRP,
               s.STATION_NAME,
               s.WEIGHT,
               s.BASIN_CODE    as REGION_CODE,
               st.LGTD,
               st.LTTD,
               st.STTP
        FROM (
                 SELECT STCD,
                        SUM(DRP) AS DRP
                 FROM dbo.ST_PPTN_R
                 WHERE TM &gt; #{beginTime}
                   AND TM &lt;= #{endTime}
                   AND STCD IN (${code})
                 GROUP BY STCD
             ) cs1
                 INNER JOIN (SELECT STATION_CODE, STATION_NAME, WEIGHT, BASIN_CODE FROM ZHSW_BASIN_STATION) s
                            ON s.STATION_CODE = cs1.STCD
                 INNER JOIN (SELECT STCD, LGTD, LTTD, STTP, ADDVCD FROM dbo.ST_STBPRP_B) st ON st.STCD = cs1.STCD
                 INNER JOIN dbo.ST_ADDVCD_D ad ON ad.ADDVCD = st.ADDVCD
        GROUP BY cs1.STCD,
                 cs1.DRP,
                 s.STATION_NAME,
                 s.WEIGHT,
                 s.BASIN_CODE,
                 st.LGTD,
                 st.LTTD,
                 st.STTP
    </select>
</mapper>
src/main/java/org/springblade/modules/regionWeight/service/IRegionWeightService.java
@@ -49,17 +49,19 @@
    List<RegionWeightVO> lazyTree(String code);
    //最新面降雨量
    List<Map<String, Object>>  selectReM(String beginTime,String endTime);
    List<Map<String, Object>>  selectReL(String beginTime,String endTime);
    //List<Map<String, Object>>  selectReL(String beginTime,String endTime);
    List<Map<String, Object>>  selectReL(String beginTime,String endTime,String code);
    List<Map<String, Object>>  selectWeight();
    List<Map<String, Object>>  selectWeights();
    List<Map<String, Object>> selectYjs(String beginTime,String endTime);
    List<Map<String, Object>> selectAll();
    List<Map<String, Object>> selectAll(String beginTime, String endTime, String code);
    List<regionExcel> exportRegion(String beginTime, String endTime);
    List<Map<String, Object>> selectLALL();
    List<Map<String, Object>> selectLNam();
    List<Map<String, Object>> selectppyj(String time, String dateBegin1,String dateBegin3,String dateBegin6,String times);
    String selectCode();
    String selectCodeM();
    String selectCodeL();
    List<Map<String, Object>> ss(String beginTime, String endTime, String code);
    List<Map<String, Object>>  selectReMs(String beginTime,String endTime,String code);
}
src/main/java/org/springblade/modules/regionWeight/service/impl/RegionWeightServiceImpl.java
@@ -60,8 +60,8 @@
    }
    @Override
    public List<Map<String, Object>> selectReL(String beginTime, String endTime) {
        return baseMapper.selectReL(beginTime, endTime);
    public List<Map<String, Object>> selectReL(String beginTime, String endTime, String code) {
        return baseMapper.selectReL(beginTime, endTime,code);
    }
    @Override
@@ -80,8 +80,8 @@
    }
    @Override
    public List<Map<String, Object>> selectAll() {
        return baseMapper.selectAll();
    public List<Map<String, Object>> selectAll(String beginTime, String endTime, String code) {
        return baseMapper.selectAll(beginTime, endTime,code);
    }
    @Override
@@ -115,6 +115,11 @@
    }
    @Override
    public String selectCodeL() {
        return baseMapper.selectCodeL();
    }
    @Override
    public List<Map<String, Object>> ss(String beginTime, String endTime, String code) {
        return baseMapper.ss(beginTime, endTime, code);
    }
src/main/java/org/springblade/modules/river/controller/RiverRController.java
@@ -114,224 +114,181 @@
        return R.status(riverRService.saveOrUpdate(riverR));
    }
    /**
     * 河道自定义时间查询
     *
     * @param beginTime
     * @param endTime
     * @return
     * @throws ParseException
     */
    @PostMapping("/selecthd")
    public R selecthd(String beginTime, String endTime) throws ParseException {
        String substring = beginTime.substring(0, 10);
        String substrings = endTime.substring(0, 10);
        String hs = beginTime.substring(11, 13);
        String hss = endTime.substring(11, 13);
        //截取月日
        String[] strs = substring.split("-");
        //月
        String year = strs[1].toString();
        //日
        String day = strs[2].toString();
        //截取月日
        String[] strss = substrings.split("-");
        //月
        String years = strss[1].toString();
        //日
        String days = strss[2].toString();
        //定义短信内容头
        String text = year + "月" + day + "日" + hs + "时" + "-" + years + "月" + days + "日" + hss + "时";
        String texta = "";
        //定义统计数量
        int number = 0;
        //河道超警信息
        List<Map<String, Object>> selecthd = riverRService.selecthd(beginTime, endTime);
        //Map<String, Object> sel = riverRService.sel();
        //selecthd.add(sel);
        //基本站信息
        List<Map<String, Object>> list1 = riverRService.selectP();
        //用来判断是否重复统计超警信息
        Map mnum = new HashMap();
        Map mnums = new HashMap();
        //定义list保存预警信息
        List ylist = new ArrayList();
        //定义list保存未预警信息
        List alist = new ArrayList();
        //查询数据为空
        if (selecthd.size() == 0) {
            text += "暂无河道超警信息。廖家湾水位暂无数据,流量暂无数据;娄家村水位暂无数据,流量暂无数据;";
        }
        //不为空遍历数据计算是否超出预警值
        else {
            int c = 0;
            for (int i = 0; i < selecthd.size(); i++) {
                //实时河道水位值
                BigDecimal z = (BigDecimal) selecthd.get(i).get("Z");
                double Z = z.doubleValue();
                //超警戒水位值
                if (mnum.containsKey(selecthd.get(i).get("STCD").toString()) == true) {
                } else {
                    if (selecthd.get(i).get("WRZ") == null || selecthd.get(i).get("Q") == null) {
                        String stnm = selecthd.get(i).get("STNM").toString();
                        mnum.put(selecthd.get(i).get("STCD").toString(), i);
                        if (stnm.equals("廖家湾") || stnm.equals("娄家村")) {
                            DecimalFormat df = new DecimalFormat("#0.00");
                            texta += stnm.replaceAll(" ", "") + "水位" + df.format(Z) + "米,";
                            if (selecthd.get(i).get("Q") == null) {
                                texta += "流量暂无数据";
                            }
                        }
                        alist.add(selecthd.get(i));
                        continue;
                    }
                    BigDecimal wrz = (BigDecimal) selecthd.get(i).get("WRZ");
                    double WRZ = wrz.doubleValue();
                    BigDecimal q = (BigDecimal) selecthd.get(i).get("Q");
                    double Q = q.doubleValue();
                    if (Z <= WRZ) {
                        if (mnum.containsKey(selecthd.get(i).get("STCD").toString()) == true) {
                        } else {
                            String stnm = selecthd.get(i).get("STNM").toString();
                            mnum.put(selecthd.get(i).get("STCD").toString(), i);
                            if (stnm.equals("廖家湾") || stnm.equals("娄家村")) {
                                DecimalFormat df = new DecimalFormat("#0.00");
                                texta += stnm.replaceAll(" ", "") + "水位" + df.format(Z) + "米,";
                                if (selecthd.get(i).get("Q") == null) {
                                    texta += "流量暂无数据";
                                } else {
                                    DecimalFormat dfs = new DecimalFormat("#0.000");
                                    texta += "流量" + Q + "立方米每秒;";
                                }
                            }
                        }
                        alist.add(selecthd.get(i));
                    } else {
                        //如果map集合保存了站点则不重复统计数量
                        if (mnum.containsKey(selecthd.get(i).get("STCD").toString()) == true) {
                        } else {
                            ylist.add(selecthd.get(i));
                            mnum.put(selecthd.get(i).get("STCD").toString(), i);
                            number++;
                            //超出警戒水位多少
                            Double num = Z - WRZ;
                            double v3 = (double) Math.round(num * 100) / 100;
                            //县,市
                            String addvcd5 = selecthd.get(i).get("ADDVNM").toString();
                            //站点名称
                            String stnm = selecthd.get(i).get("STNM").toString();
                            if (stnm.equals("廖家湾") || stnm.equals("娄家村")) {
                                DecimalFormat df = new DecimalFormat("#0.00");
                                texta += stnm.replaceAll(" ", "") + "站超出警戒水位" + df.format(v3) + "米," + "水位" + df.format(Z) + "米,";
                                if (selecthd.get(i).get("Q") == null) {
                                    texta += "流量暂无数据;";
                                } else {
//    /**
//     * 河道自定义时间查询
//     *
//     * @param beginTime
//     * @param endTime
//     * @return
//     * @throws ParseException
//     */
//    @PostMapping("/selecthd")
//    public R selecthd(String beginTime, String endTime) throws ParseException {
//        String substring = beginTime.substring(0, 10);
//        String substrings = endTime.substring(0, 10);
//        String hs = beginTime.substring(11, 13);
//        String hss = endTime.substring(11, 13);
//        //截取月日
//        String[] strs = substring.split("-");
//        //月
//        String year = strs[1].toString();
//        //日
//        String day = strs[2].toString();
//        //截取月日
//        String[] strss = substrings.split("-");
//        //月
//        String years = strss[1].toString();
//        //日
//        String days = strss[2].toString();
//        //定义短信内容头
//        String text = year + "月" + day + "日" + hs + "时" + "-" + years + "月" + days + "日" + hss + "时";
//        String texta = "";
//        //定义统计数量
//        int number = 0;
//        //河道超警信息
//        List<Map<String, Object>> selecthd = riverRService.selecthd(beginTime, endTime);
//        //Map<String, Object> sel = riverRService.sel();
//        //selecthd.add(sel);
//        //基本站信息
//        List<Map<String, Object>> list1 = riverRService.selectP();
//        //用来判断是否重复统计超警信息
//        Map mnum = new HashMap();
//        Map mnums = new HashMap();
//        //定义list保存预警信息
//        List ylist = new ArrayList();
//        //定义list保存未预警信息
//        List alist = new ArrayList();
//        //查询数据为空
//        if (selecthd.size() == 0) {
//            text += "暂无河道超警信息。廖家湾水位暂无数据,流量暂无数据;娄家村水位暂无数据,流量暂无数据;";
//        }
//        //不为空遍历数据计算是否超出预警值
//        else {
//            int c = 0;
//            for (int i = 0; i < selecthd.size(); i++) {
//                //实时河道水位值
//                BigDecimal z = (BigDecimal) selecthd.get(i).get("Z");
//                double Z = z.doubleValue();
//                //超警戒水位值
//                if (mnum.containsKey(selecthd.get(i).get("STCD").toString()) == true) {
//                } else {
//                    if (selecthd.get(i).get("WRZ") == null || selecthd.get(i).get("Q") == null) {
//                        String stnm = selecthd.get(i).get("STNM").toString();
//                        mnum.put(selecthd.get(i).get("STCD").toString(), i);
//                        if (stnm.equals("廖家湾") || stnm.equals("娄家村")) {
//                            DecimalFormat df = new DecimalFormat("#0.00");
//                            texta += stnm.replaceAll(" ", "") + "水位" + df.format(Z) + "米,";
//                            if (selecthd.get(i).get("Q") == null) {
//                                texta += "流量暂无数据";
//                            }
//                        }
//                        alist.add(selecthd.get(i));
//                        continue;
//                    }
//                    BigDecimal wrz = (BigDecimal) selecthd.get(i).get("WRZ");
//                    double WRZ = wrz.doubleValue();
//                    BigDecimal q = (BigDecimal) selecthd.get(i).get("Q");
//                    double Q = q.doubleValue();
//                    if (Z <= WRZ) {
//                        if (mnum.containsKey(selecthd.get(i).get("STCD").toString()) == true) {
//                        } else {
//                            String stnm = selecthd.get(i).get("STNM").toString();
//                            mnum.put(selecthd.get(i).get("STCD").toString(), i);
//                            if (stnm.equals("廖家湾") || stnm.equals("娄家村")) {
//                                DecimalFormat df = new DecimalFormat("#0.00");
//                                texta += stnm.replaceAll(" ", "") + "水位" + df.format(Z) + "米,";
//                                if (selecthd.get(i).get("Q") == null) {
//                                    texta += "流量暂无数据";
//                                } else {
                                    //DecimalFormat dfs = new DecimalFormat("#0.000");
                                    texta += "流量" + Q + "立方米每秒;";
                                }
                            }
                        }
                    }
                }
//                                    texta += "流量" + Q + "立方米每秒;";
//                                }
//                            }
//                        }
//                        alist.add(selecthd.get(i));
//                    } else {
//                        //如果map集合保存了站点则不重复统计数量
//                        if (mnum.containsKey(selecthd.get(i).get("STCD").toString()) == true) {
//                        } else {
//                            ylist.add(selecthd.get(i));
//                            mnum.put(selecthd.get(i).get("STCD").toString(), i);
//                            number++;
//                            //超出警戒水位多少
//                            Double num = Z - WRZ;
//                            double v3 = (double) Math.round(num * 100) / 100;
//                            //县,市
//                            String addvcd5 = selecthd.get(i).get("ADDVNM").toString();
//                            //站点名称
//                            String stnm = selecthd.get(i).get("STNM").toString();
//                            if (stnm.equals("廖家湾") || stnm.equals("娄家村")) {
//                                DecimalFormat df = new DecimalFormat("#0.00");
//                                texta += stnm.replaceAll(" ", "") + "站超出警戒水位" + df.format(v3) + "米," + "水位" + df.format(Z) + "米,";
//                                if (selecthd.get(i).get("Q") == null) {
//                                    texta += "流量暂无数据;";
//                                } else {
//                                    //DecimalFormat dfs = new DecimalFormat("#0.000");
//                                    texta += "流量" + Q + "立方米每秒;";
//                                }
//                            }
//                        }
//                    }
//                }
//            }
//        }
////        //河道涨幅,跌幅信息
//        //List<Map<String, Object>> selecthds = riverRService.selecthds(beginTime, endTime);
//        Map m1 = new HashMap();
//        Map m2 = new HashMap();
//        Map c = new HashMap();
//        Map m = new HashMap();
//        List list = new ArrayList();
////        for (int j = 0; j < selecthds.size(); j++) {
////            //站点编码
////            String stcd = selecthds.get(j).get("STCD").toString();
////            //站点名称
////            String stnm = selecthds.get(j).get("STNM").toString();
////            //省,市
////            String addvcd5 = selecthds.get(j).get("ADDVNM").toString();
////            //最大值
////            BigDecimal maxZ = (BigDecimal) selecthds.get(j).get("maxZ");
////            //最大值出现时间
////            String maxTM = selecthds.get(j).get("maxTM").toString();
////            //最小值
////            BigDecimal minZ = (BigDecimal) selecthds.get(j).get("minZ");
////            //最小值出现时间
////            String minTM = selecthds.get(j).get("minTM").toString();
////            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
////            Date sd1 = df.parse(maxTM);
////            Date sd2 = df.parse(minTM);
////            double v = maxZ.doubleValue();
////            double v1 = minZ.doubleValue();
////            //涨幅值
////            double v2 = v - v1;
////            double v3 = (double) Math.round(v2 * 100) / 100;
////            m1.put(v3, stnm.replaceAll(" ", "") + "站");
////            c.put(stcd, v3);
////        }
//        if (number == 0) {
//            text += "暂无河道超警戒信息。" + texta;
//        } else {
//            text += "有" + number + "个河道站超警戒。" + texta;
//        }
////        if (m1.size() != 0) {
////            Object maxKey = getMaxKey(m1);
////            String s1 = m1.get(maxKey).toString();
////            text += " 涨幅最大的是:" + s1 + "(涨" + maxKey + "米)。";
////        }
//        m.put("text", text);
//        m.put("number", number);
//        m.put("Yjlist", ylist);
//        m.put("list", alist);
//        m.put("list1", list1);
//        m.put("clist", c);
//        list.add(m);
//        return R.data(list);
//
//    }
            }
            if (number == 0) {
                text += "暂无河道超警戒信息。" + texta;
            } else {
                text += "有" + number + "个河道站超警戒。" + texta;
            }
        }
        //河道涨幅,跌幅信息
        List<Map<String, Object>> selecthds = riverRService.selecthds(beginTime, endTime);
        Map m1 = new HashMap();
        Map m2 = new HashMap();
        Map c = new HashMap();
        Map m = new HashMap();
        List list = new ArrayList();
        for (int j = 0; j < selecthds.size(); j++) {
            //站点编码
            String stcd = selecthds.get(j).get("STCD").toString();
            //站点名称
            String stnm = selecthds.get(j).get("STNM").toString();
            //省,市
            String addvcd5 = selecthds.get(j).get("ADDVNM").toString();
            //最大值
            BigDecimal maxZ = (BigDecimal) selecthds.get(j).get("maxZ");
            //最大值出现时间
            String maxTM = selecthds.get(j).get("maxTM").toString();
            //最小值
            BigDecimal minZ = (BigDecimal) selecthds.get(j).get("minZ");
            //最小值出现时间
            String minTM = selecthds.get(j).get("minTM").toString();
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date sd1 = df.parse(maxTM);
            Date sd2 = df.parse(minTM);
            double v = maxZ.doubleValue();
            double v1 = minZ.doubleValue();
            //涨幅值
            double v2 = v - v1;
            double v3 = (double) Math.round(v2 * 100) / 100;
            m1.put(v3, stnm.replaceAll(" ", "") + "站");
            c.put(stcd, v3);
        }
        if (m1.size() != 0) {
            Object maxKey = getMaxKey(m1);
            String s1 = m1.get(maxKey).toString();
            text += " 涨幅最大的是:" + s1 + "(涨" + maxKey + "米)。";
        }
//            //如果最大时间大于最小时间就是涨幅
//            if (sd1.after(sd2)) {
//                //创建一个map集合保存涨幅数据
//                double v = maxZ.doubleValue();
//                double v1 = minZ.doubleValue();
//                //涨幅值
//                double v2 = v - v1;
//                double v3 = (double) Math.round(v2 * 100) / 100;
//                m1.put(Math.abs(v3), stnm.replaceAll(" ", "") + "站");
//                c.put(stcd,Math.abs(v3));
//
//
//            }
//            //跌幅
//            else {
//                //创建一个map集合保存跌幅数据
//                double v = maxZ.doubleValue();
//                double v1 = minZ.doubleValue();
//                //涨幅值
//                double v2 = v1 - v;
//                double v3 = (double) Math.round(v2 * 100) / 100;
//                m2.put(Math.abs(v3), stnm.replaceAll(" ", "") + "站");
//                c.put(stcd,v3);
//
//            }
//        }
//        if (m1.size()==0){
//            text += "暂无涨幅信息。";
//        }
//        else {
//            //获取涨幅最大的信息
//            Object maxKey = getMaxKey(m1);
//            String s1 = m1.get(maxKey).toString();
//            text += "涨幅最大的是:" + s1 + "(涨" + maxKey + "米)。";
//        }
//        if (m2.size()==0){
//            text += "暂无跌幅信息。";
//        }
//        else {
//            //获取跌幅最大的信息
//            Object maxKey2 = getMaxKey(m2);
//            String s2 = m2.get(maxKey2).toString();
//            text += "跌幅最大的是:" + s2 + "(跌" + maxKey2 + "米)。";
//        }
        m.put("text", text);
        m.put("number", number);
        m.put("Yjlist", ylist);
        m.put("list", alist);
        m.put("list1", list1);
        m.put("clist", c);
        list.add(m);
        return R.data(list);
    }
    /**
     * 河道最新
@@ -397,8 +354,8 @@
                    String stnm = selecthd.get(i).get("STNM").toString();
                    if (stnm.equals("廖家湾") || stnm.equals("娄家村")) {
                        String stcd = selecthd.get(i).get("STCD").toString();
                        Map<String, Object> stringObjectMap = riverRService.selectZ(stcd, timec);
                        BigDecimal zc = (BigDecimal) stringObjectMap.get("Z");
                        //Map<String, Object> stringObjectMap = riverRService.selectZ(stcd, timec);
                        BigDecimal zc = (BigDecimal) selecthd.get(i).get("Zc");
                        double ZC = zc.doubleValue();
                        double vz = Z - ZC;
                        DecimalFormat dfc = new DecimalFormat("#0.00");
@@ -425,8 +382,8 @@
                    String stnm = selecthd.get(i).get("STNM").toString();
                    if (stnm.equals("廖家湾") || stnm.equals("娄家村")) {
                        String stcd = selecthd.get(i).get("STCD").toString();
                        Map<String, Object> stringObjectMap = riverRService.selectZ(stcd, timec);
                        BigDecimal zc = (BigDecimal) stringObjectMap.get("Z");
                        //Map<String, Object> stringObjectMap = riverRService.selectZ(stcd, timec);
                        BigDecimal zc = (BigDecimal) selecthd.get(i).get("Zc");
                        double ZC = zc.doubleValue();
                        double vz = Z - ZC;
                        DecimalFormat dfc = new DecimalFormat("#0.00");
@@ -462,8 +419,8 @@
                        String stnm = selecthd.get(i).get("STNM").toString();
                        if (stnm.equals("廖家湾") || stnm.equals("娄家村")) {
                            String stcd = selecthd.get(i).get("STCD").toString();
                            Map<String, Object> stringObjectMap = riverRService.selectZ(stcd, timec);
                            BigDecimal zc = (BigDecimal) stringObjectMap.get("Z");
                            //Map<String, Object> stringObjectMap = riverRService.selectZ(stcd, timec);
                            BigDecimal zc = (BigDecimal) selecthd.get(i).get("Zc");
                            double ZC = zc.doubleValue();
                            double vz = Z - ZC;
                            DecimalFormat dfc = new DecimalFormat("#0.00");
@@ -588,4 +545,167 @@
        return obj[obj.length - 1];
    }
    /**
     * 河道自定义时间查询
     *
     * @param beginTime
     * @param endTime
     * @return
     * @throws ParseException
     */
    @PostMapping("/selecthd")
    public R selecthd(String beginTime, String endTime) throws ParseException {
        String substring = beginTime.substring(0, 10);
        String substrings = endTime.substring(0, 10);
        String hs = beginTime.substring(11, 13);
        String hss = endTime.substring(11, 13);
        //截取月日
        String[] strs = substring.split("-");
        //月
        String year = strs[1].toString();
        //日
        String day = strs[2].toString();
        //截取月日
        String[] strss = substrings.split("-");
        //月
        String years = strss[1].toString();
        //日
        String days = strss[2].toString();
        //定义短信内容头
        String text = year + "月" + day + "日" + hs + "时" + "-" + years + "月" + days + "日" + hss + "时";
        String texta = "";
        //定义统计数量
        int number = 0;
        //河道超警信息
        List<Map<String, Object>> selecthd = riverRService.selecthdcs(beginTime, endTime);
        //Map<String, Object> sel = riverRService.sel();
        //selecthd.add(sel);
        //基本站信息
        List<Map<String, Object>> list1 = riverRService.selectP();
        //用来判断是否重复统计超警信息
        Map mnum = new HashMap();
        Map mnums = new HashMap();
        //定义list保存预警信息
        List ylist = new ArrayList();
        //定义list保存未预警信息
        List alist = new ArrayList();
        Map m1 = new HashMap();
        Map m2 = new HashMap();
        Map czf = new HashMap();
        Map m = new HashMap();
        List list = new ArrayList();
        //查询数据为空
        if (selecthd.size() == 0) {
            text += "暂无河道超警信息。廖家湾水位暂无数据,流量暂无数据;娄家村水位暂无数据,流量暂无数据;";
        }
        //不为空遍历数据计算是否超出预警值
        else {
            int c = 0;
            for (int i = 0; i < selecthd.size(); i++) {
                //实时河道水位值
                BigDecimal z = (BigDecimal) selecthd.get(i).get("Z");
                double Z = z.doubleValue();
                String stcd = selecthd.get(i).get("STCD").toString();
                //站点名称
                String stnms = selecthd.get(i).get("STNM").toString();
                //最大值
                BigDecimal maxZ = (BigDecimal) selecthd.get(i).get("maxZ");
                //最小值
                BigDecimal minZ = (BigDecimal) selecthd.get(i).get("minZ");
                double v = maxZ.doubleValue();
                double v1 = minZ.doubleValue();
                //涨幅值
                double v2 = v - v1;
                double v4 = (double) Math.round(v2 * 100) / 100;
                m1.put(v4, stnms.replaceAll(" ", "") + "站");
                czf.put(stcd, v4);
                //超警戒水位值
                if (mnum.containsKey(selecthd.get(i).get("STCD").toString()) == true) {
                } else {
                    if (selecthd.get(i).get("WRZ") == null || selecthd.get(i).get("Q") == null) {
                        String stnm = selecthd.get(i).get("STNM").toString();
                        mnum.put(selecthd.get(i).get("STCD").toString(), i);
                        if (stnm.equals("廖家湾") || stnm.equals("娄家村")) {
                            DecimalFormat df = new DecimalFormat("#0.00");
                            texta += stnm.replaceAll(" ", "") + "水位" + df.format(Z) + "米,";
                            if (selecthd.get(i).get("Q") == null) {
                                texta += "流量暂无数据";
                            }
                        }
                        alist.add(selecthd.get(i));
                        continue;
                    }
                    BigDecimal wrz = (BigDecimal) selecthd.get(i).get("WRZ");
                    double WRZ = wrz.doubleValue();
                    BigDecimal q = (BigDecimal) selecthd.get(i).get("Q");
                    double Q = q.doubleValue();
                    if (Z <= WRZ) {
                        if (mnum.containsKey(selecthd.get(i).get("STCD").toString()) == true) {
                        } else {
                            String stnm = selecthd.get(i).get("STNM").toString();
                            mnum.put(selecthd.get(i).get("STCD").toString(), i);
                            if (stnm.equals("廖家湾") || stnm.equals("娄家村")) {
                                DecimalFormat df = new DecimalFormat("#0.00");
                                texta += stnm.replaceAll(" ", "") + "水位" + df.format(Z) + "米,";
                                if (selecthd.get(i).get("Q") == null) {
                                    texta += "流量暂无数据";
                                } else {
                                    DecimalFormat dfs = new DecimalFormat("#0.000");
                                    texta += "流量" + Q + "立方米每秒;";
                                }
                            }
                        }
                        alist.add(selecthd.get(i));
                    } else {
                        //如果map集合保存了站点则不重复统计数量
                        if (mnum.containsKey(selecthd.get(i).get("STCD").toString()) == true) {
                        } else {
                            ylist.add(selecthd.get(i));
                            mnum.put(selecthd.get(i).get("STCD").toString(), i);
                            number++;
                            //超出警戒水位多少
                            Double num = Z - WRZ;
                            double v3 = (double) Math.round(num * 100) / 100;
                            //县,市
                            String addvcd5 = selecthd.get(i).get("ADDVNM").toString();
                            //站点名称
                            String stnm = selecthd.get(i).get("STNM").toString();
                            if (stnm.equals("廖家湾") || stnm.equals("娄家村")) {
                                DecimalFormat df = new DecimalFormat("#0.00");
                                texta += stnm.replaceAll(" ", "") + "站超出警戒水位" + df.format(v3) + "米," + "水位" + df.format(Z) + "米,";
                                if (selecthd.get(i).get("Q") == null) {
                                    texta += "流量暂无数据;";
                                } else {
                                    //DecimalFormat dfs = new DecimalFormat("#0.000");
                                    texta += "流量" + Q + "立方米每秒;";
                                }
                            }
                        }
                    }
                }
            }
        }
        if (number == 0) {
            text += "暂无河道超警戒信息。" + texta;
        } else {
            text += "有" + number + "个河道站超警戒。" + texta;
        }
        if (m1.size() != 0) {
            Object maxKey = getMaxKey(m1);
            String s1 = m1.get(maxKey).toString();
            text += " 涨幅最大的是:" + s1 + "(涨" + maxKey + "米)。";
        }
        m.put("text", text);
        m.put("number", number);
        m.put("Yjlist", ylist);
        m.put("list", alist);
        m.put("list1", list1);
        m.put("clist", czf);
        list.add(m);
        return R.data(list);
    }
}
src/main/java/org/springblade/modules/river/mapper/RiverRMapper.java
@@ -30,6 +30,7 @@
public interface RiverRMapper extends BaseMapper<RiverR> {
    //河道超警信息(通过结束时间查询)
    List<Map<String, Object>>  selecthd(String beginTime,String endTime);
    List<Map<String, Object>>  selecthdcs(String beginTime,String endTime);
    //河道最新超警信息
    List<Map<String, Object>>  selecthdt(String dateBegin24,String time);
    Map<String, Object>  sel();
src/main/java/org/springblade/modules/river/mapper/RiverRMapper.xml
@@ -20,7 +20,7 @@
    </resultMap>
    <!--河道自定义超警信息-->
    <select id="selecthd" resultType="java.util.HashMap">
    <!--  <select id="selecthd" resultType="java.util.HashMap">
        SELECT ri.STCD,
               ri.TM,
               ri.Z,
@@ -37,6 +37,121 @@
        WHERE ri.TM &gt; #{beginTime}
          AND ri.TM &lt;= #{endTime} and ad.ADDVNM NOT LIKE '井冈山市' AND ad.ADDVNM NOT LIKE '吉水县'
        ORDER BY ri.Z desc
      </select>-->
    <select id="selecthd" resultType="java.util.HashMap">
        SELECT cs.STCD,
               cs1.TM,
               cs1.Z,
               cs1.Q,
               cs2.STNM,
               cs2.LGTD,
               cs2.LTTD,
               ad.ADDVNM,
               rv.WRZ
        FROM (
                 SELECT A.STCD,
                        s.ADDVCD
                 FROM (SELECT STCD, TM, Z, Q
                       FROM dbo.ST_RIVER_R
                       WHERE TM &gt; #{beginTime}
                         AND TM &lt;= #{endTime}) AS A
                          INNER JOIN (SELECT STCD, STNM, LTTD, LGTD, ADDVCD, STTP
                                      FROM dbo.ST_STBPRP_B
                                      WHERE STTP = 'ZZ'
                                         or STTP = 'ZQ') s ON A.STCD = s.STCD
                          LEFT JOIN (SELECT ADDVCD, ADDVNM
                                     FROM dbo.ST_ADDVCD_D
                                     WHERE ADDVNM NOT LIKE '井冈山市'
                                       AND ADDVNM NOT LIKE '吉水县') c ON c.ADDVCD = s.ADDVCD
                 GROUP BY A.STCD, s.ADDVCD
             ) cs
                 LEFT JOIN (SELECT STCD, TM, Z, Q
                            FROM dbo.ST_RIVER_R
                            WHERE TM &gt; #{beginTime}
                              AND TM &lt;= #{endTime}) cs1 ON cs.STCD = cs1.STCD
                 INNER JOIN (SELECT STCD, STNM, LTTD, LGTD, ADDVCD, STTP
                             FROM dbo.ST_STBPRP_B
                             WHERE STTP = 'ZZ'
                                or STTP = 'ZQ') cs2 ON cs.STCD = cs2.STCD
                 LEFT JOIN (SELECT STCD, WRZ FROM dbo.ST_RVFCCH_B) rv ON rv.STCD = cs.STCD
                 LEFT JOIN (SELECT ADDVCD, ADDVNM FROM dbo.ST_ADDVCD_D) ad ON ad.ADDVCD = cs.ADDVCD
        GROUP BY cs.STCD,
                 cs1.TM,
                 cs1.Z,
                 cs2.STNM,
                 ad.ADDVNM,
                 cs2.LGTD,
                 cs2.LTTD,
                 cs1.Q,
                 rv.WRZ
    </select>
    <!--河道自定义预警测试接口-->
    <select id="selecthdcs" resultType="java.util.HashMap">
        SELECT cs.STCD,
               cs.TM,
               cs1.Z,
               cs1.Q,
               cs2.STNM,
               cs2.LGTD,
               cs2.LTTD,
               ad.ADDVNM,
               rv.WRZ,
               cs3.maxZ,
               cs4.minZ
        FROM (
                 SELECT A.STCD,
                        MAX(A.TM) TM,
                        s.ADDVCD
                 FROM (SELECT STCD, TM, Z, Q
                       FROM dbo.ST_RIVER_R
                       WHERE TM &gt; #{beginTime}
                         AND TM &lt;= #{endTime}) AS A
                          INNER JOIN (SELECT STCD, STNM, LTTD, LGTD, ADDVCD, STTP
                                      FROM dbo.ST_STBPRP_B
                                      WHERE STTP = 'ZZ'
                                         OR STTP = 'ZQ') s ON A.STCD = s.STCD
                          LEFT JOIN (SELECT ADDVCD, ADDVNM
                                     FROM dbo.ST_ADDVCD_D
                                     WHERE ADDVNM NOT LIKE '井冈山市'
                                       AND ADDVNM NOT LIKE '吉水县') c ON c.ADDVCD = s.ADDVCD
                 GROUP BY A.STCD,
                          s.ADDVCD
             ) cs
                 LEFT JOIN (SELECT STCD, TM, Z, Q
                            FROM dbo.ST_RIVER_R
                            WHERE TM &gt; #{beginTime}
                              AND TM &lt;= #{endTime}) cs1 ON cs.STCD = cs1.STCD
            AND cs.TM = cs1.TM
                 INNER JOIN (SELECT STCD, STNM, LTTD, LGTD, ADDVCD, STTP
                             FROM dbo.ST_STBPRP_B
                             WHERE STTP = 'ZZ'
                                OR STTP = 'ZQ') cs2 ON cs.STCD = cs2.STCD
                 LEFT JOIN (SELECT STCD, WRZ FROM dbo.ST_RVFCCH_B) rv ON rv.STCD = cs.STCD
                 LEFT JOIN (SELECT ADDVCD, ADDVNM FROM dbo.ST_ADDVCD_D) ad ON ad.ADDVCD = cs.ADDVCD
                 INNER JOIN (SELECT STCD, MAX(Z) AS maxZ
                             FROM dbo.ST_RIVER_R
                             WHERE TM &gt; #{beginTime}
                               AND TM &lt;= #{endTime}
                             GROUP BY STCD) cs3 ON cs3.STCD = cs.STCD
                 INNER JOIN (SELECT STCD, MIN(Z) AS minZ
                             FROM dbo.ST_RIVER_R
                             WHERE TM &gt; #{beginTime}
                               AND TM &lt;= #{endTime}
                             GROUP BY STCD) cs4 ON cs4.STCD = cs.STCD
        GROUP BY cs.STCD,
                 cs.TM,
                 cs1.Z,
                 cs2.STNM,
                 ad.ADDVNM,
                 cs2.LGTD,
                 cs2.LTTD,
                 cs1.Q,
                 rv.WRZ,
                 cs3.maxZ,
                 cs4.minZ
    </select>
    <!--河道最新超警信息-->
@@ -49,25 +164,34 @@
               cs2.LGTD,
               cs2.LTTD,
               ad.ADDVNM,
               rv.WRZ
               rv.WRZ,
               z.Z as Zc
        FROM (
                 SELECT A.STCD,
                        MAX(A.TM) TM,
                        s.ADDVCD
                 FROM (SELECT STCD, TM, Z,Q FROM dbo.ST_RIVER_R) AS A
                          LEFT JOIN (SELECT STCD, STNM, LTTD, LGTD, ADDVCD FROM dbo.ST_STBPRP_B) s ON A.STCD = s.STCD
                          INNER JOIN (SELECT STCD, STNM, LTTD, LGTD, ADDVCD, STTP
                                      FROM dbo.ST_STBPRP_B
                                      WHERE STTP = 'ZZ'
                                         or STTP = 'ZQ') s ON A.STCD = s.STCD
                          INNER JOIN (SELECT ADDVCD, ADDVNM
                                      FROM dbo.ST_ADDVCD_D
                                      WHERE ADDVNM NOT LIKE '井冈山市' AND ADDVNM NOT LIKE '吉水县') c ON c.ADDVCD = s.ADDVCD
                                      WHERE ADDVNM NOT LIKE '井冈山市'
                                        AND ADDVNM NOT LIKE '吉水县') c ON c.ADDVCD = s.ADDVCD
                 WHERE A.TM &gt; #{dateBegin24}
                   AND A.TM &lt;= #{time}
                 GROUP BY A.STCD, s.ADDVCD
             ) cs
                 LEFT JOIN (SELECT STCD, TM, Z,Q FROM dbo.ST_RIVER_R) cs1 ON cs.STCD = cs1.STCD
            AND cs.TM = cs1.TM
                 LEFT JOIN (SELECT STCD, STNM, LTTD, LGTD, ADDVCD FROM dbo.ST_STBPRP_B) cs2 ON cs.STCD = cs2.STCD
                 INNER JOIN (SELECT STCD, STNM, LTTD, LGTD, ADDVCD, STTP
                             FROM dbo.ST_STBPRP_B
                             WHERE STTP = 'ZZ'
                                or STTP = 'ZQ') cs2 ON cs.STCD = cs2.STCD
                 LEFT JOIN (SELECT STCD, WRZ FROM dbo.ST_RVFCCH_B) rv ON rv.STCD = cs.STCD
                 INNER JOIN (SELECT ADDVCD, ADDVNM FROM dbo.ST_ADDVCD_D) ad ON ad.ADDVCD = cs.ADDVCD
                 INNER JOIN ( SELECT Z,STCD FROM ST_RIVER_R WHERE TM = '2021-09-11 08:00:00' ) z ON z.STCD= cs.STCD
        GROUP BY cs.STCD,
                 cs.TM,
                 cs1.Z,
@@ -76,7 +200,8 @@
                 cs2.LGTD,
                 cs2.LTTD,
                 cs1.Q,
                 rv.WRZ
                 rv.WRZ,
                 z.Z
    </select>
    <!--河道最新超警信息-->
    <select id="sel" resultType="java.util.HashMap">
@@ -97,7 +222,8 @@
                          LEFT JOIN (SELECT STCD, STNM, LTTD, LGTD, ADDVCD FROM dbo.ST_STBPRP_B) s ON A.STCD = s.STCD
                          INNER JOIN (SELECT ADDVCD, ADDVNM
                                      FROM dbo.ST_ADDVCD_D
                                      WHERE ADDVNM NOT LIKE '井冈山市' AND ADDVNM NOT LIKE '吉水县') c ON c.ADDVCD = s.ADDVCD
                                      WHERE ADDVNM NOT LIKE '井冈山市'
                                        AND ADDVNM NOT LIKE '吉水县') c ON c.ADDVCD = s.ADDVCD
                 GROUP BY A.STCD, s.ADDVCD
             ) cs
                 LEFT JOIN (SELECT STCD, TM, Z,Q FROM dbo.ST_RIVER_R) cs1 ON cs.STCD = cs1.STCD
@@ -118,7 +244,10 @@
    <select id="selectZ" resultType="java.util.HashMap">
        SELECT Z FROM ST_RIVER_R WHERE STCD=#{stcd} AND TM=#{ti}
        SELECT Z
        FROM ST_RIVER_R
        WHERE STCD = #{stcd}
          AND TM = #{ti}
    </select>
    <!--河道涨幅,跌幅信息-->
    <select id="selecthds" resultType="java.util.HashMap">
@@ -137,21 +266,24 @@
                        RANK() OVER ( partition BY STCD ORDER BY Z DESC ) maxAgeNum,
                        RANK() OVER ( partition BY STCD ORDER BY Z )      minAgeNum
                 FROM dbo.ST_RIVER_R
                 WHERE TM &gt;= #{beginTime}
                 WHERE TM &gt; #{beginTime}
                   AND TM &lt;= #{endTime}
             ) s
                 INNER JOIN dbo.ST_STBPRP_B st ON st.STCD = s.STCD
                 INNER JOIN (SELECT ADDVCD, ADDVNM FROM dbo.ST_ADDVCD_D  WHERE ADDVNM NOT LIKE '井冈山市' AND ADDVNM NOT LIKE '吉水县') ad ON ad.ADDVCD = st.ADDVCD
                 INNER JOIN (SELECT ADDVCD, ADDVNM
                             FROM dbo.ST_ADDVCD_D
                             WHERE ADDVNM NOT LIKE '井冈山市'
                               AND ADDVNM NOT LIKE '吉水县') ad ON ad.ADDVCD = st.ADDVCD
    </select>
   <!--河道基本站信息-->
    <select id="selectP" resultType="java.util.HashMap">
        SELECT STCD FROM sys_stbprp
        SELECT STCD
        FROM sys_stbprp
    </select>
    <select id="selecthdyj" resultType="java.util.HashMap">
        SELECT
        cs.STCD id,
        SELECT cs.STCD               id,
        cs.TM,
        cs1.Z,
        cs2.LTTD,
@@ -165,51 +297,46 @@
        ISNULL(cs4.oy,0) AS oy,
        ISNULL(cs4.toy,0) AS toy,
        ISNULL(cs4.fy,0) AS fy
        FROM
        (
        SELECT
        A.STCD,
        FROM (
                 SELECT A.STCD,
        MAX ( A.TM ) TM,
        s.ADDVCD
        FROM
        ( SELECT STCD, TM, Z FROM ST_RIVER_R WHERE TM &gt;=#{dateEnd} AND TM&lt;=#{times} ) AS A
                 FROM (SELECT STCD, TM, Z FROM ST_RIVER_R WHERE TM &gt;= #{dateEnd} AND TM &lt;= #{times}) AS A
        INNER JOIN (
        SELECT
        STCD,
                     SELECT STCD,
        STNM,
        LTTD,
        LGTD,
        ADDVCD,
        RVNM,
        STLC
        FROM
        dbo.ST_STBPRP_B
        WHERE
        STTP = 'ZZ'
                     FROM dbo.ST_STBPRP_B
                     WHERE STTP = 'ZZ'
        OR STTP = 'ZQ'
        ) s ON A.STCD = s.STCD
        LEFT JOIN ( SELECT STCD, WRZ FROM dbo.ST_RVFCCH_B ) rv ON A.STCD = rv.STCD
        LEFT JOIN ( SELECT stcd,fy,oy,ty,toy FROM swz_chazhi WHERE ty IS NOT NULL ) c ON A.STCD= c.stcd
        INNER JOIN ( SELECT ADDVCD, ADDVNM FROM dbo.ST_ADDVCD_D WHERE ADDVNM NOT LIKE '井冈山市' AND ADDVNM NOT LIKE '吉水县' ) d ON d.ADDVCD = s.ADDVCD
        GROUP BY
        A.STCD,
                          LEFT JOIN (SELECT stcd, fy, oy, ty, toy FROM swz_chazhi WHERE ty IS NOT NULL) c
                                    ON A.STCD = c.stcd
                          INNER JOIN (SELECT ADDVCD, ADDVNM
                                      FROM dbo.ST_ADDVCD_D
                                      WHERE ADDVNM NOT LIKE '井冈山市'
                                        AND ADDVNM NOT LIKE '吉水县') d ON d.ADDVCD = s.ADDVCD
                 GROUP BY A.STCD,
        s.ADDVCD
        ) cs
        INNER JOIN ( SELECT STCD, TM, Z FROM ST_RIVER_R WHERE TM &gt;=#{dateEnd} AND TM&lt;=#{times} ) cs1 ON cs.STCD = cs1.STCD
                 INNER JOIN (SELECT STCD, TM, Z FROM ST_RIVER_R WHERE TM &gt;= #{dateEnd} AND TM &lt;= #{times}) cs1
                            ON cs.STCD = cs1.STCD
        AND cs.TM = cs1.TM
        INNER JOIN (
        SELECT
        STCD,
            SELECT STCD,
        STNM,
        LTTD,
        LGTD,
        ADDVCD,
        RVNM,
        STLC
        FROM
        dbo.ST_STBPRP_B
        WHERE
        STTP = 'ZZ'
            FROM dbo.ST_STBPRP_B
            WHERE STTP = 'ZZ'
        OR STTP = 'ZQ'
        ) cs2 ON cs.STCD = cs2.STCD
        LEFT JOIN ( SELECT STCD, WRZ FROM dbo.ST_RVFCCH_B ) cs3 ON cs.STCD = cs3.STCD
src/main/java/org/springblade/modules/river/service/IRiverRService.java
@@ -30,6 +30,7 @@
public interface IRiverRService extends IService<RiverR> {
    //河道超警信息(通过结束时间查询)
    List<Map<String, Object>>  selecthd(String beginTime,String endTime);
    List<Map<String, Object>>  selecthdcs(String beginTime,String endTime);
    //河道最新超警信息
    List<Map<String, Object>>  selecthdt(String dateBegin24,String time);
    //河道涨幅,跌幅信息
src/main/java/org/springblade/modules/river/service/impl/RiverRServiceImpl.java
@@ -40,6 +40,11 @@
    }
    @Override
    public List<Map<String, Object>> selecthdcs(String beginTime, String endTime) {
        return baseMapper.selecthdcs(beginTime, endTime);
    }
    @Override
    public List<Map<String, Object>> selecthdt(String dateBegin24,String time) {
        return baseMapper.selecthdt(dateBegin24, time);
    }
src/main/java/org/springblade/modules/rsvr/controller/RsvrRController.java
@@ -172,17 +172,17 @@
                edmd = e2;
            }
        }
//        String s = rsvrRService.selectCode(beginTime, endTime);
//        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>> map = rsvrRService.selectyjck(egmd, edmd, beginTime, endTime);
        String s = rsvrRService.selectCode(beginTime, endTime);
        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>> sel = rsvrRService.sel(egmd, edmd, code);
        map.addAll(sel);
//        List<Map<String, Object>> sel = rsvrRService.sel(egmd, edmd, code);
//        map.addAll(sel);
        //用来判断是否重复统计超警信息
        Map mnum = new HashMap();
        Map mnums = new HashMap();
@@ -416,48 +416,31 @@
            } else {
                text += "有" + number + "个水库站预警;" + texta + texth;
            }
            //水库涨幅,跌幅信息
            List<Map<String, Object>> selecthds = rsvrRService.selectsk(beginTime, endTime);
//            //水库涨幅,跌幅信息
            //List<Map<String, Object>> selecthds = rsvrRService.selectsk(beginTime, endTime);
            Map m1 = new HashMap();
            Map m2 = new HashMap();
            Map m = new HashMap();
            for (int j = 0; j < selecthds.size(); j++) {
                String stcd = selecthds.get(j).get("STCD").toString();
                //站点名称
                String stnm = selecthds.get(j).get("STNM").toString();
                if (selecthds.get(j).get("ADDVNM") == null) {
                    continue;
                }
                //省,市
                String addvcd5 = selecthds.get(j).get("ADDVNM").toString();
                //最大值
                BigDecimal maxZ = (BigDecimal) selecthds.get(j).get("maxZ");
                //最大值出现时间
                String maxTM = selecthds.get(j).get("maxTM").toString();
                //最小值
                BigDecimal minZ = (BigDecimal) selecthds.get(j).get("minZ");
                //最小值出现时间
                String minTM = selecthds.get(j).get("minTM").toString();
                SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                Date sd1 = df.parse(maxTM);
                Date sd2 = df.parse(minTM);
                double v = maxZ.doubleValue();
                double v1 = minZ.doubleValue();
                //涨幅值
                double v2 = v - v1;
                double v3 = (double) Math.round(v2 * 100) / 100;
                m1.put(v3, stnm.replaceAll(" ", "") + "站");
                c.put(stcd, v3);
                //获取涨幅最大的信息
            }
            if (m1.size() != 0) {
                Object maxKey = getMaxKey(m1);
                String s1 = m1.get(maxKey).toString();
                text += " 涨幅最大的是:" + s1 + "(涨" + maxKey + "米)。";
            }
//                //如果最大时间大于最小时间就是涨幅
//                if (sd1.after(sd2)) {
//                    //创建一个map集合保存涨幅数据
//            for (int j = 0; j < selecthds.size(); j++) {
//                String stcd = selecthds.get(j).get("STCD").toString();
//                //站点名称
//                String stnm = selecthds.get(j).get("STNM").toString();
//                if (selecthds.get(j).get("ADDVNM") == null) {
//                    continue;
//                }
//                //省,市
//                String addvcd5 = selecthds.get(j).get("ADDVNM").toString();
//                //最大值
//                BigDecimal maxZ = (BigDecimal) selecthds.get(j).get("maxZ");
//                //最大值出现时间
//                String maxTM = selecthds.get(j).get("maxTM").toString();
//                //最小值
//                BigDecimal minZ = (BigDecimal) selecthds.get(j).get("minZ");
//                //最小值出现时间
//                String minTM = selecthds.get(j).get("minTM").toString();
//                SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//                Date sd1 = df.parse(maxTM);
//                Date sd2 = df.parse(minTM);
//                    double v = maxZ.doubleValue();
//                    double v1 = minZ.doubleValue();
//                    //涨幅值
@@ -465,31 +448,14 @@
//                    double v3 = (double) Math.round(v2 * 100) / 100;
//                    m1.put(v3, stnm.replaceAll(" ", "") + "站");
//                    c.put(stcd, v3);
//                }
//                //跌幅
//                else {
//                    //创建一个map集合保存跌幅数据
//                    double v = maxZ.doubleValue();
//                    double v1 = minZ.doubleValue();
//                    //涨幅值
//                    double v2 = v1 - v;
//                    double v3 = (double) Math.round(v2 * 100) / 100;
//                    m2.put(Math.abs(v3), stnm.replaceAll(" ", "") + "站");
//                    c.put(stcd, v3);
//                }
//                //获取涨幅最大的信息
//            }
//            if (m1.size()!=0) {
//                //获取涨幅最大的信息
//                Object maxKey = getMaxKey(m1);
//                String s1 = m1.get(maxKey).toString();
//                text += " 涨幅最大的是:" + s1 + "(涨" + maxKey + "米)。";
//            }
//            if (m2.size()!=0) {
//                //获取跌幅最大的信息
//                Object maxKey2 = getMaxKey(m2);
//                String s2 = m2.get(maxKey2).toString();
//                text += " 跌幅最大的是:" + s2 + "(跌" + maxKey2 + "米)。";
//            }
            m.put("text", text);
            m.put("number", number);
            m.put("Yjlist", ylist);
@@ -508,6 +474,15 @@
        int ws = 1;
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String time = df.format(new Date());
        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);
        SimpleDateFormat dfz = new SimpleDateFormat("yyyy-MM-dd HH:00:00");
        String timez = dfz.format(new Date());
        String yearc = time.substring(0, 4);
@@ -570,7 +545,7 @@
            }
        }
        //水库水情预警信息
        List<Map<String, Object>> map = rsvrRService.selectyjcks(egmd, edmd, timec, timez);
        List<Map<String, Object>> map = rsvrRService.selectyjcks(egmd, edmd, timec, timez,time,dateEnd);
        //用来判断是否重复统计超警信息
        Map mnum = new HashMap();
        //定义list保存预警信息
@@ -588,7 +563,7 @@
                RZ = rz.doubleValue();
                String stcd = map.get(i).get("STCD").toString();
                String ti = map.get(i).get("TM").toString();
                Map<String, Object> stringObjectMap = rsvrRService.selectRZ(stcd, timec);
                //Map<String, Object> stringObjectMap = rsvrRService.selectRZ(stcd, timec);
                //BigDecimal zc = (BigDecimal) stringObjectMap.get("RZ");
                BigDecimal zc = (BigDecimal) map.get(i).get("RZS");
                double ZC = zc.doubleValue();
src/main/java/org/springblade/modules/rsvr/mapper/RsvrRMapper.java
@@ -34,7 +34,7 @@
    List<Map<String, Object>> selectfx();
    List<Map<String, Object>> selectyjck(String egmd,String edmd,String beginTime,String endTime);
    List<Map<String, Object>> sel(String egmd,String edmd,String code);
    List<Map<String, Object>> selectyjcks(String egmd,String edmd,String tm,String timez);
    List<Map<String, Object>> selectyjcks(String egmd,String edmd,String tm,String timez,String time,String dateEnd);
    List<Map<String, Object>>  selectsk(String beginTime,String endTime);
    Map<String, Object>  selectRZ(String stcd,String ti);
    Map<String, Object>  selectInfo(String stcd);
src/main/java/org/springblade/modules/rsvr/mapper/RsvrRMapper.xml
@@ -27,6 +27,30 @@
        GROUP BY a.BGMD, EDMD
    </select>
    <!--    <select id="selectyjck" resultType="java.util.HashMap">-->
    <!--        SELECT rs.STCD,-->
    <!--               rs.TM,-->
    <!--               isnull(rs.RZ, 0) as RZ,-->
    <!--               rsv.FSLTDZ,-->
    <!--               st.STNM,-->
    <!--               st.LGTD,-->
    <!--               rs.INQ,-->
    <!--               rs.W,-->
    <!--               rs.OTQ,-->
    <!--               st.LTTD,-->
    <!--               st.ADDVNM-->
    <!--        FROM dbo.ST_RSVR_R rs-->
    <!--                 LEFT JOIN (SELECT FSLTDZ, STCD-->
    <!--                            FROM dbo.ST_RSVRFSR_B-->
    <!--                            WHERE BGMD = #{egmd}-->
    <!--                              AND EDMD = #{edmd}-->
    <!--                              and FSLTDZ is not null) rsv ON rsv.STCD = rs.STCD-->
    <!--                 INNER JOIN sys_rsvr st ON st.STCD = rs.STCD-->
    <!--                 INNER JOIN dbo.ST_RSVRFCCH_B rst ON rst.STCD = rs.STCD-->
    <!--        WHERE rs.TM &gt;#{beginTime}-->
    <!--          AND rs.TM &lt;= #{endTime}-->
    <!--        ORDER BY rs.TM DESC-->
    <!--    </select>-->
    <select id="selectyjck" resultType="java.util.HashMap">
        SELECT rs.STCD,
               rs.TM,
@@ -47,17 +71,61 @@
                              and FSLTDZ is not null) rsv ON rsv.STCD = rs.STCD
                 INNER JOIN sys_rsvr st ON st.STCD = rs.STCD
                 INNER JOIN dbo.ST_RSVRFCCH_B rst ON rst.STCD = rs.STCD
        WHERE rs.TM &gt; #{beginTime}
        WHERE rs.TM &gt;= #{beginTime}
          AND rs.TM &lt;= #{endTime}
        ORDER BY rs.TM DESC
    </select>
    <!--水库最新信息-->
    <!--    <select id="selectyjcks" resultType="java.util.HashMap">-->
    <!--        SELECT cs.STCD,-->
    <!--               cs.TM,-->
    <!--               isnull(cs1.RZ, 0)   as RZ,-->
    <!--               isnull(rsvr.RZS, 0) as RZS,-->
    <!--               cs2.STNM,-->
    <!--               cs3.INQ,-->
    <!--               cs1.W,-->
    <!--               cs3.OTQ,-->
    <!--               cs2.LGTD,-->
    <!--               cs2.LTTD,-->
    <!--               cs2.ADDVNM,-->
    <!--               rsv.FSLTDZ-->
    <!--        FROM (-->
    <!--                 SELECT A.STCD,-->
    <!--                        MAX(A.TM) TM-->
    <!--                 FROM (SELECT STCD, TM, RZ, INQ, W, OTQ FROM dbo.ST_RSVR_R where TM &gt;#{dateEnd} AND TM &lt;=#{time}) AS A-->
    <!--                          INNER JOIN (SELECT STCD, STNM, ADDVNM, LTTD, LGTD FROM sys_rsvr) s ON A.STCD = s.STCD-->
    <!--                 GROUP BY A.STCD-->
    <!--             ) cs-->
    <!--                 INNER JOIN (SELECT STCD, TM, RZ, INQ, W, OTQ FROM dbo.ST_RSVR_R where TM &gt;#{dateEnd} AND TM &lt;=#{time}) cs1-->
    <!--                            ON cs.STCD = cs1.STCD AND cs.TM = cs1.TM-->
    <!--                 INNER JOIN (SELECT STCD, STNM, ADDVNM, LTTD, LGTD FROM sys_rsvr) cs2 ON cs.STCD = cs2.STCD-->
    <!--                 LEFT JOIN (SELECT FSLTDZ, STCD-->
    <!--                            FROM dbo.ST_RSVRFSR_B-->
    <!--                            WHERE BGMD = #{egmd}-->
    <!--                              AND EDMD = #{edmd}-->
    <!--                              AND FSLTDZ IS NOT NULL) rsv ON rsv.STCD = cs.STCD-->
    <!--                 INNER JOIN (SELECT isnull(RZ, 0) AS RZS, STCD FROM ST_RSVR_R WHERE TM = #{tm}) rsvr-->
    <!--                           ON rsvr.STCD = cs.STCD-->
    <!--                 INNER JOIN (SELECT STCD, INQ, OTQ FROM dbo.ST_RSVR_R WHERE TM = #{timez}) cs3 ON cs.STCD = cs3.STCD-->
    <!--        GROUP BY cs.STCD,-->
    <!--                 cs.TM,-->
    <!--                 cs1.RZ,-->
    <!--                 rsvr.RZS,-->
    <!--                 cs3.INQ,-->
    <!--                 cs1.W,-->
    <!--                 cs3.OTQ,-->
    <!--                 cs2.STNM,-->
    <!--                 cs2.ADDVNM,-->
    <!--                 cs2.LGTD,-->
    <!--                 cs2.LTTD,-->
    <!--                 rsv.FSLTDZ-->
    <!--    </select> -->
    <select id="selectyjcks" resultType="java.util.HashMap">
        SELECT cs.STCD,
               cs.TM,
               isnull(cs1.RZ, 0)   as RZ,
               isnull(rsvr.RZS, 0) as RZS,
               isnull(cs1.RZ, 0)   AS RZ,
               isnull(rsvr.RZS, 0) AS RZS,
               cs2.STNM,
               cs3.INQ,
               cs1.W,
@@ -71,10 +139,20 @@
                        MAX(A.TM) TM
                 FROM (SELECT STCD, TM, RZ, INQ, W, OTQ FROM dbo.ST_RSVR_R) AS A
                          INNER JOIN (SELECT STCD, STNM, ADDVNM, LTTD, LGTD FROM sys_rsvr) s ON A.STCD = s.STCD
                          LEFT JOIN (SELECT FSLTDZ, STCD
                                     FROM dbo.ST_RSVRFSR_B
                                     WHERE BGMD = #{egmd}
                                       AND EDMD = #{edmd}
                                       AND FSLTDZ IS NOT NULL) d ON d.STCD = A.STCD
                          LEFT JOIN (SELECT isnull(RZ, 0) AS RZS, STCD FROM ST_RSVR_R WHERE TM = #{tm}) z
                                    ON z.STCD = A.STCD
                          LEFT JOIN (SELECT STCD, INQ, OTQ FROM dbo.ST_RSVR_R WHERE TM = #{timez}) zz
                                    ON A.STCD = zz.STCD
                 GROUP BY A.STCD
             ) cs
                 INNER JOIN (SELECT STCD, TM, RZ, INQ, W, OTQ FROM dbo.ST_RSVR_R) cs1
                            ON cs.STCD = cs1.STCD AND cs.TM = cs1.TM
                            ON cs.STCD = cs1.STCD
                                AND cs.TM = cs1.TM
                 INNER JOIN (SELECT STCD, STNM, ADDVNM, LTTD, LGTD FROM sys_rsvr) cs2 ON cs.STCD = cs2.STCD
                 LEFT JOIN (SELECT FSLTDZ, STCD
                            FROM dbo.ST_RSVRFSR_B
@@ -216,6 +294,15 @@
                     ''
                   ) AS stcd
    </select>
    <!--    <select id="selectCode" resultType="java.lang.String">-->
    <!--        SELECT stuff((SELECT ',' + CONVERT(VARCHAR(25), rs.STCD)-->
    <!--                      FROM  sys_rsvr rs-->
    <!--            FOR XML PATH ( '' )),-->
    <!--                     1,-->
    <!--                     1,-->
    <!--                     ''-->
    <!--                   ) AS stcd-->
    <!--    </select>-->
    <select id="sel" resultType="java.util.HashMap">
        SELECT cs.STCD,
               cs.TM,
@@ -242,7 +329,9 @@
                            ON cs.STCD = cs2.STCD
                 LEFT JOIN (SELECT FSLTDZ, STCD
                            FROM dbo.ST_RSVRFSR_B
                            WHERE BGMD = #{egmd} AND EDMD = #{edmd} AND FSLTDZ IS NOT NULL) rsv ON rsv.STCD = cs.STCD
                            WHERE BGMD = #{egmd}
                              AND EDMD = #{edmd}
                              AND FSLTDZ IS NOT NULL) rsv ON rsv.STCD = cs.STCD
        GROUP BY cs.STCD,
                 cs.TM,
                 cs1.RZ,
src/main/java/org/springblade/modules/rsvr/service/IRsvrRService.java
@@ -33,7 +33,7 @@
    List<Map<String, Object>> selectfx();
    List<Map<String, Object>> selectyjck(String egmd,String edmd,String beginTime,String endTime);
    List<Map<String, Object>>  selectsk(String beginTime,String endTime);
    List<Map<String, Object>> selectyjcks(String egmd,String edmd,String tm,String timez);
    List<Map<String, Object>> selectyjcks(String egmd,String edmd,String tm,String timez,String time,String dateEnd);
    Map<String, Object>  selectRZ(String stcd,String ti);
    Map<String, Object>  selectInfo(String stcd);
    Map<String, Object>  selectTinfo(int mnth,String stcd);
src/main/java/org/springblade/modules/rsvr/service/impl/RsvrRServiceImpl.java
@@ -54,8 +54,8 @@
    }
    @Override
    public List<Map<String, Object>> selectyjcks( String egmd, String edmd,String tm,String timez) {
        return baseMapper.selectyjcks(egmd, edmd,tm,timez);
    public List<Map<String, Object>> selectyjcks( String egmd, String edmd,String tm,String timez,String time,String dateEnd) {
        return baseMapper.selectyjcks(egmd, edmd,tm,timez,time,dateEnd);
    }
    @Override