| | |
| | | import com.lf.server.helper.*; |
| | | import com.lf.server.mapper.sys.ReportMapper; |
| | | import com.lf.server.service.all.RedisService; |
| | | import com.lf.server.service.data.DirService; |
| | | import com.lf.server.service.data.DownloadService; |
| | | import org.apache.commons.logging.Log; |
| | | import org.apache.commons.logging.LogFactory; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.StringUtils; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletResponse; |
| | |
| | | * @date 2024-03-06 |
| | | */ |
| | | @Service |
| | | @SuppressWarnings("ALL") |
| | | public class ReportService implements ReportMapper { |
| | | @Value("${sys.turfServer}") |
| | | private String turfServer; |
| | |
| | | |
| | | @Resource |
| | | RedisService redisService; |
| | | |
| | | @Resource |
| | | DirService dirService; |
| | | |
| | | private final static Log log = LogFactory.getLog(ReportService.class); |
| | | |
| | |
| | | return reportMapper.countWaterDamageByPrj(); |
| | | } |
| | | |
| | | @Override |
| | | public List<CountEntity> countDlgAreaByPrj() { |
| | | return reportMapper.countDlgAreaByPrj(); |
| | | } |
| | | |
| | | @Override |
| | | public List<CountEntity> countDomAreaByPrj() { |
| | | return reportMapper.countDomAreaByPrj(); |
| | | } |
| | | |
| | | @Override |
| | | public List<CountEntity> countLineLength() { |
| | | return reportMapper.countLineLength(); |
| | | } |
| | | |
| | | @Override |
| | | public List<CountEntity> countExplorationPointByPrj() { |
| | | return reportMapper.countExplorationPointByPrj(); |
| | | } |
| | | |
| | | @Override |
| | | public List<CountEntity> countGeoModelAreaByPrj() { |
| | | return reportMapper.countGeoModelAreaByPrj(); |
| | | } |
| | | |
| | | @Override |
| | | public List<CountEntity> countGeologicHazardByPrj() { |
| | | return reportMapper.countGeologicHazardByPrj(); |
| | | } |
| | | |
| | | @Override |
| | | public List<CountEntity> countVariousDataByPrj(String code) { |
| | | code = StringHelper.getRightLike(code); |
| | | return reportMapper.countVariousDataByPrj(code); |
| | | } |
| | | |
| | | /** |
| | | * 统计钻孔点面积 |
| | | */ |
| | |
| | | /** |
| | | * 创建报告 |
| | | */ |
| | | public void createReport(UserEntity ue, ReportEntity re, HttpServletResponse res) throws Exception { |
| | | public void createReport(UserEntity ue, ReportEntity re, String code, HttpServletResponse res) throws Exception { |
| | | AttachEntity ae = attachService.selectByGuid(re.getGuid()); |
| | | if (null == ae) { |
| | | return; |
| | |
| | | if (!sourceFile.exists() || sourceFile.isDirectory()) { |
| | | return; |
| | | } |
| | | generateReport(source, target, re); |
| | | generateReport(source, target, re, code); |
| | | |
| | | File targetFile = new File(target); |
| | | if (!targetFile.exists() || sourceFile.isDirectory()) { |
| | |
| | | /** |
| | | * 生成报告 |
| | | */ |
| | | private void generateReport(String source, String target, ReportEntity re) { |
| | | private void generateReport(String source, String target, ReportEntity re, String code) { |
| | | if (StaticData.S1.equals(re.getType())) { |
| | | createWord(source, target, re); |
| | | createWord(source, target, re, code); |
| | | } else { |
| | | createExcel(source, target, re); |
| | | createExcel(source, target, re, code); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 生成Word |
| | | */ |
| | | private void createWord(String source, String target, ReportEntity re) { |
| | | // |
| | | private void createWord(String source, String target, ReportEntity re, String code) { |
| | | List<CountEntity> list = selectListByMethodName(re, code); |
| | | list = processListData(list); |
| | | |
| | | Map<String, String> textMap = new HashMap<>(); |
| | | if (!StringHelper.isEmpty(code)) { |
| | | textMap.put("title", dirService.selectNameByCode(code)); |
| | | list.remove(list.size() - 1); |
| | | } |
| | | |
| | | List<String[]> tableList = new ArrayList<>(); |
| | | for (CountEntity ce : list) { |
| | | switch (re.getCode()) { |
| | | case "countSizesByType": |
| | | case "countSizesByPrj": |
| | | tableList.add(new String[]{"" + ce.getNo(), ce.getM1(), "" + ce.getCount(), ce.getM2()}); |
| | | break; |
| | | case "countSizes": |
| | | tableList.add(new String[]{"" + ce.getNo(), ce.getM1(), ce.getM2()}); |
| | | break; |
| | | case "countOperates": |
| | | tableList.add(new String[]{"" + ce.getNo(), ce.getM1(), ce.getM2(), "" + ce.getCount()}); |
| | | break; |
| | | case "countExplorationPoints": |
| | | tableList.add(new String[]{"" + ce.getNo(), ce.getM1(), "" + ce.getCount(), ce.getM2(), ce.getM3()}); |
| | | break; |
| | | case "countDemAreaByPrj": |
| | | case "countMptAreaByPrj": |
| | | case "countOsgbAreaByPrj": |
| | | case "countLasAreaByPrj": |
| | | case "countDlgAreaByPrj": |
| | | case "countDomAreaByPrj": |
| | | case "countGeoModelAreaByPrj": |
| | | tableList.add(new String[]{"" + ce.getNo(), ce.getM1(), ce.getM3()}); |
| | | break; |
| | | case "countLineLength": |
| | | tableList.add(new String[]{"" + ce.getNo(), ce.getM1(), "" + ce.getLen()}); |
| | | break; |
| | | case "countVariousDataByPrj": |
| | | String str = "count".equals(ce.getM2()) ? ce.getCount() + "个" : ("area".equals(ce.getM2()) ? ce.getM3() : ce.getLen() + "千米"); |
| | | tableList.add(new String[]{"" + ce.getNo(), ce.getM1(), str}); |
| | | break; |
| | | default: |
| | | tableList.add(new String[]{"" + ce.getNo(), ce.getM1(), "" + ce.getCount()}); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | WordHelper.generateWord(source, target, textMap, tableList); |
| | | } |
| | | |
| | | /** |
| | | * 生成Excel |
| | | */ |
| | | private void createExcel(String source, String target, ReportEntity re) { |
| | | List<CountEntity> list = selectListByMethodName(re); |
| | | if (null == list || list.isEmpty()) { |
| | | return; |
| | | private void createExcel(String source, String target, ReportEntity re, String code) { |
| | | List<CountEntity> list = selectListByMethodName(re, code); |
| | | list = processListData(list); |
| | | |
| | | Map<String, Object> map = new HashMap<>(); |
| | | if (!StringHelper.isEmpty(code)) { |
| | | map.put("title", dirService.selectNameByCode(code)); |
| | | list.remove(list.size() - 1); |
| | | for (CountEntity ce : list) { |
| | | ce.setM2("count".equals(ce.getM2()) ? ce.getCount() + "个" : ("area".equals(ce.getM2()) ? ce.getM3() : ce.getLen() + "千米")); |
| | | } |
| | | } |
| | | |
| | | int rows = 1, allCount = 0; |
| | | Double allSize = 0d, allArea = 0d; |
| | | Map<String, List<CountEntity>> listMap = new HashMap<>(1); |
| | | listMap.put("data", list); |
| | | |
| | | ExcelHelper.writeToTemplate(source, target, map, listMap); |
| | | } |
| | | |
| | | /** |
| | | * 处理列表数据 |
| | | */ |
| | | private List<CountEntity> processListData(List<CountEntity> list) { |
| | | if (null == list || list.isEmpty()) { |
| | | return null; |
| | | } |
| | | |
| | | int rows = 1; |
| | | long allCount = 0; |
| | | Double allSize = 0d, allArea = 0d, allLen = 0d; |
| | | for (CountEntity ce : list) { |
| | | ce.setNo(rows++); |
| | | ce.setM2(FileHelper.getSizes(ce.getSizes())); |
| | | if (StringUtils.isEmpty(ce.getM2())) { |
| | | ce.setM2(FileHelper.getSizes(ce.getSizes())); |
| | | } |
| | | ce.setM3(FileHelper.getSquareMeter(ce.getArea())); |
| | | allCount += ce.getCount(); |
| | | allSize += ce.getSizes(); |
| | | allArea += ce.getArea(); |
| | | allLen += ce.getLen(); |
| | | } |
| | | if (list.size() > 0) { |
| | | CountEntity ce = new CountEntity(); |
| | | ce.setNo(rows); |
| | | ce.setM1("总计"); |
| | | ce.setCount((long) allCount); |
| | | ce.setM2(FileHelper.getSizes(allSize)); |
| | | ce.setCount(allCount); |
| | | if (StringUtils.isEmpty(list.get(0).getM2())) { |
| | | ce.setM2(FileHelper.getSizes(allSize)); |
| | | } |
| | | ce.setM3(FileHelper.getSquareMeter(allArea)); |
| | | ce.setLen(allLen); |
| | | list.add(ce); |
| | | } |
| | | |
| | | Map<String, List<CountEntity>> map = new HashMap<>(1); |
| | | map.put("data", list); |
| | | |
| | | ExcelHelper.writeToTemplate(source, target, map); |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * 根据方法名称查询数据列表 |
| | | * |
| | | * @param re |
| | | * @return |
| | | */ |
| | | private List<CountEntity> selectListByMethodName(ReportEntity re) { |
| | | private List<CountEntity> selectListByMethodName(ReportEntity re, String code) { |
| | | List<CountEntity> list = null; |
| | | try { |
| | | Method method = ReportService.class.getDeclaredMethod(re.getCode(), ReportService.class); |
| | | Object obj = method.invoke(this); |
| | | Object obj; |
| | | if (null != code) { |
| | | Method method = ReportService.class.getDeclaredMethod(re.getCode(), String.class); |
| | | obj = method.invoke(this, code); |
| | | } else { |
| | | Method method = ReportService.class.getDeclaredMethod(re.getCode()); |
| | | obj = method.invoke(this); |
| | | } |
| | | if (obj instanceof List<?>) { |
| | | list = (List<CountEntity>) obj; |
| | | } |
| | |
| | | } |
| | | if (null == ce.getArea()) { |
| | | ce.setArea(0d); |
| | | } |
| | | if (null == ce.getLen()) { |
| | | ce.setLen(0d); |
| | | } |
| | | } |
| | | |
| | |
| | | // de.setGeom(null) |
| | | |
| | | return de; |
| | | } |
| | | |
| | | /** |
| | | * 创建 用户流量统计 Word |
| | | */ |
| | | public void createCountOperatesWord(String source, String target) { |
| | | List<CountEntity> list = countOperates(); |
| | | if (null == list || list.isEmpty()) { |
| | | return; |
| | | } |
| | | |
| | | int rows = 1, allCount = 0; |
| | | ArrayList<String[]> addList = new ArrayList<>(); |
| | | for (CountEntity ce : list) { |
| | | allCount += ce.getCount(); |
| | | String[] strs = new String[]{"" + rows++, ce.getM1(), ce.getM2(), ce.getCount().toString()}; |
| | | addList.add(strs); |
| | | } |
| | | if (addList.size() > 0) { |
| | | addList.add(new String[]{"" + rows, "总计", " ", "" + allCount}); |
| | | } |
| | | |
| | | WordHelper.generateWord(source, target, null, addList); |
| | | } |
| | | |
| | | /** |
| | | * 创建 数据量统计 Word |
| | | */ |
| | | public void createCountSizesWord(String source, String target) { |
| | | List<CountEntity> list = countSizes(); |
| | | if (null == list || list.isEmpty()) { |
| | | return; |
| | | } |
| | | |
| | | int rows = 1; |
| | | Double allSize = 0d; |
| | | ArrayList<String[]> addList = new ArrayList<>(); |
| | | for (CountEntity ce : list) { |
| | | allSize += ce.getSizes(); |
| | | String[] strs = new String[]{"" + rows++, ce.getM1(), FileHelper.getSizes(ce.getSizes())}; |
| | | addList.add(strs); |
| | | } |
| | | if (addList.size() > 0) { |
| | | addList.add(new String[]{"" + rows, "总计", FileHelper.getSizes(allSize)}); |
| | | } |
| | | |
| | | WordHelper.generateWord(source, target, null, addList); |
| | | } |
| | | |
| | | /** |
| | | * 创建 服务调用量统计 Word |
| | | */ |
| | | public void createCountServicesWord(String source, String target) { |
| | | List<CountEntity> list = countServices(); |
| | | if (null == list || list.isEmpty()) { |
| | | return; |
| | | } |
| | | |
| | | int rows = 1, allCount = 0; |
| | | ArrayList<String[]> addList = new ArrayList<>(); |
| | | for (CountEntity ce : list) { |
| | | allCount += ce.getCount(); |
| | | String[] strs = new String[]{"" + rows++, ce.getM1(), ce.getCount().toString()}; |
| | | addList.add(strs); |
| | | } |
| | | if (addList.size() > 0) { |
| | | addList.add(new String[]{"" + rows, "总计", "" + allCount}); |
| | | } |
| | | |
| | | WordHelper.generateWord(source, target, null, addList); |
| | | } |
| | | |
| | | /** |
| | | * 创建 钻孔数据统计 Word |
| | | */ |
| | | public void createCountExplorationPointsWord(String source, String target) { |
| | | List<CountEntity> list = countExplorationPoints(); |
| | | if (null == list || list.isEmpty()) { |
| | | return; |
| | | } |
| | | |
| | | int rows = 1, allCount = 0; |
| | | Double allSize = 0d, allArea = 0d; |
| | | ArrayList<String[]> addList = new ArrayList<>(); |
| | | for (CountEntity ce : list) { |
| | | allSize += ce.getSizes(); |
| | | allCount += ce.getCount(); |
| | | allArea += ce.getArea(); |
| | | String[] strs = new String[]{"" + rows++, ce.getM1(), "" + ce.getCount(), FileHelper.getSizes(ce.getSizes()), FileHelper.getSquareMeter(ce.getArea())}; |
| | | addList.add(strs); |
| | | } |
| | | if (addList.size() > 0) { |
| | | addList.add(new String[]{"" + rows, "总计", "" + allCount, FileHelper.getSizes(allSize), FileHelper.getSquareMeter(allArea)}); |
| | | } |
| | | |
| | | WordHelper.generateWord(source, target, null, addList); |
| | | } |
| | | |
| | | /** |
| | | * 创建 数据格式统计 Word |
| | | */ |
| | | public void createCountSizesByTypeWord(String source, String target) { |
| | | List<CountEntity> list = countSizesByType(); |
| | | if (null == list || list.isEmpty()) { |
| | | return; |
| | | } |
| | | |
| | | int rows = 1, allCount = 0; |
| | | Double allSize = 0d; |
| | | ArrayList<String[]> addList = new ArrayList<>(); |
| | | for (CountEntity ce : list) { |
| | | allSize += ce.getSizes(); |
| | | allCount += ce.getCount(); |
| | | String[] strs = new String[]{"" + rows++, ce.getM1(), "" + ce.getCount(), FileHelper.getSizes(ce.getSizes())}; |
| | | addList.add(strs); |
| | | } |
| | | if (addList.size() > 0) { |
| | | addList.add(new String[]{"" + rows, "总计", "" + allCount, FileHelper.getSizes(allSize)}); |
| | | } |
| | | |
| | | WordHelper.generateWord(source, target, null, addList); |
| | | } |
| | | |
| | | /** |
| | | * 创建 项目数据统计 Word |
| | | */ |
| | | public void createCountSizesByPrjWord(String source, String target) { |
| | | List<CountEntity> list = countSizesByPrj(); |
| | | if (null == list || list.isEmpty()) { |
| | | return; |
| | | } |
| | | |
| | | int rows = 1, allCount = 0; |
| | | Double allSize = 0d; |
| | | ArrayList<String[]> addList = new ArrayList<>(); |
| | | for (CountEntity ce : list) { |
| | | allSize += ce.getSizes(); |
| | | allCount += ce.getCount(); |
| | | String[] strs = new String[]{"" + rows++, ce.getM1(), "" + ce.getCount(), FileHelper.getSizes(ce.getSizes())}; |
| | | addList.add(strs); |
| | | } |
| | | if (addList.size() > 0) { |
| | | addList.add(new String[]{"" + rows, "总计", "" + allCount, FileHelper.getSizes(allSize)}); |
| | | } |
| | | |
| | | WordHelper.generateWord(source, target, null, addList); |
| | | } |
| | | } |