| | |
| | | import net.lingala.zip4j.ZipFile; |
| | | import net.lingala.zip4j.model.FileHeader; |
| | | import net.lingala.zip4j.model.ZipParameters; |
| | | import org.apache.commons.io.FileUtils; |
| | | import org.apache.commons.logging.Log; |
| | | import org.apache.commons.logging.LogFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | |
| | | private static String tabs = "''"; |
| | | |
| | | private final static Map<String, String> ATTACH_TABS = new HashMap<>(); |
| | | public final static Map<String, String> ATTACH_TABS = new HashMap<>(); |
| | | |
| | | private final static Log log = LogFactory.getLog(UploadAttachService.class); |
| | | |
| | |
| | | return 0; |
| | | } |
| | | |
| | | Field field = getAnnexField(list.get(0), meta); |
| | | Field field = getAnnexField(list.get(0), meta.getTab()); |
| | | String folder = meta.getName().split("\\.")[0].trim().toLowerCase() + File.separator; |
| | | |
| | | int rows = 0; |
| | | for (Object obj : list) { |
| | | String name = getAnnexName(obj, field); |
| | | if (StringHelper.isEmpty(name)) { |
| | | String[] names = getNames(getAnnexName(obj, field)); |
| | | if (null == names || names.length == 0) { |
| | | continue; |
| | | } |
| | | |
| | | String file = findAnnexFile(name, folder, files); |
| | | if (null == file) { |
| | | continue; |
| | | } |
| | | for (String name : names) { |
| | | String file = findAnnexFile(name, folder, files); |
| | | if (null == file) { |
| | | continue; |
| | | } |
| | | |
| | | BaseEntity be = (BaseEntity) obj; |
| | | rows += insertXlsAnnex(ue, meta, be, file); |
| | | files.remove(file); |
| | | rows += insertXlsAnnex(ue, meta, (BaseEntity) obj, file); |
| | | } |
| | | } |
| | | |
| | | return rows; |
| | | } |
| | | |
| | | /** |
| | | * 获取名称 |
| | | */ |
| | | public static String[] getNames(String str) { |
| | | if (StringHelper.isEmpty(str)) { |
| | | return null; |
| | | } |
| | | |
| | | return str.replace(";", ",").replace(",", ",").split(","); |
| | | } |
| | | |
| | | /** |
| | |
| | | /** |
| | | * 获取附件字段 |
| | | */ |
| | | private Field getAnnexField(Object obj, MetaEntity meta) { |
| | | public static Field getAnnexField(Object obj, String tab) { |
| | | try { |
| | | String str = ATTACH_TABS.get(meta.getTab()); |
| | | String str = ATTACH_TABS.get(tab); |
| | | |
| | | Field field = obj.getClass().getDeclaredField(str); |
| | | field.setAccessible(true); |
| | |
| | | /** |
| | | * 获取附件名称 |
| | | */ |
| | | private String getAnnexName(Object obj, Field field) { |
| | | public static String getAnnexName(Object obj, Field field) { |
| | | try { |
| | | Object val = field.get(obj); |
| | | |
| | |
| | | String md5 = FileHelper.getFileMd5(file); |
| | | AttachEntity old = attachService.selectByTabAndGuid(meta.getTab(), be.getEventid(), md5); |
| | | if (null != old) { |
| | | f.delete(); |
| | | return 0; |
| | | } |
| | | |
| | |
| | | AttachEntity ae = getAttachEntity(ue, meta.getTab(), be.getEventid(), fileName, md5, sizes); |
| | | String targetPath = pathHelper.getConfig().getUploadPath() + File.separator + ae.getPath(); |
| | | |
| | | f.renameTo(new File(targetPath)); |
| | | int rows = attachService.insert(ae); |
| | | try { |
| | | FileUtils.copyFile(f, new File(targetPath)); |
| | | } catch (Exception ex) { |
| | | log.error(ex.getMessage(), ex); |
| | | } |
| | | |
| | | return rows > 0 ? 1 : 0; |
| | | return attachService.insert(ae); |
| | | } |
| | | |
| | | /** |
| | |
| | | /** |
| | | * 请求下载 |
| | | */ |
| | | public String downloadReqForGuids(UserEntity ue, String[] guids) { |
| | | public String downloadReqForGuids(UserEntity ue, List<String> guids) { |
| | | List<AttachEntity> list = attachService.selectByGuids(guids); |
| | | |
| | | return downloadReq(ue, list); |
| | |
| | | /** |
| | | * 请求下载 |
| | | */ |
| | | public String downloadReqForTabGuids(UserEntity ue, String tab, String[] guids) { |
| | | public String downloadReqForTabGuids(UserEntity ue, String tab, List<String> guids) { |
| | | List<AttachEntity> list = attachService.selectByTabGuids(tab, guids); |
| | | |
| | | return downloadReq(ue, list); |
| | |
| | | String zipFile = pathHelper.getDownloadFullPath() + File.separator + zipName; |
| | | |
| | | ZipFile zip = Zip4jHelper.createZipFile(zipFile, null); |
| | | ZipParameters params = Zip4jHelper.getZipParams(); |
| | | ZipParameters params = Zip4jHelper.getZipParams(false); |
| | | addZipFiles(zip, params, list); |
| | | |
| | | DownloadEntity downloadEntity = getDownloadEntity(ue, zipFile, null); |
| | |
| | | private DownloadEntity getDownloadEntity(UserEntity ue, String file, String pwd) { |
| | | DownloadEntity de = new DownloadEntity(); |
| | | de.setName(FileHelper.getFileName(file)); |
| | | // 1-Shp文件,2-专题图,3-元数据,4-业务数据,5-管道分析,6-统计报告,7-附件 |
| | | // 1-Shp文件,2-专题图,3-元数据,4-业务数据,5-管道分析,6-统计报告,7-附件文件,8-瓦片文件 |
| | | de.setType(7); |
| | | de.setSizes(FileHelper.sizeToMb(new File(file).length())); |
| | | de.setDepid(ue.getDepid()); |