This commit is contained in:
hky 2023-10-09 09:38:03 +08:00
parent 0e9c9ea548
commit b1a6e345ac
37 changed files with 505 additions and 768 deletions

View File

@ -0,0 +1,10 @@
package org.jeecg.modules.constants;
public class EnginConstants {
public static final int SCENE_NUCLEUS_NUMBER = 2; // 核爆程序数量
public static final int SCENE_FACILITY_NUMBER = 2; // 核设施程序数量
public static final int SCENE_CHEMISTRY_NUMBER = 2; // 化爆程序数量
public static final int SCENE_LEAK_NUMBER = 2; // 泄露程序数量
}

View File

@ -141,7 +141,6 @@ public class BizCityAimController extends JeecgController<BizCityAim, IBizCityAi
* @param request * @param request
* @param bizCityAim * @param bizCityAim
*/ */
@RequiresPermissions("bizCityAim:biz_city_aim:exportXls")
@RequestMapping(value = "/exportXls") @RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, BizCityAim bizCityAim) { public ModelAndView exportXls(HttpServletRequest request, BizCityAim bizCityAim) {
return super.exportXls(request, bizCityAim, BizCityAim.class, "城市目标表"); return super.exportXls(request, bizCityAim, BizCityAim.class, "城市目标表");
@ -154,7 +153,6 @@ public class BizCityAimController extends JeecgController<BizCityAim, IBizCityAi
* @param response * @param response
* @return * @return
*/ */
@RequiresPermissions("bizCityAim:biz_city_aim:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST) @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, BizCityAim.class); return super.importExcel(request, response, BizCityAim.class);

View File

@ -3,12 +3,15 @@ package org.jeecg.modules.project.baseConfig.bizAim.bizFacilityAim.controller;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.io.IOException; import java.io.IOException;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.net.URLDecoder; import java.net.URLDecoder;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.jeecg.common.api.vo.Result; import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.util.oConvertUtils; import org.jeecg.common.util.oConvertUtils;
@ -150,13 +153,45 @@ public class BizFacilityAimController extends JeecgController<BizFacilityAim, IB
return Result.OK(bizFacilityAim); return Result.OK(bizFacilityAim);
} }
/**
* 查询所有设施区域
*
* @return
*/
//@AutoLog(value = "设施目标表-查询所有设施区域")
@ApiOperation(value="设施目标表-查询所有设施区域", notes="设施目标表-查询所有设施区域")
@GetMapping(value = "/getFacilityAreas")
public Result<Set<String>> getFacilityAreas() {
List<BizFacilityAim> bizFacilityAims = bizFacilityAimService.list();
if(bizFacilityAims == null || bizFacilityAims.isEmpty()) {
return Result.error("未找到对应数据");
}
Set<String> facilityAreas = bizFacilityAims.stream().map(BizFacilityAim::getFacilityArea).collect(Collectors.toSet());
return Result.OK(facilityAreas);
}
/**
* 根据区域查询设施
*
* @return
*/
//@AutoLog(value = "设施目标表-根据区域查询设施")
@ApiOperation(value="设施目标表-根据区域查询设施", notes="设施目标表-根据区域查询设施")
@GetMapping(value = "/getFacilityAims")
public Result<List<BizFacilityAim>> getFacilityAims(@RequestParam(name="facilityArea",required=true) String facilityArea ) {
List<BizFacilityAim> bizFacilityAims = bizFacilityAimService.list(new LambdaQueryWrapper<BizFacilityAim>().eq(BizFacilityAim::getFacilityArea,facilityArea));
if(bizFacilityAims == null || bizFacilityAims.isEmpty()) {
return Result.error("未找到对应数据");
}
return Result.OK(bizFacilityAims);
}
/** /**
* 导出excel * 导出excel
* *
* @param request * @param request
* @param bizFacilityAim * @param bizFacilityAim
*/ */
@RequiresPermissions("bizFacilityAim:biz_facility_aim:exportXls")
@RequestMapping(value = "/exportXls") @RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, BizFacilityAim bizFacilityAim) { public ModelAndView exportXls(HttpServletRequest request, BizFacilityAim bizFacilityAim) {
return super.exportXls(request, bizFacilityAim, BizFacilityAim.class, "设施目标表"); return super.exportXls(request, bizFacilityAim, BizFacilityAim.class, "设施目标表");
@ -169,7 +204,6 @@ public class BizFacilityAimController extends JeecgController<BizFacilityAim, IB
* @param response * @param response
* @return * @return
*/ */
@RequiresPermissions("bizFacilityAim:biz_facility_aim:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST) @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, BizFacilityAim.class); return super.importExcel(request, response, BizFacilityAim.class);

View File

@ -5,9 +5,11 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils; import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.jeecg.common.api.vo.Result; import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.RemoteExecuteCommand;
import org.jeecg.modules.project.baseConfig.bizEngineering.entity.BizEngineering; import org.jeecg.modules.project.baseConfig.bizEngineering.entity.BizEngineering;
import org.jeecg.modules.project.baseConfig.bizEngineering.service.IBizEngineeringService; import org.jeecg.modules.project.baseConfig.bizEngineering.service.IBizEngineeringService;
import org.jeecg.modules.project.calculateConfig.bizCmaq.entity.BizCmaq; import org.jeecg.modules.project.calculateConfig.bizCmaq.entity.BizCmaq;
@ -38,6 +40,14 @@ public class BizEngineeringController {
@Value("${spring.baseHome}") @Value("${spring.baseHome}")
private String baseHome; private String baseHome;
@Value("${spring.localFilePrefix}")
private String localFilePrefix;
@Value("${spring.Linux.ip}")
private String ip;
@Value("${spring.Linux.username}")
private String username;
@Value("${spring.Linux.password}")
private String password;
/** /**
* 查询工程 * 查询工程
@ -63,9 +73,6 @@ public class BizEngineeringController {
bizEngineeringService.save(bizEngineering); bizEngineeringService.save(bizEngineering);
bizEngineerings.add(bizEngineering); bizEngineerings.add(bizEngineering);
} }
// for (BizEngineering bizEngineering : bizEngineerings) {
// bizEngineering.setEngineeringPath(bizEngineering.getEngineeringPath() + "/" + bizEngineering.getEngineeringName());
// }
return Result.OK(bizEngineerings); return Result.OK(bizEngineerings);
} }
@ -124,6 +131,24 @@ public class BizEngineeringController {
return Result.OK("编辑成功!"); return Result.OK("编辑成功!");
} }
/**
* 通过id删除
*
* @param id
* @return
*/
@AutoLog(value = "工程管理-通过id删除")
@ApiOperation(value="工程管理-通过id删除", notes="工程管理-通过id删除")
@DeleteMapping(value = "/delete")
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
BizEngineering engineering = bizEngineeringService.getById(id);
bizEngineeringService.deleteEngin(id);
String allRunPath = baseHome + engineering.getCreateBy() + "/" + engineering.getEngineeringName() + "/";
RemoteExecuteCommand.runRemoteLinuxCmd(ip, username, password, "rm -rf " + allRunPath);
return Result.OK("删除成功!");
}
/** /**
* 修改运行状态 * 修改运行状态
* *

View File

@ -1,11 +1,12 @@
package org.jeecg.modules.project.baseConfig.bizEngineering.service; package org.jeecg.modules.project.baseConfig.bizEngineering.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.project.baseConfig.bizEngineering.entity.BizEngineering; import org.jeecg.modules.project.baseConfig.bizEngineering.entity.BizEngineering;
public interface IBizEngineeringService extends IService<BizEngineering> { public interface IBizEngineeringService extends IService<BizEngineering> {
BizEngineering getBizEngineeringByTime(); BizEngineering getBizEngineeringByTime();
void updateRunStatus(String engId,int status); void updateRunStatus(String engId,int status);
void updateErrorStatus(String engId,int status); void updateErrorStatus(String engId,int status);
void deleteEngin(String engId);
} }

View File

@ -8,6 +8,31 @@ import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.modules.project.baseConfig.bizEngineering.entity.BizEngineering; import org.jeecg.modules.project.baseConfig.bizEngineering.entity.BizEngineering;
import org.jeecg.modules.project.baseConfig.bizEngineering.mapper.BizEngineeringMapper; import org.jeecg.modules.project.baseConfig.bizEngineering.mapper.BizEngineeringMapper;
import org.jeecg.modules.project.baseConfig.bizEngineering.service.IBizEngineeringService; import org.jeecg.modules.project.baseConfig.bizEngineering.service.IBizEngineeringService;
import org.jeecg.modules.project.calculateConfig.bizCmaq.entity.BizCmaq;
import org.jeecg.modules.project.calculateConfig.bizCmaq.mapper.BizCmaqMapper;
import org.jeecg.modules.project.calculateConfig.bizCmaq.service.IBizCmaqService;
import org.jeecg.modules.project.calculateConfig.bizConfigChemistry.entity.BizConfigChemistry;
import org.jeecg.modules.project.calculateConfig.bizConfigChemistry.service.IBizConfigChemistryService;
import org.jeecg.modules.project.calculateConfig.bizConfigFacility.entity.BizConfigFacility;
import org.jeecg.modules.project.calculateConfig.bizConfigFacility.service.IBizConfigFacilityService;
import org.jeecg.modules.project.calculateConfig.bizConfigLeak.entity.BizConfigLeak;
import org.jeecg.modules.project.calculateConfig.bizConfigLeak.service.IBizConfigLeakService;
import org.jeecg.modules.project.calculateConfig.bizConfigNucleus.entity.BizConfigNucleus;
import org.jeecg.modules.project.calculateConfig.bizConfigNucleus.service.IBizConfigNucleusService;
import org.jeecg.modules.project.calculateConfig.bizOpenfoam.entity.BizOpenfoam;
import org.jeecg.modules.project.calculateConfig.bizOpenfoam.service.IBizOpenfoamService;
import org.jeecg.modules.project.calculateConfig.bizWrf.entity.BizWrf;
import org.jeecg.modules.project.calculateConfig.bizWrf.mapper.BizWrfMapper;
import org.jeecg.modules.project.calculateConfig.bizWrf.service.IBizWrfService;
import org.jeecg.modules.project.calculateResult.bizResultDiffuse.entity.BizResultDiffuse;
import org.jeecg.modules.project.calculateResult.bizResultDiffuse.service.IBizResultDiffuseService;
import org.jeecg.modules.project.calculateResult.bizResultDosage.entity.BizResultDosage;
import org.jeecg.modules.project.calculateResult.bizResultDosage.service.IBizResultDosageService;
import org.jeecg.modules.project.calculateResult.bizResultOptimize.entity.BizResultOptimize;
import org.jeecg.modules.project.calculateResult.bizResultOptimize.service.IBizResultOptimizeService;
import org.jeecg.modules.project.calculateResult.bizResultSourceItem.entity.BizResultSourceItem;
import org.jeecg.modules.project.calculateResult.bizResultSourceItem.service.IBizResultSourceItemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
@ -21,6 +46,31 @@ public class BizEngineeringServiceImpl extends ServiceImpl<BizEngineeringMapper,
@Value("${spring.baseHome}") @Value("${spring.baseHome}")
private String baseHome; private String baseHome;
@Autowired
private BizWrfMapper bizWrfMapper;
@Autowired
private BizCmaqMapper bizCmaqMapper;
@Autowired
private IBizOpenfoamService bizOpenfoamService;
@Autowired
private IBizConfigChemistryService bizConfigChemistryService;
@Autowired
private IBizConfigLeakService bizConfigLeakService;
@Autowired
private IBizConfigFacilityService bizConfigFacilityService;
@Autowired
private IBizConfigNucleusService bizConfigNucleusService;
@Autowired
private IBizResultDiffuseService bizResultDiffuseService;
@Autowired
private IBizResultDosageService bizResultDosageService;
@Autowired
private IBizResultOptimizeService bizResultOptimizeService;
@Autowired
private IBizResultSourceItemService bizResultSourceItemService;
@Override @Override
public BizEngineering getBizEngineeringByTime(){ public BizEngineering getBizEngineeringByTime(){
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
@ -56,4 +106,20 @@ public class BizEngineeringServiceImpl extends ServiceImpl<BizEngineeringMapper,
bizEngineering.setRunStatus(status); bizEngineering.setRunStatus(status);
this.baseMapper.updateById(bizEngineering); this.baseMapper.updateById(bizEngineering);
} }
@Override
public void deleteEngin(String engId){
this.baseMapper.deleteById(engId);
bizWrfMapper.delete(new LambdaQueryWrapper<BizWrf>().eq(BizWrf::getEngineeringId,engId));
bizCmaqMapper.delete(new LambdaQueryWrapper<BizCmaq>().eq(BizCmaq::getEngineeringId,engId));
bizOpenfoamService.remove(new LambdaQueryWrapper<BizOpenfoam>().eq(BizOpenfoam::getEngineeringId,engId));
bizConfigChemistryService.remove(new LambdaQueryWrapper<BizConfigChemistry>().eq(BizConfigChemistry::getEngineeringId,engId));
bizConfigLeakService.remove(new LambdaQueryWrapper<BizConfigLeak>().eq(BizConfigLeak::getEngineeringId,engId));
bizConfigFacilityService.remove(new LambdaQueryWrapper<BizConfigFacility>().eq(BizConfigFacility::getEngineeringId,engId));
bizConfigNucleusService.remove(new LambdaQueryWrapper<BizConfigNucleus>().eq(BizConfigNucleus::getEngineeringId,engId));
bizResultDiffuseService.remove(new LambdaQueryWrapper<BizResultDiffuse>().eq(BizResultDiffuse::getEngineeringId,engId));
bizResultDosageService.remove(new LambdaQueryWrapper<BizResultDosage>().eq(BizResultDosage::getEngineeringId,engId));
bizResultOptimizeService.remove(new LambdaQueryWrapper<BizResultOptimize>().eq(BizResultOptimize::getEngineeringId,engId));
bizResultSourceItemService.remove(new LambdaQueryWrapper<BizResultSourceItem>().eq(BizResultSourceItem::getEngineeringId,engId));
}
} }

View File

@ -141,7 +141,6 @@ public class BizNuclideController extends JeecgController<BizNuclide, IBizNuclid
* @param request * @param request
* @param bizNuclide * @param bizNuclide
*/ */
@RequiresPermissions("bizNuclide:biz_nuclide:exportXls")
@RequestMapping(value = "/exportXls") @RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, BizNuclide bizNuclide) { public ModelAndView exportXls(HttpServletRequest request, BizNuclide bizNuclide) {
return super.exportXls(request, bizNuclide, BizNuclide.class, "核素模块"); return super.exportXls(request, bizNuclide, BizNuclide.class, "核素模块");
@ -154,7 +153,6 @@ public class BizNuclideController extends JeecgController<BizNuclide, IBizNuclid
* @param response * @param response
* @return * @return
*/ */
@RequiresPermissions("bizNuclide:biz_nuclide:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST) @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, BizNuclide.class); return super.importExcel(request, response, BizNuclide.class);

View File

@ -172,7 +172,6 @@ public class BizRoleController extends JeecgController<BizRole, IBizRoleService>
* @param request * @param request
* @param bizRole * @param bizRole
*/ */
@RequiresPermissions("bizRole:biz_role:exportXls")
@RequestMapping(value = "/exportXls") @RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, BizRole bizRole) { public ModelAndView exportXls(HttpServletRequest request, BizRole bizRole) {
return super.exportXls(request, bizRole, BizRole.class, "Gis和角色权限管理表"); return super.exportXls(request, bizRole, BizRole.class, "Gis和角色权限管理表");
@ -185,7 +184,6 @@ public class BizRoleController extends JeecgController<BizRole, IBizRoleService>
* @param response * @param response
* @return * @return
*/ */
@RequiresPermissions("bizRole:biz_role:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST) @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, BizRole.class); return super.importExcel(request, response, BizRole.class);

View File

@ -156,7 +156,6 @@ public class BizSourceItemController extends JeecgController<BizSourceItem, IBiz
* @param request * @param request
* @param bizSourceItem * @param bizSourceItem
*/ */
@RequiresPermissions("bizSourceItem:biz_source_item:exportXls")
@RequestMapping(value = "/exportXls") @RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, BizSourceItem bizSourceItem) { public ModelAndView exportXls(HttpServletRequest request, BizSourceItem bizSourceItem) {
return super.exportXls(request, bizSourceItem, BizSourceItem.class, "源项参数"); return super.exportXls(request, bizSourceItem, BizSourceItem.class, "源项参数");
@ -169,7 +168,6 @@ public class BizSourceItemController extends JeecgController<BizSourceItem, IBiz
* @param response * @param response
* @return * @return
*/ */
@RequiresPermissions("bizSourceItem:biz_source_item:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST) @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, BizSourceItem.class); return super.importExcel(request, response, BizSourceItem.class);

View File

@ -141,7 +141,6 @@ public class BizTopographyInfoController extends JeecgController<BizTopographyIn
* @param request * @param request
* @param bizTopographyInfo * @param bizTopographyInfo
*/ */
@RequiresPermissions("bizTopographyInfo:biz_topography_info:exportXls")
@RequestMapping(value = "/exportXls") @RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, BizTopographyInfo bizTopographyInfo) { public ModelAndView exportXls(HttpServletRequest request, BizTopographyInfo bizTopographyInfo) {
return super.exportXls(request, bizTopographyInfo, BizTopographyInfo.class, "地形信息管理表"); return super.exportXls(request, bizTopographyInfo, BizTopographyInfo.class, "地形信息管理表");
@ -154,7 +153,6 @@ public class BizTopographyInfoController extends JeecgController<BizTopographyIn
* @param response * @param response
* @return * @return
*/ */
@RequiresPermissions("bizTopographyInfo:biz_topography_info:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST) @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, BizTopographyInfo.class); return super.importExcel(request, response, BizTopographyInfo.class);

View File

@ -36,11 +36,6 @@ public class BizTopographyInfo implements Serializable {
/**创建人*/ /**创建人*/
@ApiModelProperty(value = "创建人") @ApiModelProperty(value = "创建人")
private String createBy; private String createBy;
/**创建日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建日期")
private Date createTime;
/**更新人*/ /**更新人*/
@ApiModelProperty(value = "更新人") @ApiModelProperty(value = "更新人")
private String updateBy; private String updateBy;
@ -53,8 +48,14 @@ public class BizTopographyInfo implements Serializable {
@Excel(name = "地形名称", width = 15) @Excel(name = "地形名称", width = 15)
@ApiModelProperty(value = "地形名称") @ApiModelProperty(value = "地形名称")
private String topographyName; private String topographyName;
/**创建日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建日期")
@Excel(name = "上传时间", width = 15)
private Date createTime;
/**地形文件路径*/ /**地形文件路径*/
@Excel(name = "地形文件路径", width = 15) @Excel(name = "文件路径", width = 15)
@ApiModelProperty(value = "地形文件路径") @ApiModelProperty(value = "地形文件路径")
private String topographyPath; private String topographyPath;
/**备注*/ /**备注*/

View File

@ -141,7 +141,6 @@ public class BizWeaponController extends JeecgController<BizWeapon, IBizWeaponSe
* @param request * @param request
* @param bizWeapon * @param bizWeapon
*/ */
@RequiresPermissions("bizWeapon:biz_weapon:exportXls")
@RequestMapping(value = "/exportXls") @RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, BizWeapon bizWeapon) { public ModelAndView exportXls(HttpServletRequest request, BizWeapon bizWeapon) {
return super.exportXls(request, bizWeapon, BizWeapon.class, "WQ类型数据管理表"); return super.exportXls(request, bizWeapon, BizWeapon.class, "WQ类型数据管理表");
@ -154,7 +153,6 @@ public class BizWeaponController extends JeecgController<BizWeapon, IBizWeaponSe
* @param response * @param response
* @return * @return
*/ */
@RequiresPermissions("bizWeapon:biz_weapon:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST) @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, BizWeapon.class); return super.importExcel(request, response, BizWeapon.class);

View File

@ -141,7 +141,6 @@ public class BizEquipmentMotorController extends JeecgController<BizEquipmentMot
* @param request * @param request
* @param bizEquipmentMotor * @param bizEquipmentMotor
*/ */
@RequiresPermissions("bizEquipmentMotor:biz_equipment_motor:exportXls")
@RequestMapping(value = "/exportXls") @RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, BizEquipmentMotor bizEquipmentMotor) { public ModelAndView exportXls(HttpServletRequest request, BizEquipmentMotor bizEquipmentMotor) {
return super.exportXls(request, bizEquipmentMotor, BizEquipmentMotor.class, "机动装备表"); return super.exportXls(request, bizEquipmentMotor, BizEquipmentMotor.class, "机动装备表");
@ -154,7 +153,6 @@ public class BizEquipmentMotorController extends JeecgController<BizEquipmentMot
* @param response * @param response
* @return * @return
*/ */
@RequiresPermissions("bizEquipmentMotor:biz_equipment_motor:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST) @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, BizEquipmentMotor.class); return super.importExcel(request, response, BizEquipmentMotor.class);

View File

@ -141,7 +141,6 @@ public class BizEquipmentProtectionController extends JeecgController<BizEquipme
* @param request * @param request
* @param bizEquipmentProtection * @param bizEquipmentProtection
*/ */
@RequiresPermissions("bizEquipmentProtection:biz_equipment_protection:exportXls")
@RequestMapping(value = "/exportXls") @RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, BizEquipmentProtection bizEquipmentProtection) { public ModelAndView exportXls(HttpServletRequest request, BizEquipmentProtection bizEquipmentProtection) {
return super.exportXls(request, bizEquipmentProtection, BizEquipmentProtection.class, "防护装备表"); return super.exportXls(request, bizEquipmentProtection, BizEquipmentProtection.class, "防护装备表");
@ -154,7 +153,6 @@ public class BizEquipmentProtectionController extends JeecgController<BizEquipme
* @param response * @param response
* @return * @return
*/ */
@RequiresPermissions("bizEquipmentProtection:biz_equipment_protection:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST) @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, BizEquipmentProtection.class); return super.importExcel(request, response, BizEquipmentProtection.class);

View File

@ -141,7 +141,6 @@ public class BizWeatherForecastController extends JeecgController<BizWeatherFore
* @param request * @param request
* @param bizWeatherForecast * @param bizWeatherForecast
*/ */
@RequiresPermissions("bizWeatherForecast:biz_weather_forecast:exportXls")
@RequestMapping(value = "/exportXls") @RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, BizWeatherForecast bizWeatherForecast) { public ModelAndView exportXls(HttpServletRequest request, BizWeatherForecast bizWeatherForecast) {
return super.exportXls(request, bizWeatherForecast, BizWeatherForecast.class, "气象预报表"); return super.exportXls(request, bizWeatherForecast, BizWeatherForecast.class, "气象预报表");
@ -154,7 +153,6 @@ public class BizWeatherForecastController extends JeecgController<BizWeatherFore
* @param response * @param response
* @return * @return
*/ */
@RequiresPermissions("bizWeatherForecast:biz_weather_forecast:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST) @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, BizWeatherForecast.class); return super.importExcel(request, response, BizWeatherForecast.class);

View File

@ -141,7 +141,6 @@ public class BizWeatherHistoryController extends JeecgController<BizWeatherHisto
* @param request * @param request
* @param bizWeatherHistory * @param bizWeatherHistory
*/ */
@RequiresPermissions("bizWeatherHistory:biz_weather_history:exportXls")
@RequestMapping(value = "/exportXls") @RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, BizWeatherHistory bizWeatherHistory) { public ModelAndView exportXls(HttpServletRequest request, BizWeatherHistory bizWeatherHistory) {
return super.exportXls(request, bizWeatherHistory, BizWeatherHistory.class, "历史气象表"); return super.exportXls(request, bizWeatherHistory, BizWeatherHistory.class, "历史气象表");
@ -154,7 +153,6 @@ public class BizWeatherHistoryController extends JeecgController<BizWeatherHisto
* @param response * @param response
* @return * @return
*/ */
@RequiresPermissions("bizWeatherHistory:biz_weather_history:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST) @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, BizWeatherHistory.class); return super.importExcel(request, response, BizWeatherHistory.class);

View File

@ -232,7 +232,6 @@ public class BizCmaqController extends JeecgController<BizCmaq, IBizCmaqService>
* @param request * @param request
* @param bizCmaq * @param bizCmaq
*/ */
//@RequiresPermissions("bizCmaq:biz_cmaq:exportXls")
@RequestMapping(value = "/exportXls") @RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, BizCmaq bizCmaq) { public ModelAndView exportXls(HttpServletRequest request, BizCmaq bizCmaq) {
return super.exportXls(request, bizCmaq, BizCmaq.class, "CMAQ"); return super.exportXls(request, bizCmaq, BizCmaq.class, "CMAQ");
@ -245,7 +244,6 @@ public class BizCmaqController extends JeecgController<BizCmaq, IBizCmaqService>
* @param response * @param response
* @return * @return
*/ */
//@RequiresPermissions("bizCmaq:biz_cmaq:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST) @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, BizCmaq.class); return super.importExcel(request, response, BizCmaq.class);

View File

@ -1,5 +1,6 @@
package org.jeecg.modules.project.calculateConfig.bizCmaq.mapper; package org.jeecg.modules.project.calculateConfig.bizCmaq.mapper;
import org.apache.ibatis.annotations.Mapper;
import org.jeecg.modules.project.calculateConfig.bizCmaq.entity.BizCmaq; import org.jeecg.modules.project.calculateConfig.bizCmaq.entity.BizCmaq;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@ -9,6 +10,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* @Date: 2022-12-19 * @Date: 2022-12-19
* @Version: V1.0 * @Version: V1.0
*/ */
@Mapper
public interface BizCmaqMapper extends BaseMapper<BizCmaq> { public interface BizCmaqMapper extends BaseMapper<BizCmaq> {
} }

View File

@ -13,7 +13,6 @@ import org.jeecg.modules.project.baseConfig.bizEngineering.entity.BizEngineering
import org.jeecg.modules.project.baseConfig.bizEngineering.service.IBizEngineeringService; import org.jeecg.modules.project.baseConfig.bizEngineering.service.IBizEngineeringService;
import org.jeecg.modules.project.calculateConfig.bizOpenfoam.entity.BizOpenfoam; import org.jeecg.modules.project.calculateConfig.bizOpenfoam.entity.BizOpenfoam;
import org.jeecg.modules.project.calculateConfig.bizOpenfoam.service.IBizOpenfoamService; import org.jeecg.modules.project.calculateConfig.bizOpenfoam.service.IBizOpenfoamService;
import org.jeecg.modules.project.calculateConfig.bizWrf.service.IBizWrfService;
import org.jeecg.modules.util.SFTPUtil; import org.jeecg.modules.util.SFTPUtil;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.jeecg.modules.project.calculateConfig.bizWrf.entity.BizWrf; import org.jeecg.modules.project.calculateConfig.bizWrf.entity.BizWrf;
@ -55,8 +54,6 @@ public class BizCmaqServiceImpl extends ServiceImpl<BizCmaqMapper, BizCmaq> impl
@Autowired @Autowired
private BizWrfMapper bizWrfMapper; private BizWrfMapper bizWrfMapper;
@Autowired @Autowired
private IBizWrfService bizWrfService;
@Autowired
private IBizOpenfoamService bizOpenfoamService; private IBizOpenfoamService bizOpenfoamService;
@Autowired @Autowired
private IBizEngineeringService bizEngineeringService; private IBizEngineeringService bizEngineeringService;
@ -151,7 +148,9 @@ public class BizCmaqServiceImpl extends ServiceImpl<BizCmaqMapper, BizCmaq> impl
String mcipFileName = genMcipsShell(allRunPath,targetFilePath,wrf.getStartTime().substring(0, 10),wrf.getEndTime().substring(0, 10),wrf.getMaxDom(),cmaq.getColsN(),cmaq.getRowsN()); String mcipFileName = genMcipsShell(allRunPath,targetFilePath,wrf.getStartTime().substring(0, 10),wrf.getEndTime().substring(0, 10),wrf.getMaxDom(),cmaq.getColsN(),cmaq.getRowsN());
// todo 执行mcip.csh // todo 执行mcip.csh
runCmd(allRunPath + "CMAQ/","PREP/mcip",mcipFileName); runCmd(allRunPath + "CMAQ/","PREP/mcip",mcipFileName);
bizEngineeringService.updateRunStatus(engineeringId,6);
} catch (Exception e) { } catch (Exception e) {
bizEngineeringService.updateErrorStatus(engineeringId,6);
return false; return false;
} }
return true; return true;
@ -169,7 +168,9 @@ public class BizCmaqServiceImpl extends ServiceImpl<BizCmaqMapper, BizCmaq> impl
String iconFileName = genIconShell(allRunPath,targetFilePath,wrf.getStartTime().substring(0, 10),wrf.getEndTime().substring(0, 10),wrf.getMaxDom()); String iconFileName = genIconShell(allRunPath,targetFilePath,wrf.getStartTime().substring(0, 10),wrf.getEndTime().substring(0, 10),wrf.getMaxDom());
// todo 执行icon.csh // todo 执行icon.csh
runCmd(allRunPath + "CMAQ/","PREP/icon",iconFileName); runCmd(allRunPath + "CMAQ/","PREP/icon",iconFileName);
bizEngineeringService.updateRunStatus(engineeringId,7);
} catch (Exception e) { } catch (Exception e) {
bizEngineeringService.updateErrorStatus(engineeringId,7);
return false; return false;
} }
return true; return true;
@ -187,7 +188,9 @@ public class BizCmaqServiceImpl extends ServiceImpl<BizCmaqMapper, BizCmaq> impl
String iconFileName = genBconShell(allRunPath,targetFilePath,wrf.getStartTime().substring(0, 10),wrf.getEndTime().substring(0, 10),wrf.getMaxDom()); String iconFileName = genBconShell(allRunPath,targetFilePath,wrf.getStartTime().substring(0, 10),wrf.getEndTime().substring(0, 10),wrf.getMaxDom());
// todo 执行bcon.csh // todo 执行bcon.csh
runCmd(allRunPath + "CMAQ/","PREP/bcon",iconFileName); runCmd(allRunPath + "CMAQ/","PREP/bcon",iconFileName);
bizEngineeringService.updateRunStatus(engineeringId,8);
} catch (Exception e) { } catch (Exception e) {
bizEngineeringService.updateErrorStatus(engineeringId,8);
return false; return false;
} }
return true; return true;
@ -254,13 +257,21 @@ public class BizCmaqServiceImpl extends ServiceImpl<BizCmaqMapper, BizCmaq> impl
String cctmFileName = genCctmShell(allRunPath,targetFilePath + "CCTM/",newStartTime,newEndTime,cmaq.getSttime(), cmaq.getNsteps(), cmaq.getTstep()); String cctmFileName = genCctmShell(allRunPath,targetFilePath + "CCTM/",newStartTime,newEndTime,cmaq.getSttime(), cmaq.getNsteps(), cmaq.getTstep());
// todo 执行cctm.csh // todo 执行cctm.csh
runCmd(allRunPath + "CMAQ/","CCTM",cctmFileName); runCmd(allRunPath + "CMAQ/","CCTM",cctmFileName);
String ncName = "CCTM_ACONC_v532_2016_12SE1_"+newStartTime.replace("-","")+".nc"; bizEngineeringService.updateRunStatus(engineeringId,9);
String ncLocalName = "CCTM_ACONC_v532_2016_12SE1_"+DateUtil.format(new Date(startTimeSecs), ymdFormat).replace("-","")+".nc";
//工程总运行小时数
Integer sumHour = Integer.valueOf((endTime.getTime() - startTime.getTime()) / oneDaySecs * 24 + "");
Integer sumDay = sumHour / 24 -1;
SFTPUtil sftpUtil = new SFTPUtil(); SFTPUtil sftpUtil = new SFTPUtil();
sftpUtil.login(username, password,ip,port); sftpUtil.login(username, password,ip,port);
sftpUtil.download(allRunPath + "CMAQ/data/output/v532_2016_12SE1/",ncName,targetFilePath + ncLocalName); for (Integer i = 1; i <= sumDay; i++) {
String ncName = "CCTM_ACONC_v532_2016_12SE1_"+DateUtil.format(new Date(startTimeSecs + oneDaySecs * i), ymdFormat).replace("-","")+".nc";
// String ncLocalName = "CCTM_ACONC_v532_2016_12SE1_"+DateUtil.format(new Date(startTimeSecs), ymdFormat).replace("-","")+".nc";
sftpUtil.download(allRunPath + "CMAQ/data/output/v532_2016_12SE1/",ncName,targetFilePath + ncName);
}
sftpUtil.logout(); sftpUtil.logout();
} catch (Exception e) { } catch (Exception e) {
bizEngineeringService.updateErrorStatus(engineeringId,9);
return false; return false;
} }
return true; return true;
@ -282,7 +293,7 @@ public class BizCmaqServiceImpl extends ServiceImpl<BizCmaqMapper, BizCmaq> impl
// NetcdfFile ncfile = NetcdfDataset.open("C:\\Users\\13673\\Desktop\\某源\\Nuclear\\file\\CCTM_ACONC_v532_2016_12SE1_20160701.nc"); // NetcdfFile ncfile = NetcdfDataset.open("C:\\Users\\13673\\Desktop\\某源\\Nuclear\\file\\CCTM_ACONC_v532_2016_12SE1_20160701.nc");
String ncName = "CCTM_ACONC_v532_2016_12SE1_" + sdf.format(sdf.parse(bizCmaq.getStartDate())).replace("-", "") + ".nc"; String ncName = "CCTM_ACONC_v532_2016_12SE1_" + sdf.format(sdf.parse(bizCmaq.getStartDate())).replace("-", "") + ".nc";
NetcdfFile ncfile = NetcdfDataset.open(targetFilePath + ncName); NetcdfFile ncfile = NetcdfDataset.open(targetFilePath + ncName);
BizWrf bizWrf = bizWrfService.getOne(new LambdaQueryWrapper<BizWrf>().eq(BizWrf::getEngineeringId, bizEngineering.getId())); BizWrf bizWrf = bizWrfMapper.selectOne(new LambdaQueryWrapper<BizWrf>().eq(BizWrf::getEngineeringId, bizEngineering.getId()));
//正式环境需要修改 //正式环境需要修改
// String ncNameWrf = "wrfout_d01_" + bizWrf.getStartTime(); // String ncNameWrf = "wrfout_d01_" + bizWrf.getStartTime();
String ncNameWrf = "wrfout_d01_2016-07-01_00_00_00"; String ncNameWrf = "wrfout_d01_2016-07-01_00_00_00";
@ -327,7 +338,7 @@ public class BizCmaqServiceImpl extends ServiceImpl<BizCmaqMapper, BizCmaq> impl
List<String> variableNames = new ArrayList<>(); List<String> variableNames = new ArrayList<>();
BizEngineering bizEngineering = bizEngineeringService.getById(engineeringId); BizEngineering bizEngineering = bizEngineeringService.getById(engineeringId);
BizCmaq bizCmaq = this.baseMapper.selectOne(new LambdaQueryWrapper<BizCmaq>().eq(BizCmaq::getEngineeringId,bizEngineering.getId())); BizCmaq bizCmaq = this.baseMapper.selectOne(new LambdaQueryWrapper<BizCmaq>().eq(BizCmaq::getEngineeringId,bizEngineering.getId()));
BizWrf bizWrf = bizWrfService.getOne(new LambdaQueryWrapper<BizWrf>().eq(BizWrf::getEngineeringId, bizEngineering.getId())); BizWrf bizWrf = bizWrfMapper.selectOne(new LambdaQueryWrapper<BizWrf>().eq(BizWrf::getEngineeringId, bizEngineering.getId()));
String targetFilePath = localFilePrefix + bizCmaq.getCreateBy() + "/" + bizEngineering.getEngineeringName() + "/"; String targetFilePath = localFilePrefix + bizCmaq.getCreateBy() + "/" + bizEngineering.getEngineeringName() + "/";

View File

@ -156,7 +156,6 @@ public class BizConfigChemistryController extends JeecgController<BizConfigChemi
* @param request * @param request
* @param bizConfigChemistry * @param bizConfigChemistry
*/ */
@RequiresPermissions("bizConfigChemistry:biz_config_chemistry:exportXls")
@RequestMapping(value = "/exportXls") @RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, BizConfigChemistry bizConfigChemistry) { public ModelAndView exportXls(HttpServletRequest request, BizConfigChemistry bizConfigChemistry) {
return super.exportXls(request, bizConfigChemistry, BizConfigChemistry.class, "化爆配置表"); return super.exportXls(request, bizConfigChemistry, BizConfigChemistry.class, "化爆配置表");
@ -169,7 +168,6 @@ public class BizConfigChemistryController extends JeecgController<BizConfigChemi
* @param response * @param response
* @return * @return
*/ */
@RequiresPermissions("bizConfigChemistry:biz_config_chemistry:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST) @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, BizConfigChemistry.class); return super.importExcel(request, response, BizConfigChemistry.class);

View File

@ -156,7 +156,6 @@ public class BizConfigFacilityController extends JeecgController<BizConfigFacili
* @param request * @param request
* @param bizConfigFacility * @param bizConfigFacility
*/ */
@RequiresPermissions("bizConfigFacility:biz_config_facility:exportXls")
@RequestMapping(value = "/exportXls") @RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, BizConfigFacility bizConfigFacility) { public ModelAndView exportXls(HttpServletRequest request, BizConfigFacility bizConfigFacility) {
return super.exportXls(request, bizConfigFacility, BizConfigFacility.class, "核设施配置表"); return super.exportXls(request, bizConfigFacility, BizConfigFacility.class, "核设施配置表");
@ -169,7 +168,6 @@ public class BizConfigFacilityController extends JeecgController<BizConfigFacili
* @param response * @param response
* @return * @return
*/ */
@RequiresPermissions("bizConfigFacility:biz_config_facility:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST) @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, BizConfigFacility.class); return super.importExcel(request, response, BizConfigFacility.class);

View File

@ -156,7 +156,6 @@ public class BizConfigLeakController extends JeecgController<BizConfigLeak, IBiz
* @param request * @param request
* @param bizConfigLeak * @param bizConfigLeak
*/ */
@RequiresPermissions("bizConfigLeak:biz_config_leak:exportXls")
@RequestMapping(value = "/exportXls") @RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, BizConfigLeak bizConfigLeak) { public ModelAndView exportXls(HttpServletRequest request, BizConfigLeak bizConfigLeak) {
return super.exportXls(request, bizConfigLeak, BizConfigLeak.class, "泄露配置表"); return super.exportXls(request, bizConfigLeak, BizConfigLeak.class, "泄露配置表");
@ -169,7 +168,6 @@ public class BizConfigLeakController extends JeecgController<BizConfigLeak, IBiz
* @param response * @param response
* @return * @return
*/ */
@RequiresPermissions("bizConfigLeak:biz_config_leak:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST) @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, BizConfigLeak.class); return super.importExcel(request, response, BizConfigLeak.class);

View File

@ -156,7 +156,6 @@ public class BizConfigNucleusController extends JeecgController<BizConfigNucleus
* @param request * @param request
* @param bizConfigNucleus * @param bizConfigNucleus
*/ */
@RequiresPermissions("bizConfigNucleus:biz_config_nucleus:exportXls")
@RequestMapping(value = "/exportXls") @RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, BizConfigNucleus bizConfigNucleus) { public ModelAndView exportXls(HttpServletRequest request, BizConfigNucleus bizConfigNucleus) {
return super.exportXls(request, bizConfigNucleus, BizConfigNucleus.class, "核爆配置表"); return super.exportXls(request, bizConfigNucleus, BizConfigNucleus.class, "核爆配置表");
@ -169,7 +168,6 @@ public class BizConfigNucleusController extends JeecgController<BizConfigNucleus
* @param response * @param response
* @return * @return
*/ */
@RequiresPermissions("bizConfigNucleus:biz_config_nucleus:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST) @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, BizConfigNucleus.class); return super.importExcel(request, response, BizConfigNucleus.class);

View File

@ -362,13 +362,20 @@ public class BizWrfController extends JeecgController<BizWrf, IBizWrfService> {
// String wrfLog = new String(readAllBytes(get(localFilePath + "wrf.log"))); // String wrfLog = new String(readAllBytes(get(localFilePath + "wrf.log")));
sftpUtil.download(allRunPath + "WRF/run","rsl.out.0000",localFilePath + "rsl.out.0000"); sftpUtil.download(allRunPath + "WRF/run","rsl.out.0000",localFilePath + "rsl.out.0000");
String wrfLog = new String(readAllBytes(get(localFilePath + "rsl.out.0000"))); String wrfLog = new String(readAllBytes(get(localFilePath + "rsl.out.0000")));
if(wrfLog.indexOf("SUCCESS COMPLETE WRF") > 0){ if(wrfLog.indexOf("SUCCESS COMPLETE WRF") >= 0){
String format = "yyyy-MM-dd_HH:mm:ss"; String format = "yyyy-MM-dd_HH:mm:ss";
DateTime startTime = DateUtil.parse(bizWrf.getStartTime(), format); DateTime startTime = DateUtil.parse(bizWrf.getStartTime(), format);
DateTime endTime = DateUtil.parse(bizWrf.getEndTime(), format);
long oneDaySecs = 60 * 60 * 24 * 1000; long oneDaySecs = 60 * 60 * 24 * 1000;
String newStartTime = DateUtil.format(new Date(startTime.getTime() + oneDaySecs), format); //工程总运行小时数WRF的时间
String ncNameWrf = "wrfout_d01_" + newStartTime; Integer sumHour = Integer.valueOf((endTime.getTime() - startTime.getTime()) / oneDaySecs * 24 + "");
sftpUtil.download(allRunPath + "WRF/run/",ncNameWrf,localFilePath + ncNameWrf); Integer sumDay = sumHour / 24 + 1;
for (Integer i = 1; i <= sumDay; i++) {
String newStartTime = DateUtil.format(new Date(startTime.getTime() + oneDaySecs * i - oneDaySecs), format);
String ncNameWrf = "wrfout_d01_" + newStartTime;
sftpUtil.download(allRunPath + "WRF/run/",ncNameWrf,localFilePath + ncNameWrf);
}
sftpUtil.logout(); sftpUtil.logout();
return Result.OK("SUCCESS COMPLETE WRF"); return Result.OK("SUCCESS COMPLETE WRF");
}else{ }else{
@ -694,7 +701,6 @@ public class BizWrfController extends JeecgController<BizWrf, IBizWrfService> {
* @param request * @param request
* @param bizWrf * @param bizWrf
*/ */
//@RequiresPermissions("bizWrf:biz_wrf:exportXls")
@RequestMapping(value = "/exportXls") @RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, BizWrf bizWrf) { public ModelAndView exportXls(HttpServletRequest request, BizWrf bizWrf) {
return super.exportXls(request, bizWrf, BizWrf.class, "wrf"); return super.exportXls(request, bizWrf, BizWrf.class, "wrf");
@ -707,7 +713,6 @@ public class BizWrfController extends JeecgController<BizWrf, IBizWrfService> {
* @param response * @param response
* @return * @return
*/ */
//@RequiresPermissions("bizWrf:biz_wrf:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST) @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, BizWrf.class); return super.importExcel(request, response, BizWrf.class);
@ -784,5 +789,9 @@ public class BizWrfController extends JeecgController<BizWrf, IBizWrfService> {
// System.out.println(lonLatticeIndex+"-"+latLatticeIndex); // System.out.println(lonLatticeIndex+"-"+latLatticeIndex);
// String wmhr = RemoteExecuteCommand.runRemoteLinuxCmd("192.168.115.128", "wmhr", "123456", "cd /home/wmhr/OpenFOAM-8/run/admin/工程001/;ls"); // String wmhr = RemoteExecuteCommand.runRemoteLinuxCmd("192.168.115.128", "wmhr", "123456", "cd /home/wmhr/OpenFOAM-8/run/admin/工程001/;ls");
// System.out.println(wmhr); // System.out.println(wmhr);
String wmhr = RemoteExecuteCommand.runRemoteLinuxCmd("192.168.115.128", "wmhr", "123456", "ps -ef | grep vmtoolsd");
System.out.println(wmhr);
} }
} }

View File

@ -3,8 +3,10 @@ package org.jeecg.modules.project.calculateConfig.bizWrf.service;
import org.jeecg.common.api.vo.Result; import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.project.calculateConfig.bizWrf.entity.BizWrf; import org.jeecg.modules.project.calculateConfig.bizWrf.entity.BizWrf;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import ucar.nc2.NetcdfFile;
import java.io.IOException; import java.io.IOException;
import java.util.List;
/** /**
* @Description: wrf * @Description: wrf
@ -19,5 +21,6 @@ public interface IBizWrfService extends IService<BizWrf> {
Result<String> runMetgrid(String allRunPath, String engineeringId)throws IOException; Result<String> runMetgrid(String allRunPath, String engineeringId)throws IOException;
Result<String> runReal(String allRunPath, String engineeringId)throws IOException; Result<String> runReal(String allRunPath, String engineeringId)throws IOException;
Result<String> runWrf(String allRunPath, String engineeringId) throws IOException; Result<String> runWrf(String allRunPath, String engineeringId) throws IOException;
List<List<List<Double>>> getNCByName(NetcdfFile ncfile, String name, int layer);
} }

View File

@ -16,9 +16,15 @@ import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import ucar.ma2.Array;
import ucar.ma2.Index;
import ucar.nc2.NetcdfFile;
import ucar.nc2.Variable;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List;
import static java.nio.file.Files.readAllBytes; import static java.nio.file.Files.readAllBytes;
import static java.nio.file.Paths.get; import static java.nio.file.Paths.get;
@ -172,5 +178,60 @@ public class BizWrfServiceImpl extends ServiceImpl<BizWrfMapper, BizWrf> impleme
sftpUtil.logout(); sftpUtil.logout();
return Result.error(wrfLog); return Result.error(wrfLog);
} }
@Override
public List<List<List<Double>>> getNCByName(NetcdfFile ncfile, String name, int layer){
Variable variable = ncfile.findVariable(name);
List<List<List<Double>>> resultAll = new ArrayList<>();
// 读取nc数据到数组
Array data = null;
try {
data = variable.read();
} catch (IOException e) {
e.printStackTrace();
}
// 获取参数和索引其中shape的前三个参数分别是时间纬度经度
int[] shape = data.getShape();
Index index = data.getIndex();
if(shape.length == 3){
// 将三维数组降维并用String数组提取数据
// 按时间
// 按维度
for (int i = 0; i < shape[0]; i++) {
List<List<Double>> resultPiece = new ArrayList<>();
for (int j = 0; j < shape[1]; j++) {
List<Double> strings = new ArrayList<>();
// 按经度
for (int k = 0; k < shape[2]; k++) {
// 按照对应索引获取数据并转换为string类型添加到数组中
Double dval = Math.round(data.getFloat(index.set(i, j, k)) * 1000) /1000d;
strings.add(dval);
}
resultPiece.add(strings);
}
resultAll.add(resultPiece);
}
}else{
// 将三维数组降维并用String数组提取数据
// 按时间
// 按维度
for (int i = 0; i < shape[0]; i++) {
List<List<Double>> resultPiece = new ArrayList<>();
for (int j = 0; j < shape[2]; j++) {
List<Double> strings = new ArrayList<>();
// 按经度
for (int k = 0; k < shape[3]; k++) {
// 按照对应索引获取数据并转换为string类型添加到数组中
Double dval = Math.round(data.getFloat(index.set(i,layer, j, k)) * 1000) /1000d;
strings.add(dval);
}
resultPiece.add(strings);
}
resultAll.add(resultPiece);
}
}
return resultAll;
}
} }

View File

@ -1,309 +0,0 @@
<template>
<a-card :bordered="false">
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
</a-row>
</a-form>
</div>
<!-- 查询区域-END -->
<!-- 操作按钮区域 -->
<div class="table-operator">
<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('wrf')">导出</a-button>
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
<a-button type="primary" icon="import">导入</a-button>
</a-upload>
<!-- 高级查询区域 -->
<j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
<a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
</a-menu>
<a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
</a-dropdown>
</div>
<!-- table区域-begin -->
<div>
<div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
<i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
<a style="margin-left: 24px" @click="onClearSelected">清空</a>
</div>
<a-table
ref="table"
size="middle"
:scroll="{x:true}"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
class="j-table-force-nowrap"
@change="handleTableChange">
<template slot="htmlSlot" slot-scope="text">
<div v-html="text"></div>
</template>
<template slot="imgSlot" slot-scope="text,record">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
<img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/>
</template>
<template slot="fileSlot" slot-scope="text">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
<a-button
v-else
:ghost="true"
type="primary"
icon="download"
size="small"
@click="downloadFile(text)">
下载
</a-button>
</template>
<span slot="action" slot-scope="text, record">
<a @click="handleEdit(record)">编辑</a>
<a-divider type="vertical" />
<a-dropdown>
<a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
<a-menu slot="overlay">
<a-menu-item>
<a @click="handleDetail(record)">详情</a>
</a-menu-item>
<a-menu-item>
<a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
<a>删除</a>
</a-popconfirm>
</a-menu-item>
</a-menu>
</a-dropdown>
</span>
</a-table>
</div>
<biz-wrf-modal ref="modalForm" @ok="modalFormOk"></biz-wrf-modal>
</a-card>
</template>
<script>
import '@/assets/less/TableExpand.less'
import { mixinDevice } from '@/utils/mixin'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import BizWrfModal from './modules/BizWrfModal'
export default {
name: 'BizWrfList',
mixins:[JeecgListMixin, mixinDevice],
components: {
BizWrfModal
},
data () {
return {
description: 'wrf管理页面',
// 表头
columns: [
{
title: '#',
dataIndex: '',
key:'rowIndex',
width:60,
align:"center",
customRender:function (t,r,index) {
return parseInt(index)+1;
}
},
{
title:'start_time',
align:"center",
dataIndex: 'startTime'
},
{
title:'end_time',
align:"center",
dataIndex: 'endTime'
},
{
title:'run_days',
align:"center",
dataIndex: 'runDays'
},
{
title:'run_hours',
align:"center",
dataIndex: 'runHours'
},
{
title:'run_minutes',
align:"center",
dataIndex: 'runMinutes'
},
{
title:'run_seconds',
align:"center",
dataIndex: 'runSeconds'
},
{
title:'interval_seconds',
align:"center",
dataIndex: 'intervalSeconds'
},
{
title:'history_interval',
align:"center",
dataIndex: 'historyInterval'
},
{
title:'frames_per_outfile',
align:"center",
dataIndex: 'framesPerOutfile'
},
{
title:'time_step',
align:"center",
dataIndex: 'timeStep'
},
{
title:'we',
align:"center",
dataIndex: 'we'
},
{
title:'sn',
align:"center",
dataIndex: 'sn'
},
{
title:'vert',
align:"center",
dataIndex: 'vert'
},
{
title:'dx',
align:"center",
dataIndex: 'dx'
},
{
title:'dy',
align:"center",
dataIndex: 'dy'
},
{
title:'physics_suite',
align:"center",
dataIndex: 'physicsSuite'
},
{
title:'start_data',
align:"center",
dataIndex: 'startData'
},
{
title:'end_data',
align:"center",
dataIndex: 'endData'
},
{
title:'map_proj',
align:"center",
dataIndex: 'mapProj'
},
{
title:'ref_lat',
align:"center",
dataIndex: 'refLat'
},
{
title:'ref_lon',
align:"center",
dataIndex: 'refLon'
},
{
title:'truelat1',
align:"center",
dataIndex: 'truelat1'
},
{
title:'truelat2',
align:"center",
dataIndex: 'truelat2'
},
{
title:'stand_lon',
align:"center",
dataIndex: 'standLon'
},
{
title: '操作',
dataIndex: 'action',
align:"center",
fixed:"right",
width:147,
scopedSlots: { customRender: 'action' }
}
],
url: {
list: "/bizWrf/bizWrf/list",
delete: "/bizWrf/bizWrf/delete",
deleteBatch: "/bizWrf/bizWrf/deleteBatch",
exportXlsUrl: "/bizWrf/bizWrf/exportXls",
importExcelUrl: "bizWrf/bizWrf/importExcel",
},
dictOptions:{},
superFieldList:[],
}
},
created() {
this.getSuperFieldList();
},
computed: {
importExcelUrl: function(){
return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
},
},
methods: {
initDictConfig(){
},
getSuperFieldList(){
let fieldList=[];
fieldList.push({type:'string',value:'startTime',text:'start_time',dictCode:''})
fieldList.push({type:'string',value:'endTime',text:'end_time',dictCode:''})
fieldList.push({type:'string',value:'runDays',text:'run_days',dictCode:''})
fieldList.push({type:'string',value:'runHours',text:'run_hours',dictCode:''})
fieldList.push({type:'string',value:'runMinutes',text:'run_minutes',dictCode:''})
fieldList.push({type:'string',value:'runSeconds',text:'run_seconds',dictCode:''})
fieldList.push({type:'string',value:'intervalSeconds',text:'interval_seconds',dictCode:''})
fieldList.push({type:'string',value:'historyInterval',text:'history_interval',dictCode:''})
fieldList.push({type:'string',value:'framesPerOutfile',text:'frames_per_outfile',dictCode:''})
fieldList.push({type:'string',value:'timeStep',text:'time_step',dictCode:''})
fieldList.push({type:'string',value:'we',text:'we',dictCode:''})
fieldList.push({type:'string',value:'sn',text:'sn',dictCode:''})
fieldList.push({type:'string',value:'vert',text:'vert',dictCode:''})
fieldList.push({type:'string',value:'dx',text:'dx',dictCode:''})
fieldList.push({type:'string',value:'dy',text:'dy',dictCode:''})
fieldList.push({type:'string',value:'physicsSuite',text:'physics_suite',dictCode:''})
fieldList.push({type:'string',value:'startData',text:'start_data',dictCode:''})
fieldList.push({type:'string',value:'endData',text:'end_data',dictCode:''})
fieldList.push({type:'string',value:'mapProj',text:'map_proj',dictCode:''})
fieldList.push({type:'string',value:'refLat',text:'ref_lat',dictCode:''})
fieldList.push({type:'string',value:'refLon',text:'ref_lon',dictCode:''})
fieldList.push({type:'string',value:'truelat1',text:'truelat1',dictCode:''})
fieldList.push({type:'string',value:'truelat2',text:'truelat2',dictCode:''})
fieldList.push({type:'string',value:'standLon',text:'stand_lon',dictCode:''})
this.superFieldList = fieldList
}
}
}
</script>
<style scoped>
@import '~@assets/less/common.less';
</style>

View File

@ -1,26 +0,0 @@
-- 注意该页面对应的前台目录为views/bizWrf文件夹下
-- 如果你想更改到其他目录请修改sql中component字段对应的值
INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external)
VALUES ('2022121905425820350', NULL, 'wrf', '/bizWrf/bizWrfList', 'bizWrf/BizWrfList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2022-12-19 17:42:35', NULL, NULL, 0);
-- 权限控制sql
-- 新增
INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
VALUES ('2022121905425820351', '2022121905425820350', '添加wrf', NULL, NULL, 0, NULL, NULL, 2, 'bizWrf:biz_wrf:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2022-12-19 17:42:35', NULL, NULL, 0, 0, '1', 0);
-- 编辑
INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
VALUES ('2022121905425820352', '2022121905425820350', '编辑wrf', NULL, NULL, 0, NULL, NULL, 2, 'bizWrf:biz_wrf:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2022-12-19 17:42:35', NULL, NULL, 0, 0, '1', 0);
-- 删除
INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
VALUES ('2022121905425820353', '2022121905425820350', '删除wrf', NULL, NULL, 0, NULL, NULL, 2, 'bizWrf:biz_wrf:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2022-12-19 17:42:35', NULL, NULL, 0, 0, '1', 0);
-- 批量删除
INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
VALUES ('2022121905425820354', '2022121905425820350', '批量删除wrf', NULL, NULL, 0, NULL, NULL, 2, 'bizWrf:biz_wrf:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2022-12-19 17:42:35', NULL, NULL, 0, 0, '1', 0);
-- 导出excel
INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
VALUES ('2022121905425820355', '2022121905425820350', '导出excel_wrf', NULL, NULL, 0, NULL, NULL, 2, 'bizWrf:biz_wrf:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2022-12-19 17:42:35', NULL, NULL, 0, 0, '1', 0);
-- 导入excel
INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
VALUES ('2022121905425820356', '2022121905425820350', '导入excel_wrf', NULL, NULL, 0, NULL, NULL, 2, 'bizWrf:biz_wrf:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2022-12-19 17:42:35', NULL, NULL, 0, 0, '1', 0);

View File

@ -1,219 +0,0 @@
<template>
<a-spin :spinning="confirmLoading">
<j-form-container :disabled="formDisabled">
<a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
<a-row>
<a-col :span="24">
<a-form-model-item label="start_time" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="startTime">
<a-input v-model="model.startTime" placeholder="请输入start_time" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="end_time" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="endTime">
<a-input v-model="model.endTime" placeholder="请输入end_time" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="run_days" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="runDays">
<a-input v-model="model.runDays" placeholder="请输入run_days" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="run_hours" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="runHours">
<a-input v-model="model.runHours" placeholder="请输入run_hours" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="run_minutes" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="runMinutes">
<a-input v-model="model.runMinutes" placeholder="请输入run_minutes" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="run_seconds" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="runSeconds">
<a-input v-model="model.runSeconds" placeholder="请输入run_seconds" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="interval_seconds" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="intervalSeconds">
<a-input v-model="model.intervalSeconds" placeholder="请输入interval_seconds" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="history_interval" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="historyInterval">
<a-input v-model="model.historyInterval" placeholder="请输入history_interval" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="frames_per_outfile" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="framesPerOutfile">
<a-input v-model="model.framesPerOutfile" placeholder="请输入frames_per_outfile" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="time_step" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="timeStep">
<a-input v-model="model.timeStep" placeholder="请输入time_step" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="we" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="we">
<a-input v-model="model.we" placeholder="请输入we" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="sn" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="sn">
<a-input v-model="model.sn" placeholder="请输入sn" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="vert" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="vert">
<a-input v-model="model.vert" placeholder="请输入vert" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="dx" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="dx">
<a-input v-model="model.dx" placeholder="请输入dx" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="dy" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="dy">
<a-input v-model="model.dy" placeholder="请输入dy" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="physics_suite" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="physicsSuite">
<a-input v-model="model.physicsSuite" placeholder="请输入physics_suite" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="start_data" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="startData">
<a-input v-model="model.startData" placeholder="请输入start_data" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="end_data" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="endData">
<a-input v-model="model.endData" placeholder="请输入end_data" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="map_proj" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="mapProj">
<a-input v-model="model.mapProj" placeholder="请输入map_proj" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="ref_lat" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="refLat">
<a-input v-model="model.refLat" placeholder="请输入ref_lat" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="ref_lon" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="refLon">
<a-input v-model="model.refLon" placeholder="请输入ref_lon" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="truelat1" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="truelat1">
<a-input v-model="model.truelat1" placeholder="请输入truelat1" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="truelat2" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="truelat2">
<a-input v-model="model.truelat2" placeholder="请输入truelat2" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="stand_lon" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standLon">
<a-input v-model="model.standLon" placeholder="请输入stand_lon" ></a-input>
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</j-form-container>
</a-spin>
</template>
<script>
import { httpAction, getAction } from '@/api/manage'
import { validateDuplicateValue } from '@/utils/util'
export default {
name: 'BizWrfForm',
components: {
},
props: {
//表单禁用
disabled: {
type: Boolean,
default: false,
required: false
}
},
data () {
return {
model:{
},
labelCol: {
xs: { span: 24 },
sm: { span: 5 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 },
},
confirmLoading: false,
validatorRules: {
},
url: {
add: "/bizWrf/bizWrf/add",
edit: "/bizWrf/bizWrf/edit",
queryById: "/bizWrf/bizWrf/queryById"
}
}
},
computed: {
formDisabled(){
return this.disabled
},
},
created () {
//备份model原始值
this.modelDefault = JSON.parse(JSON.stringify(this.model));
},
methods: {
add () {
this.edit(this.modelDefault);
},
edit (record) {
this.model = Object.assign({}, record);
this.visible = true;
},
submitForm () {
const that = this;
// 触发表单验证
this.$refs.form.validate(valid => {
if (valid) {
that.confirmLoading = true;
let httpurl = '';
let method = '';
if(!this.model.id){
httpurl+=this.url.add;
method = 'post';
}else{
httpurl+=this.url.edit;
method = 'put';
}
httpAction(httpurl,this.model,method).then((res)=>{
if(res.success){
that.$message.success(res.message);
that.$emit('ok');
}else{
that.$message.warning(res.message);
}
}).finally(() => {
that.confirmLoading = false;
})
}
})
},
}
}
</script>

View File

@ -1,84 +0,0 @@
<template>
<a-drawer
:title="title"
:width="width"
placement="right"
:closable="false"
@close="close"
destroyOnClose
:visible="visible">
<biz-wrf-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit" normal></biz-wrf-form>
<div class="drawer-footer">
<a-button @click="handleCancel" style="margin-bottom: 0;">关闭</a-button>
<a-button v-if="!disableSubmit" @click="handleOk" type="primary" style="margin-bottom: 0;">提交</a-button>
</div>
</a-drawer>
</template>
<script>
import BizWrfForm from './BizWrfForm'
export default {
name: 'BizWrfModal',
components: {
BizWrfForm
},
data () {
return {
title:"操作",
width:800,
visible: false,
disableSubmit: false
}
},
methods: {
add () {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.add();
})
},
edit (record) {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.edit(record);
});
},
close () {
this.$emit('close');
this.visible = false;
},
submitCallback(){
this.$emit('ok');
this.visible = false;
},
handleOk () {
this.$refs.realForm.submitForm();
},
handleCancel () {
this.close()
}
}
}
</script>
<style lang="less" scoped>
/** Button按钮间距 */
.ant-btn {
margin-left: 30px;
margin-bottom: 30px;
float: right;
}
.drawer-footer{
position: absolute;
bottom: -8px;
width: 100%;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
text-align: right;
left: 0;
background: #fff;
border-radius: 0 0 2px 2px;
}
</style>

View File

@ -1,60 +0,0 @@
<template>
<j-modal
:title="title"
:width="width"
:visible="visible"
switchFullscreen
@ok="handleOk"
:okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
@cancel="handleCancel"
cancelText="关闭">
<biz-wrf-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></biz-wrf-form>
</j-modal>
</template>
<script>
import BizWrfForm from './BizWrfForm'
export default {
name: 'BizWrfModal',
components: {
BizWrfForm
},
data () {
return {
title:'',
width:800,
visible: false,
disableSubmit: false
}
},
methods: {
add () {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.add();
})
},
edit (record) {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.edit(record);
})
},
close () {
this.$emit('close');
this.visible = false;
},
handleOk () {
this.$refs.realForm.submitForm();
},
submitCallback(){
this.$emit('ok');
this.visible = false;
},
handleCancel () {
this.close()
}
}
}
</script>

View File

@ -176,7 +176,6 @@ public class BizResultDiffuseController extends JeecgController<BizResultDiffuse
* @param request * @param request
* @param bizResultDiffuse * @param bizResultDiffuse
*/ */
@RequiresPermissions("bizResultDiffuse:biz_result_diffuse:exportXls")
@RequestMapping(value = "/exportXls") @RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, BizResultDiffuse bizResultDiffuse) { public ModelAndView exportXls(HttpServletRequest request, BizResultDiffuse bizResultDiffuse) {
return super.exportXls(request, bizResultDiffuse, BizResultDiffuse.class, "扩散计算结果配置表"); return super.exportXls(request, bizResultDiffuse, BizResultDiffuse.class, "扩散计算结果配置表");
@ -189,7 +188,6 @@ public class BizResultDiffuseController extends JeecgController<BizResultDiffuse
* @param response * @param response
* @return * @return
*/ */
@RequiresPermissions("bizResultDiffuse:biz_result_diffuse:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST) @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, BizResultDiffuse.class); return super.importExcel(request, response, BizResultDiffuse.class);

View File

@ -176,7 +176,6 @@ public class BizResultDosageController extends JeecgController<BizResultDosage,
* @param request * @param request
* @param bizResultDosage * @param bizResultDosage
*/ */
@RequiresPermissions("bizResultDosage:biz_result_dosage:exportXls")
@RequestMapping(value = "/exportXls") @RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, BizResultDosage bizResultDosage) { public ModelAndView exportXls(HttpServletRequest request, BizResultDosage bizResultDosage) {
return super.exportXls(request, bizResultDosage, BizResultDosage.class, "剂量计算结果配置表"); return super.exportXls(request, bizResultDosage, BizResultDosage.class, "剂量计算结果配置表");
@ -189,7 +188,6 @@ public class BizResultDosageController extends JeecgController<BizResultDosage,
* @param response * @param response
* @return * @return
*/ */
@RequiresPermissions("bizResultDosage:biz_result_dosage:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST) @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, BizResultDosage.class); return super.importExcel(request, response, BizResultDosage.class);

View File

@ -176,7 +176,6 @@ public class BizResultOptimizeController extends JeecgController<BizResultOptimi
* @param request * @param request
* @param bizResultOptimize * @param bizResultOptimize
*/ */
@RequiresPermissions("bizResultOptimize:biz_result_optimize:exportXls")
@RequestMapping(value = "/exportXls") @RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, BizResultOptimize bizResultOptimize) { public ModelAndView exportXls(HttpServletRequest request, BizResultOptimize bizResultOptimize) {
return super.exportXls(request, bizResultOptimize, BizResultOptimize.class, "路径优化计算结果配置表"); return super.exportXls(request, bizResultOptimize, BizResultOptimize.class, "路径优化计算结果配置表");
@ -189,7 +188,6 @@ public class BizResultOptimizeController extends JeecgController<BizResultOptimi
* @param response * @param response
* @return * @return
*/ */
@RequiresPermissions("bizResultOptimize:biz_result_optimize:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST) @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, BizResultOptimize.class); return super.importExcel(request, response, BizResultOptimize.class);

View File

@ -176,7 +176,6 @@ public class BizResultSourceItemController extends JeecgController<BizResultSour
* @param request * @param request
* @param bizResultSourceItem * @param bizResultSourceItem
*/ */
@RequiresPermissions("bizResultSourceItem:biz_result_sourceitem:exportXls")
@RequestMapping(value = "/exportXls") @RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, BizResultSourceItem bizResultSourceItem) { public ModelAndView exportXls(HttpServletRequest request, BizResultSourceItem bizResultSourceItem) {
return super.exportXls(request, bizResultSourceItem, BizResultSourceItem.class, "源项计算结果配置表"); return super.exportXls(request, bizResultSourceItem, BizResultSourceItem.class, "源项计算结果配置表");
@ -189,7 +188,6 @@ public class BizResultSourceItemController extends JeecgController<BizResultSour
* @param response * @param response
* @return * @return
*/ */
@RequiresPermissions("bizResultSourceItem:biz_result_sourceitem:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST) @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, BizResultSourceItem.class); return super.importExcel(request, response, BizResultSourceItem.class);

View File

@ -0,0 +1,14 @@
package org.jeecg.modules.project.calculateResult.runProcess.VO;
import lombok.Data;
import java.util.List;
@Data
public class ProgressVO {
private Integer runStatus;
private List<Integer> progressList;
private Integer nowProgress;
}

View File

@ -1,5 +1,7 @@
package org.jeecg.modules.project.calculateResult.runProcess.controller; package org.jeecg.modules.project.calculateResult.runProcess.controller;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
@ -12,20 +14,38 @@ import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.modules.constants.EnginConstants;
import org.jeecg.modules.project.baseConfig.bizEngineering.entity.BizEngineering; import org.jeecg.modules.project.baseConfig.bizEngineering.entity.BizEngineering;
import org.jeecg.modules.project.baseConfig.bizEngineering.service.IBizEngineeringService; import org.jeecg.modules.project.baseConfig.bizEngineering.service.IBizEngineeringService;
import org.jeecg.modules.project.calculateConfig.bizWrf.entity.BizWrf;
import org.jeecg.modules.project.calculateConfig.bizWrf.service.IBizWrfService; import org.jeecg.modules.project.calculateConfig.bizWrf.service.IBizWrfService;
import org.jeecg.modules.project.calculateResult.bizResultDiffuse.entity.BizResultDiffuse; import org.jeecg.modules.project.calculateResult.bizResultDiffuse.entity.BizResultDiffuse;
import org.jeecg.modules.project.calculateResult.bizResultDiffuse.service.IBizResultDiffuseService; import org.jeecg.modules.project.calculateResult.bizResultDiffuse.service.IBizResultDiffuseService;
import org.jeecg.modules.project.calculateResult.runProcess.VO.ProgressVO;
import org.jeecg.modules.util.SFTPUtil;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import ucar.nc2.NetcdfFile;
import ucar.nc2.dataset.NetcdfDataset;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.math.BigDecimal;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static java.nio.file.Files.readAllBytes;
import static java.nio.file.Paths.get;
/** /**
* @Description: 运行过程 * @Description: 运行过程
@ -39,14 +59,25 @@ import java.util.Arrays;
@Slf4j @Slf4j
public class RunProcessController extends JeecgController<BizResultDiffuse, IBizResultDiffuseService> { public class RunProcessController extends JeecgController<BizResultDiffuse, IBizResultDiffuseService> {
@Autowired @Autowired
private IBizEngineeringService bizEngineeringService; private IBizEngineeringService bizEngineeringService;
@Autowired @Autowired
private IBizWrfService bizWrfService; private IBizWrfService bizWrfService;
@Value("${spring.baseHome}") @Value("${spring.baseHome}")
private String baseHome; private String baseHome;
@Value("${spring.localFilePrefix}")
private String localFilePrefix;
@Value("${spring.Linux.ip}")
private String ip;
@Value("${spring.Linux.username}")
private String username;
@Value("${spring.Linux.password}")
private String password;
@Value("${spring.Linux.port}")
private Integer port;
/** /**
@ -68,4 +99,209 @@ public class RunProcessController extends JeecgController<BizResultDiffuse, IBiz
bizWrfService.runWrf(allRunPath,engineeringId); bizWrfService.runWrf(allRunPath,engineeringId);
return Result.OK("运行成功!"); return Result.OK("运行成功!");
} }
/**
* 查询工程运行进度
*
* @param
* @return
*/
@AutoLog(value = "运行过程-运行进度")
@ApiOperation(value="运行过程-运行进度", notes="运行过程-运行进度")
@GetMapping(value = "/runProgress")
public Result<ProgressVO> runProgress(String engineeringId) throws IOException {
BizEngineering engineering = bizEngineeringService.getById(engineeringId);
BizWrf bizWrf = bizWrfService.getOne(new LambdaQueryWrapper<BizWrf>().eq(BizWrf::getEngineeringId,engineering.getId()));
if(null == engineering){
return Result.error("未查询到工程信息!",null);
}
String format = "yyyy-MM-dd_hh:mm:ss";
DateTime startTime = DateUtil.parse(bizWrf.getStartTime(), format);
DateTime endTime = DateUtil.parse(bizWrf.getEndTime(), format);
long oneDaySecs = 60 * 60 * 24 * 1000;
//工程总运行小时数WRF的时间
Integer sumHour = Integer.valueOf((endTime.getTime() - startTime.getTime()) / oneDaySecs * 24 + "");
Integer sumDay = sumHour / 24 + 1;
String localFilePath = localFilePrefix + "/" + engineering.getCreateBy() + "/" + engineering.getEngineeringName() + "/";
//工程总共有几个进度
Integer runNumber = EnginConstants.SCENE_FACILITY_NUMBER + 5;
ProgressVO progressVO = new ProgressVO();
//工程进度条填充初始值
List<Integer> progressList = Stream.generate(() -> 0).limit(runNumber).collect(Collectors.toList());
//工程当前进度条填充初始值
Integer percent = 0;
int nowDay = 0;
//如果工程已经运行完成所有进度条改为百分百进度并返回
if(engineering.getRunStatus() == 99){
return getProgressVOResult(runNumber, progressVO, progressList);
}else if(engineering.getRunStatus() == 5){
String ncNameWrf = "";
for (int i = sumDay; i > 0; i--) {
String newStartTime = DateUtil.format(new Date(startTime.getTime() + oneDaySecs * i - oneDaySecs), format);
ncNameWrf = localFilePath + "wrfout_d01_" + newStartTime;
File cmaqFile = new File(ncNameWrf);
if(cmaqFile.exists()){
nowDay = i;
break;
}
}
NetcdfFile ncfile = NetcdfDataset.open(localFilePath + ncNameWrf);
List<List<List<Double>>> xlatAllList = bizWrfService.getNCByName(ncfile, "XLAT",0);
percent = nowDay * 24 - 24 + xlatAllList.size() * 100 / sumHour;
for (int i = 0; i < 4; i++) {
progressList.set(i,100);
}
progressList.set(4,percent);
}else if(engineering.getRunStatus() == 9){
int cmaqSumDay = sumHour / 24;
String ncNameCmaq = "";
for (int i = cmaqSumDay; i > 0; i--) {
String newStartTime = DateUtil.format(new Date(startTime.getTime() + oneDaySecs * i - oneDaySecs), format);
ncNameCmaq = localFilePath + "CCTM_ACONC_v532_2016_12SE1_" + newStartTime.replace("-","")+".nc";
File cmaqFile = new File(ncNameCmaq);
if(cmaqFile.exists()){
nowDay = i;
break;
}
}
NetcdfFile ncfile = NetcdfDataset.open(localFilePath + ncNameCmaq);
List<List<List<Double>>> xlatAllList = bizWrfService.getNCByName(ncfile, "CO",0);
percent = nowDay * 24 - 24 + xlatAllList.size() * 100 / (sumHour -24);
for (int i = 0; i < 9; i++) {
progressList.set(i,100);
}
progressList.set(9,percent);
}else{
for (int i = 0; i < engineering.getRunStatus() - 1; i++) {
progressList.set(i,100);
}
}
progressVO.setProgressList(progressList);
progressVO.setRunStatus(engineering.getRunStatus());
progressVO.setNowProgress(percent);
return Result.OK(progressVO);
}
/*private ProgressVO cmaqProgressVOResult(BizEngineering engineering, DateTime startTime, long oneDaySecs, Integer sumHour,List<Integer> progressList){
//判断CMAQ运行进度
String allRunPath = baseHome + engineering.getCreateBy() + "/" + engineering.getEngineeringName() + "/";
String fileName = "CTM_LOG_000.v532_2016_12SE1_";
String nowTimeYMD = "";
Integer nowDay = 1;
for (int i = 1; i <= sumDay - 1; i++) {
nowTimeYMD = DateUtil.format(new Date(endTime.getTime() - i * oneDaySecs), "yyyyMMdd");
File cmaqFile = new File(String.format("%sCMAQ/data/output/v532_2016_12SE1/LOGS/%s%s",allRunPath,fileName,nowTimeYMD));
if(cmaqFile.exists()){
nowDay = i;
break;
}
}
List<String> cmaqValues = getRunLog(engineering,"CMAQ/data/output/v532_2016_12SE1/LOGS",fileName + nowTimeYMD);
for (int i = cmaqValues.size() - 1; i >= cmaqValues.size() - 50; i--) {
if(cmaqValues.get(i).indexOf("PROGRAM COMPLETED SUCCESSFULLY") >= 0 && nowDay == sumDay - 1){
return getProgressVOResult(runNumber, progressVO, progressList);
}else{
for (int j = 0; j < runNumber - 1; j++) {
progressList.set(j,100);
}
progressList.set(runNumber - 1,99);
progressVO.setProgressList(progressList);
progressVO.setRunStatus(runNumber - 1);
progressVO.setNowProgress(99);
}
}
}*/
private ProgressVO wrfProgressVOResult(BizEngineering engineering, DateTime startTime, long oneDaySecs, Integer sumHour,List<Integer> progressList){
ProgressVO progressVO = new ProgressVO();
String formatYMDH = "yyyy-MM-dd_hh";
List<String> wrfValues = getRunLog(engineering,"WRF/run/","rsl.out.0000");
//如果WRF已经运行完成WRF所有进度条改为百分百
if(wrfValues.indexOf("wrf: SUCCESS COMPLETE WRF") >= 0){
for (int i = 0; i < 5; i++) {
progressList.set(i,100);
}
progressVO.setProgressList(progressList);
progressVO.setRunStatus(engineering.getRunStatus());
progressVO.setNowProgress(100);
}else{
if(wrfValues != null){
String endValues = wrfValues.get(wrfValues.size()-1);
String nowTimeString = null;
//判断WRF日志文件最后一行是否包含关键信息
if(endValues.indexOf("Timing for main: time ") >= 0){
nowTimeString = endValues.substring(22,22 + 19);
}else{
//判断WRF日志文件倒数第二行是否包含关键信息
endValues = wrfValues.get(wrfValues.size()-2);
if(endValues.indexOf("Timing for main: time ") >= 0){
nowTimeString = endValues.substring(22,22 + 19);
}
}
//根据获取到的日期信息换算当前进度百分比
DateTime nowTime = DateUtil.parse(nowTimeString, formatYMDH);
long nowHour = Integer.valueOf(nowTime.getTime() - startTime.getTime() + "") / oneDaySecs * 24;
Integer percent = Integer.valueOf(nowHour * 100 / sumHour + "");
for (int i = 0; i < 4; i++) {
progressList.set(i,100);
}
progressList.set(4,percent);
progressVO.setProgressList(progressList);
progressVO.setRunStatus(engineering.getRunStatus());
progressVO.setNowProgress(percent);
}
}
return progressVO;
}
@NotNull
private Result<ProgressVO> getProgressVOResult(Integer runNumber, ProgressVO progressVO, List<Integer> progressList) {
for (int j = 0; j < runNumber - 1; j++) {
progressList.set(j,100);
}
progressVO.setProgressList(progressList);
progressVO.setRunStatus(runNumber);
progressVO.setNowProgress(100);
return Result.OK(progressVO);
}
/**
* 获取运行日志
*
* @return
*/
// @AutoLog(value = "运行过程-获取运行日志")
// @ApiOperation(value="运行过程-获取运行日志", notes="运行过程-获取运行日志")
// @GetMapping(value = "/getRunLog")
public List<String> getRunLog(BizEngineering engineering ,String path,String fileName) {
try {
String allRunPath = baseHome + engineering.getCreateBy() + "/" + engineering.getEngineeringName() + "/";
String localFilePath = localFilePrefix + engineering.getCreateBy() + "/" + engineering.getEngineeringName() + "/";
SFTPUtil sftpUtil = new SFTPUtil();
sftpUtil.login(username, password,ip,port);
sftpUtil.download(allRunPath + path,fileName,localFilePath + fileName);
sftpUtil.logout();
return Files.readAllLines(get(localFilePath + fileName));
}catch (Exception e){
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
// String format = "yyyy-MM-dd_hh";
// DateTime startTime = DateUtil.parse("2016-06-30_00:00:00", format);
// DateTime endTime = DateUtil.parse("2016-07-02_06:23:00", format);
// long oneDaySecs = 60 * 60 * 24 * 1000;
// long sumDay = Integer.valueOf(endTime.getTime() - startTime.getTime() + "") / oneDaySecs * 24;
// System.out.println(sumDay);
System.out.println(1.0 / 3);
}
} }