123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 |
- 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<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;//节点
- 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();//替换多个空格为一个空格
- 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<size){
- String[] vals = line.split(" ");
- MdoProComval comval =new MdoProComval();
- comval.setPid(pid);
- if(1==adflow.getLiftindex()){//x
- comval.setVars("YoC ZoC");
- comval.setVals(vals[4]+" "+vals[5]);
- }
- if(2==adflow.getLiftindex()){//y
- comval.setVars("XoC ZoC");
- comval.setVals(vals[3]+" "+vals[5]);
- }
- if(3==adflow.getLiftindex()){//z
- comval.setVars("XoC YoC");
- comval.setVals(vals[3]+" "+vals[4]);
- }
- comval.setType(2);//"1-列表数据 2-几何数据 3-压力数据"
- comval.setGser(zoneid);
- comvals2.add(comval);
- // comvalDao.insert(comval);
- MdoProComval comval2 =new MdoProComval();
- comval2.setPid(pid);
- comval2.setVars("XoC cp");
- comval2.setVals(vals[3]+" "+vals[9]);
- comval2.setType(3);//"1-列表数据 2-几何数据 3-压力数据"
- comval2.setGser(zoneid);
- 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;
- }
- }
|