dcb
2025-06-19 303058307780d49e2ae4c815669f34b866206d86
src/main/java/com/se/nsl/controller/TestController.java
@@ -1,18 +1,24 @@
package com.se.nsl.controller;
import com.alibaba.fastjson.JSON;
import com.se.nsl.config.PropertiesConfig;
import com.se.nsl.domain.po.DataPo;
import com.se.nsl.domain.po.Region;
import com.se.nsl.domain.po.Simu;
import com.se.nsl.domain.po.SimuData;
import com.se.nsl.domain.vo.R;
import com.se.nsl.helper.GdalHelper;
import com.se.nsl.helper.ShpHelper;
import com.se.nsl.helper.StringHelper;
import com.se.nsl.mapper.RegionMapper;
import com.se.nsl.service.*;
import io.netty.util.internal.StringUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.axis.utils.StringUtils;
import org.gdal.ogr.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -20,7 +26,10 @@
import javax.annotation.Resource;
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.text.SimpleDateFormat;
@@ -29,7 +38,7 @@
import java.util.Date;
import java.util.List;
@Api(tags = "Test")
@Api(tags = "01-Test")
@Slf4j
@RestController
@RequestMapping("/test")
@@ -47,8 +56,8 @@
    @Resource
    SimuPoService simuPoService;
    @Resource
    Hdf5Service hdf5Service;
    //@Resource
    //Hdf5Service hdf5Service;
    @Resource
    ResultService resultService;
@@ -56,161 +65,22 @@
    @Resource
    RegionMapper regionMapper;
    @ApiOperation(value = "当前时间 *")
    @GetMapping("/getTime")
    public Object getTime() {
        return System.currentTimeMillis();
    }
    @Resource
    PropertiesConfig config;
    @ApiOperation(value = "testCallExe *")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "path", value = "路径", dataType = "String", paramType = "query", example = "20241010095328")
    })
    @GetMapping("/testCallExe")
    public R<Object> testCallExe(String path) {
        try {
            DataPo data = new DataPo();
            data.setInPath(path);
    @Resource
    SimuService simuService;
            String str = uwService.callExe(data);
    @Resource
    ResolveService resolveService;
            return success(str);
        } catch (Exception ex) {
            return fail(ex, null);
        }
    }
    @ApiOperation(value = "testResuslt *")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "path", value = "路径", dataType = "String", paramType = "query", example = "20241107092342"),
            @ApiImplicitParam(name = "time", value = "时间", dataType = "String", paramType = "query", example = "2024-11-07 09:23:42")
    })
    @GetMapping("/testResuslt")
    public R<Object> testResuslt(String path, String time) {
        try {
            DataPo data = new DataPo();
            data.setEpsg(4548);
            data.setInPath(path);
            data.setStartTime(StringHelper.YMDHMS_FORMAT.parse(time));
            resultService.process(data);
            return success("ok");
        } catch (Exception ex) {
            return fail(ex, null);
        }
    }
    @ApiOperation(value = "testSww2Tif *")
    @GetMapping("/testSww2Tif")
    public R<Object> testSww2Tif() {
        try {
            DataPo data = new DataPo();
            data.setEpsg(4548);
            data.setInPath("20241010095328");
            data.setStartTime(StringHelper.YMDHMS_FORMAT.parse("2024-09-30 00:00:00"));
            Object rs = uwService.copeDrainFiles(data);
            return success(rs);
        } catch (Exception ex) {
            return fail(ex, null);
        }
    }
    @ApiOperation(value = "testRainfall *")
    @GetMapping("/testRainfall")
    public R<Object> testRainfall() {
        try {
            DataPo data = new DataPo();
            data.setEpsg(4548);
            data.setTotal(60.0);
            data.setDuration(60);
            data.setInPath("20241010095328");
            data.setStartTime(StringHelper.YMDHMS_FORMAT.parse("2024-07-01 00:00:00"));
            uwService.createRainFile(data);
            return success("ok");
        } catch (Exception ex) {
            return fail(ex, null);
        }
    }
    @ApiOperation(value = "testToken *")
    @GetMapping("/testToken")
    public R<Object> testToken() {
        try {
            String token = gedbService.getToken();
            return success(token);
        } catch (Exception ex) {
            return fail(ex, null);
        }
    }
    @ApiOperation(value = "testPolygonize *")
    @GetMapping("/testPolygonize")
    public R<Object> testPolygonize() {
        try {
            ShpHelper.test();
            return success("ok");
        } catch (Exception ex) {
            return fail(ex, null);
        }
    }
    @ApiOperation(value = "testH5 *")
    @GetMapping("/testH5")
    public R<Object> testH5() {
        try {
            DataPo data = new DataPo();
            data.setEpsg(4548);
            data.setInPath("20241010095328");
            data.setStartTime(StringHelper.YMDHMS_FORMAT.parse("2024-09-30 00:00:00"));
            hdf5Service.test(data);
            return success("ok");
        } catch (Exception ex) {
            return fail(ex, null);
        }
    }
    @ApiOperation(value = "testNsl <")
    @GetMapping("/testNsl")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "inPath", value = "输入路径", dataType = "String", paramType = "query", example = "20250412"),
            @ApiImplicitParam(name = "startTime", value = "开始时间", dataType = "Integer", paramType = "query", example = "2025-04-12 00:00:00"),
            @ApiImplicitParam(name = "epsg", value = "坐标系ID", dataType = "Integer", paramType = "query", example = "4548")
    })
    public R<Object> testNsl(String inPath, String startTime, Integer epsg) {
        try {
            DataPo data = new DataPo();
            data.setInPath(inPath);
            data.setStartTime(StringHelper.YMDHMS_FORMAT.parse(startTime));
            data.setEpsg(epsg);
            testService.test(data);
            return success("ok");
        } catch (Exception ex) {
            return fail(ex, null);
        }
    }
    @ApiOperation(value = "insertRegion <")
    @ApiOperation(value = "01.insertRegion <")
    @GetMapping("/insertRegion")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "fileName", value = "文件名", dataType = "String", paramType = "query", example = "5.beijing.geoJson"),
            @ApiImplicitParam(name = "type", value = "类型", dataType = "Integer", paramType = "query", example = "1")
    })
    public R<Object> insertRegion(String fileName, Integer type) {
        return insertNsl(fileName, type);
    }
    private R<Object> insertNsl(String fileName, Integer type) {
        // 孙胡沟geometry.json,7.nsl_area.geojson,4.10000.geoJson,5.beijing.geoJson
        String path = "D:\\terrait\\NslServer\\data\\" + fileName;
        if (!new File(path).exists()) return fail(path + ",文件不存在", null);
@@ -232,8 +102,8 @@
                    continue; // g.GetGeometryType() == ogr.wkbPolygon || g.GetGeometryType() == ogr.wkbMultiPolygon
                if (!wkt.contains("MULTIPOLYGON")) wkt = wkt.replace("POLYGON (", "MULTIPOLYGON ((") + ")";
                list.add(new Region(f.GetFieldAsString("name"), type.shortValue(), wkt));
                if (path.contains("孙胡沟")) list.add(new Region(f.GetFieldAsString("name"), (short) 3, wkt));
                list.add(new Region(f.GetFieldAsString("name"), type, wkt)); // type.shortValue()
                if (path.contains("孙胡沟")) list.add(new Region(f.GetFieldAsString("name"), 3, wkt));
            }
        }
        ds.delete();
