Forráskód Böngészése

adiflow 压力分布和几何

huangxingxing 3 hónapja
szülő
commit
c6663fc5c8

+ 116 - 17
src/main/java/com/miniframe/tools/file/AdflowFileRead.java

@@ -1,6 +1,5 @@
 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;
@@ -8,7 +7,7 @@ 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 com.miniframe.modo.temp.workflow.AdflowVo;
 
 import java.io.BufferedReader;
 import java.io.File;
@@ -40,9 +39,14 @@ public class AdflowFileRead {
         String line;
         // 使用try-with-resources语句确保资源被正确关闭
         try (BufferedReader br = new BufferedReader(new FileReader(file))) {
-            int size=0;
+            int size=0;//节点
+            int eles=0;//拓扑
             int tel =0;//多个zone
             int zoneid =0;
+            List<MdoProComval> comvals2 = new ArrayList<>();
+            List<MdoProComval> comvals3 = new ArrayList<>();
+
+            List<AdflowTopVo> vos = new ArrayList<>();
             // 逐行读取,直到文件末尾
             while ((line = br.readLine()) != null) {
                 line=line.trim().replaceAll("\\s+"," ").trim();//替换多个空格为一个空格
@@ -57,28 +61,65 @@ public class AdflowFileRead {
                     continue;
                 }
                 if(line.startsWith("Zone")){
+                    save(comvals2,comvals3,vos,zoneid);
+                    comvals2.clear();
+                    comvals3.clear();
+                    vos.clear();
                     continue;
                 }
                 if(line.startsWith("Nodes")){
+
                     line=line.trim().replace("Nodes = ","");
                     size =Integer.valueOf(line.split(" ")[0]);
-                    tel=tel+1000000;
                     i=0;
                     zoneid++;
+//                    line =line.split(" ")[1].replace("Elements=","");
+                    eles=Integer.valueOf(line.split(" ")[2]);
                     continue;
                 }
                 if(line.startsWith("DATAPACKING")){
                     continue;
                 }
-                if(i>=size){
+                if(i>=size&&i<(size+eles)){
+                    //拓扑关系保存
+                    int s =Integer.valueOf(line.split(" ")[0])-1;
+                    int e =Integer.valueOf(line.split(" ")[1])-1;
+                    AdflowTopVo vo =new AdflowTopVo();
+                    vo.setS(s);
+                    vo.setE(e);
+                    vos.add(vo);
+//                    step++;
+//                    MdoProComval comval2_1 =comvals2.get(s);
+//                    comval2_1.setStep(tel+step);
+//                    comval2_1.setId(UtilTools.getUUid());
+//                    comvalDao.insert(comval2_1);
+//
+//                    MdoProComval comval3_1 =comvals3.get(s);
+//                    comval3_1.setStep(tel+step);
+//                    comval3_1.setId(UtilTools.getUUid());
+//                    comvalDao.insert(comval3_1);
+//
+//                    step++;
+//                    MdoProComval comval2_2 =comvals2.get(e);
+//                    comval2_2.setStep(tel+step);
+//                    comval2_2.setId(UtilTools.getUUid());
+//                    comvalDao.insert(comval2_2);
+//
+//                    MdoProComval comval3_2 =comvals3.get(e);
+//                    comval3_2.setStep(tel+step);
+//                    comval3_2.setId(UtilTools.getUUid());
+//                    comvalDao.insert(comval3_2);
+//                    i++;
                     continue;
                 }
+                if(i>=(size+eles)){
+                    continue;
+
+                }
                 if(i<size){
                     String[] vals = line.split(" ");
                     MdoProComval comval =new MdoProComval();
-                    comval.setId(UtilTools.getUUid());
                     comval.setPid(pid);
-                    comval.setStep(tel+i);
                     comval.setVars("v1 v2");
                     if(1==adflow.getLiftindex()){//x
                         comval.setVals(vals[4]+" "+vals[5]);
@@ -91,30 +132,88 @@ public class AdflowFileRead {
                     }
                     comval.setType(2);//"1-列表数据 2-几何数据 3-压力数据"
                     comval.setGser(zoneid);
-                    comvalDao.insert(comval);
+                    comvals2.add(comval);
+//                    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(tel+i);
                     comval2.setVars("x cp");
-                    comval2.setVals(vals[6]+" "+vals[9]);
+                    comval2.setVals(vals[3]+" "+vals[9]);
                     comval2.setType(3);//"1-列表数据 2-几何数据 3-压力数据"
                     comval2.setGser(zoneid);
-                    comvalDao.insert(comval2);
-//                    webs.sendMessageToUser(String.valueOf(pid),gson.toJson(comval2));
+                    comvals3.add(comval2);
+//                    comvalDao.insert(comval2);
                 }
                 i++;
 
-
             }
+            save(comvals2,comvals3,vos,zoneid);
         } catch (IOException e) {
             // 异常处理
             e.printStackTrace();
         }
     }
+
+    private static void save(List<MdoProComval> comvals2, List<MdoProComval> comvals3, List<AdflowTopVo> vos,Integer zoneid) {
+        List<List<AdflowTopVo>> lvos=fz(vos);
+        MdoProComvalMapper comvalDao = UtilTools.getBean(MdoProComvalMapper.class);
+        int i = 0;
+        int g=0;
+        for (List<AdflowTopVo> vs:lvos) {
+            g++;
+            int gser= zoneid*100000+g;
+            for (AdflowTopVo vo:vs) {
+                i++;
+                MdoProComval comval2_1 =comvals2.get(vo.getS());
+                comval2_1.setStep((zoneid*100000)+i);
+                comval2_1.setId(UtilTools.getUUid());
+                comval2_1.setGser(gser);
+                comvalDao.insert(comval2_1);
+
+                MdoProComval comval3_1 =comvals3.get(vo.getS());
+                comval3_1.setStep((zoneid*100000)+i);
+                comval3_1.setGser(gser);
+                comval3_1.setId(UtilTools.getUUid());
+                comvalDao.insert(comval3_1);
+            }
+            i++;
+            MdoProComval comval2_1 =comvals2.get(vs.get(vs.size()-1).getE());
+            comval2_1.setStep((zoneid*100000)+i);
+            comval2_1.setId(UtilTools.getUUid());
+            comval2_1.setGser(gser);
+            comvalDao.insert(comval2_1);
+            MdoProComval comval3_1 =comvals3.get(vs.get(vs.size()-1).getE());
+            comval3_1.setStep((zoneid*100000)+i);
+            comval3_1.setGser(gser);
+            comval3_1.setId(UtilTools.getUUid());
+            comvalDao.insert(comval3_1);
+        }
+        comvals2.clear();
+        comvals3.clear();
+        lvos.clear();
+
+    }
+
+    //分组逻辑
+    public static List<List<AdflowTopVo>> fz(List<AdflowTopVo> vos){
+        List<List<AdflowTopVo>> lvos = new ArrayList<>();
+        List<AdflowTopVo> tmp = new ArrayList<>();
+        for (AdflowTopVo vo:vos) {
+            if(tmp.isEmpty()){
+                tmp.add(vo);
+                lvos.add(tmp);
+                continue;
+            }
+            if(tmp.get(tmp.size()-1).getE()==vo.getS()){
+                tmp.add(vo);
+            }else{
+                tmp =new ArrayList<>();
+                tmp.add(vo);
+                lvos.add(tmp);
+            }
+        }
+        return lvos;
+    }
+
 }

+ 9 - 0
src/main/java/com/miniframe/tools/file/AdflowTopVo.java

@@ -0,0 +1,9 @@
+package com.miniframe.tools.file;
+
+import lombok.Data;
+
+@Data
+public class AdflowTopVo {
+    private  int s;
+    private  int e;
+}

+ 9 - 0
src/test/java/com/miniframe/XFileRead.java

@@ -1,13 +1,22 @@
 package com.miniframe;
 
+import com.miniframe.tools.file.AdflowFileRead;
 import com.miniframe.tools.file.CRMFileRead;
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
 
+import java.io.File;
+
 @SpringBootTest
 public class XFileRead {
     @Test
     void crmRead(){
 //        CRMFileRead.readFile("C:\\Users\\Administrator\\Desktop\\fsdownload");
     }
+
+    @Test
+    void airflowRead(){
+        File file = new File("C:\\Users\\Administrator\\Desktop\\fsdownload\\CRM_final_000_slices.dat");
+        AdflowFileRead.readFile(file,"710c8687fe624390afe44769664e7c67");
+    }
 }