| | |
| | | package com.lf.server.service.sys; |
| | | |
| | | import com.lf.server.entity.all.StaticData; |
| | | import com.lf.server.entity.ctrl.CountEntity; |
| | | import com.lf.server.entity.data.DownloadEntity; |
| | | import com.lf.server.entity.sys.AttachEntity; |
| | | import com.lf.server.entity.sys.ReportEntity; |
| | | import com.lf.server.helper.StringHelper; |
| | | import com.lf.server.helper.WordHelper; |
| | | import com.lf.server.entity.sys.UserEntity; |
| | | import com.lf.server.helper.*; |
| | | import com.lf.server.mapper.sys.ReportMapper; |
| | | import com.lf.server.service.data.DownloadService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.File; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * 报告模板 |
| | |
| | | @Autowired |
| | | ReportMapper reportMapper; |
| | | |
| | | @Override |
| | | public Integer selectCount(String name) { |
| | | name = StringHelper.getLikeStr(name); |
| | | @Autowired |
| | | AttachService attachService; |
| | | |
| | | return reportMapper.selectCount(name); |
| | | @Autowired |
| | | PathHelper pathHelper; |
| | | |
| | | @Autowired |
| | | DownloadService downloadService; |
| | | |
| | | @Override |
| | | public Integer selectCount(String name, String code) { |
| | | name = StringHelper.getLikeUpperStr(name); |
| | | |
| | | return reportMapper.selectCount(name, code); |
| | | } |
| | | |
| | | @Override |
| | | public List<ReportEntity> selectByPage(String name, Integer limit, Integer offset) { |
| | | name = StringHelper.getLikeStr(name); |
| | | public List<ReportEntity> selectByPage(String name, String code, Integer limit, Integer offset) { |
| | | name = StringHelper.getLikeUpperStr(name); |
| | | |
| | | return reportMapper.selectByPage(name, limit, offset); |
| | | return reportMapper.selectByPage(name, code, limit, offset); |
| | | } |
| | | |
| | | @Override |
| | |
| | | } |
| | | |
| | | @Override |
| | | public List<CountEntity> countSizesByType() { |
| | | return reportMapper.countSizesByType(); |
| | | } |
| | | |
| | | @Override |
| | | public List<CountEntity> countServices() { |
| | | return reportMapper.countServices(); |
| | | } |
| | |
| | | return reportMapper.countOperates(); |
| | | } |
| | | |
| | | @Override |
| | | public List<CountEntity> countSizesByPrj() { |
| | | return reportMapper.countSizesByPrj(); |
| | | } |
| | | |
| | | @Override |
| | | public List<CountEntity> countExplorationPoints() { |
| | | return reportMapper.countExplorationPoints(); |
| | | } |
| | | |
| | | /** |
| | | * 创建报告 |
| | | */ |
| | | public void createReport(UserEntity ue, 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.getDownloadFullPath() + 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; |
| | | } |
| | | |
| | | DownloadEntity de = getDownloadEntity(ue, target); |
| | | int rows = downloadService.insert(de); |
| | | if (rows > 0) { |
| | | WebHelper.download(target, targetName, res); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 生成报告 |
| | | */ |
| | | private void generateReport(String source, String target, ReportEntity re) { |
| | | if (StaticData.S1.equals(re.getType())) { |
| | | switch (re.getCode()) { |
| | | case "countOperates": |
| | | createCountOperatesWord(source, target); |
| | | break; |
| | | case "countSizes": |
| | | createCountSizesWord(source, target); |
| | | break; |
| | | case "countServices": |
| | | createCountServicesWord(source, target); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | } else { |
| | | switch (re.getCode()) { |
| | | case "countOperates": |
| | | createCountOperatesExcel(source, target); |
| | | break; |
| | | case "countSizes": |
| | | createCountSizesExcel(source, target); |
| | | break; |
| | | case "countServices": |
| | | createCountServicesExcel(source, target); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 创建 用户流量统计 Word |
| | | */ |
| | | public void createCountSizesWord() { |
| | | public void createCountOperatesWord(String source, String target) { |
| | | List<CountEntity> list = countOperates(); |
| | | if (null == list || list.isEmpty()) { |
| | | return; |
| | | } |
| | | |
| | | int rows = 1; |
| | | String inputFile = "D:\\LF\\用户流量统计.docx"; |
| | | String outPutFile = "D:\\LF\\用户流量统计_new.docx"; |
| | | |
| | | ArrayList<String[]> addList = new ArrayList<>(); |
| | | for (CountEntity ce : list) { |
| | | String[] strs = new String[]{"" + rows++, ce.getM1(), ce.getM2(), ce.getCount().toString()}; |
| | | addList.add(strs); |
| | | } |
| | | |
| | | WordHelper.generateWord(inputFile, outPutFile, null, addList); |
| | | WordHelper.generateWord(source, target, null, addList); |
| | | } |
| | | |
| | | /** |
| | | * 创建 服务调用量统计 Word |
| | | */ |
| | | public void createCountServicesWord() { |
| | | public void createCountServicesWord(String source, String target) { |
| | | List<CountEntity> list = countServices(); |
| | | if (null == list || list.isEmpty()) { |
| | | return; |
| | | } |
| | | |
| | | int rows = 1; |
| | | String inputFile = "D:\\LF\\服务调用量统计.docx"; |
| | | String outPutFile = "D:\\LF\\服务调用量统计_new.docx"; |
| | | |
| | | ArrayList<String[]> addList = new ArrayList<>(); |
| | | for (CountEntity ce : list) { |
| | | String[] strs = new String[]{"" + rows++, ce.getM1(), ce.getCount().toString()}; |
| | | addList.add(strs); |
| | | } |
| | | |
| | | WordHelper.generateWord(inputFile, outPutFile, null, addList); |
| | | WordHelper.generateWord(source, target, null, addList); |
| | | } |
| | | |
| | | /** |
| | | * 创建 用户流量统计 Word |
| | | * 创建 数据量统计 Word |
| | | */ |
| | | public void createCountOperatesWord() { |
| | | public void createCountSizesWord(String source, String target) { |
| | | List<CountEntity> list = countSizes(); |
| | | if (null == list || list.isEmpty()) { |
| | | return; |
| | | } |
| | | |
| | | int rows = 1; |
| | | ArrayList<String[]> 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); |
| | | } |
| | | |
| | | /** |
| | | * 创建 用户流量统计 Excel |
| | | */ |
| | | public void createCountOperatesExcel(String source, String target) { |
| | | List<CountEntity> list = countOperates(); |
| | | if (null == list || list.isEmpty()) { |
| | | return; |
| | | } |
| | | |
| | | int rows = 1; |
| | | String inputFile = "D:\\LF\\服务调用量统计.docx"; |
| | | String outPutFile = "D:\\LF\\服务调用量统计_new.docx"; |
| | | |
| | | ArrayList<String[]> addList = new ArrayList<>(); |
| | | for (CountEntity ce : list) { |
| | | String[] strs = new String[]{"" + rows++, ce.getM1(), ce.getCount().toString()}; |
| | | addList.add(strs); |
| | | ce.setNo(rows++); |
| | | } |
| | | |
| | | WordHelper.generateWord(inputFile, outPutFile, null, addList); |
| | | Map<String, List<CountEntity>> map = new HashMap<>(1); |
| | | map.put("data", list); |
| | | |
| | | ExcelHelper.writeToTemplate(source, target, map); |
| | | } |
| | | |
| | | /** |
| | | * 创建 服务调用量统计 Excel |
| | | */ |
| | | public void createCountServicesExcel(String source, String target) { |
| | | List<CountEntity> list = countServices(); |
| | | if (null == list || list.isEmpty()) { |
| | | return; |
| | | } |
| | | |
| | | int rows = 1; |
| | | for (CountEntity ce : list) { |
| | | ce.setNo(rows++); |
| | | } |
| | | |
| | | Map<String, List<CountEntity>> map = new HashMap<>(1); |
| | | map.put("data", list); |
| | | |
| | | ExcelHelper.writeToTemplate(source, target, map); |
| | | } |
| | | |
| | | /** |
| | | * 创建 数据量统计 Excel |
| | | */ |
| | | public void createCountSizesExcel(String source, String target) { |
| | | List<CountEntity> list = countSizes(); |
| | | if (null == list || list.isEmpty()) { |
| | | return; |
| | | } |
| | | |
| | | int rows = 1; |
| | | for (CountEntity ce : list) { |
| | | ce.setNo(rows++); |
| | | ce.setM2(FileHelper.getSizes(ce.getSizes())); |
| | | } |
| | | |
| | | Map<String, List<CountEntity>> map = new HashMap<>(1); |
| | | map.put("data", list); |
| | | |
| | | ExcelHelper.writeToTemplate(source, target, map); |
| | | } |
| | | |
| | | /** |
| | | * 获取下载实体类 |
| | | */ |
| | | private DownloadEntity getDownloadEntity(UserEntity ue, String file) { |
| | | DownloadEntity de = new DownloadEntity(); |
| | | de.setName(FileHelper.getFileName(file)); |
| | | // 1-Shp文件,2-专题图,3-元数据,4-业务数据,5-管道分析,6-统计报告,7-附件文件,8-瓦片文件 |
| | | de.setType(6); |
| | | de.setSizes(FileHelper.sizeToMb(new File(file).length())); |
| | | de.setDepid(ue.getDepid()); |
| | | de.setDcount(1); |
| | | de.setPwd(null); |
| | | de.setUrl(FileHelper.getRelativePath(file)); |
| | | de.setDescr("统计报告"); |
| | | de.setGuid(FileHelper.getFileMd5(file)); |
| | | de.setCreateUser(ue.getId()); |
| | | // de.setGeom(null) |
| | | |
| | | return de; |
| | | } |
| | | } |