@@ -242,7 +112,7 @@
        return success(list.size() > 0 ? regionMapper.inserts(list) : 0);
    }
    @ApiOperation(value = "testDepthFiles <")
    @ApiOperation(value = "02.testDepthFiles <")
    @GetMapping("/testDepthFiles")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "oldPath", value = "输入路径", dataType = "String", paramType = "query", example = "D:\\other\\simu\\uwsolver\\chicago"),
@@ -283,7 +153,7 @@
        }
    }
    @ApiOperation(value = "testTifFiles <")
    @ApiOperation(value = "03.testTifFiles <")
    @GetMapping("/testTifFiles")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "oldPath", value = "输入路径", dataType = "String", paramType = "query", example = "D:\\other\\simu\\uwsolver\\chicago\\depth"),
@@ -310,4 +180,289 @@
            return fail(ex, null);
        }
    }
    @ApiOperation(value = "04.testPngList <")
    @GetMapping("/testPngList")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "path", value = "路径", dataType = "String", paramType = "query", example = "fs24cubic"),
            @ApiImplicitParam(name = "size", value = "尺寸", dataType = "Integer", paramType = "query", example = "1024")
    })
    public R<Object> testPngList(String path, Integer size) {
        try {
            if (null == size) size = (Integer) 1024;
            String newPath = config.getOutPath() + File.separator + path + File.separator + "waters";
            String pngPath = config.getOutPath() + File.separator + path + File.separator + "png";
            if (!new File(pngPath).exists()) new File(pngPath).mkdirs();
            int i = 1;
            List<String> list = new ArrayList<>();
            for (File file : new File(newPath).listFiles()) {
                if (!file.exists() || file.isFile()) continue;
                File pngFile = new File(file.getPath() + File.separator + size + "_" + size + ".png");
                if (!pngFile.exists() || pngFile.isDirectory()) continue;
                String pngName = i + ".png"; // String.format("f%06d", i)
                Files.copy(pngFile.toPath(), Paths.get(pngPath + File.separator + pngName), StandardCopyOption.REPLACE_EXISTING);
                list.add("file '" + pngName + "'");
                System.out.println(list.get(list.size() - 1));
                i++;
            }
            Path outPath = Paths.get(pngPath + File.separator + "list.txt");
            try {
                Files.write(outPath, list, StandardCharsets.UTF_8);
            } catch (IOException e) {
                e.printStackTrace();
            }
            return success("ok");
        } catch (Exception ex) {
            return fail(ex, null);
        }
    }
    @ApiOperation(value = "5.testNsl <")
    @GetMapping("/testNsl")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "inPath", value = "输入路径", dataType = "String", paramType = "query", example = "20250412"),
            @ApiImplicitParam(name = "startTime", value = "开始时间", dataType = "Integer", paramType = "query", example = "2025-04-12 00:00:00"),
            @ApiImplicitParam(name = "epsg", value = "坐标系ID", dataType = "Integer", paramType = "query", example = "4548")
    })
    public R<Object> testNsl(String inPath, String startTime, Integer epsg) {
        try {
            SimuData data = new SimuData();
            data.setInPath(inPath);
            data.setStartTime(StringHelper.YMDHMS_FORMAT.parse(startTime));
            data.setEpsg(epsg);
            testService.test(data);
            return success("ok");
        } catch (Exception ex) {
            return fail(ex, null);
        }
    }
    @ApiOperation(value = "09.testCreateNsl <")
    @GetMapping("/testCreateNsl")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "tifPath", value = "Tif路径", dataType = "String", paramType = "query", example = "D:\\other\\simu\\uwsolver\\chicago"),
            @ApiImplicitParam(name = "inPath", value = "输入路径", dataType = "String", paramType = "query", example = "20250425"),
            @ApiImplicitParam(name = "startTime", value = "开始时间", dataType = "Integer", paramType = "query", example = "2025-04-29 00:00:00"),
            @ApiImplicitParam(name = "epsg", value = "坐标系ID", dataType = "Integer", paramType = "query", example = "4548")
    })
    public R<Object> testCreateNsl(String tifPath, String inPath, String startTime, Integer epsg) {
        try {
            SimuData data = new SimuData();
            data.setInPath(inPath);
            data.setStartTime(StringHelper.YMDHMS_FORMAT.parse(startTime));
            data.setEpsg(epsg);
            procTifs(tifPath, inPath, data.getStartTime());
            testService.test(data);
            return success("ok");
        } catch (Exception ex) {
            return fail(ex, null);
        }
    }
    private void procTifs(String tifPath, String inPath, Date startTime) {
        if (StringUtils.isEmpty(tifPath)) return;
        Calendar calendar = Calendar.getInstance();
        //calendar.setTime(new Date(startTime.getYear() - 1900, startTime.getMonth() - 1, startTime.getDay(), 0, 0, 0));
        calendar.setTime(startTime);
        SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
        String newPath = config.getInPath() + File.separator + inPath + File.separator + "depth";
        if (!new File(newPath).exists()) new File(newPath).mkdirs();
        for (File file : new File(tifPath).listFiles()) {
            if (!file.exists() || !file.isDirectory()) continue;
            File tif = new File(tifPath + "\\" + file.getName() + File.separator + "depth.tif");
            if (!tif.exists() || tif.isDirectory()) continue;
            calendar.add(Calendar.SECOND, 1);
            String newName = df.format(calendar.getTime());
            String newFile = newPath + File.separator + newName + ".tif";
            System.out.println(newFile);
            tif.renameTo(new File(newFile));
            file.delete();
        }
    }
    @ApiOperation(value = "11.renametifs <")
    @GetMapping("/renametifs")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "path", value = "路径", dataType = "String", paramType = "query", example = "D:\\other\\simu\\uwsolver\\chicago\\depth"),
            @ApiImplicitParam(name = "prefix", value = "前缀", dataType = "Integer", paramType = "query", example = "01250302"),
            @ApiImplicitParam(name = "newPrefix", value = "新前缀", dataType = "Integer", paramType = "query", example = "20250429")
    })
    public R<Object> renametifs(String path, String prefix, String newPrefix) {
        try {
            File[] files = new File(path).listFiles();
            for (File file : files) {
                String newName = file.getPath().replace(prefix, newPrefix);
                file.renameTo(new File(newName));
            }
            return success("ok");
        } catch (Exception ex) {
            return fail(ex, null);
        }
    }
    @ApiOperation(value = "10.当前时间 *")
    @GetMapping("/getTime")
    public Object getTime() throws Exception {
        /*String rs = resolveService.createRainfallCsv("D:\\360\\zt.csv", "正态分布", 100, 10, 1);
        rs = resolveService.createRainfallCsv("D:\\360\\pj.csv", "平均分布", 100, 10, 1);
        rs = resolveService.createRainfallCsv("D:\\360\\bdpj.csv", "波动平均分布", 100, 10, 1);
        rs = resolveService.createRainfallCsv("D:\\360\\cxss.csv", "持续上升", 100, 10, 1);*/
        /*SimuData data = new SimuData();
        data.setStartTime(new Date());
        data.setInPath("20250504203823");
        String rs = resolveService.callZarr2tif(data);*/
        /*Simu simu = simuService.selectById(17);
        SimuData data = JSON.parseObject(simu.getData(), SimuData.class);
        resolveService.initArgs(data);
        resolveService.createRainfallFile(simu, data);
        resolveService.callUwSolver(data);*/
        /*SimuData data = new SimuData();
        data.setStartTime(new Date(1748747454000L));
        data.setInPath("20250515143948");
        data.setOutPath(data.getInPath());
        data.setEpsg(4548);
        testService.test(data);*/
        Simu simu = simuService.selectById(17);
        SimuData data = JSON.parseObject(simu.getData(), SimuData.class);
        resolveService.initArgs(simu, data);
        return (Object) System.currentTimeMillis();
    }
    /*@ApiOperation(value = "12.testCallExe *")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "path", value = "路径", dataType = "String", paramType = "query", example = "20241010095328")
    })
    @GetMapping("/testCallExe")
    public R<Object> testCallExe(String path) {
        try {
            DataPo data = new DataPo();
            data.setInPath(path);
            String str = uwService.callExe(data);
            return success(str);
        } catch (Exception ex) {
            return fail(ex, null);
        }
    }
    @ApiOperation(value = "13.testResuslt *")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "path", value = "路径", dataType = "String", paramType = "query", example = "20241107092342"),
            @ApiImplicitParam(name = "time", value = "时间", dataType = "String", paramType = "query", example = "2024-11-07 09:23:42")
    })
    @GetMapping("/testResuslt")
    public R<Object> testResuslt(String path, String time) {
        try {
            DataPo data = new DataPo();
            data.setEpsg(Integer.valueOf(4548));
            data.setInPath(path);
            data.setStartTime(StringHelper.YMDHMS_FORMAT.parse(time));
            resultService.process(data);
            return success("ok");
        } catch (Exception ex) {
            return fail(ex, null);
        }
    }
    @ApiOperation(value = "14.testSww2Tif *")
    @GetMapping("/testSww2Tif")
    public R<Object> testSww2Tif() {
        try {
            DataPo data = new DataPo();
            data.setEpsg(Integer.valueOf(4548));
            data.setInPath("20241010095328");
            data.setStartTime(StringHelper.YMDHMS_FORMAT.parse("2024-09-30 00:00:00"));
            Object rs = uwService.copeDrainFiles(data);
            return success(rs);
        } catch (Exception ex) {
            return fail(ex, null);
        }
    }
    @ApiOperation(value = "15.testRainfall *")
    @GetMapping("/testRainfall")
    public R<Object> testRainfall() {
        try {
            DataPo data = new DataPo();
            data.setEpsg(Integer.valueOf(4548));
            data.setTotal(Double.valueOf(60.0));
            data.setDuration(Integer.valueOf(60));
            data.setInPath("20241010095328");
            data.setStartTime(StringHelper.YMDHMS_FORMAT.parse("2024-07-01 00:00:00"));
            uwService.createRainFile(data);
            return success("ok");
        } catch (Exception ex) {
            return fail(ex, null);
        }
    }
    @ApiOperation(value = "16.testToken *")
    @GetMapping("/testToken")
    public R<Object> testToken() {
        try {
            String token = gedbService.getToken();
            return success(token);
        } catch (Exception ex) {
            return fail(ex, null);
        }
    }
    @ApiOperation(value = "17.testPolygonize *")
    @GetMapping("/testPolygonize")
    public R<Object> testPolygonize() {
        try {
            ShpHelper.test();
            return success("ok");
        } catch (Exception ex) {
            return fail(ex, null);
        }
    }
    @ApiOperation(value = "18.testH5 *")
    @GetMapping("/testH5")
    public R<Object> testH5() {
        try {
            DataPo data = new DataPo();
            data.setEpsg(Integer.valueOf(4548));
            data.setInPath("20241010095328");
            data.setStartTime(StringHelper.YMDHMS_FORMAT.parse("2024-09-30 00:00:00"));
            hdf5Service.test(data);
            return success("ok");
        } catch (Exception ex) {
            return fail(ex, null);
        }
    }*/
}