package com.miniframe.disaster.service; import com.miniframe.core.ext.UtilTools; import com.miniframe.model.system.DAccident; import com.miniframe.template.TemplateGenerator; import com.miniframe.tools.XIFileUtils; import com.miniframe.websocket.WebsocketEndPoint; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.concurrent.CompletableFuture; /** * 日志存储 */ public class LogService { /** * 创建文件 * @param accident * @return */ public static File createLog(DAccident accident){ String filePath =TemplateGenerator.BPATH+"/"+accident.getId()+"/"+accident.getJid()+"/"+accident.getStype().toLowerCase()+"/log.txt"; XIFileUtils.mkdir(TemplateGenerator.BPATH); XIFileUtils.mkdir(TemplateGenerator.BPATH+"/"+accident.getId()); XIFileUtils.mkdir(TemplateGenerator.BPATH+"/"+accident.getId()+"/"+accident.getJid()); XIFileUtils.mkdir(TemplateGenerator.BPATH+"/"+accident.getId()+"/"+accident.getJid()+"/"+accident.getStype().toLowerCase()); File file =new File(filePath); return file; } /** * 清空文件 * @param accident */ public static void clearLog(DAccident accident){ String filePath =TemplateGenerator.BPATH+"/"+accident.getId()+"/"+accident.getJid()+"/"+accident.getStype().toLowerCase()+"/log.txt"; FileWriter writer = null; try { writer = new FileWriter(filePath); writer.write(""); // 将内容设置为空字符串即可清空文件 writer.close(); } catch (IOException e) { e.printStackTrace(); } } /** * 文件内容追加 * @param */ public static void addLog(Integer aid,Integer jid,String stype,String log){ if(log.indexOf("求解")>=0&&log.indexOf("成功")>=0) { savelog(aid, jid, stype, "Calculating................................100%"); savelog(aid, jid, stype, log); }else{ if(stype.equals("gass")){//排除其他日志 gassAlllog(aid, jid, stype, log); if(log.indexOf("求解")>=0||log.indexOf("writting")>0){ savelog(aid, jid, stype, log); }else if(log.indexOf("EHCO LOG")>=0){ try{ log.replace(" ",""); String[] logt =log.split(":"); Double t = Double.parseDouble(logt[1]); savelog(aid, jid, stype, "Calculating................................"+t*100+"%"); }catch (Exception e){ } }else if(log.indexOf("Calculating")>=0){ try{ savelog(aid, jid, stype, log); }catch (Exception e){ } } }else{ savelog(aid, jid, stype, log); } } } private static void gassAlllog(Integer aid, Integer jid, String stype, String log) { String filePath = TemplateGenerator.BPATH+"/"+ aid +"/"+ jid +"/"+ stype.toLowerCase()+"/alllog.txt"; FileWriter writer = null; try { writer = new FileWriter(filePath,true); BufferedWriter bwriter = new BufferedWriter(writer); bwriter.write(log); // 将内容写入文件末尾 bwriter.newLine(); bwriter.close(); writer.close(); } catch (IOException e) { e.printStackTrace(); } } private static void savelog(Integer aid, Integer jid, String stype, String log) { String filePath =TemplateGenerator.BPATH+"/"+ aid +"/"+ jid +"/"+ stype.toLowerCase()+"/log.txt"; FileWriter writer = null; try { writer = new FileWriter(filePath,true); BufferedWriter bwriter = new BufferedWriter(writer); bwriter.write(log); // 将内容写入文件末尾 bwriter.newLine(); bwriter.close(); writer.close(); } catch (IOException e) { e.printStackTrace(); } CompletableFuture cf = CompletableFuture.supplyAsync(()->{ WebsocketEndPoint webs = (WebsocketEndPoint) UtilTools.getBean("websocketEndPoint"); webs.sendMessageToUser(String.valueOf(aid), log); return null; }); } /** * 文件内容追加 * @param */ public static void addLog(DAccident accident,String log){ addLog(accident.getId(),accident.getJid(),accident.getStype(),log); } }