package com.onemap.file.controller; import com.onemap.common.core.domain.UploadZipDTO; import com.onemap.common.core.web.domain.RequestResult; import com.onemap.file.domain.ShpFileDTO; import com.onemap.system.api.domain.GhtgCl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import com.onemap.common.core.domain.R; import com.onemap.common.core.utils.file.FileUtils; import com.onemap.file.service.ISysFileService; import com.onemap.system.api.domain.SysFile; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * 文件请求处理 * * @author onemap */ @RestController public class SysFileController { private static final Logger log = LoggerFactory.getLogger(SysFileController.class); @Autowired private ISysFileService sysFileService; /** * 文件上传 * * @param file 文件 * @param businessType 业务类型 */ @PostMapping("/upload") public R upload(MultipartFile file, String businessType) { try { // 上传并返回访问地址 String url = sysFileService.uploadFile(file, businessType); SysFile sysFile = new SysFile(); sysFile.setName(FileUtils.getName(url)); sysFile.setUrl(url); return R.ok(sysFile); } catch (Exception e) { log.error("上传文件失败", e); return R.fail(e.getMessage()); } } /** * 文件上传(大文件分片上传) * * @param file * @param chunk * @param chunks * @param name * @param md5 * @return */ @PostMapping("/splitFileUpload") public R splitFileUpload(@RequestParam("file") MultipartFile file, @RequestParam("chunk") int chunk, @RequestParam("chunks") int chunks, @RequestParam("name") String name, @RequestParam("md5") String md5) { try { // 上传并返回访问地址 String url = sysFileService.splitFileUpload(file, chunk, chunks, name, md5); SysFile sysFile = new SysFile(); sysFile.setName(FileUtils.getName(url)); sysFile.setUrl(url); return R.ok(sysFile); } catch (Exception e) { log.error("上传文件失败", e); return R.fail(e.getMessage()); } } /** * 上传附件,图片 * * @param files 文件列表 * @return 文件地址集合 */ @PostMapping("/uploadAppendix") public R> uploadAppendix(MultipartFile[] files) { try { List sysFileList = new ArrayList<>(); // 上传并返回访问地址 for (MultipartFile file : files) { String url = sysFileService.uploadAppendix(file); SysFile sysFile = new SysFile(); sysFile.setName(FileUtils.getName(url)); sysFile.setUrl(url); sysFileList.add(sysFile); } return R.ok(sysFileList); } catch (Exception e) { log.error("上传文件失败", e); return R.fail(e.getMessage()); } } /** * shp压缩包文件上传 * * @param file 文件 */ @PostMapping("/uploadShpZip") public RequestResult uploadShpZip(MultipartFile file) { try { RequestResult res = sysFileService.uploadShpZip(file); return res; } catch (Exception e) { e.printStackTrace(); return RequestResult.error("上传失败!", null); } } /** * shp压缩包文件上传****智慧选址 * * @param file 文件 */ @PostMapping("/uploadZhxzZip") public RequestResult uploadZhxzZip(MultipartFile file) { try { RequestResult res = sysFileService.uploadZhxzZip(file); return res; } catch (Exception e) { e.printStackTrace(); return RequestResult.error("上传失败!", null); } } /** * 压缩包文件上传 * * @param file 文件 */ @PostMapping("/uploadZip") public UploadZipDTO uploadZip(MultipartFile file) { try { UploadZipDTO res = sysFileService.uploadZip(file); return res; } catch (Exception e) { e.printStackTrace(); return new UploadZipDTO(); } } /** * shp压缩包文件上传 * * @param file 文件 */ @PostMapping("/uploadTgcl") public GhtgCl uploadTgcl(MultipartFile file, Integer type) { try { GhtgCl res = sysFileService.uploadTgcl(file, type); return res; } catch (Exception e) { e.printStackTrace(); return null; } } /** * 获取shp文件相应的geojson */ @GetMapping("/getShpGeoJson") public String getShpGeoJson(String shpfile) { try { String res = sysFileService.getShpGeoJson(shpfile); return res; } catch (Exception e) { e.printStackTrace(); return null; } } }