Procházet zdrojové kódy

用户邮箱验证码

huangxingxing před 3 měsíci
rodič
revize
8a0c1acb8e

+ 6 - 6
src/main/java/com/miniframe/bisiness/mdo/MDO0039Service.java

@@ -265,10 +265,10 @@ public class MDO0039Service extends MDO0039BaseModel implements ExecProcessFlow
 		SurromdaoFileListener t= new SurromdaoFileListener(pid);
 		surrMonitor.monitor("/cephfs/mdo/"+pid+"/in/myid_0", t);
 		surrMonitor.start();
-		FileMonitor crmMonitor = new FileMonitor(1000);
-		CRMFileListener crml = new CRMFileListener(pid);
-		crmMonitor.monitor("/cephfs/mdo/"+pid+"/in/myid_0/ADflow/results/aerodynamic", crml);
-		crmMonitor.start();
+		FileMonitor adflowMonitor = new FileMonitor(1000);
+		AdflowFileListener crml = new AdflowFileListener(pid);
+		adflowMonitor.monitor("/cephfs/mdo/"+pid+"/in/myid_0/ADflow/results/aerodynamic", crml);
+		adflowMonitor.start();
 
 		LogService.addLog(pid,"求解——————————————————开始");
 		DockerExe.stopDocker(pid);
@@ -316,8 +316,8 @@ public class MDO0039Service extends MDO0039BaseModel implements ExecProcessFlow
 			try {
 				surrMonitor.stop();
 				SurromdaoFileRead.readFile(new File("/cephfs/mdo/"+pid+"/in/myid_0/surromdao_history_all.dat"),pid);
-				crmMonitor.stop();
-				CRMFileRead.readFile(new File("/cephfs/mdo/"+pid+"/in/myid_0/ADflow/results/aerodynamic/CRM_final_000_slices.dat"),pid);
+				adflowMonitor.stop();
+				AdflowFileRead.readFile(new File("/cephfs/mdo/"+pid+"/in/myid_0/ADflow/results/aerodynamic/CRM_final_000_slices.dat"),pid);
 			} catch (Exception e) {
 				e.printStackTrace();
 			}

+ 41 - 0
src/main/java/com/miniframe/tools/file/AdflowFileListener.java

@@ -0,0 +1,41 @@
+package com.miniframe.tools.file;
+
+import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;
+
+import java.io.File;
+
+public class AdflowFileListener extends FileAlterationListenerAdaptor {
+    private String filename ="CRM_final_000_slices.dat";
+    private String pid ;
+    private String line1;
+
+
+    public AdflowFileListener(String pid) {
+        this.pid = pid;
+    }
+
+    @Override
+    public void onFileChange(File file) {
+        String compressedPath = file.getAbsolutePath();
+        if(filename.equals(file.getName())){
+            AdflowFileRead.readFile(file,pid);
+        }
+    }
+
+
+
+    @Override
+    public void onFileCreate(File file) {
+        String compressedPath = file.getAbsolutePath();
+        if(filename.equals(file.getName())){
+
+        }
+    }
+    public String getFilename() {
+        return filename;
+    }
+
+    public void setFilename(String filename) {
+        this.filename = filename;
+    }
+}

+ 112 - 0
src/main/java/com/miniframe/tools/file/AdflowFileRead.java

