Procházet zdrojové kódy

优化解压缩功能

qitz před 2 roky
rodič
revize
f776276eb5

+ 117
- 33
ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/CaseApplicationServiceImpl.java Zobrazit soubor

@@ -255,7 +255,7 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
255 255
             OutputStream outStr = new FileOutputStream(file);
256 256
             int bytesRead = 0;
257 257
             byte[] buffer = new byte[8192];
258
-            while ((bytesRead = instream.read(buffer, 0, 8192)) != -1) {
258
+            while ((bytesRead = instream.read(buffer, 0, 1024)) != -1) {
259 259
                 outStr.write(buffer, 0, bytesRead);
260 260
             }
261 261
             outStr.flush();
@@ -301,6 +301,7 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
301 301
             }
302 302
         }
303 303
 
304
+        //保存目录和文件
304 305
         if(allFilestr!=null&&allFilestr.size()>0){
305 306
             for (String filestr : allFilestr) {
306 307
                 List<Integer> allindex = new ArrayList<>();
@@ -311,57 +312,140 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
311 312
                     allindex.add(indexKey);
312 313
                 }
313 314
                 if(allindex!=null&&allindex.size()>0){
315
+                    String substrOne = filestr.substring(allindex.get(2)+1,allindex.get(3));
316
+                    Integer series = null;
314 317
                     for (int i = 0; i < allindex.size()-2; i++) {
315
-                        //得到第2个 \ 和 第3个 \ 之间的目录 为一级(i+1)目录,
316 318
                         String substr = filestr.substring(allindex.get(i+1)+1,allindex.get(i+2));
317
-                        Integer series = i + 1;
318
-                        Integer idcaseEvidenceDirectory = null;
319
-                        if(series==1){
320
-                            CaseEvidenceDirectory caseEvidenceDirectory = new CaseEvidenceDirectory();
321
-                            caseEvidenceDirectory.setEvidenceName(substr);
322
-                            caseEvidenceDirectory.setSeries(series);
319
+                        series = i + 1;
323 320
 
324
-                            //caseEvidenceDirectory.setCaseid(id);
325
-                            caseEvidenceDirectory.setCreateBy(username);
326
-                            caseEvidenceDirectory.setCreateTime(new Date());
321
+                        if(series==1){
327 322
 
328
-                            caseEvidenceDirectoryMapper.save(caseEvidenceDirectory);
329
-                            idcaseEvidenceDirectory = caseEvidenceDirectory.getId();
323
+                            //查询这个级数的目录是否存在,若不存在,则新建这个目录
324
+                            CaseEvidenceDirectory caseEvidenceDirectoryselect = new CaseEvidenceDirectory();
325
+//                            caseEvidenceDirectoryselect.setCaseid(id);
326
+                            caseEvidenceDirectoryselect.setEvidenceName(filestr.substring(allindex.get(i+1)+1,allindex.get(i+2)));
327
+                            caseEvidenceDirectoryselect.setSeries(series);
328
+                            List<CaseEvidenceDirectory>  caseEvidenceDirectorys = caseEvidenceDirectoryMapper.selectList(caseEvidenceDirectoryselect);
329
+                            if(caseEvidenceDirectorys!=null&&caseEvidenceDirectorys.size()>0){
330
+                                continue;
331
+                            }else {
332
+                                CaseEvidenceDirectory caseEvidenceDirectory = new CaseEvidenceDirectory();
333
+                                caseEvidenceDirectory.setEvidenceName(substr);
334
+                                caseEvidenceDirectory.setSeries(series);
335
+
336
+                                //caseEvidenceDirectory.setCaseid(id);
337
+                                caseEvidenceDirectory.setCreateBy(username);
338
+                                caseEvidenceDirectory.setCreateTime(new Date());
339
+
340
+                                caseEvidenceDirectoryMapper.save(caseEvidenceDirectory);
330 341
 
342
+                            }
331 343
                         }else {
332
-                            CaseEvidenceDirectory caseEvidenceDirectory = new CaseEvidenceDirectory();
333
-                            caseEvidenceDirectory.setEvidenceName(substr);
334
-                            caseEvidenceDirectory.setSeries(series);
335
-
336
-                            caseEvidenceDirectory.setParentId(idcaseEvidenceDirectory);
337
-                            
338
-                            caseEvidenceDirectoryMapper.save(caseEvidenceDirectory);
339
-                            
344
+                            //查询这个级数的目录是否存在,若不存在,则新建这个目录
345
+                            CaseEvidenceDirectory directoryselect = new CaseEvidenceDirectory();
346
+//                            directoryselect.setCaseid(id);
347
+                            directoryselect.setEvidenceName(filestr.substring(allindex.get(i+1)+1,allindex.get(i+2)));
348
+                            directoryselect.setSeries(series);
349
+                            List<CaseEvidenceDirectory>  evidenceDirectorys = caseEvidenceDirectoryMapper.selectList(directoryselect);
350
+                            if(evidenceDirectorys!=null&&evidenceDirectorys.size()>0){
351
+                                continue;
352
+                            }else {
353
+                                Integer parentId = null;
354
+                                CaseEvidenceDirectory caseEvidenceDirectoryselect = new CaseEvidenceDirectory();
355
+//                            caseEvidenceDirectoryselect.setCaseid(id);
356
+                                caseEvidenceDirectoryselect.setEvidenceName(filestr.substring(allindex.get(i)+1,allindex.get(i+1)));
357
+                                caseEvidenceDirectoryselect.setSeries(series-1);
358
+                                List<CaseEvidenceDirectory>  caseEvidenceDirectorys = caseEvidenceDirectoryMapper.selectList(caseEvidenceDirectoryselect);
359
+                                if(caseEvidenceDirectorys!=null&&caseEvidenceDirectorys.size()>0){
360
+                                    parentId = caseEvidenceDirectorys.get(0).getId();
361
+                                }
340 362
 
363
+                                CaseEvidenceDirectory caseEvidenceDirectory = new CaseEvidenceDirectory();
364
+                                caseEvidenceDirectory.setEvidenceName(substr);
365
+                                caseEvidenceDirectory.setSeries(series);
366
+                                caseEvidenceDirectory.setCreateBy(username);
367
+                                caseEvidenceDirectory.setCreateTime(new Date());
368
+                                //caseEvidenceDirectory.setCaseid(id);
341 369
 
342
-                        }
343
-                        //通过 案件id 和 目录表 的各个层级的 级数 和 目录名称 查询目录表
344
-                        //判断这个级数的目录是否已经在目录表中存在,
345
-                        //若存在,不用新建这个目录,
346
-                        //若不存在,则新建这个目录
347
-                        //保存到目录表
370
+                                caseEvidenceDirectory.setParentId(parentId);
348 371
 
372
+                                caseEvidenceDirectoryMapper.save(caseEvidenceDirectory);
349 373
 
374
+                            }
350 375
 
376
+                        }
351 377
                     }
352
-                    int lastIndex = allindex.size();
353
-                    //得到 最后1个 \ 之后的目录 为文件名,
354
-                    //保存到目录表
355
-                    //保存到附件表
356 378
 
357
-                }
379
+                    //得到最后1级的目录,即文件
380
+                    int lastIndex = allindex.size()-2;
381
+                    String substrfile = filestr.substring(lastIndex+1);
358 382
 
383
+                    //保存到附件表
384
+                    LocalDate now = LocalDate.now();
385
+                    String year = Integer.toString(now.getYear());
386
+                    String month = String.format("%02d", now.getMonthValue());
387
+                    String day = String.format("%02d", now.getDayOfMonth());
388
+//                    String saveFolderPath = "/home/ruoyi/uploadPath/upload/" + year + "/" + month + "/" + day;
389
+                    String saveFolderPath = "D:/data/" + year + "/" + month + "/" + day;
390
+                    String fileName = UUID.randomUUID().toString().replace("-", "")+ "_"  + substrfile;
391
+                    String resultFilePath = saveFolderPath + "/" + fileName;
392
+
393
+                    try {
394
+                        FileInputStream fis = new FileInputStream(new File(filestr));
395
+                        FileOutputStream fos = new FileOutputStream(new File(resultFilePath));
396
+                        byte b[] = new byte[1024];
397
+                        int len=0;
398
+                        while((len=fis.read(b))!=-1){
399
+                            fos.write(b);
400
+                        }
359 401
 
402
+                    } catch (IOException e) {
403
+                        AjaxResult.error("文件解压异常",e);
404
+                    }
360 405
 
361
-            }
406
+                    Integer annexType = null;
407
+                    if("申请书".equals(substrOne)){
408
+                        annexType = 1;
409
+                    }else if("证据材料".equals(substrOne)){
410
+                        annexType = 2;
411
+                    }
412
+                    String savePath = "/home/ruoyi/uploadPath/upload";
413
+                    String saveName = "/profile/upload/" + year + "/" + month + "/" + day + "/" + fileName;
414
+                    //将附件保存到附件表里
415
+                    CaseAttach caseAttach = CaseAttach.builder()
416
+                            .caseAppliId(id)
417
+                            .annexName(saveName)
418
+                            .annexPath(savePath)
419
+                            .annexType(annexType)
420
+                            .build();
421
+                    int i = caseAttachMapper.save(caseAttach);
422
+
423
+                    Integer annexId = caseAttach.getAnnexId();
362 424
 
