From 02d94d6d36d906458c53043b397662000b4cc4a3 Mon Sep 17 00:00:00 2001 From: hekaiyu <13673834656@163.com> Date: Sat, 24 Jan 2026 21:22:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jeecg/common/constant/EventConstants.java | 2 +- .../constant/enums/EnginStatusEnum.java | 8 +-- .../properties/EventServerProperties.java | 7 ++- .../org/jeecg/modules/base/entity/Cmaq.java | 4 +- .../modules/base/entity/Engineering.java | 2 +- .../org/jeecg/modules/base/entity/Wrf.java | 2 +- .../service/impl/EngineeringServiceImpl.java | 1 - .../runProcess/VO/RunProcessParamVO.java | 11 ++-- .../controller/RunProcessController.java | 5 +- .../service/impl/RunProcessServiceImpl.java | 54 +++++++++---------- .../jeecg/wrf/controller/WrfController.java | 26 ++++++++- .../src/main/resources/application.yml | 2 +- 12 files changed, 77 insertions(+), 47 deletions(-) diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/EventConstants.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/EventConstants.java index 5edde60..1889904 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/EventConstants.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/EventConstants.java @@ -22,7 +22,7 @@ public class EventConstants { public static final String METCRO3D_VNAMES = "TA,PRES"; public static final String EMIS_VNAMES = "CO,PSI"; - public static final String WRF_PATTERN = "wrfout_d03_{YYYY-MM-DD}_00_00_00"; + public static final String WRF_PATTERN = "wrfout_d03_{YYYY-MM-DD}_00:00:00"; public static final String CONC_PATTERN = "CCTM.CONC.d03.{YYYYMMDD}"; public static final String METCRO3D_PATTERN = "METCRO3D_d03_{YYYYMMDD}"; public static final String EMIS_PATTERN = "emis_{YYYYMMDD}"; diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/EnginStatusEnum.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/EnginStatusEnum.java index e0dedec..88d376f 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/EnginStatusEnum.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/EnginStatusEnum.java @@ -18,13 +18,13 @@ public enum EnginStatusEnum { */ PAUSED(2), /** - * 继续运行 + * 运行异常 */ - RESUMED(3), + ABNORMAL(3), /** - * 结束运行 + * 运行完成 */ - FINISHED(4); + COMPLETED(4); private Integer key; diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/properties/EventServerProperties.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/properties/EventServerProperties.java index 9c736eb..474ff62 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/properties/EventServerProperties.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/properties/EventServerProperties.java @@ -40,8 +40,13 @@ public class EventServerProperties { private String resultFilePrefix; /** - * 剂量py存放目录 + * 外部py目录 */ private String pythonPath; + /** + * 容器py目录 + */ + private String dockerPyPath; + } diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/Cmaq.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/Cmaq.java index 1de5e8b..d15ad5c 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/Cmaq.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/Cmaq.java @@ -109,9 +109,9 @@ public class Cmaq implements Serializable { private String szpath; - private String emisShour; + private Integer emisShour; - private String emisEhour; + private Integer emisEhour; private String fileName; diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/Engineering.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/Engineering.java index 14daf3c..ae84e05 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/Engineering.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/Engineering.java @@ -28,7 +28,7 @@ public class Engineering { @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date updateTime; /** - * 工程状态(0:未运行,1:正在运行,2:暂停,3:继续运行,4:结束运行) + * 工程状态(0:未运行,1:正在运行,2:暂停,3:运行异常,4:运行完成) * */ private Integer enginStatus; /**工程名称*/ diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/Wrf.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/Wrf.java index 9b45d84..f2204aa 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/Wrf.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/Wrf.java @@ -48,7 +48,7 @@ public class Wrf implements Serializable { /**事件结束时间*/ private String endTime; /**事件模拟小时数*/ - private String analogTime; + private Integer analogTime; /**事件模拟天数*/ private String runDays; /**事件类型*/ diff --git a/jeecg-module-event/src/main/java/org/jeecg/engineering/service/impl/EngineeringServiceImpl.java b/jeecg-module-event/src/main/java/org/jeecg/engineering/service/impl/EngineeringServiceImpl.java index d6d0e37..0d0bd74 100644 --- a/jeecg-module-event/src/main/java/org/jeecg/engineering/service/impl/EngineeringServiceImpl.java +++ b/jeecg-module-event/src/main/java/org/jeecg/engineering/service/impl/EngineeringServiceImpl.java @@ -65,7 +65,6 @@ public class EngineeringServiceImpl extends ServiceImpl runAllExe(RunProcessParamVO paramVO){ + String engineeringId = paramVO.getEnginId(); + Engineering engineering = engineeringService.getById(engineeringId); try{ - String engineeringId = paramVO.getEnginId(); - Engineering engineering = engineeringService.getById(engineeringId); Wrf wrf = wrfService.getOne(new LambdaQueryWrapper().eq(Wrf::getEnginId,engineeringId)); //各种路径前缀 @@ -68,35 +69,38 @@ public class RunProcessServiceImpl implements RunProcessService { String eDate = LocalDateTime.parse( wrf.getEndTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")).minusDays(1).format(DateTimeFormatter.ofPattern("yyyyMMdd")); exeDepPy(sDate, eDate, EventConstants.DEP_VNAMES, - workDirPath + EventConstants.CONC_DIR, resultFilePath, + workDirPath + EventConstants.CONC_DIR, resultFilePath, scriptsPath, EventConstants.DEP_OUT_PREFIX, "相加DEP结果数据"); exePyScript(sDate, eDate, EventConstants.WRF_VNAMES, - workDirPath + EventConstants.WRF_DIR, resultFilePath, + workDirPath + EventConstants.WRF_DIR, resultFilePath, scriptsPath, EventConstants.WRF_OUT_PREFIX, EventConstants.WRF_PATTERN, "合并WRF结果数据"); exePyScript(sDate, eDate, EventConstants.CONC_VNAMES, - workDirPath + EventConstants.CONC_DIR, resultFilePath, + workDirPath + EventConstants.CONC_DIR, resultFilePath, scriptsPath, EventConstants.CONC_OUT_PREFIX, EventConstants.CONC_PATTERN, "合并CONC结果数据"); exePyScript(sDate, eDate, EventConstants.METCRO3D_VNAMES, - workDirPath + EventConstants.METCRO3D_DIR, resultFilePath, + workDirPath + EventConstants.METCRO3D_DIR, resultFilePath, scriptsPath, EventConstants.METCRO3D_OUT_PREFIX, EventConstants.METCRO3D_PATTERN, "合并METCRO3D结果数据"); exePyScript(sDate, eDate, EventConstants.EMIS_VNAMES, - allRunPath + EventConstants.EMIS_DIR, resultFilePath, + allRunPath + EventConstants.EMIS_DIR, resultFilePath, scriptsPath, EventConstants.EMIS_OUT_PREFIX, EventConstants.EMIS_PATTERN, "合并EMIS结果数据"); //生成计算剂量转换系数入参文件 eventTypeService.genSourceItemFile(engineering.getEventType(), resultFilePath); - exeDoseCalculator(wrf.getAnalogTime(), resultFilePath, "计算剂量转换系数"); - - exeDosePy(sDate, eDate, resultFilePath,"执行剂量转换"); + exeDoseCalculator(wrf.getAnalogTime(), resultFilePath, scriptsPath, "计算剂量转换系数"); + exeDosePy(sDate, eDate, resultFilePath, scriptsPath, "执行剂量转换"); }catch (Exception e){ e.printStackTrace(); + engineering.setEnginStatus(EnginStatusEnum.ABNORMAL.getKey()); + engineeringService.updateById(engineering); return Result.error(e.getMessage()); } + engineering.setEnginStatus(EnginStatusEnum.COMPLETED.getKey()); + engineeringService.updateById(engineering); return Result.OK("运行成功!"); } @@ -145,11 +149,10 @@ public class RunProcessServiceImpl implements RunProcessService { * 执行Python脚本 */ private void exePyScript(String sDate, String eDate, String vNames, String inputPath, - String outputPath, String outFileName, String pattern, String desc) { + String outputPath, String scriptsPath, String outFileName, String pattern, String desc) { String[] command = { - "python", - eventServerProperties.getBaseHome() + File.separator + - eventServerProperties.getPythonPath() + File.separator + EventConstants.MERGE_RESULTS, + eventServerProperties.getDockerPyPath() + File.separator + "python", + scriptsPath + EventConstants.MERGE_RESULTS, vNames, inputPath, outputPath, @@ -166,11 +169,10 @@ public class RunProcessServiceImpl implements RunProcessService { * 执行沉降Python脚本 */ private void exeDepPy(String sDate, String eDate, String vNames, String inputPath, - String outputPath, String outFileName, String desc) { + String outputPath, String scriptsPath, String outFileName, String desc) { String[] command = { - "python", - eventServerProperties.getBaseHome() + File.separator + - eventServerProperties.getPythonPath() + File.separator + EventConstants.SUM_DRY_WET, + eventServerProperties.getDockerPyPath() + File.separator + "python", + scriptsPath + EventConstants.SUM_DRY_WET, vNames, inputPath, outputPath, @@ -185,12 +187,11 @@ public class RunProcessServiceImpl implements RunProcessService { /** * 计算剂量转换系数 */ - private void exeDoseCalculator(String analogTime, String resultFilePath, String desc) { + private void exeDoseCalculator(Integer analogTime, String resultFilePath, String scriptsPath, String desc) { String[] command = { - "python", - eventServerProperties.getBaseHome() + File.separator + - eventServerProperties.getPythonPath() + File.separator + EventConstants.DOSE_CALCULATOR, - analogTime, + eventServerProperties.getDockerPyPath() + File.separator + "python", + scriptsPath + EventConstants.DOSE_CALCULATOR, + analogTime + "", resultFilePath, resultFilePath, EventConstants.DOSE_FACTOR_NAME, @@ -204,11 +205,10 @@ public class RunProcessServiceImpl implements RunProcessService { /** * 执行浓度转剂量Python脚本 */ - private void exeDosePy(String sDate, String eDate, String resultFilePath, String desc) { + private void exeDosePy(String sDate, String eDate, String resultFilePath, String scriptsPath, String desc) { String[] command = { - "python", - eventServerProperties.getBaseHome() + File.separator + - eventServerProperties.getPythonPath() + File.separator + EventConstants.CONVERT_CONC_TO_DOSE, + eventServerProperties.getDockerPyPath() + File.separator + "python", + scriptsPath + EventConstants.CONVERT_CONC_TO_DOSE, sDate, eDate, resultFilePath, diff --git a/jeecg-module-event/src/main/java/org/jeecg/wrf/controller/WrfController.java b/jeecg-module-event/src/main/java/org/jeecg/wrf/controller/WrfController.java index e4baaa6..4a07264 100644 --- a/jeecg-module-event/src/main/java/org/jeecg/wrf/controller/WrfController.java +++ b/jeecg-module-event/src/main/java/org/jeecg/wrf/controller/WrfController.java @@ -3,11 +3,15 @@ package org.jeecg.wrf.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import io.swagger.v3.oas.annotations.Operation; import lombok.extern.slf4j.Slf4j; +import org.jeecg.cmaq.service.CmaqService; import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.system.base.controller.JeecgController; +import org.jeecg.engineering.service.EngineeringService; import org.jeecg.modules.base.entity.Cmaq; +import org.jeecg.modules.base.entity.Engineering; import org.jeecg.modules.base.entity.Wrf; +import org.jeecg.runProcess.VO.RunProcessParamVO; import org.jeecg.wrf.service.WrfService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -24,6 +28,10 @@ import org.springframework.web.bind.annotation.*; public class WrfController extends JeecgController { @Autowired private WrfService wrfService; + @Autowired + private CmaqService cmaqService; + @Autowired + private EngineeringService engineeringService; /** * 编辑 @@ -48,8 +56,22 @@ public class WrfController extends JeecgController { @AutoLog(value = "查询wrf参数信息") @Operation(summary = "查询wrf参数信息") @RequestMapping(value = "/getByEnginId", method = {RequestMethod.GET}) - public Result getByEnginId(String enginId) { - return Result.OK(wrfService.getOne(new LambdaQueryWrapper().eq(Wrf::getEnginId,enginId))); + public Result getByEnginId(String enginId) { + Wrf wrf = wrfService.getOne(new LambdaQueryWrapper().eq(Wrf::getEnginId, enginId)); + Cmaq cmaq = cmaqService.getOne(new LambdaQueryWrapper().eq(Cmaq::getEnginId, enginId)); + Engineering engin = engineeringService.getOne(new LambdaQueryWrapper().eq(Engineering::getId, enginId)); + RunProcessParamVO paramVO = new RunProcessParamVO(); + paramVO.setEmisShour(cmaq.getEmisShour()); + paramVO.setEmisEhour(cmaq.getEmisEhour()); + paramVO.setEnginId(enginId); + paramVO.setRefLon(wrf.getRefLon()); + paramVO.setRefLat(wrf.getRefLat()); + paramVO.setEventTime(wrf.getStartTime()); + paramVO.setAnalogTime(wrf.getAnalogTime()); + paramVO.setSceneType(wrf.getSceneType()); + paramVO.setEventType(engin.getEventType()); + paramVO.setWeatherDataType(wrf.getWeatherDataType()); + return Result.OK(paramVO); } } diff --git a/jeecg-server-cloud/jeecg-cloud-gateway/src/main/resources/application.yml b/jeecg-server-cloud/jeecg-cloud-gateway/src/main/resources/application.yml index b80a0dc..7db3d78 100644 --- a/jeecg-server-cloud/jeecg-cloud-gateway/src/main/resources/application.yml +++ b/jeecg-server-cloud/jeecg-cloud-gateway/src/main/resources/application.yml @@ -1,5 +1,5 @@ server: - port: 9999 + port: 6668 knife4j: gateway: