package com.lf.server.service.sys; import com.lf.server.entity.ctrl.CountEntity; import com.lf.server.entity.sys.AttachEntity; import com.lf.server.entity.sys.ReportEntity; import com.lf.server.helper.*; import com.lf.server.mapper.sys.ReportMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * 报告模板 * @author WWW */ @Service public class ReportService implements ReportMapper { @Autowired ReportMapper reportMapper; @Autowired AttachService attachService; @Autowired PathHelper pathHelper; @Override public Integer selectCount(String name) { name = StringHelper.getLikeStr(name); return reportMapper.selectCount(name); } @Override public List selectByPage(String name, Integer limit, Integer offset) { name = StringHelper.getLikeStr(name); return reportMapper.selectByPage(name, limit, offset); } @Override public List selectAll() { return reportMapper.selectAll(); } @Override public ReportEntity selectById(int id) { return reportMapper.selectById(id); } @Override public Integer insert(ReportEntity entity) { return reportMapper.insert(entity); } @Override public Integer inserts(List list) { return reportMapper.inserts(list); } @Override public Integer delete(int id) { return reportMapper.delete(id); } @Override public Integer deletes(List ids) { return reportMapper.deletes(ids); } @Override public Integer update(ReportEntity entity) { return reportMapper.update(entity); } @Override public Integer updates(List list) { return reportMapper.updates(list); } @Override public List countSizes() { return reportMapper.countSizes(); } @Override public List countServices() { return reportMapper.countServices(); } @Override public List countOperates() { return reportMapper.countOperates(); } /** * 创建报告 */ public void createReport(ReportEntity re, HttpServletResponse res) throws Exception { AttachEntity ae = attachService.selectByGuid(re.getGuid()); if (null == ae) { return; } String source = pathHelper.getConfig().getUploadPath() + File.separator + ae.getPath(); String targetName = StringHelper.YMDHMS2_FORMAT.format(new Date()) + FileHelper.getExtension(ae.getName()); String target = pathHelper.getShareFullPath() + File.separator + targetName; File sourceFile = new File(source); if (!sourceFile.exists() || sourceFile.isDirectory()) { return; } generateReport(source, target, re); File targetFile = new File(target); if (!targetFile.exists() || sourceFile.isDirectory()) { return; } WebHelper.download(target, targetName, res); } /** * 生成报告 */ private void generateReport(String source, String target, ReportEntity re) { if ("1".equals(re.getType())) { switch (re.getCode()) { case "countOperates ": createCountOperatesWord(source, target); break; case "countSizes": createCountSizesWord(source, target); break; default: createCountServicesWord(source, target); break; } } else { // } } /** * 创建 用户流量统计 Word */ public void createCountOperatesWord(String source, String target) { List list = countOperates(); if (null == list || list.isEmpty()) { return; } int rows = 1; ArrayList addList = new ArrayList<>(); for (CountEntity ce : list) { String[] strs = new String[]{"" + rows++, ce.getM1(), ce.getM2(), ce.getCount().toString()}; addList.add(strs); } WordHelper.generateWord(source, target, null, addList); } /** * 创建 服务调用量统计 Word */ public void createCountServicesWord(String source, String target) { List list = countServices(); if (null == list || list.isEmpty()) { return; } int rows = 1; ArrayList addList = new ArrayList<>(); for (CountEntity ce : list) { String[] strs = new String[]{"" + rows++, ce.getM1(), ce.getCount().toString()}; addList.add(strs); } WordHelper.generateWord(source, target, null, addList); } /** * 创建 数据量统计 Word */ public void createCountSizesWord(String source, String target) { List list = countSizes(); if (null == list || list.isEmpty()) { return; } int rows = 1; ArrayList addList = new ArrayList<>(); for (CountEntity ce : list) { String[] strs = new String[]{"" + rows++, ce.getM1(), FileHelper.getSizes(ce.getSizes())}; addList.add(strs); } WordHelper.generateWord(source, target, null, addList); } }