javaweb-plus/javaweb-cms/src/main/java/com/javaweb/geo/controller/DeviceLogController.java
@@ -76,7 +76,7 @@ number++; } String formattedNumber = String.format("%06d", number); String code = "ZK" + formattedNumber; String code = "ZTCJ" + formattedNumber; mmap.put("projectId", projectId); mmap.put("code", code); return prefix + "/add"; javaweb-plus/javaweb-cms/src/main/java/com/javaweb/geo/controller/ProjectDataController.java
@@ -5,7 +5,11 @@ import java.util.List; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.ObjectUtil; import com.javaweb.common.config.Global; import com.javaweb.geo.domain.Hole; import com.javaweb.geo.domain.HoleMedia; import com.javaweb.geo.service.IHoleMediaService; import com.javaweb.geo.vo.FileVo; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; @@ -39,6 +43,9 @@ @Autowired private IProjectDataService projectDataService; @Autowired private IHoleMediaService holeMediaService; @RequiresPermissions("geo:projectData:view") @GetMapping() public String projectData(String id, String type, ModelMap mmap) { @@ -59,7 +66,8 @@ * 导入压缩包 */ @GetMapping("/importImg") public String importPdf(){ public String importPdf(String projectDataId,ModelMap mmap){ mmap.put("projectDataId",projectDataId); return prefix + "/upload"; } @@ -183,28 +191,19 @@ @ResponseBody public TableDataInfo listFile(String id){ List<FileVo> paths = new ArrayList<>(); ProjectData projectData = projectDataService.selectProjectDataById(id); // if (!ObjectUtils.isEmpty(projectData)){ // String num = project.getNum(); // // String diskPath = Global.getUploadPath() + "\\sources\\项目资料\\"+num; // // File file = new File(diskPath); // // if(FileUtil.exist(file)){ // if(file.isDirectory()){ // File []lists = file.listFiles(); // for(int i =0;i<lists.length;i++){ // String name =lists[i].getName(); // String path = urlPrefixPath + num + "/" +name; // FileVo vo = new FileVo() ; // vo.setName(name); // vo.setPath(path); // paths.add(vo); // } // } // } // } HoleMedia holeMedia = new HoleMedia(); holeMedia.setRecordId(id); List<HoleMedia> holeMedias =holeMediaService.selectHoleMediaList(holeMedia); if(ObjectUtil.isNotEmpty(holeMedias)){ for(HoleMedia holeMedia1 :holeMedias ){ FileVo vo = new FileVo() ; vo.setName(holeMedia1.getName()); vo.setPath(holeMedia1.getInternetPath()); paths.add(vo); } } return getDataTable(paths); } javaweb-plus/javaweb-cms/src/main/java/com/javaweb/geo/service/impl/DeviceLogServiceImpl.java
@@ -132,7 +132,7 @@ }else { number++; } String code = "ZK" + String.format("%06d", number); String code = "ZTCJ" + String.format("%06d", number); item.setCode(code); item.setCreateDate(DateUtils.getNowDate()); 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); 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); } } return list; } 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); } 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/files.html
@@ -60,7 +60,8 @@ * @param path */ function file(path) { window.open(path); var url = "/bjfw/profile" + path; window.open(url); } </script> </body> javaweb-plus/javaweb-cms/src/main/resources/templates/geo/projectData/projectData.html
@@ -38,12 +38,7 @@ <a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="geo:projectData:remove"> <i class="fa fa-remove"></i> 删除 </a> <!-- <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> </div> <div class="col-sm-12 select-table table-striped"> <table id="bootstrap-table"></table> @@ -94,9 +89,12 @@ 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="viewResource(\'' + row.id + '\' , \'' + row.id + '\')"><i class="glyphicon glyphicon-menu-hamburger"></i>查看附件</a>'); return actions.join(''); } }] @@ -105,20 +103,10 @@ }); // 上传附件 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'){ $.modal.alertSuccess("文件无法打开!"); return; } var url = prefix + "/viewImage?id=" + id; $.modal.open("查看图片", url, 800, 600); } //查看资料 function viewResource(id){ @@ -126,4 +114,5 @@ } </script> </body> </html> javaweb-plus/javaweb-cms/src/main/resources/templates/geo/projectData/projectData2.html
@@ -44,12 +44,7 @@ <a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="geo:projectData:remove"> <i class="fa fa-remove"></i> 删除 </a> <!-- <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> </div> <div class="col-sm-12 select-table table-striped"> <table id="bootstrap-table"></table> @@ -79,27 +74,27 @@ checkbox: true }, { field : 'id', field : 'id', title : '主键', visible: false }, { field : 'name', field : 'name', title : '资料名称' }, { field : 'fileType', field : 'fileType', title : '业务类型', formatter: function(value, row, index) { return $.table.selectDictLabel(fileTypeDatas, value); } }, { field : 'labels', field : 'labels', title : '标签' }, { field : 'remark', field : 'remark', title : '备注' }, { @@ -109,7 +104,9 @@ 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 ' + '" href="javascript:void(0)" onclick="viewImg(\'' + row.dataUrl + '\' , \'' + row.id + '\')"><i class="glyphicon glyphicon-menu-hamburger"></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="viewResource(\'' + row.id + '\' , \'' + row.id + '\')"><i class="glyphicon glyphicon-menu-hamburger"></i>查看附件</a>'); return actions.join(''); } }] @@ -118,20 +115,16 @@ }); // 上传附件 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'){ $.modal.alertSuccess("文件无法打开!"); return; } var url = prefix + "/viewImage?id=" + id; $.modal.open("查看图片", url, 800, 600); //查看资料 function viewResource(id){ $.modal.open("资料列表", prefix + "/projectDataFileList?id=" + id, 800, 600); } </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> </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({