From bf72c7b0caff2b949bcf9fcf03d8821b7dae9f84 Mon Sep 17 00:00:00 2001 From: zmk <496160012@qq.com> Date: 星期三, 03 七月 2024 18:03:12 +0800 Subject: [PATCH] 提交代码 --- javaweb-plus/javaweb-cms/src/main/java/com/javaweb/geo/service/impl/ProjectDataServiceImpl.java | 147 ++++++++++++++++++++++++++++++++++-------------- 1 files changed, 103 insertions(+), 44 deletions(-) diff --git a/javaweb-plus/javaweb-cms/src/main/java/com/javaweb/geo/service/impl/ProjectDataServiceImpl.java b/javaweb-plus/javaweb-cms/src/main/java/com/javaweb/geo/service/impl/ProjectDataServiceImpl.java index ba4ecd0..12908f6 100644 --- a/javaweb-plus/javaweb-cms/src/main/java/com/javaweb/geo/service/impl/ProjectDataServiceImpl.java +++ b/javaweb-plus/javaweb-cms/src/main/java/com/javaweb/geo/service/impl/ProjectDataServiceImpl.java @@ -1,23 +1,31 @@ package com.javaweb.geo.service.impl; import java.io.File; +import java.io.IOException; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ZipUtil; import com.javaweb.common.config.Global; import com.javaweb.common.core.domain.AjaxResult; +import com.javaweb.common.exception.BusinessException; import com.javaweb.common.utils.DateUtils; import com.javaweb.common.utils.IdGenerate; import com.javaweb.common.utils.StringUtils; +import com.javaweb.geo.domain.Hole; +import com.javaweb.geo.domain.HoleMedia; +import com.javaweb.geo.mapper.HoleMapper; +import com.javaweb.geo.mapper.HoleMediaMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.javaweb.geo.mapper.ProjectDataMapper; import com.javaweb.geo.domain.ProjectData; import com.javaweb.geo.service.IProjectDataService; import com.javaweb.common.core.text.Convert; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; import org.springframework.web.multipart.MultipartFile; @@ -33,12 +41,26 @@ public class ProjectDataServiceImpl implements IProjectDataService { - private static String manUploadPath = "imgupload"; + private static String zipfile = "zipfile"; + private static String zipfile2 = "zipfile2"; - private static String imgUploadPath = Global.getProfile() + "\\" + manUploadPath + "\\"; + //zip 鍘熷鏂囦欢 + private static String ZIPUploadPath = Global.getProfile() + "\\" + zipfile + "\\"; + + //瑙e帇鏂囦欢 + private static String ZIPUploadPath2 = Global.getProfile() + "\\" + zipfile2 + "\\"; + + //鍗曟枃浠跺瓨鍌ㄨ矾寰� + private static String ZIPUploadPath2SingleFile = Global.getProfile() + "\\" + zipfile2 + "\\img\\"; @Autowired private ProjectDataMapper projectDataMapper; + @Autowired + private HoleMapper holeMapper; + + @Autowired + private HoleMediaMapper mediaMapper; + /** * 鏌ヨ椤圭洰璧勬枡 @@ -114,23 +136,29 @@ return projectDataMapper.deleteProjectDataById(id); } + + @Override - public AjaxResult uploadZIP(MultipartFile file, HttpServletRequest request) { - String uploadPath = Global.getProfile() + "\\"; + public AjaxResult uploadZIP(MultipartFile file, HttpServletRequest request) { String originalFilename = file.getOriginalFilename(); - String fieldname = request.getParameter("fieldname"); - if (StringUtils.isEmpty(fieldname)) { - fieldname = "filename"; + //浼犲叆鐨勯捇瀛旂殑id + String projectDataId = request.getParameter("projectDataId"); + + //涓婁紶鍗曟枃浠� + if(ObjectUtil.isNotEmpty(originalFilename) && !originalFilename.endsWith(".zip")){ + uploadSingleFile(file,projectDataId); + return AjaxResult.success("涓婁紶鎴愬姛"); } + //涓婁紶ZIP鏂囦欢 //鑾峰彇鍚庣紑.zip 淇濆瓨鐨勬枃浠跺悕 String substring = originalFilename.substring(originalFilename.lastIndexOf(".")); String UID = IdGenerate.nextId(); String dFileName = UID + substring; - File file2 = new File(uploadPath + dFileName); + File file2 = new File(ZIPUploadPath + dFileName); try { file.transferTo(file2); } catch (Exception e) { @@ -143,54 +171,85 @@ } catch (Exception e) { return AjaxResult.warn("闄勪欢瑙e帇缂╁け璐ワ紒"); } - String moveDir = Global.getProfile() + "\\" + UID + "\\" + originalFilename.replace(substring, ""); - List<String> movedFiles = moveFile(moveDir); - updateFilePath(fieldname, movedFiles); - FileUtil.del(new File(uploadPath + UID)); - FileUtil.del(file2); + //绉诲姩鍒皕ipfile2 瀛樺偍瑙e帇瀹屾瘯鐨勬枃浠� + String moveDir = ZIPUploadPath + UID; + moveFile(moveDir); + + //鏇存柊鏁版嵁搴� + updateFilePath(projectDataId, ZIPUploadPath2 + UID ); + + FileUtil.del(new File(ZIPUploadPath + UID)); + return AjaxResult.success("涓婁紶鎴愬姛"); } - //绉诲姩 鏂囦欢 - private List<String> moveFile(String moveDir) { - List<String> list = new ArrayList<>(); - File file = new File(moveDir); - String detpath = imgUploadPath; - if (file.isDirectory()) { - File[] files = file.listFiles(); - int len = files.length; - for (int i = 0; i < len; i++) { - String filename = files[i].getName(); - list.add(filename); - FileUtil.copy(files[i], new File(detpath + filename), true); - } + //涓婁紶鍗曟枃浠� + private void uploadSingleFile(MultipartFile file,String projectDataId) { + + ProjectData projectData = projectDataMapper.selectProjectDataById(projectDataId); + String projectId= projectData.getProjectId(); + + String originalFilename= file.getOriginalFilename(); + //鑾峰彇鍚庣紑 淇濆瓨鐨勬枃浠跺悕 + String substring = originalFilename.substring(originalFilename.lastIndexOf(".")); + String UID = IdGenerate.nextId(); + String dFileName = UID + substring; + + String filepath = ZIPUploadPath2SingleFile + dFileName; + + File destFile = new File(filepath); + + try{ + file.transferTo(destFile); + }catch (Exception e){ + throw new BusinessException("淇濆瓨澶辫触锛�",e); } - return list; + + String url = filepath.replace(Global.getProfile(),"").replace("\\","/"); + + HoleMedia media = new HoleMedia(); + media.setIds(IdGenerate.nextId()); + media.setRecordId(projectDataId); + media.setProjectId(projectId); + media.setName(originalFilename); + media.setInternetPath(url); + media.setCreateTime(DateUtils.getNowDate()); + mediaMapper.insertHoleMedia(media); + } - private void updateFilePath(String filedname, List<String> filesPath) { + //绉诲姩 鏂囦欢 + private void moveFile(String moveDir) { + File file = new File(moveDir); + File dest = new File(ZIPUploadPath2); + FileUtil.move(file,dest,true); + } - for (String fileName : filesPath) { - String substring = fileName.substring(fileName.lastIndexOf(".")); - String docFileName = fileName.replace(substring, "").trim(); - ProjectData param = new ProjectData(); - if (filedname.equals("filename")) { - param.setName(docFileName); - } + @Transactional(rollbackFor = Exception.class) + public void updateFilePath(String projectDataId, String dirpath) { - List<ProjectData> list = projectDataMapper.selectProjectDataList(param); - if (!ObjectUtils.isEmpty(list)) { - for (ProjectData item : list) { - ProjectData entity = new ProjectData(); - entity.setId(item.getId()); - entity.setDataUrl(manUploadPath + "/" + fileName); - projectDataMapper.updateProjectData(entity); - } + ProjectData projectData = projectDataMapper.selectProjectDataById(projectDataId); + String projectId= projectData.getProjectId(); + File fileDir = new File(dirpath); + List<File> files = FileUtil.loopFiles(fileDir); + + if(ObjectUtil.isNotEmpty(files)){ + for (File file : files){ + String filename = file.getName(); + String filepath = file.getPath(); + String url = filepath.replace(Global.getProfile(),"").replace("\\","/"); + HoleMedia media = new HoleMedia(); + media.setIds(IdGenerate.nextId()); + media.setRecordId(projectDataId); + media.setProjectId(projectId); + media.setName(filename); + media.setInternetPath(url); + media.setCreateTime(DateUtils.getNowDate()); + mediaMapper.insertHoleMedia(media); } } - } } -- Gitblit v1.9.1