修改bug
This commit is contained in:
parent
165dce6786
commit
02d94d6d36
|
|
@ -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}";
|
||||
|
|
|
|||
|
|
@ -18,13 +18,13 @@ public enum EnginStatusEnum {
|
|||
*/
|
||||
PAUSED(2),
|
||||
/**
|
||||
* 继续运行
|
||||
* 运行异常
|
||||
*/
|
||||
RESUMED(3),
|
||||
ABNORMAL(3),
|
||||
/**
|
||||
* 结束运行
|
||||
* 运行完成
|
||||
*/
|
||||
FINISHED(4);
|
||||
COMPLETED(4);
|
||||
|
||||
private Integer key;
|
||||
|
||||
|
|
|
|||
|
|
@ -40,8 +40,13 @@ public class EventServerProperties {
|
|||
private String resultFilePrefix;
|
||||
|
||||
/**
|
||||
* 剂量py存放目录
|
||||
* 外部py目录
|
||||
*/
|
||||
private String pythonPath;
|
||||
|
||||
/**
|
||||
* 容器py目录
|
||||
*/
|
||||
private String dockerPyPath;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
/**工程名称*/
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ public class Wrf implements Serializable {
|
|||
/**事件结束时间*/
|
||||
private String endTime;
|
||||
/**事件模拟小时数*/
|
||||
private String analogTime;
|
||||
private Integer analogTime;
|
||||
/**事件模拟天数*/
|
||||
private String runDays;
|
||||
/**事件类型*/
|
||||
|
|
|
|||
|
|
@ -65,7 +65,6 @@ public class EngineeringServiceImpl extends ServiceImpl<EngineeringMapper, Engin
|
|||
@Override
|
||||
public void initDir(Engineering engineering){
|
||||
String baseHome = eventServerProperties.getBaseHome() + File.separator;
|
||||
// String baseHome = eventServerProperties.getBaseHome() + "/";
|
||||
String ip = eventServerProperties.getIp();
|
||||
String username = eventServerProperties.getUsername();
|
||||
String password = eventServerProperties.getPassword();
|
||||
|
|
|
|||
|
|
@ -5,19 +5,22 @@ import lombok.Data;
|
|||
@Data
|
||||
public class RunProcessParamVO {
|
||||
private String enginId;
|
||||
//气象数据来源
|
||||
private Integer weatherDataType;
|
||||
//场景类型
|
||||
private Integer sceneType;
|
||||
//事故类型
|
||||
private Integer eventType;
|
||||
//事件时间
|
||||
private String eventTime;
|
||||
//运行时间
|
||||
private Integer analogTime;
|
||||
|
||||
/**经度*/
|
||||
private Double refLon;
|
||||
/**纬度*/
|
||||
private Double refLat;
|
||||
|
||||
|
||||
//cmaq参数
|
||||
//开始排放时间
|
||||
private Integer emisShour;
|
||||
//结束排放时间
|
||||
private Integer emisEhour;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ 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.constant.enums.EnginStatusEnum;
|
||||
import org.jeecg.engineering.service.EngineeringService;
|
||||
import org.jeecg.modules.base.entity.Engineering;
|
||||
import org.jeecg.runProcess.VO.RunProcessParamVO;
|
||||
|
|
@ -46,12 +47,12 @@ public class RunProcessController {
|
|||
if(bizEngineering == null) {
|
||||
return Result.error("未找到对应数据");
|
||||
}
|
||||
// if(bizEngineering.getEnginStatus() == 2){
|
||||
// if(bizEngineering.getEnginStatus() == 1){
|
||||
// return Result.error("程序正在运行中...");
|
||||
// }
|
||||
bizEngineering.setSceneType(sceneType);
|
||||
bizEngineering.setEventType(paramVO.getEventType());
|
||||
bizEngineering.setEnginStatus(2);
|
||||
bizEngineering.setEnginStatus(EnginStatusEnum.IN_OPERATION.getKey());
|
||||
engineeringService.updateById(bizEngineering);
|
||||
engineeringService.initDir(bizEngineering);
|
||||
wrfService.updateWrfInfo(paramVO);
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import org.jeecg.baseAPI.service.BaseAPIService;
|
|||
import org.jeecg.cmaq.service.CmaqService;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.constant.EventConstants;
|
||||
import org.jeecg.common.constant.enums.EnginStatusEnum;
|
||||
import org.jeecg.common.properties.EventServerProperties;
|
||||
import org.jeecg.common.util.ExecutePyUtils;
|
||||
import org.jeecg.engineering.service.EngineeringService;
|
||||
|
|
@ -38,9 +39,9 @@ public class RunProcessServiceImpl implements RunProcessService {
|
|||
|
||||
@Override
|
||||
public Result<String> runAllExe(RunProcessParamVO paramVO){
|
||||
try{
|
||||
String engineeringId = paramVO.getEnginId();
|
||||
Engineering engineering = engineeringService.getById(engineeringId);
|
||||
try{
|
||||
Wrf wrf = wrfService.getOne(new LambdaQueryWrapper<Wrf>().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,
|
||||
|
|
|
|||
|
|
@ -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<Wrf, WrfService> {
|
||||
@Autowired
|
||||
private WrfService wrfService;
|
||||
@Autowired
|
||||
private CmaqService cmaqService;
|
||||
@Autowired
|
||||
private EngineeringService engineeringService;
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
|
|
@ -48,8 +56,22 @@ public class WrfController extends JeecgController<Wrf, WrfService> {
|
|||
@AutoLog(value = "查询wrf参数信息")
|
||||
@Operation(summary = "查询wrf参数信息")
|
||||
@RequestMapping(value = "/getByEnginId", method = {RequestMethod.GET})
|
||||
public Result<Wrf> getByEnginId(String enginId) {
|
||||
return Result.OK(wrfService.getOne(new LambdaQueryWrapper<Wrf>().eq(Wrf::getEnginId,enginId)));
|
||||
public Result<RunProcessParamVO> getByEnginId(String enginId) {
|
||||
Wrf wrf = wrfService.getOne(new LambdaQueryWrapper<Wrf>().eq(Wrf::getEnginId, enginId));
|
||||
Cmaq cmaq = cmaqService.getOne(new LambdaQueryWrapper<Cmaq>().eq(Cmaq::getEnginId, enginId));
|
||||
Engineering engin = engineeringService.getOne(new LambdaQueryWrapper<Engineering>().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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
server:
|
||||
port: 9999
|
||||
port: 6668
|
||||
|
||||
knife4j:
|
||||
gateway:
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user