package com.zt.life.modules.mainPart.sys.service; import com.zt.common.exception.RenException; import com.zt.common.service.BaseService; import com.zt.life.export.service.DownloadService; import com.zt.life.modules.mainPart.sys.dao.SysMysqlDao; import com.zt.life.modules.mainPart.sys.model.ColumnsTemp; import com.zt.life.modules.mainPart.sys.model.SysMysql; import org.apache.commons.io.input.ReversedLinesFileReader; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.BufferedOutputStream; import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @Service public class SysMysqlService extends BaseService { @Value("${zt.oss.log-path}") private String logPath; public SysMysql check(String sql) { try { SysMysql sysMysql = new SysMysql(); List> data = baseDao.check(sql); List tableColumns = new ArrayList<>(); for (Map map : data) { ColumnsTemp obj = null; for (Map.Entry entry : map.entrySet()) { obj = new ColumnsTemp(); obj.setProp(entry.getKey()); obj.setLabel(entry.getKey()); tableColumns.add(obj); } break; } sysMysql.setTableColumns(tableColumns); sysMysql.setTableData(data); return sysMysql; } catch (Exception e) { e.printStackTrace(); throw new RenException(String.valueOf(e)); } } public void execute(String sql) { try { baseDao.execute(sql); } catch (Exception e) { e.printStackTrace(); throw new RenException(String.valueOf(e)); } } public void logDownload(HttpServletRequest request, HttpServletResponse response) { int n = 300; // 要读取的行数 try { File file = new File(logPath); ReversedLinesFileReader reader = new ReversedLinesFileReader(file); List lines = new ArrayList<>(); String line; while ((line = reader.readLine()) != null) { lines.add(line); if (lines.size() == n) { break; } } reader.close(); Collections.reverse(lines); String result = lines.stream().collect(Collectors.joining(", ")); String formattedResult = result.replace(", ", "\n"); this.writeToTxt(request, response, formattedResult, "日志文件"); } catch (IOException e) { e.printStackTrace(); } } public void writeToTxt(HttpServletRequest request, HttpServletResponse response, String jsonString, String name) {//设置响应的字符集 //设置响应内容的类型 BufferedOutputStream buff = null; ServletOutputStream outStr = null; try { response.setContentType("text/plain;charset=UTF-8"); String encodedFilename = DownloadService.getNameEncoder(request, name + "xml.txt"); response.addHeader("Content-Disposition", "attachment;filename=" + encodedFilename); outStr = response.getOutputStream(); buff = new BufferedOutputStream(outStr); buff.write(jsonString.getBytes("UTF-8")); buff.flush(); buff.close(); } catch (Exception e) { e.printStackTrace(); } finally { try { buff.close(); outStr.close(); } catch (Exception e) { e.printStackTrace(); } } } }