@@ -0,0 +1,112 @@
+package com.miniframe.tools.file;
+
+import com.google.gson.Gson;
+import com.miniframe.core.ext.UtilTools;
+import com.miniframe.model.mdo.MdoProAdflow;
+import com.miniframe.model.mdo.MdoProAdflowSQLBuilder;
+import com.miniframe.model.mdo.MdoProComval;
+import com.miniframe.model.mdo.MdoProComvalSQLBuilder;
+import com.miniframe.model.mdo.dao.MdoProAdflowMapper;
+import com.miniframe.model.mdo.dao.MdoProComvalMapper;
+import com.miniframe.websocket.WebsocketEndPoint;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+public class AdflowFileRead {
+
+    public static void readFile(File file, String pid) {
+        MdoProAdflowMapper adfdao =UtilTools.getBean(MdoProAdflowMapper.class);
+        MdoProAdflowSQLBuilder asb = new MdoProAdflowSQLBuilder();
+        MdoProAdflowSQLBuilder.Criteria asc = asb.createCriteria();
+        asc.andPidEqualTo(pid);
+        MdoProAdflow adflow = adfdao.selectOneByExample(asb);
+
+        MdoProComvalMapper comvalDao = UtilTools.getBean(MdoProComvalMapper.class);
+        MdoProComvalSQLBuilder comvalsb = new MdoProComvalSQLBuilder();
+        MdoProComvalSQLBuilder.Criteria comvalsc = comvalsb.createCriteria();
+        comvalsc.andPidEqualTo(pid);
+        List<Integer> types = new ArrayList<>();
+        types.add(2);
+        types.add(3);
+        comvalsc.andTypeIn(types);
+        comvalDao.deleteByExample(comvalsb);
+
+        int i= 0;
+        String line;
+        // 使用try-with-resources语句确保资源被正确关闭
+        try (BufferedReader br = new BufferedReader(new FileReader(file))) {
+            int size=0;
+            // 逐行读取,直到文件末尾
+            while ((line = br.readLine()) != null) {
+                line=line.trim().replaceAll("\\s+"," ").trim();//替换多个空格为一个空格
+                if(line.startsWith("Title")){
+                    continue;
+                }
+
+                if(line.startsWith("Variables")){
+                    //Variables =  "CoordinateX"  "CoordinateY"  "CoordinateZ"  "XoC"  "YoC"  "ZoC" "VelocityX" "VelocityY" "VelocityZ" "CoefPressure" "Mach"
+//                    line=line.replace("\"","");
+//                    line=line.replace("Variables =","").trim();
+                    continue;
+                }
+                if(line.startsWith("Zone")){
+                    continue;
+                }
+                if(line.startsWith("Nodes")){
+                    line=line.trim().replace("Nodes = ","");
+                    size =i+Integer.valueOf(line.split(" ")[0]);
+                    continue;
+                }
+                if(line.startsWith("DATAPACKING")){
+                    continue;
+                }
+                if(i>=size){
+                    break;
+                }
+                if(i<size){
+                    String[] vals = line.split(" ");
+                    MdoProComval comval =new MdoProComval();
+                    comval.setId(UtilTools.getUUid());
+                    comval.setPid(pid);
+                    comval.setStep(i);
+                    comval.setVars("v1 v2");
+                    if("1".equals(adflow.getLiftindex())){//x
+                        comval.setVals(vals[4]+" "+vals[5]);
+                    }
+                    if("2".equals(adflow.getLiftindex())){//y
+                        comval.setVals(vals[3]+" "+vals[4]);
+                    }
+                    if("3".equals(adflow.getLiftindex())){//z
+                        comval.setVals(vals[3]+" "+vals[4]);
+                    }
+                    comval.setType(2);//"1-列表数据 2-几何数据 3-压力数据"
+                    comvalDao.insert(comval);
+                    WebsocketEndPoint webs =  (WebsocketEndPoint) UtilTools.getBean("websocketEndPoint");
+                    Gson gson = new Gson();
+                    webs.sendMessageToUser(String.valueOf(pid),gson.toJson(comval));
+
+                    MdoProComval comval2 =new MdoProComval();
+                    comval2.setId(UtilTools.getUUid());
+                    comval2.setPid(pid);
+                    comval2.setStep(i);
+                    comval2.setVars("x cp");
+                    comval2.setVals(vals[6]+" "+vals[9]);
+                    comval2.setType(3);//"1-列表数据 2-几何数据 3-压力数据"
+                    comvalDao.insert(comval2);
+                    webs.sendMessageToUser(String.valueOf(pid),gson.toJson(comval2));
+                }
+                i++;
+
+
+            }
+        } catch (IOException e) {
+            // 异常处理
+            e.printStackTrace();
+        }
+    }
+}