LogService.java 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package com.miniframe.disaster.service;
  2. import com.miniframe.core.ext.UtilTools;
  3. import com.miniframe.model.system.DAccident;
  4. import com.miniframe.template.TemplateGenerator;
  5. import com.miniframe.tools.XIFileUtils;
  6. import com.miniframe.websocket.WebsocketEndPoint;
  7. import java.io.BufferedWriter;
  8. import java.io.File;
  9. import java.io.FileWriter;
  10. import java.io.IOException;
  11. import java.util.concurrent.CompletableFuture;
  12. /**
  13. * 日志存储
  14. */
  15. public class LogService {
  16. /**
  17. * 创建文件
  18. * @param accident
  19. * @return
  20. */
  21. public static File createLog(DAccident accident){
  22. String filePath =TemplateGenerator.BPATH+"/"+accident.getId()+"/"+accident.getJid()+"/"+accident.getStype().toLowerCase()+"/log.txt";
  23. XIFileUtils.mkdir(TemplateGenerator.BPATH);
  24. XIFileUtils.mkdir(TemplateGenerator.BPATH+"/"+accident.getId());
  25. XIFileUtils.mkdir(TemplateGenerator.BPATH+"/"+accident.getId()+"/"+accident.getJid());
  26. XIFileUtils.mkdir(TemplateGenerator.BPATH+"/"+accident.getId()+"/"+accident.getJid()+"/"+accident.getStype().toLowerCase());
  27. File file =new File(filePath);
  28. return file;
  29. }
  30. /**
  31. * 清空文件
  32. * @param accident
  33. */
  34. public static void clearLog(DAccident accident){
  35. String filePath =TemplateGenerator.BPATH+"/"+accident.getId()+"/"+accident.getJid()+"/"+accident.getStype().toLowerCase()+"/log.txt";
  36. FileWriter writer = null;
  37. try {
  38. writer = new FileWriter(filePath);
  39. writer.write(""); // 将内容设置为空字符串即可清空文件
  40. writer.close();
  41. } catch (IOException e) {
  42. e.printStackTrace();
  43. }
  44. }
  45. /**
  46. * 文件内容追加
  47. * @param
  48. */
  49. public static void addLog(Integer aid,Integer jid,String stype,String log){
  50. if(log.indexOf("求解")>=0&&log.indexOf("成功")>=0) {
  51. savelog(aid, jid, stype, "Calculating................................100%");
  52. savelog(aid, jid, stype, log);
  53. }else{
  54. if(stype.equals("gass")){//排除其他日志
  55. gassAlllog(aid, jid, stype, log);
  56. if(log.indexOf("求解")>=0||log.indexOf("writting")>0){
  57. savelog(aid, jid, stype, log);
  58. }else if(log.indexOf("EHCO LOG")>=0){
  59. try{
  60. log.replace(" ","");
  61. String[] logt =log.split(":");
  62. Double t = Double.parseDouble(logt[1]);
  63. savelog(aid, jid, stype, "Calculating................................"+t*100+"%");
  64. }catch (Exception e){
  65. }
  66. }else if(log.indexOf("Calculating")>=0){
  67. try{
  68. savelog(aid, jid, stype, log);
  69. }catch (Exception e){
  70. }
  71. }
  72. }else{
  73. savelog(aid, jid, stype, log);
  74. }
  75. }
  76. }
  77. private static void gassAlllog(Integer aid, Integer jid, String stype, String log) {
  78. String filePath = TemplateGenerator.BPATH+"/"+ aid +"/"+ jid +"/"+ stype.toLowerCase()+"/alllog.txt";
  79. FileWriter writer = null;
  80. try {
  81. writer = new FileWriter(filePath,true);
  82. BufferedWriter bwriter = new BufferedWriter(writer);
  83. bwriter.write(log); // 将内容写入文件末尾
  84. bwriter.newLine();
  85. bwriter.close();
  86. writer.close();
  87. } catch (IOException e) {
  88. e.printStackTrace();
  89. }
  90. }
  91. private static void savelog(Integer aid, Integer jid, String stype, String log) {
  92. String filePath =TemplateGenerator.BPATH+"/"+ aid +"/"+ jid +"/"+ stype.toLowerCase()+"/log.txt";
  93. FileWriter writer = null;
  94. try {
  95. writer = new FileWriter(filePath,true);
  96. BufferedWriter bwriter = new BufferedWriter(writer);
  97. bwriter.write(log); // 将内容写入文件末尾
  98. bwriter.newLine();
  99. bwriter.close();
  100. writer.close();
  101. } catch (IOException e) {
  102. e.printStackTrace();
  103. }
  104. CompletableFuture<Void> cf = CompletableFuture.supplyAsync(()->{
  105. WebsocketEndPoint webs = (WebsocketEndPoint) UtilTools.getBean("websocketEndPoint");
  106. webs.sendMessageToUser(String.valueOf(aid), log);
  107. return null;
  108. });
  109. }
  110. /**
  111. * 文件内容追加
  112. * @param
  113. */
  114. public static void addLog(DAccident accident,String log){
  115. addLog(accident.getId(),accident.getJid(),accident.getStype(),log);
  116. }
  117. }