package com.miniframe.bisiness.system; import java.io.File; import java.io.IOException; import java.util.List; import java.util.Map; import com.miniframe.constant.MFConstant; import com.miniframe.core.ExecProcessFlow; import com.miniframe.core.exception.BusinessException; import com.miniframe.core.ext.UtilTools; import com.miniframe.generate.business.system.model.FEM001BaseModel; import com.miniframe.model.system.AdiModeling; import com.miniframe.model.system.AdiModelingSQLBuilder; import com.miniframe.model.system.SysFile; import com.miniframe.model.system.dao.AdiModelingMapper; import com.miniframe.model.system.dao.SysFileMapper; import com.miniframe.solverconfig.fem.VTK; import com.miniframe.tools.CaeFileUtils; import com.miniframe.tools.XIFileUtils; /** * 基础系统,“bdf文件绑定”逻辑处理(重新生成不覆盖)。 */ public class FEM001Service extends FEM001BaseModel implements ExecProcessFlow { private static final long serialVersionUID = -7051358269847459502L; /** * 基础系统,“bdf文件绑定”业务核心处理 */ public void transExecute() throws Exception { String pid =this.getA_fem001().getPid(); String gridFileId =this.getA_fem001().getGridFileId(); String usrId =this.getA_systemhead().getUserId(); AdiModelingMapper modelingMapper = UtilTools.getBean(AdiModelingMapper.class); AdiModelingSQLBuilder sb = new AdiModelingSQLBuilder(); AdiModelingSQLBuilder.Criteria sc =sb.createCriteria(); sc.andPidEqualTo(pid); List modelings =modelingMapper.selectByExample(sb); SysFileMapper sysFileDAO = UtilTools.getBean(SysFileMapper.class); if(modelings.isEmpty()){ AdiModeling modeling =new AdiModeling(); modeling.setId(UtilTools.getUUid()); modeling.setPid(pid); modeling.setFemGridFile(gridFileId); modeling.setGridFileType("bdf"); modeling.setUid(usrId); String vtkfileId = bdfToVtk(gridFileId, usrId, sysFileDAO); modeling.setVtkFile(vtkfileId); modelingMapper.insert(modeling); }else{ AdiModeling modeling =modelings.get(0); if(!gridFileId.equals(modeling.getFemGridFile())) { CaeFileUtils.deleFile(modeling.getFemGridFile()); } CaeFileUtils.deleFile(modeling.getVtkFile()); modeling.setFemGridFile(gridFileId); modeling.setFemGridFileType("bdf"); String vtkfileId = bdfToVtk(gridFileId, usrId, sysFileDAO); modeling.setVtkFile(vtkfileId); modelingMapper.updateByPrimaryKey(modeling); } } private String bdfToVtk(String gridFileId, String usrId, SysFileMapper sysFileDAO) throws IOException, BusinessException { SysFile bdfFile = sysFileDAO.selectByPrimaryKey(gridFileId); String bdfFilePath = XIFileUtils.getRootPathStr() + MFConstant.separator + bdfFile.getFilepath(); File bfile = new File(bdfFilePath); String vtkfileId = UtilTools.getUUid(); String vtkfilePath = VTK.CreateVTKFile(bfile, vtkfileId); CaeFileUtils.saveFile(vtkfileId, vtkfilePath, usrId, "vtk", ""); return vtkfileId; } /** * 基础系统,“bdf文件绑定”业务前处理 */ public void preTransFlow() throws Exception { this.validater(); } /** * 基础系统,“bdf文件绑定”业务后处理 */ public void afterTransFlow() throws Exception { } /** * 基础系统,“bdf文件绑定”逻辑入口处理方法 */ @SuppressWarnings("rawtypes") @Override public Map execute(Map vars) throws Exception { this.setTransMap(vars); preTransFlow();// 执行业务开始的规则检查和校验 transExecute();// 执行核心业务段 afterTransFlow();// 执行核心逻辑完成后的收尾逻辑 return this.getTransMap(); } }