From c6f79f5720c5d4a700b8b759a93393559409fd1c Mon Sep 17 00:00:00 2001 From: chenhuan <czj123456> Date: 星期一, 20 五月 2024 15:11:58 +0800 Subject: [PATCH] Merge branch 'master' of http://117.78.1.188:8089/r/dkyChenJiang --- javaweb-plus/javaweb-cms/src/main/java/com/javaweb/geo/service/impl/ProjectDataServiceImpl.java | 120 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 118 insertions(+), 2 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 e5a66b5..030592f 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,16 +1,32 @@ package com.javaweb.geo.service.impl; +import java.io.File; +import java.nio.charset.Charset; +import java.util.ArrayList; import java.util.List; +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.ZipUtil; +import com.javaweb.common.config.Global; +import com.javaweb.common.core.domain.AjaxResult; 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; + +import javax.servlet.http.HttpServletRequest; /** * 椤圭洰璧勬枡Service涓氬姟灞傚鐞� @@ -20,8 +36,25 @@ */ @Service public class ProjectDataServiceImpl implements IProjectDataService { + + + private static String zipfile = "zipfile"; + private static String zipfile2 = "zipfile2"; + + //zip 鍘熷鏂囦欢 + private static String ZIPUploadPath = Global.getProfile() + "\\" + zipfile + "\\"; + + //瑙e帇鏂囦欢 + private static String ZIPUploadPath2 = Global.getProfile() + "\\" + zipfile2 + "\\"; + @Autowired private ProjectDataMapper projectDataMapper; + @Autowired + private HoleMapper holeMapper; + + @Autowired + private HoleMediaMapper mediaMapper; + /** * 鏌ヨ椤圭洰璧勬枡 @@ -42,8 +75,8 @@ */ @Override public List<ProjectData> selectProjectDataList(ProjectData projectData) { - if (!ObjectUtils.isEmpty(projectData.getDataType()) && projectData.getDataType().endsWith(",")){ - projectData.setDataType(projectData.getDataType().substring(0,1)); + if (!ObjectUtils.isEmpty(projectData.getDataType()) && projectData.getDataType().endsWith(",")) { + projectData.setDataType(projectData.getDataType().substring(0, 1)); } return projectDataMapper.selectProjectDataList(projectData); } @@ -96,4 +129,87 @@ public int deleteProjectDataById(String id) { return projectDataMapper.deleteProjectDataById(id); } + + @Override + public AjaxResult uploadZIP(MultipartFile file, HttpServletRequest request) { + + String originalFilename = file.getOriginalFilename(); + //浼犲叆鐨勯捇瀛旂殑id + String projectDataId = request.getParameter("projectDataId"); + + //鑾峰彇鍚庣紑.zip 淇濆瓨鐨勬枃浠跺悕 + String substring = originalFilename.substring(originalFilename.lastIndexOf(".")); + String UID = IdGenerate.nextId(); + String dFileName = UID + substring; + + File file2 = new File(ZIPUploadPath + dFileName); + try { + file.transferTo(file2); + } catch (Exception e) { + return AjaxResult.warn("闄勪欢涓婁紶澶辫触锛�"); + } + + //瑙e帇缂� + try { + ZipUtil.unzip(file2, Charset.forName("GBK")); + } catch (Exception e) { + return AjaxResult.warn("闄勪欢瑙e帇缂╁け璐ワ紒"); + } + + //绉诲姩鍒皕ipfile2 瀛樺偍瑙e帇瀹屾瘯鐨勬枃浠� + String moveDir = ZIPUploadPath + UID; + moveFile(moveDir); + + //鏇存柊鏁版嵁搴� + updateFilePath(projectDataId, ZIPUploadPath2 + UID +"\\" + originalFilename.replace(substring, "") ); + + ProjectData projectData = new ProjectData(); + + //鏇存柊 projectData url + String dataUrl = zipfile + "/" + UID +".zip"; + projectData.setDataUrl(dataUrl); + projectData.setId(projectDataId); + projectDataMapper.updateProjectData(projectData); + + FileUtil.del(new File(ZIPUploadPath + UID)); + + return AjaxResult.success("涓婁紶鎴愬姛"); + } + + //绉诲姩 鏂囦欢 + private void moveFile(String moveDir) { + File file = new File(moveDir); + File dest = new File(ZIPUploadPath2); + FileUtil.move(file,dest,true); + } + + + @Transactional(rollbackFor = Exception.class) + public void updateFilePath(String projectDataId, String dirpath) { + + ProjectData projectData = projectDataMapper.selectProjectDataById(projectDataId); + String projectId= projectData.getProjectId(); + + File fileDir = new File(dirpath); + + if (fileDir.isDirectory()) { + File[] files = fileDir.listFiles(); + int len = files.length; + for (int i = 0; i < len; i++) { + String filename = files[i].getName(); + String filepath = files[i].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