javaweb-plus/javaweb-cms/src/main/java/com/javaweb/geo/controller/ProjectDataController.java
@@ -54,7 +54,8 @@ * 导入压缩包 */ @GetMapping("/importImg") public String importPdf(){ public String importPdf(String projectDataId,ModelMap mmap){ mmap.put("projectDataId",projectDataId); return prefix + "/upload"; } javaweb-plus/javaweb-cms/src/main/java/com/javaweb/geo/service/impl/ProjectDataServiceImpl.java
@@ -12,12 +12,17 @@ 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 +38,23 @@ 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 + "\\"; //解压文件 private static String ZIPUploadPath2 = Global.getProfile() + "\\" + zipfile2 + "\\"; @Autowired private ProjectDataMapper projectDataMapper; @Autowired private HoleMapper holeMapper; @Autowired private HoleMediaMapper mediaMapper; /** * 查询项目资料 @@ -116,21 +132,17 @@ @Override public AjaxResult uploadZIP(MultipartFile file, HttpServletRequest request) { String uploadPath = Global.getProfile() + "\\"; String originalFilename = file.getOriginalFilename(); String fieldname = request.getParameter("fieldname"); if (StringUtils.isEmpty(fieldname)) { fieldname = "filename"; } //传入的钻孔的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(uploadPath + dFileName); File file2 = new File(ZIPUploadPath + dFileName); try { file.transferTo(file2); } catch (Exception e) { @@ -143,53 +155,60 @@ } catch (Exception e) { return AjaxResult.warn("附件解压缩失败!"); } 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); //移动到zipfile2 存储解压完毕的文件 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 List<String> moveFile(String moveDir) { List<String> list = new ArrayList<>(); private void moveFile(String moveDir) { File file = new File(moveDir); String detpath = imgUploadPath; if (file.isDirectory()) { File[] files = file.listFiles(); 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(); list.add(filename); FileUtil.copy(files[i], new File(detpath + filename), true); } } return list; } String filepath = files[i].getPath(); String url = filepath.replace(Global.getProfile(),"").replace("\\","/"); private void updateFilePath(String filedname, List<String> filesPath) { 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); 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); } 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); } } } } javaweb-plus/javaweb-cms/src/main/resources/templates/geo/project/info.html
@@ -57,8 +57,9 @@ <div class="row"> <p class="project-name"> <span class="name-label">场地名称:</span> <span class="name-val" th:text="${project.fullName}"></span> <h3>场地信息</h3> <!-- <span class="name-label">场地名称:</span>--> <!-- <span class="name-val" th:text="${project.fullName}"></span>--> </p> <table class="basic-info"> <tr> @@ -93,6 +94,9 @@ <!-- </div>--> </div> <div class="row" style="margin-top: 30px;"> <h3>场地钻孔列表</h3> </div> <div class="row"> <div class="col-sm-12 select-table table-striped"> <table id="bootstrap-table"></table> @@ -112,14 +116,7 @@ var options = { url: prefix + "/list?projectId=" + projectId, modalName: "钻孔", columns: [{ checkbox: true }, { field : 'ids', title : '主键', visible: false }, columns: [ { field : 'code', title : '钻孔编号' javaweb-plus/javaweb-cms/src/main/resources/templates/geo/projectData/projectData.html
@@ -41,9 +41,9 @@ <!-- <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="geo:projectData:export">--> <!-- <i class="fa fa-download"></i> 导出--> <!-- </a>--> <a class="btn btn-danger" data-toggle="modal" onclick="uploadZIP();"> <i class="fa fa-upload"></i>上传附件 </a> <!-- <a class="btn btn-danger" data-toggle="modal" onclick="uploadZIP();">--> <!-- <i class="fa fa-upload"></i>上传附件--> <!-- </a>--> </div> <div class="col-sm-12 select-table table-striped"> <table id="bootstrap-table"></table> @@ -94,8 +94,10 @@ align: 'center', formatter: function(value, row, index) { var actions = []; actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> '); actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>删除</a> '); actions.push('<a class="btn btn-info btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="uploadZIP(\'' + row.id + '\')"><i class="fa fa-upload"></i>上传</a> '); actions.push('<a class="btn btn-info btn-xs ' + '" href="javascript:void(0)" onclick="viewImg(\'' + row.dataUrl + '\' , \'' + row.id + '\')"><i class="glyphicon glyphicon-menu-hamburger"></i>查看附件</a>'); return actions.join(''); } @@ -105,11 +107,9 @@ }); // 上传附件 function uploadZIP(){ $.modal.open('上传附件', prefix + "/importImg"); function uploadZIP(id){ $.modal.open('上传附件', prefix + "/importImg?projectDataId="+id); } // 查看图片详情 function viewImg(path, id) { if(path === null || path === '' || path === 'null'){ @@ -121,4 +121,5 @@ } </script> </body> </html> javaweb-plus/javaweb-cms/src/main/resources/templates/geo/projectData/upload.html
@@ -2,7 +2,7 @@ <html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro"> <head> <th:block th:include="include :: header('文档描述列表')" /> <th:block th:include="include :: header('文件上传')" /> <th:block th:include="include :: select2-css" /> </head> @@ -13,51 +13,44 @@ <form id="formId" enctype="multipart/form-data"> <div class="select-list"> <ul> <li> <p>匹配字段:</p> <select id="docId" name="docId" class="form-control m-b"> <option value="filename">图片名称</option> </select> </li> <li> <p>压缩包:</p> <p>上传文件:</p> <input type="file" id="file" name="file"/> </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="upload()"><i class="fa fa-search"></i> 上传</a> </li> </ul> </div> </form> </div> <div class="col-sm-12 select-table table-striped"> <span>1、单个或者多个文件请以.ZIP压缩包的形式上传,把单个或者多个文件放到文件夹中,压缩文件夹为zip格式<br> </span> <span>1、附件名称需要与系统内的资料名称一致<br> </span> <span>2、文件不允许包含特殊字符:空格 、正反斜线、问号、星号等<br> </span> <span>3、上传文件经过了 解压 、 移动 、遍历 、更新数据库等多个步骤,请耐心等待<br> </span> <h3>1、支持单文件和多文件模式<br> </h3> <h3>2、多个文件请以.ZIP压缩包的形式上传,把单个或者多个文件放到文件夹中,压缩文件夹为zip格式<br> </h3> <h3>3、文件不允许包含特殊字符:空格 、正反斜线、问号、星号等<br> </h3> <h3>4、上传文件经过了 解压 、 移动 、遍历 、更新数据库等多个步骤,请耐心等待<br> </h3> </div> </div> </div> <th:block th:include="include :: footer" /> <th:block th:include="include :: select2-js" /> <script th:inline="javascript"> var projectDataId = [[${projectDataId}]]; function upload(){ var file = $('#file').val(); if (file == '' || (!$.common.endWith(file, '.zip'))){ $.modal.msgWarning("请选择压缩包"); $.modal.msgWarning("请选择待上传的文件"); return false; } var formData = new FormData(); formData.append("file", $('#file')[0].files[0]); formData.append("fieldname", $('#docId').val()); formData.append("projectDataId", projectDataId); $.modal.loading("数据上传解析中"); $.ajax({