425
+                    //保存到目录表
426
+                    Integer parentId = null;
427
+                    CaseEvidenceDirectory caseEvidenceDirectoryselect = new CaseEvidenceDirectory();
428
+//                            caseEvidenceDirectoryselect.setCaseid(id);
429
+                    caseEvidenceDirectoryselect.setEvidenceName(filestr.substring(allindex.get(lastIndex-1)+1,allindex.get(lastIndex)));
430
+                    caseEvidenceDirectoryselect.setSeries(series-1);
431
+                    List<CaseEvidenceDirectory>  caseEvidenceDirectorys = caseEvidenceDirectoryMapper.selectList(caseEvidenceDirectoryselect);
432
+                    if(caseEvidenceDirectorys!=null&&caseEvidenceDirectorys.size()>0){
433
+                        parentId = caseEvidenceDirectorys.get(0).getId();
434
+                    }
435
+
436
+                    CaseEvidenceDirectory caseEvidenceDirectory = new CaseEvidenceDirectory();
437
+                    caseEvidenceDirectory.setEvidenceName(substrfile);
438
+                    caseEvidenceDirectory.setSeries(series);
439
+                    caseEvidenceDirectory.setCreateBy(username);
440
+                    caseEvidenceDirectory.setCreateTime(new Date());
441
+                    caseEvidenceDirectory.setAnnexId(annexId);
442
+                    //caseEvidenceDirectory.setCaseid(id);
363 443
 
444
+                    caseEvidenceDirectory.setParentId(parentId);
364 445
 
446
+                    caseEvidenceDirectoryMapper.save(caseEvidenceDirectory);
447
+                }
448
+            }
365 449
         }
366 450
 
367 451
         return AjaxResult.success();