AdflowFileRead.java 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. package com.miniframe.tools.file;
  2. import com.miniframe.core.ext.UtilTools;
  3. import com.miniframe.model.mdo.MdoProAdflow;
  4. import com.miniframe.model.mdo.MdoProAdflowSQLBuilder;
  5. import com.miniframe.model.mdo.MdoProComval;
  6. import com.miniframe.model.mdo.MdoProComvalSQLBuilder;
  7. import com.miniframe.model.mdo.dao.MdoProAdflowMapper;
  8. import com.miniframe.model.mdo.dao.MdoProComvalMapper;
  9. import com.miniframe.modo.temp.workflow.AdflowVo;
  10. import java.io.BufferedReader;
  11. import java.io.File;
  12. import java.io.FileReader;
  13. import java.io.IOException;
  14. import java.util.ArrayList;
  15. import java.util.List;
  16. public class AdflowFileRead {
  17. public static void readFile(File file, String pid) {
  18. MdoProAdflowMapper adfdao =UtilTools.getBean(MdoProAdflowMapper.class);
  19. MdoProAdflowSQLBuilder asb = new MdoProAdflowSQLBuilder();
  20. MdoProAdflowSQLBuilder.Criteria asc = asb.createCriteria();
  21. asc.andPidEqualTo(pid);
  22. MdoProAdflow adflow = adfdao.selectOneByExample(asb);
  23. MdoProComvalMapper comvalDao = UtilTools.getBean(MdoProComvalMapper.class);
  24. MdoProComvalSQLBuilder comvalsb = new MdoProComvalSQLBuilder();
  25. MdoProComvalSQLBuilder.Criteria comvalsc = comvalsb.createCriteria();
  26. comvalsc.andPidEqualTo(pid);
  27. List<Integer> types = new ArrayList<>();
  28. types.add(2);
  29. types.add(3);
  30. comvalsc.andTypeIn(types);
  31. comvalDao.deleteByExample(comvalsb);
  32. int i= 0;
  33. String line;
  34. // 使用try-with-resources语句确保资源被正确关闭
  35. try (BufferedReader br = new BufferedReader(new FileReader(file))) {
  36. int size=0;//节点
  37. int eles=0;//拓扑
  38. int tel =0;//多个zone
  39. int zoneid =0;
  40. List<MdoProComval> comvals2 = new ArrayList<>();
  41. List<MdoProComval> comvals3 = new ArrayList<>();
  42. List<AdflowTopVo> vos = new ArrayList<>();
  43. // 逐行读取,直到文件末尾
  44. while ((line = br.readLine()) != null) {
  45. line=line.trim().replaceAll("\\s+"," ").trim();//替换多个空格为一个空格
  46. if(line.startsWith("Title")){
  47. continue;
  48. }
  49. if(line.startsWith("Variables")){
  50. //Variables = "CoordinateX" "CoordinateY" "CoordinateZ" "XoC" "YoC" "ZoC" "VelocityX" "VelocityY" "VelocityZ" "CoefPressure" "Mach"
  51. // line=line.replace("\"","");
  52. // line=line.replace("Variables =","").trim();
  53. continue;
  54. }
  55. if(line.startsWith("Zone")){
  56. save(comvals2,comvals3,vos,zoneid);
  57. comvals2.clear();
  58. comvals3.clear();
  59. vos.clear();
  60. continue;
  61. }
  62. if(line.startsWith("Nodes")){
  63. line=line.trim().replace("Nodes = ","");
  64. size =Integer.valueOf(line.split(" ")[0]);
  65. i=0;
  66. zoneid++;
  67. // line =line.split(" ")[1].replace("Elements=","");
  68. eles=Integer.valueOf(line.split(" ")[2]);
  69. continue;
  70. }
  71. if(line.startsWith("DATAPACKING")){
  72. continue;
  73. }
  74. if(i>=size&&i<(size+eles)){
  75. //拓扑关系保存
  76. int s =Integer.valueOf(line.split(" ")[0])-1;
  77. int e =Integer.valueOf(line.split(" ")[1])-1;
  78. AdflowTopVo vo =new AdflowTopVo();
  79. vo.setS(s);
  80. vo.setE(e);
  81. vos.add(vo);
  82. // step++;
  83. // MdoProComval comval2_1 =comvals2.get(s);
  84. // comval2_1.setStep(tel+step);
  85. // comval2_1.setId(UtilTools.getUUid());
  86. // comvalDao.insert(comval2_1);
  87. //
  88. // MdoProComval comval3_1 =comvals3.get(s);
  89. // comval3_1.setStep(tel+step);
  90. // comval3_1.setId(UtilTools.getUUid());
  91. // comvalDao.insert(comval3_1);
  92. //
  93. // step++;
  94. // MdoProComval comval2_2 =comvals2.get(e);
  95. // comval2_2.setStep(tel+step);
  96. // comval2_2.setId(UtilTools.getUUid());
  97. // comvalDao.insert(comval2_2);
  98. //
  99. // MdoProComval comval3_2 =comvals3.get(e);
  100. // comval3_2.setStep(tel+step);
  101. // comval3_2.setId(UtilTools.getUUid());
  102. // comvalDao.insert(comval3_2);
  103. // i++;
  104. continue;
  105. }
  106. if(i>=(size+eles)){
  107. continue;
  108. }
  109. if(i<size){
  110. String[] vals = line.split(" ");
  111. MdoProComval comval =new MdoProComval();
  112. comval.setPid(pid);
  113. if(1==adflow.getLiftindex()){//x
  114. comval.setVars("YoC ZoC");
  115. comval.setVals(vals[4]+" "+vals[5]);
  116. }
  117. if(2==adflow.getLiftindex()){//y
  118. comval.setVars("XoC ZoC");
  119. comval.setVals(vals[3]+" "+vals[5]);
  120. }
  121. if(3==adflow.getLiftindex()){//z
  122. comval.setVars("XoC YoC");
  123. comval.setVals(vals[3]+" "+vals[4]);
  124. }
  125. comval.setType(2);//"1-列表数据 2-几何数据 3-压力数据"
  126. comval.setGser(zoneid);
  127. comvals2.add(comval);
  128. // comvalDao.insert(comval);
  129. MdoProComval comval2 =new MdoProComval();
  130. comval2.setPid(pid);
  131. comval2.setVars("XoC cp");
  132. comval2.setVals(vals[3]+" "+vals[9]);
  133. comval2.setType(3);//"1-列表数据 2-几何数据 3-压力数据"
  134. comval2.setGser(zoneid);
  135. comvals3.add(comval2);
  136. // comvalDao.insert(comval2);
  137. }
  138. i++;
  139. }
  140. save(comvals2,comvals3,vos,zoneid);
  141. } catch (IOException e) {
  142. // 异常处理
  143. e.printStackTrace();
  144. }
  145. }
  146. private static void save(List<MdoProComval> comvals2, List<MdoProComval> comvals3, List<AdflowTopVo> vos,Integer zoneid) {
  147. List<List<AdflowTopVo>> lvos=fz(vos);
  148. MdoProComvalMapper comvalDao = UtilTools.getBean(MdoProComvalMapper.class);
  149. int i = 0;
  150. int g=0;
  151. for (List<AdflowTopVo> vs:lvos) {
  152. g++;
  153. int gser= zoneid*100000+g;
  154. for (AdflowTopVo vo:vs) {
  155. i++;
  156. MdoProComval comval2_1 =comvals2.get(vo.getS());
  157. comval2_1.setStep((zoneid*100000)+i);
  158. comval2_1.setId(UtilTools.getUUid());
  159. comval2_1.setGser(gser);
  160. comvalDao.insert(comval2_1);
  161. MdoProComval comval3_1 =comvals3.get(vo.getS());
  162. comval3_1.setStep((zoneid*100000)+i);
  163. comval3_1.setGser(gser);
  164. comval3_1.setId(UtilTools.getUUid());
  165. comvalDao.insert(comval3_1);
  166. }
  167. i++;
  168. MdoProComval comval2_1 =comvals2.get(vs.get(vs.size()-1).getE());
  169. comval2_1.setStep((zoneid*100000)+i);
  170. comval2_1.setId(UtilTools.getUUid());
  171. comval2_1.setGser(gser);
  172. comvalDao.insert(comval2_1);
  173. MdoProComval comval3_1 =comvals3.get(vs.get(vs.size()-1).getE());
  174. comval3_1.setStep((zoneid*100000)+i);
  175. comval3_1.setGser(gser);
  176. comval3_1.setId(UtilTools.getUUid());
  177. comvalDao.insert(comval3_1);
  178. }
  179. comvals2.clear();
  180. comvals3.clear();
  181. lvos.clear();
  182. }
  183. //分组逻辑
  184. public static List<List<AdflowTopVo>> fz(List<AdflowTopVo> vos){
  185. List<List<AdflowTopVo>> lvos = new ArrayList<>();
  186. List<AdflowTopVo> tmp = new ArrayList<>();
  187. for (AdflowTopVo vo:vos) {
  188. if(tmp.isEmpty()){
  189. tmp.add(vo);
  190. lvos.add(tmp);
  191. continue;
  192. }
  193. if(tmp.get(tmp.size()-1).getE()==vo.getS()){
  194. tmp.add(vo);
  195. }else{
  196. tmp =new ArrayList<>();
  197. tmp.add(vo);
  198. lvos.add(tmp);
  199. }
  200. }
  201. return lvos;
  202. }
  203. }