| | |
| | | public String downloadDbReq(UserEntity ue, DownloadReqEntity dr) throws Exception { |
| | | Map<String, List<?>> dataMap = new HashMap<>(2); |
| | | Map<String, List<AttachEntity>> annexMap = new HashMap<>(2); |
| | | |
| | | queryData(dr, dataMap, annexMap); |
| | | if (dataMap.size() == 0) { |
| | | return null; |
| | |
| | | |
| | | String tempName = StringHelper.YMDHMS2_FORMAT.format(new Date()); |
| | | String tempPath = pathHelper.getTempPath(tempName); |
| | | String filePath = tempPath + File.separator + "tabs.gdb"; |
| | | String gdbPath = tempPath + File.separator + "tabs.gdb"; |
| | | String annexPath = tempPath + File.separator + "annex"; |
| | | |
| | | File file = new File(filePath); |
| | | if (file.exists() && file.isDirectory()) { |
| | | FileHelper.deleteDir(filePath); |
| | | File gdbFile = new File(gdbPath); |
| | | if (gdbFile.exists() && gdbFile.isDirectory()) { |
| | | FileHelper.deleteDir(gdbPath); |
| | | } |
| | | GdbHelper.createGdb(filePath, dataMap); |
| | | GdbHelper.createGdb(gdbPath, dataMap); |
| | | |
| | | File annexFile = new File(annexPath); |
| | | if (!annexFile.exists() || !annexFile.isDirectory()) { |
| | | annexFile.mkdirs(); |
| | | } |
| | | createAnnex(annexPath, annexMap); |
| | | |
| | | String zipFile = pathHelper.getDownloadFullPath() + File.separator + tempName + ".gdb.zip"; |
| | | ZipFile zip = Zip4jHelper.createZipFile(zipFile, dr.getPwd()); |
| | | ZipParameters params = Zip4jHelper.getZipParams(true); |
| | | addZipFiles(zip, params, file.listFiles()); |
| | | zip.addFolder(new File(gdbPath), params); |
| | | zip.addFolder(new File(annexPath), params); |
| | | |
| | | String dbPwd = Md5Helper.reverse(Md5Helper.generate(dr.getPwd())); |
| | | DownloadEntity downloadEntity = getDownloadEntity(ue, zipFile, dbPwd); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 创建附件 |
| | | */ |
| | | private void createAnnex(String annexPath, Map<String, List<AttachEntity>> annexMap) { |
| | | if (annexMap.size() == 0) { |
| | | return; |
| | | } |
| | | |
| | | String uploadPath = pathHelper.getConfig().getUploadPath(); |
| | | for (String key : annexMap.keySet()) { |
| | | String targetPath = annexPath + File.separator + key; |
| | | File targetFile = new File(targetPath); |
| | | if (!targetFile.exists() || !targetFile.isDirectory()) { |
| | | targetFile.mkdirs(); |
| | | } |
| | | |
| | | for (AttachEntity ae : annexMap.get(key)) { |
| | | try { |
| | | File srcFile = new File(uploadPath + File.separator + ae.getPath()); |
| | | if (!srcFile.exists() || srcFile.isDirectory()) { |
| | | continue; |
| | | } |
| | | |
| | | File destFile = new File(targetPath + File.separator + ae.getName()); |
| | | if (destFile.exists() && !destFile.isDirectory()) { |
| | | continue; |
| | | } |
| | | |
| | | FileHelper.copyFile(srcFile, destFile); |
| | | } catch (Exception ex) { |
| | | log.error(ex.getMessage(), ex); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取下载实体类 |
| | | */ |
| | | private DownloadEntity getDownloadEntity(UserEntity ue, String file, String pwd) { |
| | |
| | | // de.setGeom(null) |
| | | |
| | | return de; |
| | | } |
| | | |
| | | /** |
| | | * 打包数据 |
| | | */ |
| | | private String zipData(UserEntity ue, Map<String, List<?>> map, List<AttachEntity> annex, String pwd) throws Exception { |
| | | String tempName = StringHelper.YMDHMS2_FORMAT.format(new Date()); |
| | | String tempPath = pathHelper.getTempPath(tempName); |
| | | String gdbPath = tempPath + File.separator + tempName + ".gdb"; |
| | | String annexPath = tempPath + File.separator + "annex"; |
| | | |
| | | File file = new File(gdbPath); |
| | | if (file.exists() && file.isDirectory()) { |
| | | FileHelper.deleteDir(gdbPath); |
| | | } |
| | | file = new File(annexPath); |
| | | if (!file.exists() || !file.isDirectory()) { |
| | | file.mkdirs(); |
| | | } |
| | | |
| | | GdbHelper.createGdb(gdbPath, map); |
| | | createAnnex(annexPath, annex); |
| | | |
| | | String zipName = tempName + ".gdb.zip"; |
| | | String zipFile = pathHelper.getDownloadFullPath() + File.separator + zipName; |
| | | |
| | | ZipFile zip = Zip4jHelper.createZipFile(zipFile, pwd); |
| | | ZipParameters params = Zip4jHelper.getZipParams(true); |
| | | // addZipFiles(zip, params, file.listFiles()) |
| | | zip.addFolder(new File(gdbPath), params); |
| | | zip.addFolder(new File(annexPath), params); |
| | | |
| | | String dbPwd = Md5Helper.reverse(Md5Helper.generate(pwd)); |
| | | DownloadEntity downloadEntity = getDownloadEntity(ue, zipFile, dbPwd); |
| | | int rows = downloadMapper.insert(downloadEntity); |
| | | |
| | | return rows > 0 ? downloadEntity.getGuid() : null; |
| | | } |
| | | |
| | | /** |
| | |
| | | for (int i = 0, c = list.size(); i < c; i++) { |
| | | String str = String.format("%s like '%s%%'", field, list.get(i)); |
| | | list.set(i, str); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 添加Zip文件 |
| | | */ |
| | | private void addZipFiles(ZipFile zip, ZipParameters params, File[] files) { |
| | | if (null == files || files.length == 0) { |
| | | return; |
| | | } |
| | | |
| | | for (File f : files) { |
| | | try { |
| | | zip.addFile(f, params); |
| | | } catch (Exception ex) { |
| | | log.error(ex.getMessage(), ex); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取查询附件条件 |
| | | */ |
| | | private String getAnnexFilter(boolean flag, List<?> list) { |
| | | if (flag) { |
| | | return null; |
| | | } |
| | | |
| | | List<Integer> gids = new ArrayList<>(); |
| | | for (Object obj : list) { |
| | | BaseEntity be = (BaseEntity) obj; |
| | | gids.add(be.getGid()); |
| | | } |
| | | |
| | | return StringHelper.join(gids, ","); |
| | | } |
| | | |
| | | /** |
| | | * 添加附件文件 |
| | | */ |
| | | private void createAnnex(String targetPath, List<AttachEntity> list) { |
| | | if (null == list || list.isEmpty()) { |
| | | return; |
| | | } |
| | | |
| | | int i = 1; |
| | | String uploadPath = pathHelper.getConfig().getUploadPath(); |
| | | for (AttachEntity attach : list) { |
| | | try { |
| | | File srcFile = new File(uploadPath + File.separator + attach.getPath()); |
| | | if (!srcFile.exists() || srcFile.isDirectory()) { |
| | | continue; |
| | | } |
| | | |
| | | File destFile = new File(targetPath + File.separator + i++ + "_" + attach.getName()); |
| | | FileHelper.copyFile(srcFile, destFile); |
| | | } catch (Exception ex) { |
| | | log.error(ex.getMessage(), ex); |
| | | } |
| | | } |
| | | } |
| | | } |