package com.miniframe.tools.file; 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.modo.temp.workflow.AdflowVo; 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 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;//节点 int eles=0;//拓扑 int tel =0;//多个zone int zoneid =0; List comvals2 = new ArrayList<>(); List comvals3 = new ArrayList<>(); List vos = new ArrayList<>(); // 逐行读取,直到文件末尾 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")){ 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]); i=0; zoneid++; // line =line.split(" ")[1].replace("Elements=",""); eles=Integer.valueOf(line.split(" ")[2]); continue; } if(line.startsWith("DATAPACKING")){ continue; } 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 comvals2, List comvals3, List vos,Integer zoneid) { List> lvos=fz(vos); MdoProComvalMapper comvalDao = UtilTools.getBean(MdoProComvalMapper.class); int i = 0; int g=0; for (List 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> fz(List vos){ List> lvos = new ArrayList<>(); List 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; } }