From 9804628abf554c3658345fc8fc9472cfb179fd5f Mon Sep 17 00:00:00 2001 From: 张洋洋 <10611411+yang-yang-z@user.noreply.gitee.com> Date: 星期一, 24 二月 2025 22:08:12 +0800 Subject: [PATCH] [add]服务发布 --- src/main/java/com/se/simu/controller/SimuController.java | 181 +++++++++++++++++++++++++++++++++------------ 1 files changed, 133 insertions(+), 48 deletions(-) diff --git a/src/main/java/com/se/simu/controller/SimuController.java b/src/main/java/com/se/simu/controller/SimuController.java index 0c4bcad..418be2d 100644 --- a/src/main/java/com/se/simu/controller/SimuController.java +++ b/src/main/java/com/se/simu/controller/SimuController.java @@ -1,5 +1,7 @@ package com.se.simu.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -12,9 +14,14 @@ import com.se.simu.domain.po.SimuPo; import com.se.simu.domain.vo.*; import com.se.simu.enums.RadioEnums; +import com.se.simu.enums.SemErrorEnums; +import com.se.simu.helper.StringHelper; +import com.se.simu.helper.WebHelper; +import com.se.simu.mapper.SimuMapper; import com.se.simu.service.*; import com.se.simu.utils.*; import io.swagger.annotations.*; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang3.StringUtils; @@ -29,10 +36,13 @@ import java.net.URL; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; +import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; import java.util.stream.Collectors; @Api(tags = "浠跨湡绠$悊") @@ -55,6 +65,9 @@ @Resource PropertiesConfig config; + + @Resource + SimuMapper simuMapper; @Value("${simu-app.filePath}") private String uploadedFolder; @@ -313,11 +326,11 @@ return fail("妯℃嫙璁$畻璁$畻鍧愭爣锛�", false); } double aveTotal = BigDecimal.valueOf(vo.getTotal()).divide(BigDecimal.valueOf(vo.getDuration()), 2, BigDecimal.ROUND_HALF_UP).doubleValue(); - JSONArray jsonArray=new JSONArray(); - LocalDateTime now=LocalDateTime.now(); + JSONArray jsonArray = new JSONArray(); + LocalDateTime now = LocalDateTime.now(); DateTimeFormatter customFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm"); - for (int i=0;i<vo.getDuration();i++){ - JSONObject jsonObject=new JSONObject(); + for (int i = 0; i < vo.getDuration(); i++) { + JSONObject jsonObject = new JSONObject(); jsonObject.put("stationName", vo.getStation()); jsonObject.put("rainfall", aveTotal); jsonObject.put("longitude", vo.getStationLongitude()); @@ -377,13 +390,50 @@ dtos.add(new GridDto(vo.getMaxy(), vo.getMinx())); dtos.add(new GridDto(vo.getMaxy(), vo.getMaxx())); dtos.add(new GridDto(vo.getMiny(), vo.getMaxx())); - createSem(tableName, dtos, vo); + String bbox = ""; + //鐢熸垚鐐瑰拰绾跨殑瀹炰綋搴撴ā鍨嬪苟淇濆瓨璺緞 + String name = vo.getSemUrl(); + String token = EntityLibraryUtils.login(); + vo.setPointName(name + "-point"); + vo.setLinkName(name + "-line"); + JSONArray min = ProjectionToGeographicUtil.get4548Point(dtos.get(0).getLon(), dtos.get(0).getLat()); + JSONArray max = ProjectionToGeographicUtil.get4548Point(dtos.get(2).getLon(), dtos.get(2).getLat()); + bbox = bbox + min.getDouble(0) + "," + min.getDouble(1) + "," + max.getDouble(0) + "," + max.getDouble(1); + JSONObject point = getModule("layerQueryPointParams.json"); + String pointUrl = assemble(vo.getPointName(), point.getString("layerid"), bbox, token); + vo.setPointName(pointUrl); + JSONObject link = getModule("layerQueryParams.json"); + String linkUrl = assemble(vo.getLinkName(), link.getString("layerid"), bbox, token); + vo.setLinkName(linkUrl); + SimuPo simu = saveSimu(vo); + //鐢熸垚sem鏂囦欢 + asyncCall(tableName, dtos, vo, token, simu); + // 寮�濮嬫ā鎷熻绠� - boolean flag = simuFilesService.createByfiles(vo); - return success(flag, flag ? "鎴愬姛" : "澶辫触"); + //boolean flag = simuFilesService.createByfiles(vo, token); + return success(simu.getId() != null ? "鎴愬姛" : "澶辫触"); } catch (Exception ex) { return fail(ex, null); } + } + + public SimuPo saveSimu(CreateFilesSimuVo vo) { + Date now = new Date(); + String date = StringHelper.YMDHMS2_FORMAT.format(now); + if (StringHelper.isEmpty(vo.getName())) { + vo.setName(date); + } + DataPo data = BeanUtil.copyProperties(vo, DataPo.class); + data.setPath(date, date); + SimuPo simu = new SimuPo(vo.getNum(), vo.getPid(), vo.getName(), JSONUtil.toJsonStr(data), 0, vo.getBak()); + simu.setServiceName(date); + simu.setCreateTime(new Timestamp(now.getTime())); + simu.setSemUrl(vo.getSemUrl()); + simu.setPointUrl(vo.getPointName()); + simu.setLinkUrl(vo.getLinkName()); + simu.setSemUrl(inPath + "\\" + vo.getSemUrl()); + int rows = simuMapper.insert(simu); + return simu; } @ApiOperation(value = "鑾峰彇鐐硅矾寰�") @@ -408,48 +458,77 @@ return success(null); } - public R<Boolean> createSem(String tableName, List<GridDto> dtos, CreateFilesSimuVo vo) throws Exception { - String name = vo.getSemUrl(); - vo.setSemUrl(inPath + "\\" + vo.getSemUrl()); - boolean ends = vo.getSemUrl().endsWith("\\"); - if (!ends) { - vo.setSemUrl(vo.getSemUrl() + "\\"); - } - File file = new File(vo.getSemUrl()); - if (!file.exists()) { - file.mkdirs(); - } - String token = EntityLibraryUtils.login(); - //闄嶉洦鏂囦欢鐢熸垚 - saveZarr(tableName, vo.getSemUrl()); - //绠$偣鐢熸垚 - pointTosem(dtos, token, vo.getSemUrl()); - //绠$嚎鐢熸垚 - lineToSem(dtos, token, vo.getSemUrl()); - //鑼冨洿鐢熸垚 - gridToCityJson(dtos, vo.getSemUrl()); - //娌虫祦鐢熸垚 - riverToSem(vo.getSemUrl()); - //鍦熷湴鍒╃敤鐢熸垚 - landuseToSem(vo.getSemUrl()); - //鍦板舰鐢熸垚 - terrainToSem(dtos, vo.getSemUrl()); - String bbox = ""; - //鐢熸垚鐐瑰拰绾跨殑瀹炰綋搴撴ā鍨嬪苟淇濆瓨璺緞 - vo.setPointName(name + "-point"); - vo.setLinkName(name + "-line"); - JSONArray min = ProjectionToGeographicUtil.get4548Point(dtos.get(0).getLon(), dtos.get(0).getLat()); - JSONArray max = ProjectionToGeographicUtil.get4548Point(dtos.get(2).getLon(), dtos.get(2).getLat()); - bbox = bbox + min.getDouble(0) + "," + min.getDouble(1) + "," + max.getDouble(0) + "," + max.getDouble(1); - JSONObject point = getModule("layerQueryPointParams.json"); - String pointUrl = assemble(vo.getPointName(), point.getString("layerid"), bbox, token); - vo.setPointName(pointUrl); - JSONObject link = getModule("layerQueryParams.json"); - String linkUrl = assemble(vo.getLinkName(), link.getString("layerid"), bbox, token); - vo.setLinkName(linkUrl); - return success(true); + private void asyncCall(String tableName, List<GridDto> dtos, CreateFilesSimuVo vo, String token, SimuPo simu) { + ExecutorService executor = Executors.newSingleThreadExecutor(); + executor.execute(new Runnable() { + @Override + @SneakyThrows + public void run() { + createSem(tableName, dtos, vo, token, simu); + } + }); + executor.shutdown(); } + public void createSem(String tableName, List<GridDto> dtos, CreateFilesSimuVo vo, String token, SimuPo simu) throws Exception { + int code=1; + try { + vo.setSemUrl(inPath + "\\" + vo.getSemUrl()); + boolean ends = vo.getSemUrl().endsWith("\\"); + if (!ends) { + vo.setSemUrl(vo.getSemUrl() + "\\"); + } + File file = new File(vo.getSemUrl()); + if (!file.exists()) { + file.mkdirs(); + } + //鍒濆鍖� + update(simu, code, null); + code+=1; + //闄嶉洦鏂囦欢鐢熸垚 + saveZarr(tableName, vo.getSemUrl()); + update(simu, code, null); + code+=1; + //绠$偣鐢熸垚 + pointTosem(dtos, token, vo.getSemUrl()); + update(simu, code, null); + code+=1; + //绠$嚎鐢熸垚 + lineToSem(dtos, token, vo.getSemUrl()); + update(simu, code, null); + code+=1; + //鑼冨洿鐢熸垚 + gridToCityJson(dtos, vo.getSemUrl()); + update(simu, code, null); + code+=1; + //娌虫祦鐢熸垚 + riverToSem(vo.getSemUrl()); + update(simu, code, null); + code+=1; + //鍦熷湴鍒╃敤鐢熸垚 + landuseToSem(vo.getSemUrl()); + update(simu, code, null); + code+=1; + //鍦板舰鐢熸垚 + terrainToSem(dtos, vo.getSemUrl()); + update(simu, 10, null); + code+=1; + //9=璋冪敤姹傝В/10=姹傝В鍒嗘瀽 + } catch (Exception e) { + log.error(e.getMessage(), e); + update(simu, -simu.getStatus(), SemErrorEnums.of(code)); + } + + + } + + private void update(SimuPo simu, int status, String rs) { + simu.setStatus(status); + if (null != rs) simu.setResult(rs); + simu.setUpdateTime(WebHelper.getCurrentTimestamp()); + + simuMapper.updateById(simu); + } public String assemble(String name, String layerid, String bbox, String token) throws Exception { JSONObject jsonObject = EntityLibraryUtils.createAssemble(name, token); @@ -841,7 +920,13 @@ String pngPath = path + "appearance\\terrain.png"; TiffToRGBUtil.tifToPng(tifPath, pngPath); JSONObject jsonObject = getModule("terrainmodule.json"); - jsonObject.put("vertices", TiffCoordinateExtractorUtil.getCoordinate(tifPath)); + JSONArray array=new JSONArray(); + array.add(ProjectionToGeographicUtil.getPoint(dtos.get(1).getLon(),dtos.get(1).getLat())); + array.add(ProjectionToGeographicUtil.getPoint(dtos.get(2).getLon(),dtos.get(2).getLat())); + array.add(ProjectionToGeographicUtil.getPoint(dtos.get(3).getLon(),dtos.get(3).getLat())); + array.add(ProjectionToGeographicUtil.getPoint(dtos.get(0).getLon(),dtos.get(0).getLat())); + //jsonObject.put("vertices", TiffCoordinateExtractorUtil.getCoordinate(tifPath)); + jsonObject.put("vertices", array); FileWriter fileWriter = new FileWriter(path + "terrain.json"); fileWriter.write(jsonObject.toJSONString()); fileWriter.close(); -- Gitblit v1.9.3