TemplateGenerator.java 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697
  1. package com.miniframe.template;
  2. import com.miniframe.core.exception.BusinessException;
  3. import com.miniframe.core.ext.UtilTools;
  4. import com.miniframe.model.system.*;
  5. import com.miniframe.model.system.dao.*;
  6. import com.miniframe.tools.XIFileUtils;
  7. import com.miniframe.tools.XIIniFileUtils;
  8. import freemarker.template.Configuration;
  9. import freemarker.template.Template;
  10. import freemarker.template.TemplateException;
  11. import tk.mybatis.mapper.util.StringUtil;
  12. import java.io.FileWriter;
  13. import java.io.IOException;
  14. import java.io.StringWriter;
  15. import java.util.*;
  16. public class TemplateGenerator {
  17. public static final String BPATH = "/cephfs/disaster";
  18. public static void createWaterControl(Integer aid, Integer jid, String totaltime, String dt, String dx, String reportstep, String interactionstep) throws IOException, TemplateException {
  19. Configuration cfg = new Configuration(Configuration.VERSION_2_3_0);
  20. // 设置模板所在目录
  21. cfg.setClassForTemplateLoading(TemplateGenerator.class, "/templates");
  22. // 获取模板对象
  23. Template template = cfg.getTemplate("waterControl.ftl");
  24. // 定义数据模型(Map)
  25. Map<String, Object> dataModel = new HashMap<>();
  26. //几何文件路径
  27. dataModel.put("geoFilePath", BPATH + "/" + aid + "/" + jid + "/Geometry");
  28. //initFile 文件路径
  29. dataModel.put("initFilePath", BPATH + "/" + aid + "/" + jid + "/water" + "/" + "water.init");
  30. //midPath
  31. dataModel.put("midPath", BPATH + "/" + aid + "/" + jid + "/water" + "/mid");
  32. //monitorPath
  33. dataModel.put("monitorPath", BPATH + "/" + aid + "/" + jid + "/monitor.in");
  34. //outPath
  35. dataModel.put("outPath", BPATH + "/" + aid + "/" + jid + "/water" + "/out");
  36. dataModel.put("totaltime", totaltime);
  37. dataModel.put("dt", dt);
  38. dataModel.put("dx", dx);
  39. dataModel.put("reportstep", reportstep);
  40. dataModel.put("interactionstep", interactionstep);
  41. DSourceMapper dsm = UtilTools.getBean(DSourceMapper.class);
  42. DSourceSQLBuilder dss = new DSourceSQLBuilder();
  43. DSourceSQLBuilder.Criteria dssc = dss.createCriteria();
  44. dssc.andAidEqualTo(aid);
  45. // dssc.andSTypeEqualTo("Fire");
  46. List<DSource> dources = dsm.selectByExample(dss);
  47. //waterSourcenum 灾源数量
  48. dataModel.put("waterSourcenum", dources.size());
  49. //边界
  50. DBoundaryMapper dBoundaryMapper = UtilTools.getBean(DBoundaryMapper.class);
  51. DBoundarySQLBuilder sb = new DBoundarySQLBuilder();
  52. DBoundarySQLBuilder.Criteria sc = sb.createCriteria();
  53. sc.andAidEqualTo(aid);
  54. List<DBoundary> boundaries = dBoundaryMapper.selectByExample(sb);
  55. //边界数量
  56. dataModel.put("boundarynum", boundaries.size());
  57. // 将数据模型传入模板进行处理
  58. StringWriter writer = new StringWriter();
  59. template.process(dataModel, writer);
  60. mkDirs(aid, jid, "/water");
  61. FileWriter fileWriter = new FileWriter(BPATH + "/" + aid + "/" + jid + "/" + "/water" + "/water.control");
  62. fileWriter.write(writer.toString());
  63. fileWriter.close();
  64. }
  65. public static void createWaterRunsh(Integer aid, Integer jid) throws IOException, TemplateException {
  66. Configuration cfg = new Configuration(Configuration.VERSION_2_3_0);
  67. // 设置模板所在目录
  68. cfg.setClassForTemplateLoading(TemplateGenerator.class, "/templates");
  69. // 获取模板对象
  70. Template template = cfg.getTemplate("waterRunsh.ftl");
  71. // 定义数据模型(Map)
  72. Map<String, Object> dataModel = new HashMap<>();
  73. //几何文件路径
  74. dataModel.put("waterControlPath", BPATH + "/" + aid + "/" + jid + "/water" + "/water.control");
  75. // 将数据模型传入模板进行处理
  76. StringWriter writer = new StringWriter();
  77. template.process(dataModel, writer);
  78. FileWriter fileWriter = new FileWriter(BPATH + "/" + aid + "/" + jid + "/water" + "/" + "runWater.sh");
  79. fileWriter.write(writer.toString());
  80. fileWriter.close();
  81. }
  82. public static void createWaterInit(Integer aid, Integer jid) throws IOException, TemplateException {
  83. FireInitVo vo = new FireInitVo();
  84. //TODO 这个版本不需要传感器数据
  85. // DNodeValMapper dnvm= UtilTools.getBean(DNodeValMapper.class);
  86. // DNodeValSQLBuilder dns = new DNodeValSQLBuilder();
  87. // DNodeValSQLBuilder.Criteria dnsc= dns.createCriteria();
  88. // dnsc.andAidEqualTo(aid);
  89. // List<DNodeVal> nodeVals=dnvm.selectByExample(dns);
  90. // vo.setNodeVals(nodeVals);
  91. DSourceMapper dsm = UtilTools.getBean(DSourceMapper.class);
  92. DSourceSQLBuilder dss = new DSourceSQLBuilder();
  93. DSourceSQLBuilder.Criteria dssc = dss.createCriteria();
  94. dssc.andAidEqualTo(aid);
  95. // dssc.andSTypeEqualTo("Water");
  96. List<DSource> dources = dsm.selectByExample(dss);
  97. DSourceValMapper dsvm = UtilTools.getBean(DSourceValMapper.class);
  98. DSourceValSQLBuilder dsvs = new DSourceValSQLBuilder();
  99. List<DSourceVo> dourceVos = new ArrayList<>();
  100. for (DSource ds : dources) {
  101. DSourceValSQLBuilder.Criteria dsvc = dsvs.createCriteria();
  102. dsvc.andSidEqualTo(ds.getId());
  103. List<DSourceVal> dSourceVals = dsvm.selectByExample(dsvs);
  104. DSourceVo dsourcevo = new DSourceVo();
  105. dsourcevo.setDsource(ds);
  106. dsourcevo.setDsourceVals(dSourceVals);
  107. dourceVos.add(dsourcevo);
  108. dsvs.clear();
  109. }
  110. vo.setDourceVos(dourceVos);
  111. //边界
  112. DBoundaryMapper dBoundaryMapper = UtilTools.getBean(DBoundaryMapper.class);
  113. DBoundarySQLBuilder sb = new DBoundarySQLBuilder();
  114. DBoundarySQLBuilder.Criteria sc = sb.createCriteria();
  115. sc.andAidEqualTo(aid);
  116. List<DBoundary> boundaries = dBoundaryMapper.selectByExample(sb);
  117. Configuration cfg = new Configuration(Configuration.VERSION_2_3_0);
  118. // 设置模板所在目录
  119. cfg.setClassForTemplateLoading(TemplateGenerator.class, "/templates");
  120. // 获取模板对象
  121. Template template = cfg.getTemplate("waterInit.ftl");
  122. // 定义数据模型(Map)
  123. Map<String, Object> dataModel = new HashMap<>();
  124. //几何文件路径
  125. dataModel.put("vo", vo);
  126. //边界
  127. dataModel.put("boundaries", boundaries);
  128. // 将数据模型传入模板进行处理
  129. StringWriter writer = new StringWriter();
  130. template.process(dataModel, writer);
  131. // 输出结果到控制台或保存为文件
  132. // System.out.println(writer.toString());
  133. FileWriter fileWriter = new FileWriter(BPATH + "/" + aid + "/" + jid + "/water" + "/" + "water.init");
  134. fileWriter.write(writer.toString());
  135. fileWriter.close();
  136. }
  137. /**
  138. * 生成几何文件
  139. */
  140. public static void createGeometry(Integer aid, Integer jid) throws IOException, TemplateException {
  141. Configuration cfg = new Configuration(Configuration.VERSION_2_3_0);
  142. // 设置模板所在目录
  143. cfg.setClassForTemplateLoading(TemplateGenerator.class, "/templates");
  144. // 获取模板对象
  145. Template template = cfg.getTemplate("geometry.ftl");
  146. // 定义数据模型(Map)
  147. Map<String, Object> dataModel = new HashMap<>();
  148. DNodeMapper nodeMapper = UtilTools.getBean(DNodeMapper.class);
  149. List<DNode> nodes = nodeMapper.selectAll();
  150. Collections.sort(nodes, (n1, n2) -> n1.getId().compareTo(n2.getId()));
  151. //节点数量
  152. dataModel.put("nodenum", nodes.size());
  153. //节点
  154. dataModel.put("nodes", nodes);
  155. DPipeMapper pipeMapper = UtilTools.getBean(DPipeMapper.class);
  156. List<DPipe> pipes = pipeMapper.selectAll();
  157. Collections.sort(pipes, (n1, n2) -> n1.getId().compareTo(n2.getId()));
  158. //管道数量
  159. dataModel.put("pipenum", pipes.size());
  160. //管道
  161. dataModel.put("pipes", pipes);
  162. // 将数据模型传入模板进行处理
  163. StringWriter writer = new StringWriter();
  164. template.process(dataModel, writer);
  165. mkDirs(aid, jid, "/fire");
  166. FileWriter fileWriter = new FileWriter(BPATH + "/" + aid + "/" + jid + "/Geometry");
  167. fileWriter.write(writer.toString());
  168. fileWriter.close();
  169. }
  170. private static void mkDirs(Integer aid, Integer jid, String s) {
  171. XIFileUtils.mkdir(BPATH);
  172. XIFileUtils.mkdir(BPATH + "/" + aid);
  173. XIFileUtils.mkdir(BPATH + "/" + aid + "/" + jid);
  174. XIFileUtils.mkdir(BPATH + "/" + aid + "/" + jid + s);
  175. XIFileUtils.mkdir(BPATH + "/" + aid + "/" + jid + s + "/mid");
  176. XIFileUtils.mkdir(BPATH + "/" + aid + "/" + jid + s + "/out");
  177. }
  178. private static void mkGassDirs(Integer aid, Integer jid) {
  179. String s = "/gas";
  180. XIFileUtils.mkdir(BPATH);
  181. XIFileUtils.mkdir(BPATH + "/" + aid);
  182. XIFileUtils.mkdir(BPATH + "/" + aid + "/" + jid);
  183. XIFileUtils.mkdir(BPATH + "/" + aid + "/" + jid + s);
  184. XIFileUtils.mkdir(BPATH + "/" + aid + "/" + jid + s + "/" );
  185. XIFileUtils.mkdir(BPATH + "/" + aid + "/" + jid + s + "/" + "/mid");
  186. XIFileUtils.mkdir(BPATH + "/" + aid + "/" + jid + s + "/" + "/out");
  187. XIFileUtils.mkdir(BPATH + "/" + aid + "/" + jid + s + "/" + "/case");
  188. XIFileUtils.mkdir(BPATH + "/" + aid + "/" + jid + s + "/" + "/data_mnt");
  189. XIFileUtils.mkdir(BPATH + "/" + aid + "/" + jid + s + "/" + "/data_rst");
  190. }
  191. /**
  192. * 生成监测点文件
  193. */
  194. public static void createMonitor(Integer aid, Integer jid) throws IOException, TemplateException {
  195. Configuration cfg = new Configuration(Configuration.VERSION_2_3_0);
  196. // 设置模板所在目录
  197. cfg.setClassForTemplateLoading(TemplateGenerator.class, "/templates");
  198. // 获取模板对象
  199. Template template = cfg.getTemplate("monitor.ftl");
  200. // 定义数据模型(Map)
  201. Map<String, Object> dataModel = new HashMap<>();
  202. DChecknodeMapper checknodeMapper = UtilTools.getBean(DChecknodeMapper.class);
  203. List<DChecknode> monitors = checknodeMapper.selectAll();
  204. Collections.sort(monitors, (n1, n2) -> n1.getId().compareTo(n2.getId()));
  205. dataModel.put("monnum", monitors.size());
  206. //管道
  207. dataModel.put("monitors", monitors);
  208. // 将数据模型传入模板进行处理
  209. StringWriter writer = new StringWriter();
  210. template.process(dataModel, writer);
  211. mkDirs(aid, jid, "/fire");
  212. FileWriter fileWriter = new FileWriter(BPATH + "/" + aid + "/" + jid + "/monitor.in");
  213. fileWriter.write(writer.toString());
  214. fileWriter.close();
  215. }
  216. public static void createFireControl(Integer aid, Integer jid, String totaltime,
  217. String dt, String dx, String reportstep, String interactionstep,
  218. String cocodes) throws IOException, TemplateException {
  219. Configuration cfg = new Configuration(Configuration.VERSION_2_3_0);
  220. // 设置模板所在目录
  221. cfg.setClassForTemplateLoading(TemplateGenerator.class, "/templates");
  222. // 获取模板对象
  223. Template template = cfg.getTemplate("fireControl.ftl");
  224. // 定义数据模型(Map)
  225. Map<String, Object> dataModel = new HashMap<>();
  226. //几何文件路径
  227. dataModel.put("geoFilePath", BPATH + "/" + aid + "/" + jid + "/Geometry");
  228. //fireinit 文件路径
  229. dataModel.put("initFilePath", BPATH + "/" + aid + "/" + jid + "/fire" + "/" + "Fire.init");
  230. //fireInteractionPath 阀门文件路径
  231. dataModel.put("fireInteractionPath", "/home/disaster/fire/Fire.interaction");
  232. //midPath
  233. dataModel.put("monitorPath", BPATH + "/" + aid + "/" + jid + "/monitor.in");
  234. //midPath
  235. dataModel.put("midPath", BPATH + "/" + aid + "/" + jid + "/fire" + "/mid");
  236. //outPath
  237. dataModel.put("outPath", BPATH + "/" + aid + "/" + jid + "/fire" + "/out");
  238. dataModel.put("totaltime", totaltime);
  239. dataModel.put("dt", dt);
  240. dataModel.put("dx", dx);
  241. dataModel.put("reportstep", reportstep);
  242. dataModel.put("interactionstep", interactionstep);
  243. DSourceMapper dsm = UtilTools.getBean(DSourceMapper.class);
  244. DSourceSQLBuilder dss = new DSourceSQLBuilder();
  245. DSourceSQLBuilder.Criteria dssc = dss.createCriteria();
  246. dssc.andAidEqualTo(aid);
  247. // dssc.andSTypeEqualTo("Fire");
  248. List<DSource> dources = dsm.selectByExample(dss);
  249. //fireSourceNum 灾源数量
  250. dataModel.put("fireSourceNum", dources.size());
  251. //边界
  252. DBoundaryMapper dBoundaryMapper = UtilTools.getBean(DBoundaryMapper.class);
  253. DBoundarySQLBuilder sb = new DBoundarySQLBuilder();
  254. DBoundarySQLBuilder.Criteria sc = sb.createCriteria();
  255. sc.andAidEqualTo(aid);
  256. List<DBoundary> boundaries = dBoundaryMapper.selectByExample(sb);
  257. //边界数量
  258. dataModel.put("boundarynum", boundaries.size());
  259. //物理量
  260. String[] codes = cocodes.split(",");
  261. List<String> concodeList = new ArrayList<>();
  262. for (String concode : codes
  263. ) {
  264. concodeList.add(concode);
  265. }
  266. DConMapper conMapper = UtilTools.getBean(DConMapper.class);
  267. DConSQLBuilder consb = new DConSQLBuilder();
  268. DConSQLBuilder.Criteria consc = consb.createCriteria();
  269. consc.andCodeIn(concodeList);
  270. List<DCon> cons = conMapper.selectByExample(consb);
  271. dataModel.put("conNum", cons.size());
  272. dataModel.put("cons", cons);
  273. // 将数据模型传入模板进行处理
  274. StringWriter writer = new StringWriter();
  275. template.process(dataModel, writer);
  276. mkDirs(aid, jid, "/fire");
  277. FileWriter fileWriter = new FileWriter(BPATH + "/" + aid + "/" + jid + "/" + "/fire" + "/Fire.control");
  278. fileWriter.write(writer.toString());
  279. fileWriter.close();
  280. }
  281. public static void createFireRunsh(Integer aid, Integer jid) throws IOException, TemplateException {
  282. Configuration cfg = new Configuration(Configuration.VERSION_2_3_0);
  283. // 设置模板所在目录
  284. cfg.setClassForTemplateLoading(TemplateGenerator.class, "/templates");
  285. // 获取模板对象
  286. Template template = cfg.getTemplate("fireRunsh.ftl");
  287. // 定义数据模型(Map)
  288. Map<String, Object> dataModel = new HashMap<>();
  289. //几何文件路径
  290. dataModel.put("firecontrolPath", BPATH + "/" + aid + "/" + jid + "/fire" + "/Fire.control");
  291. // 将数据模型传入模板进行处理
  292. StringWriter writer = new StringWriter();
  293. template.process(dataModel, writer);
  294. FileWriter fileWriter = new FileWriter(BPATH + "/" + aid + "/" + jid + "/fire" + "/" + "runFile.sh");
  295. fileWriter.write(writer.toString());
  296. fileWriter.close();
  297. }
  298. public static void createFireInit(Integer aid, Integer jid) throws IOException, TemplateException {
  299. FireInitVo vo = new FireInitVo();
  300. //TODO 求解器暂时不需要此数据
  301. // DNodeValMapper dnvm= UtilTools.getBean(DNodeValMapper.class);
  302. // DNodeValSQLBuilder dns = new DNodeValSQLBuilder();
  303. // DNodeValSQLBuilder.Criteria dnsc= dns.createCriteria();
  304. // dnsc.andAidEqualTo(aid);
  305. // List<DNodeVal> nodeVals=dnvm.selectByExample(dns);
  306. // vo.setNodeVals(nodeVals);
  307. DSourceMapper dsm = UtilTools.getBean(DSourceMapper.class);
  308. DSourceSQLBuilder dss = new DSourceSQLBuilder();
  309. DSourceSQLBuilder.Criteria dssc = dss.createCriteria();
  310. dssc.andAidEqualTo(aid);
  311. // dssc.andSTypeEqualTo("Fire");
  312. List<DSource> dources = dsm.selectByExample(dss);
  313. DSourceValMapper dsvm = UtilTools.getBean(DSourceValMapper.class);
  314. DSourceValSQLBuilder dsvs = new DSourceValSQLBuilder();
  315. List<DSourceVo> dourceVos = new ArrayList<>();
  316. for (DSource ds : dources) {
  317. DSourceValSQLBuilder.Criteria dsvc = dsvs.createCriteria();
  318. dsvc.andSidEqualTo(ds.getId());
  319. List<DSourceVal> dSourceVals = dsvm.selectByExample(dsvs);
  320. DSourceVo dsourcevo = new DSourceVo();
  321. dsourcevo.setDsource(ds);
  322. dsourcevo.setDsourceVals(dSourceVals);
  323. dourceVos.add(dsourcevo);
  324. dsvs.clear();
  325. }
  326. vo.setDourceVos(dourceVos);
  327. //边界
  328. DBoundaryMapper dBoundaryMapper = UtilTools.getBean(DBoundaryMapper.class);
  329. DBoundarySQLBuilder sb = new DBoundarySQLBuilder();
  330. DBoundarySQLBuilder.Criteria sc = sb.createCriteria();
  331. sc.andAidEqualTo(aid);
  332. List<DBoundary> boundaries = dBoundaryMapper.selectByExample(sb);
  333. Configuration cfg = new Configuration(Configuration.VERSION_2_3_0);
  334. // 设置模板所在目录
  335. cfg.setClassForTemplateLoading(TemplateGenerator.class, "/templates");
  336. // 获取模板对象
  337. Template template = cfg.getTemplate("fireInit.ftl");
  338. // 定义数据模型(Map)
  339. Map<String, Object> dataModel = new HashMap<>();
  340. //几何文件路径
  341. dataModel.put("vo", vo);
  342. //边界
  343. dataModel.put("boundaries", boundaries);
  344. // 将数据模型传入模板进行处理
  345. StringWriter writer = new StringWriter();
  346. template.process(dataModel, writer);
  347. // 输出结果到控制台或保存为文件
  348. // System.out.println(writer.toString());
  349. FileWriter fileWriter = new FileWriter(BPATH + "/" + aid + "/" + jid + "/fire" + "/" + "Fire.init");
  350. fileWriter.write(writer.toString());
  351. fileWriter.close();
  352. }
  353. public static void main(String[] args) throws Exception {
  354. // TemplateGenerator.createWaterRunsh(5);
  355. float myFloat = 495545.603f;
  356. String formattedString = String.format("%.32f", myFloat);
  357. System.out.println(myFloat); // 输出: 123.46
  358. System.out.println(formattedString); // 输出: 123.46
  359. }
  360. public static void createGasControl(Integer aid, Integer jid, String totaltime,
  361. String dt, String dx, String reportstep, String interactionstep,
  362. String cocodes) throws IOException, TemplateException {
  363. Configuration cfg = new Configuration(Configuration.VERSION_2_3_0);
  364. // 设置模板所在目录
  365. cfg.setClassForTemplateLoading(TemplateGenerator.class, "/templates");
  366. // 获取模板对象
  367. Template template = cfg.getTemplate("mashGasControl.ftl");
  368. // 定义数据模型(Map)
  369. Map<String, Object> dataModel = new HashMap<>();
  370. //几何文件路径
  371. dataModel.put("geoFilePath", BPATH + "/" + aid + "/" + jid + "/Geometry");
  372. //fireinit 文件路径
  373. dataModel.put("initFilePath", BPATH + "/" + aid + "/" + jid + "/gas" + "/" + "MashGas.init");
  374. //midPath
  375. dataModel.put("monitorPath", BPATH + "/" + aid + "/" + jid + "/monitor.in");
  376. //midPath
  377. dataModel.put("midPath", BPATH + "/" + aid + "/" + jid + "/gas" + "/" + "/mid");
  378. //outPath
  379. dataModel.put("outPath", BPATH + "/" + aid + "/" + jid + "/gas" + "/" + "/out");
  380. //CPUS
  381. dataModel.put("cups", 4);
  382. dataModel.put("totaltime", totaltime);
  383. dataModel.put("dt", dt);
  384. dataModel.put("dx", dx);
  385. dataModel.put("reportstep", reportstep);
  386. dataModel.put("interactionstep", interactionstep);
  387. DBoundaryMapper dBoundaryMapper = UtilTools.getBean(DBoundaryMapper.class);
  388. DBoundarySQLBuilder sb = new DBoundarySQLBuilder();
  389. DBoundarySQLBuilder.Criteria sc = sb.createCriteria();
  390. sc.andAidEqualTo(aid);
  391. List<DBoundary> boundaries = dBoundaryMapper.selectByExample(sb);
  392. //边界数量
  393. dataModel.put("boundarynum", boundaries.size());
  394. //TODO
  395. dataModel.put("mashgasnumber", 1);
  396. //fireInteractionPath 阀门文件路径
  397. dataModel.put("fireInteractionPath", "/home/disaster/fire/Fire.interaction");
  398. //物理量
  399. if (StringUtil.isEmpty(cocodes)) {
  400. dataModel.put("conNum", 0);
  401. dataModel.put("cons", new ArrayList<>());
  402. } else {
  403. String[] codes = cocodes.split(",");
  404. List<String> concodeList = new ArrayList<>();
  405. for (String concode : codes
  406. ) {
  407. concodeList.add(concode);
  408. }
  409. DConMapper conMapper = UtilTools.getBean(DConMapper.class);
  410. DConSQLBuilder consb = new DConSQLBuilder();
  411. DConSQLBuilder.Criteria consc = consb.createCriteria();
  412. consc.andCodeIn(concodeList);
  413. List<DCon> cons = conMapper.selectByExample(consb);
  414. dataModel.put("conNum", cons.size());
  415. dataModel.put("cons", cons);
  416. }
  417. // 将数据模型传入模板进行处理
  418. StringWriter writer = new StringWriter();
  419. template.process(dataModel, writer);
  420. mkGassDirs(aid, jid);
  421. FileWriter fileWriter = new FileWriter(BPATH + "/" + aid + "/" + jid + "/" + "/gas" + "/MashGas.control");
  422. fileWriter.write(writer.toString());
  423. fileWriter.close();
  424. }
  425. public static void createGasInit(Integer aid, Integer jid, Integer gid) throws IOException, TemplateException, BusinessException {
  426. Configuration cfg = new Configuration(Configuration.VERSION_2_3_0);
  427. // 设置模板所在目录
  428. cfg.setClassForTemplateLoading(TemplateGenerator.class, "/templates");
  429. // 获取模板对象
  430. Template template = cfg.getTemplate("mashGasInit.ftl");
  431. // 定义数据模型(Map)
  432. Map<String, Object> dataModel = new HashMap<>();
  433. DGasBlastAreaMapper blastMapper = UtilTools.getBean(DGasBlastAreaMapper.class);
  434. DGasBlastAreaSQLBuilder blastSb = new DGasBlastAreaSQLBuilder();
  435. DGasBlastAreaSQLBuilder.Criteria blastSc = blastSb.createCriteria();
  436. blastSc.andGidEqualTo(gid);
  437. List<DGasBlastArea> blastList = blastMapper.selectByExample(blastSb);
  438. if (blastList.isEmpty()) {
  439. throw new BusinessException("EB3100023");
  440. }
  441. //边界
  442. DBoundaryMapper dBoundaryMapper = UtilTools.getBean(DBoundaryMapper.class);
  443. DBoundarySQLBuilder sb = new DBoundarySQLBuilder();
  444. DBoundarySQLBuilder.Criteria sc = sb.createCriteria();
  445. sc.andAidEqualTo(aid);
  446. List<DBoundary> boundaries = dBoundaryMapper.selectByExample(sb);
  447. dataModel.put("boundaries", boundaries);
  448. dataModel.put("blastnum", blastList.size());
  449. dataModel.put("blastList", blastList);
  450. DGasGatherAreaMapper gatherMapper = UtilTools.getBean(DGasGatherAreaMapper.class);
  451. DGasGatherAreaSQLBuilder gatherSb = new DGasGatherAreaSQLBuilder();
  452. DGasGatherAreaSQLBuilder.Criteria gatherSc = gatherSb.createCriteria();
  453. gatherSc.andGidEqualTo(gid);
  454. gatherSb.setOrderByClause("id ASC");
  455. List<DGasGatherArea> gatherList = gatherMapper.selectByExample(gatherSb);
  456. if (gatherList.isEmpty()) {
  457. throw new BusinessException("EB3100024");
  458. }
  459. dataModel.put("gathernum", gatherList.size());
  460. dataModel.put("gatherList", gatherList);
  461. DGasMapper gasMapper = UtilTools.getBean(DGasMapper.class);
  462. DGas gas = gasMapper.selectByPrimaryKey(gid);
  463. dataModel.put("gas", gas);
  464. // 将数据模型传入模板进行处理
  465. StringWriter writer = new StringWriter();
  466. template.process(dataModel, writer);
  467. mkGassDirs(aid, jid);
  468. FileWriter fileWriter = new FileWriter(BPATH + "/" + aid + "/" + jid + "/" + "/gas" + "/MashGas.init");
  469. fileWriter.write(writer.toString());
  470. fileWriter.close();
  471. }
  472. public static void createGassRunsh(Integer aid, Integer jid) throws IOException, TemplateException {
  473. Configuration cfg = new Configuration(Configuration.VERSION_2_3_0);
  474. // 设置模板所在目录
  475. cfg.setClassForTemplateLoading(TemplateGenerator.class, "/templates");
  476. // 获取模板对象
  477. Template template = cfg.getTemplate("mashGasRunsh.ftl");
  478. // 定义数据模型(Map)
  479. Map<String, Object> dataModel = new HashMap<>();
  480. dataModel.put("casepath", BPATH + "/" + aid + "/" + jid + "/gas" + "/case");
  481. dataModel.put("gascontrol", BPATH + "/" + aid + "/" + jid + "/gas" + "/MashGas.control");
  482. dataModel.put("gasescapecontrol", BPATH + "/" + aid + "/" + jid + "/" + "/gas" + "/gasEscape.control");
  483. // 将数据模型传入模板进行处理
  484. StringWriter writer = new StringWriter();
  485. template.process(dataModel, writer);
  486. mkGassDirs(aid, jid);
  487. FileWriter fileWriter = new FileWriter(BPATH + "/" + aid + "/" + jid + "/" + "/gas" + "/run.sh");
  488. fileWriter.write(writer.toString());
  489. fileWriter.close();
  490. }
  491. public static void createGas1Control(Integer aid, Integer jid, String totaltime,
  492. String dt, String dx, String reportstep, String interactionstep,
  493. String cocodes) throws IOException, TemplateException {
  494. Configuration cfg = new Configuration(Configuration.VERSION_2_3_0);
  495. // 设置模板所在目录
  496. cfg.setClassForTemplateLoading(TemplateGenerator.class, "/templates");
  497. // 获取模板对象
  498. Template template = cfg.getTemplate("mashGas1Control.ftl");
  499. // 定义数据模型(Map)
  500. Map<String, Object> dataModel = new HashMap<>();
  501. //几何文件路径
  502. dataModel.put("geoFilePath", BPATH + "/" + aid + "/" + jid + "/Geometry");
  503. //fireinit 文件路径
  504. dataModel.put("initFilePath", BPATH + "/" + aid + "/" + jid + "/gas" + "/" + "MashGas.init");
  505. //midPath
  506. dataModel.put("monitorPath", BPATH + "/" + aid + "/" + jid + "/monitor.in");
  507. //midPath
  508. dataModel.put("midPath", BPATH + "/" + aid + "/" + jid + "/gas" + "/" + "/mid");
  509. //outPath
  510. dataModel.put("outPath", BPATH + "/" + aid + "/" + jid + "/gas" + "/" + "/out");
  511. //CPUS
  512. dataModel.put("cups", 4);
  513. dataModel.put("totaltime", totaltime);
  514. dataModel.put("dt", dt);
  515. dataModel.put("dx", dx);
  516. dataModel.put("reportstep", reportstep);
  517. dataModel.put("interactionstep", interactionstep);
  518. DBoundaryMapper dBoundaryMapper = UtilTools.getBean(DBoundaryMapper.class);
  519. DBoundarySQLBuilder sb = new DBoundarySQLBuilder();
  520. DBoundarySQLBuilder.Criteria sc = sb.createCriteria();
  521. sc.andAidEqualTo(aid);
  522. List<DBoundary> boundaries = dBoundaryMapper.selectByExample(sb);
  523. //边界数量
  524. dataModel.put("boundarynum", boundaries.size());
  525. //TODO
  526. dataModel.put("mashgasnumber", 1);
  527. //物理量
  528. if (StringUtil.isEmpty(cocodes)) {
  529. dataModel.put("conNum", 0);
  530. dataModel.put("cons", new ArrayList<>());
  531. } else {
  532. String[] codes = cocodes.split(",");
  533. List<String> concodeList = new ArrayList<>();
  534. for (String concode : codes
  535. ) {
  536. concodeList.add(concode);
  537. }
  538. DConMapper conMapper = UtilTools.getBean(DConMapper.class);
  539. DConSQLBuilder consb = new DConSQLBuilder();
  540. DConSQLBuilder.Criteria consc = consb.createCriteria();
  541. consc.andCodeIn(concodeList);
  542. List<DCon> cons = conMapper.selectByExample(consb);
  543. dataModel.put("conNum", cons.size());
  544. dataModel.put("cons", cons);
  545. }
  546. // 将数据模型传入模板进行处理
  547. StringWriter writer = new StringWriter();
  548. template.process(dataModel, writer);
  549. mkGassDirs(aid, jid);
  550. FileWriter fileWriter = new FileWriter(BPATH + "/" + aid + "/" + jid + "/" + "/gas" + "/MashGas.control");
  551. fileWriter.write(writer.toString());
  552. fileWriter.close();
  553. }
  554. public static void createGas1Init(Integer aid, Integer jid, Integer gid) throws IOException, TemplateException, BusinessException {
  555. Configuration cfg = new Configuration(Configuration.VERSION_2_3_0);
  556. // 设置模板所在目录
  557. cfg.setClassForTemplateLoading(TemplateGenerator.class, "/templates");
  558. // 获取模板对象
  559. Template template = cfg.getTemplate("mashGas1Init.ftl");
  560. // 定义数据模型(Map)
  561. Map<String, Object> dataModel = new HashMap<>();
  562. //边界
  563. DBoundaryMapper dBoundaryMapper = UtilTools.getBean(DBoundaryMapper.class);
  564. DBoundarySQLBuilder sb = new DBoundarySQLBuilder();
  565. DBoundarySQLBuilder.Criteria sc = sb.createCriteria();
  566. sc.andAidEqualTo(aid);
  567. List<DBoundary> boundaries = dBoundaryMapper.selectByExample(sb);
  568. dataModel.put("boundaries", boundaries);
  569. DGasMapper gasMapper = UtilTools.getBean(DGasMapper.class);
  570. DGas gas = gasMapper.selectByPrimaryKey(gid);
  571. dataModel.put("b", gas);
  572. // 将数据模型传入模板进行处理
  573. StringWriter writer = new StringWriter();
  574. template.process(dataModel, writer);
  575. mkGassDirs(aid, jid);
  576. FileWriter fileWriter = new FileWriter(BPATH + "/" + aid + "/" + jid + "/" + "/gas" + "/MashGas.init");
  577. fileWriter.write(writer.toString());
  578. fileWriter.close();
  579. }
  580. public static void createGass1Runsh(Integer aid, Integer jid) throws IOException, TemplateException {
  581. Configuration cfg = new Configuration(Configuration.VERSION_2_3_0);
  582. // 设置模板所在目录
  583. cfg.setClassForTemplateLoading(TemplateGenerator.class, "/templates");
  584. // 获取模板对象
  585. Template template = cfg.getTemplate("mashGas1Runsh.ftl");
  586. // 定义数据模型(Map)
  587. Map<String, Object> dataModel = new HashMap<>();
  588. dataModel.put("gascontrol", BPATH + "/" + aid + "/" + jid + "/gas" + "/MashGas.control");
  589. dataModel.put("gasescapecontrol", BPATH + "/" + aid + "/" + jid + "/" + "/gas" + "/gasEscape.control");
  590. // 将数据模型传入模板进行处理
  591. StringWriter writer = new StringWriter();
  592. template.process(dataModel, writer);
  593. mkGassDirs(aid, jid);
  594. FileWriter fileWriter = new FileWriter(BPATH + "/" + aid + "/" + jid + "/" + "/gas" + "/run.sh");
  595. fileWriter.write(writer.toString());
  596. fileWriter.close();
  597. }
  598. }