diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/CaseApplicationServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/CaseApplicationServiceImpl.java index 2bec5ae..23b182d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/CaseApplicationServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/CaseApplicationServiceImpl.java @@ -255,7 +255,7 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService { OutputStream outStr = new FileOutputStream(file); int bytesRead = 0; byte[] buffer = new byte[8192]; - while ((bytesRead = instream.read(buffer, 0, 8192)) != -1) { + while ((bytesRead = instream.read(buffer, 0, 1024)) != -1) { outStr.write(buffer, 0, bytesRead); } outStr.flush(); @@ -301,6 +301,7 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService { } } + //保存目录和文件 if(allFilestr!=null&&allFilestr.size()>0){ for (String filestr : allFilestr) { List allindex = new ArrayList<>(); @@ -311,57 +312,140 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService { allindex.add(indexKey); } if(allindex!=null&&allindex.size()>0){ + String substrOne = filestr.substring(allindex.get(2)+1,allindex.get(3)); + Integer series = null; for (int i = 0; i < allindex.size()-2; i++) { - //得到第2个 \ 和 第3个 \ 之间的目录 为一级(i+1)目录, String substr = filestr.substring(allindex.get(i+1)+1,allindex.get(i+2)); - Integer series = i + 1; - Integer idcaseEvidenceDirectory = null; + series = i + 1; + if(series==1){ - CaseEvidenceDirectory caseEvidenceDirectory = new CaseEvidenceDirectory(); - caseEvidenceDirectory.setEvidenceName(substr); - caseEvidenceDirectory.setSeries(series); - //caseEvidenceDirectory.setCaseid(id); - caseEvidenceDirectory.setCreateBy(username); - caseEvidenceDirectory.setCreateTime(new Date()); + //查询这个级数的目录是否存在,若不存在,则新建这个目录 + CaseEvidenceDirectory caseEvidenceDirectoryselect = new CaseEvidenceDirectory(); +// caseEvidenceDirectoryselect.setCaseid(id); + caseEvidenceDirectoryselect.setEvidenceName(filestr.substring(allindex.get(i+1)+1,allindex.get(i+2))); + caseEvidenceDirectoryselect.setSeries(series); + List caseEvidenceDirectorys = caseEvidenceDirectoryMapper.selectList(caseEvidenceDirectoryselect); + if(caseEvidenceDirectorys!=null&&caseEvidenceDirectorys.size()>0){ + continue; + }else { + CaseEvidenceDirectory caseEvidenceDirectory = new CaseEvidenceDirectory(); + caseEvidenceDirectory.setEvidenceName(substr); + caseEvidenceDirectory.setSeries(series); - caseEvidenceDirectoryMapper.save(caseEvidenceDirectory); - idcaseEvidenceDirectory = caseEvidenceDirectory.getId(); + //caseEvidenceDirectory.setCaseid(id); + caseEvidenceDirectory.setCreateBy(username); + caseEvidenceDirectory.setCreateTime(new Date()); + caseEvidenceDirectoryMapper.save(caseEvidenceDirectory); + + } }else { - CaseEvidenceDirectory caseEvidenceDirectory = new CaseEvidenceDirectory(); - caseEvidenceDirectory.setEvidenceName(substr); - caseEvidenceDirectory.setSeries(series); + //查询这个级数的目录是否存在,若不存在,则新建这个目录 + CaseEvidenceDirectory directoryselect = new CaseEvidenceDirectory(); +// directoryselect.setCaseid(id); + directoryselect.setEvidenceName(filestr.substring(allindex.get(i+1)+1,allindex.get(i+2))); + directoryselect.setSeries(series); + List evidenceDirectorys = caseEvidenceDirectoryMapper.selectList(directoryselect); + if(evidenceDirectorys!=null&&evidenceDirectorys.size()>0){ + continue; + }else { + Integer parentId = null; + CaseEvidenceDirectory caseEvidenceDirectoryselect = new CaseEvidenceDirectory(); +// caseEvidenceDirectoryselect.setCaseid(id); + caseEvidenceDirectoryselect.setEvidenceName(filestr.substring(allindex.get(i)+1,allindex.get(i+1))); + caseEvidenceDirectoryselect.setSeries(series-1); + List caseEvidenceDirectorys = caseEvidenceDirectoryMapper.selectList(caseEvidenceDirectoryselect); + if(caseEvidenceDirectorys!=null&&caseEvidenceDirectorys.size()>0){ + parentId = caseEvidenceDirectorys.get(0).getId(); + } - caseEvidenceDirectory.setParentId(idcaseEvidenceDirectory); - - caseEvidenceDirectoryMapper.save(caseEvidenceDirectory); - + CaseEvidenceDirectory caseEvidenceDirectory = new CaseEvidenceDirectory(); + caseEvidenceDirectory.setEvidenceName(substr); + caseEvidenceDirectory.setSeries(series); + caseEvidenceDirectory.setCreateBy(username); + caseEvidenceDirectory.setCreateTime(new Date()); + //caseEvidenceDirectory.setCaseid(id); + caseEvidenceDirectory.setParentId(parentId); + + caseEvidenceDirectoryMapper.save(caseEvidenceDirectory); + + } } - //通过 案件id 和 目录表 的各个层级的 级数 和 目录名称 查询目录表 - //判断这个级数的目录是否已经在目录表中存在, - //若存在,不用新建这个目录, - //若不存在,则新建这个目录 - //保存到目录表 - - - } - int lastIndex = allindex.size(); - //得到 最后1个 \ 之后的目录 为文件名, - //保存到目录表 + + //得到最后1级的目录,即文件 + int lastIndex = allindex.size()-2; + String substrfile = filestr.substring(lastIndex+1); + //保存到附件表 + LocalDate now = LocalDate.now(); + String year = Integer.toString(now.getYear()); + String month = String.format("%02d", now.getMonthValue()); + String day = String.format("%02d", now.getDayOfMonth()); +// String saveFolderPath = "/home/ruoyi/uploadPath/upload/" + year + "/" + month + "/" + day; + String saveFolderPath = "D:/data/" + year + "/" + month + "/" + day; + String fileName = UUID.randomUUID().toString().replace("-", "")+ "_" + substrfile; + String resultFilePath = saveFolderPath + "/" + fileName; + try { + FileInputStream fis = new FileInputStream(new File(filestr)); + FileOutputStream fos = new FileOutputStream(new File(resultFilePath)); + byte b[] = new byte[1024]; + int len=0; + while((len=fis.read(b))!=-1){ + fos.write(b); + } + + } catch (IOException e) { + AjaxResult.error("文件解压异常",e); + } + + Integer annexType = null; + if("申请书".equals(substrOne)){ + annexType = 1; + }else if("证据材料".equals(substrOne)){ + annexType = 2; + } + String savePath = "/home/ruoyi/uploadPath/upload"; + String saveName = "/profile/upload/" + year + "/" + month + "/" + day + "/" + fileName; + //将附件保存到附件表里 + CaseAttach caseAttach = CaseAttach.builder() + .caseAppliId(id) + .annexName(saveName) + .annexPath(savePath) + .annexType(annexType) + .build(); + int i = caseAttachMapper.save(caseAttach); + + Integer annexId = caseAttach.getAnnexId(); + + //保存到目录表 + Integer parentId = null; + CaseEvidenceDirectory caseEvidenceDirectoryselect = new CaseEvidenceDirectory(); +// caseEvidenceDirectoryselect.setCaseid(id); + caseEvidenceDirectoryselect.setEvidenceName(filestr.substring(allindex.get(lastIndex-1)+1,allindex.get(lastIndex))); + caseEvidenceDirectoryselect.setSeries(series-1); + List caseEvidenceDirectorys = caseEvidenceDirectoryMapper.selectList(caseEvidenceDirectoryselect); + if(caseEvidenceDirectorys!=null&&caseEvidenceDirectorys.size()>0){ + parentId = caseEvidenceDirectorys.get(0).getId(); + } + + CaseEvidenceDirectory caseEvidenceDirectory = new CaseEvidenceDirectory(); + caseEvidenceDirectory.setEvidenceName(substrfile); + caseEvidenceDirectory.setSeries(series); + caseEvidenceDirectory.setCreateBy(username); + caseEvidenceDirectory.setCreateTime(new Date()); + caseEvidenceDirectory.setAnnexId(annexId); + //caseEvidenceDirectory.setCaseid(id); + + caseEvidenceDirectory.setParentId(parentId); + + caseEvidenceDirectoryMapper.save(caseEvidenceDirectory); } - - - } - - - } return AjaxResult.success();