Explorar el Código

Merge branch 'qtz3' of SH-Arbitrate/Arbitrate-Backend into dev

qtz hace 2 años
padre
commit
fff2eaabaa

+ 17
- 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/CaseApplicationController.java Ver fichero

96
         return toAjax(caseApplicationService.submitCaseApplication(batchCaseApplication.getIds()));
96
         return toAjax(caseApplicationService.submitCaseApplication(batchCaseApplication.getIds()));
97
     }
97
     }
98
 
98
 
99
+
100
+
99
     /**
101
     /**
100
      * 删除立案数据
102
      * 删除立案数据
101
      */
103
      */
158
         return success(sealUrlRecordselect);
160
         return success(sealUrlRecordselect);
159
     }
161
     }
160
 
162
 
163
+
164
+    /**
165
+     * 案件证据材料压缩包上传
166
+     *
167
+     * @param file      附件
168
+     * @param id        案件申请id
169
+     * @return
170
+     */
171
+    @PostMapping("/upload")
172
+    public AjaxResult uploadZipFile(@RequestParam("file") MultipartFile file, Long id) {
173
+        String username = this.getUsername();
174
+        Long userId = this.getUserId();
175
+        return caseApplicationService.uploadZipFile(file, id, username, userId);
176
+    }
177
+
161
     /**
178
     /**
162
      * 立案申请导入模板下载
179
      * 立案申请导入模板下载
163
      */
180
      */

+ 3
- 0
ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/ICaseApplicationService.java Ver fichero

8
 import com.ruoyi.wisdomarbitrate.domain.SealSignRecord;
8
 import com.ruoyi.wisdomarbitrate.domain.SealSignRecord;
9
 import com.ruoyi.wisdomarbitrate.domain.vo.SendRoomNoMessageVO;
9
 import com.ruoyi.wisdomarbitrate.domain.vo.SendRoomNoMessageVO;
10
 import com.ruoyi.wisdomarbitrate.domain.vo.ToDoCount;
10
 import com.ruoyi.wisdomarbitrate.domain.vo.ToDoCount;
11
+import org.springframework.web.multipart.MultipartFile;
11
 
12
 
12
 import java.util.List;
13
 import java.util.List;
13
 
14
 
72
      * @return
73
      * @return
73
      */
74
      */
74
     int updateCaseLockStatus(CaseApplication caseApplication);
75
     int updateCaseLockStatus(CaseApplication caseApplication);
76
+
77
+    AjaxResult uploadZipFile(MultipartFile file, Long id, String username, Long userId);
75
 }
78
 }

+ 208
- 2
ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/CaseApplicationServiceImpl.java Ver fichero

35
 import com.ruoyi.wisdomarbitrate.mapper.*;
35
 import com.ruoyi.wisdomarbitrate.mapper.*;
36
 import com.ruoyi.wisdomarbitrate.service.ICaseApplicationService;
36
 import com.ruoyi.wisdomarbitrate.service.ICaseApplicationService;
37
 import com.ruoyi.wisdomarbitrate.utils.SignAward;
37
 import com.ruoyi.wisdomarbitrate.utils.SignAward;
38
+import com.ruoyi.wisdomarbitrate.utils.UnZipFileUtils;
38
 import org.springframework.beans.factory.annotation.Autowired;
39
 import org.springframework.beans.factory.annotation.Autowired;
39
 import org.springframework.stereotype.Service;
40
 import org.springframework.stereotype.Service;
40
 import org.springframework.transaction.annotation.Transactional;
41
 import org.springframework.transaction.annotation.Transactional;
41
 import org.springframework.web.bind.annotation.RequestParam;
42
 import org.springframework.web.bind.annotation.RequestParam;
43
+import org.springframework.web.multipart.MultipartFile;
42
 
44
 
43
-import java.io.File;
44
-import java.io.IOException;
45
+import java.io.*;
45
 import java.math.BigDecimal;
46
 import java.math.BigDecimal;
46
 import java.nio.file.Files;
47
 import java.nio.file.Files;
47
 import java.nio.file.Path;
48
 import java.nio.file.Path;
84
     private SealSignRecordMapper sealSignRecordMapper;
85
     private SealSignRecordMapper sealSignRecordMapper;
85
     @Autowired
86
     @Autowired
86
     private CaseLogRecordMapper caseLogRecordMapper;
87
     private CaseLogRecordMapper caseLogRecordMapper;
88
+    @Autowired
89
+    private   CaseEvidenceDirectoryMapper caseEvidenceDirectoryMapper;
87
     // 手机号正则
90
     // 手机号正则
88
     private static final Pattern TELEPHONE_REGX =  Pattern.compile("^1(3\\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\\d|9[0-35-9])\\d{8}$");
91
     private static final Pattern TELEPHONE_REGX =  Pattern.compile("^1(3\\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\\d|9[0-35-9])\\d{8}$");
89
 
92
 
247
         return caseApplicationMapper.updateCaseLockStatus(caseApplication.getId(),caseApplication.getLockStatus());
250
         return caseApplicationMapper.updateCaseLockStatus(caseApplication.getId(),caseApplication.getLockStatus());
248
     }
251
     }
249
 
252
 
253
+    public  void inputChangeToFile(InputStream instream, File file) {
254
+        try {
255
+            OutputStream outStr = new FileOutputStream(file);
256
+            int bytesRead = 0;
257
+            byte[] buffer = new byte[8192];
258
+            while ((bytesRead = instream.read(buffer, 0, 1024)) != -1) {
259
+                outStr.write(buffer, 0, bytesRead);
260
+            }
261
+            outStr.flush();
262
+            outStr.close();
263
+            instream.close();
264
+        } catch (Exception e) {
265
+            e.printStackTrace();
266
+        }
267
+    }
268
+
269
+    @Override
270
+    @Transactional
271
+    public AjaxResult uploadZipFile(MultipartFile file, Long id, String username, Long userId) {
272
+        if (file.isEmpty()) {
273
+            return AjaxResult.error("请选择要上传的文件");
274
+        }
275
+//        String targetPath =  "/home/ruoyi/uploadPath/upload/unzipFile";
276
+//        String targetPath =  "F:\\testZip\\unzipFile";
277
+        String targetPath =  "F:\\testZip\\unzipFile";
278
+        File zipFile = null;
279
+        InputStream ins = null;
280
+        try {
281
+            ins = file.getInputStream();
282
+            zipFile = new File(file.getOriginalFilename());
283
+            inputChangeToFile(ins, zipFile);
284
+        } catch (IOException e) {
285
+            e.printStackTrace();
286
+        }
287
+        //解压缩上传的压缩包
288
+        UnZipFileUtils.unZipFile(zipFile,targetPath);
289
+
290
+        //得到解压缩的所有文件
291
+        String zipName = file.getOriginalFilename();
292
+        String zipPath = "F:\\testZip\\unzipFile\\"+zipName;
293
+//        String zipPath =  "/home/ruoyi/uploadPath/upload/unzipFile"+zipName;
294
+        File dirUnzipPath = new File(zipPath);
295
+        List<File> allFiles = new ArrayList<>();
296
+        List<String> allFilestr = new ArrayList<>();
297
+        UnZipFileUtils.getFiles(dirUnzipPath,allFiles);
298
+        if(allFiles!=null&&allFiles.size()>0){
299
+            for (File fileIter : allFiles) {
300
+                System.out.println(fileIter.getAbsolutePath());
301
+                allFilestr.add(fileIter.getAbsolutePath());
302
+            }
303
+        }
304
+
305
+        //保存目录和文件
306
+        if(allFilestr!=null&&allFilestr.size()>0){
307
+            for (String filestr : allFilestr) {
308
+                List<Integer> allindex = new ArrayList<>();
309
+                int indexKey = filestr.indexOf("\\");
310
+                allindex.add(indexKey);
311
+                while (indexKey != -1) {
312
+                    indexKey = filestr.indexOf("\\", indexKey + 1);
313
+                    allindex.add(indexKey);
314
+                }
315
+                if(allindex!=null&&allindex.size()>0){
316
+                    String substrOne = filestr.substring(allindex.get(2)+1,allindex.get(3));
317
+                    Integer series = null;
318
+                    for (int i = 0; i < allindex.size()-2; i++) {
319
+                        String substr = filestr.substring(allindex.get(i+2)+1,allindex.get(i+3));
320
+                        series = i + 1;
321
+
322
+                        if(series==1){
323
+
324
+                            //查询这个级数的目录是否存在,若不存在,则新建这个目录
325
+                            CaseEvidenceDirectory caseEvidenceDirectoryselect = new CaseEvidenceDirectory();
326
+                            caseEvidenceDirectoryselect.setCaseId(id.intValue());
327
+                            caseEvidenceDirectoryselect.setEvidenceName(filestr.substring(allindex.get(i+2)+1,allindex.get(i+3)));
328
+                            caseEvidenceDirectoryselect.setSeries(series);
329
+                            List<CaseEvidenceDirectory>  caseEvidenceDirectorys = caseEvidenceDirectoryMapper.selectList(caseEvidenceDirectoryselect);
330
+                            if(caseEvidenceDirectorys!=null&&caseEvidenceDirectorys.size()>0){
331
+                                continue;
332
+                            }else {
333
+                                CaseEvidenceDirectory caseEvidenceDirectory = new CaseEvidenceDirectory();
334
+                                caseEvidenceDirectory.setEvidenceName(substr);
335
+                                caseEvidenceDirectory.setSeries(series);
336
+
337
+                                caseEvidenceDirectory.setCaseId(id.intValue());
338
+                                caseEvidenceDirectory.setCreateBy(username);
339
+                                caseEvidenceDirectory.setCreateTime(new Date());
340
+
341
+                                caseEvidenceDirectoryMapper.save(caseEvidenceDirectory);
342
+
343
+                            }
344
+                        }else {
345
+                            //查询这个级数的目录是否存在,若不存在,则新建这个目录
346
+                            CaseEvidenceDirectory directoryselect = new CaseEvidenceDirectory();
347
+                            directoryselect.setCaseId(id.intValue());
348
+                            directoryselect.setEvidenceName(filestr.substring(allindex.get(i+2)+1,allindex.get(i+3)));
349
+                            directoryselect.setSeries(series);
350
+                            List<CaseEvidenceDirectory>  evidenceDirectorys = caseEvidenceDirectoryMapper.selectList(directoryselect);
351
+                            if(evidenceDirectorys!=null&&evidenceDirectorys.size()>0){
352
+                                continue;
353
+                            }else {
354
+                                Integer parentId = null;
355
+                                CaseEvidenceDirectory caseEvidenceDirectoryselect = new CaseEvidenceDirectory();
356
+                                caseEvidenceDirectoryselect.setCaseId(id.intValue());
357
+                                caseEvidenceDirectoryselect.setEvidenceName(filestr.substring(allindex.get(i+1)+1,allindex.get(i+2)));
358
+                                caseEvidenceDirectoryselect.setSeries(series-1);
359
+                                List<CaseEvidenceDirectory>  caseEvidenceDirectorys = caseEvidenceDirectoryMapper.selectList(caseEvidenceDirectoryselect);
360
+                                if(caseEvidenceDirectorys!=null&&caseEvidenceDirectorys.size()>0){
361
+                                    parentId = caseEvidenceDirectorys.get(0).getId();
362
+                                }
363
+
364
+                                CaseEvidenceDirectory caseEvidenceDirectory = new CaseEvidenceDirectory();
365
+                                caseEvidenceDirectory.setEvidenceName(substr);
366
+                                caseEvidenceDirectory.setSeries(series);
367
+                                caseEvidenceDirectory.setCreateBy(username);
368
+                                caseEvidenceDirectory.setCreateTime(new Date());
369
+                                caseEvidenceDirectory.setCaseId(id.intValue());
370
+
371
+                                caseEvidenceDirectory.setParentId(parentId);
372
+
373
+                                caseEvidenceDirectoryMapper.save(caseEvidenceDirectory);
374
+
375
+                            }
376
+
377
+                        }
378
+                    }
379
+
380
+                    //得到最后1级的目录,即文件
381
+                    int lastIndex = allindex.size()-2;
382
+                    String substrfile = filestr.substring(lastIndex+1);
383
+
384
+                    //保存到附件表
385
+                    LocalDate now = LocalDate.now();
386
+                    String year = Integer.toString(now.getYear());
387
+                    String month = String.format("%02d", now.getMonthValue());
388
+                    String day = String.format("%02d", now.getDayOfMonth());
389
+//                    String saveFolderPath = "/home/ruoyi/uploadPath/upload/" + year + "/" + month + "/" + day;
390
+                    String saveFolderPath = "D:/data/" + year + "/" + month + "/" + day;
391
+                    String fileName = UUID.randomUUID().toString().replace("-", "")+ "_"  + substrfile;
392
+                    String resultFilePath = saveFolderPath + "/" + fileName;
393
+
394
+                    try {
395
+                        FileInputStream fis = new FileInputStream(new File(filestr));
396
+                        FileOutputStream fos = new FileOutputStream(new File(resultFilePath));
397
+                        byte b[] = new byte[1024];
398
+                        int len=0;
399
+                        while((len=fis.read(b))!=-1){
400
+                            fos.write(b);
401
+                        }
402
+
403
+                    } catch (IOException e) {
404
+                        AjaxResult.error("文件解压异常",e);
405
+                    }
406
+
407
+                    Integer annexType = null;
408
+                    if("申请书".equals(substrOne)){
409
+                        annexType = 1;
410
+                    }else if("证据材料".equals(substrOne)){
411
+                        annexType = 2;
412
+                    }
413
+                    String savePath = "/home/ruoyi/uploadPath/upload";
414
+                    String saveName = "/profile/upload/" + year + "/" + month + "/" + day + "/" + fileName;
415
+                    //将附件保存到附件表里
416
+                    CaseAttach caseAttach = CaseAttach.builder()
417
+                            .caseAppliId(id)
418
+                            .annexName(saveName)
419
+                            .annexPath(savePath)
420
+                            .annexType(annexType)
421
+                            .build();
422
+                    int i = caseAttachMapper.save(caseAttach);
423
+
424
+                    Integer annexId = caseAttach.getAnnexId();
425
+
426
+                    //保存到目录表
427
+                    Integer parentId = null;
428
+                    CaseEvidenceDirectory caseEvidenceDirectoryselect = new CaseEvidenceDirectory();
429
+                    caseEvidenceDirectoryselect.setCaseId(id.intValue());
430
+                    caseEvidenceDirectoryselect.setEvidenceName(filestr.substring(allindex.get(lastIndex)+1,allindex.get(lastIndex+1)));
431
+                    caseEvidenceDirectoryselect.setSeries(series-1);
432
+                    List<CaseEvidenceDirectory>  caseEvidenceDirectorys = caseEvidenceDirectoryMapper.selectList(caseEvidenceDirectoryselect);
433
+                    if(caseEvidenceDirectorys!=null&&caseEvidenceDirectorys.size()>0){
434
+                        parentId = caseEvidenceDirectorys.get(0).getId();
435
+                    }
436
+
437
+                    CaseEvidenceDirectory caseEvidenceDirectory = new CaseEvidenceDirectory();
438
+                    caseEvidenceDirectory.setEvidenceName(substrfile);
439
+                    caseEvidenceDirectory.setSeries(series);
440
+                    caseEvidenceDirectory.setCreateBy(username);
441
+                    caseEvidenceDirectory.setCreateTime(new Date());
442
+                    caseEvidenceDirectory.setAnnexId(annexId);
443
+                    caseEvidenceDirectory.setCaseId(id.intValue());
444
+
445
+                    caseEvidenceDirectory.setParentId(parentId);
446
+
447
+                    caseEvidenceDirectoryMapper.save(caseEvidenceDirectory);
448
+                }
449
+            }
450
+        }
451
+
452
+        return AjaxResult.success();
453
+
454
+    }
455
+
250
     private List<CaseLogRecord> getNofinishCasenode(Integer caseStatus) {
456
     private List<CaseLogRecord> getNofinishCasenode(Integer caseStatus) {
251
         CaseLogRecord caseLogRecord1 = new CaseLogRecord();
457
         CaseLogRecord caseLogRecord1 = new CaseLogRecord();
252
         caseLogRecord1.setCaseNodeName("立案审查");
458
         caseLogRecord1.setCaseNodeName("立案审查");

+ 126
- 0
ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/utils/UnZipFileUtils.java Ver fichero

1
+package com.ruoyi.wisdomarbitrate.utils;
2
+
3
+import lombok.extern.slf4j.Slf4j;
4
+
5
+import java.io.File;
6
+import java.io.FileOutputStream;
7
+import java.io.IOException;
8
+import java.io.InputStream;
9
+import java.nio.charset.Charset;
10
+import java.util.ArrayList;
11
+import java.util.Enumeration;
12
+import java.util.List;
13
+import java.util.zip.ZipEntry;
14
+import java.util.zip.ZipFile;
15
+
16
+@Slf4j
17
+public class UnZipFileUtils {
18
+
19
+    public static void main(String[] args) {
20
+        // 压缩包路径
21
+//        String zipPath = "F:\\testZip\\zipFile\\上传申请书证据材料.zip";
22
+        // 解压后存放路径
23
+//        String targetPath =  "F:\\testZip\\unzipFile";
24
+//        unZipFile(new File(zipPath),targetPath);
25
+
26
+
27
+//        String zipPath = "F:\\testZip\\unzipFile\\上传申请书证据材料";
28
+//        File dirUnzipPath = new File(zipPath);
29
+//        List<File> allFiles = new ArrayList<>();
30
+//        getFiles(dirUnzipPath,allFiles);
31
+//        if(allFiles!=null&&allFiles.size()>0){
32
+//            for (File fileIter : allFiles) {
33
+//                System.out.println(fileIter.getName());
34
+//                System.out.println(fileIter.getAbsolutePath());
35
+//            }
36
+//        }
37
+
38
+         String key = "\\";
39
+         String str = "F:\\testZip\\上传申请书证据材料\\证据材料\\仲裁裁决书模板.docx";
40
+        List<Integer> allindex = new ArrayList<>();
41
+        int a = str.indexOf(key);//*第一个出现的索引位置
42
+        allindex.add(a);
43
+        while (a != -1) {
44
+            System.out.print(a + "\t");
45
+            a = str.indexOf(key, a + 1);//*从这个索引往后开始第一个出现的位置
46
+            allindex.add(a);
47
+        }
48
+        String substr = str.substring(allindex.get(1)+1,allindex.get(2));
49
+        System.out.println("substr---"+substr);
50
+
51
+
52
+    }
53
+
54
+    public static boolean unZipFile(File aboriginalFile, String targetPath) {
55
+        if (!aboriginalFile.exists()) {
56
+            log.error("此文件不存在:",aboriginalFile.getPath());
57
+            return false;
58
+        }
59
+        try {
60
+            ZipFile srcZipFile = new ZipFile(aboriginalFile, Charset.forName("GBK"));
61
+            for (Enumeration enumeration = srcZipFile.entries(); enumeration.hasMoreElements(); ) {
62
+                ZipEntry entryZip = (ZipEntry) enumeration.nextElement();
63
+                //若是文件夹,就创建文件夹
64
+                if (entryZip.isDirectory()) {
65
+                    String directPath = targetPath + File.separator + entryZip.getName();
66
+                    File directFile = new File(directPath);
67
+                    boolean makeDirs = directFile.mkdirs();
68
+                    System.out.println("创建文件夹是否成功:" +makeDirs);
69
+                } else {
70
+                    //若是文件,就创建文件
71
+                    File sourceFile = new File(targetPath + File.separator + entryZip.getName());
72
+                    if(!sourceFile.getParentFile().exists()){
73
+                        boolean mDirect = sourceFile.getParentFile().mkdirs();
74
+                        System.out.println("创建压缩文件时,创建父文件夹是否成功:" +mDirect);
75
+                    }
76
+                    boolean newUnZipFile = sourceFile.createNewFile();
77
+                    if (newUnZipFile){
78
+                        // 将压缩文件内容写入到这个文件中
79
+                        try{
80
+                            InputStream is = srcZipFile.getInputStream(entryZip);
81
+                            FileOutputStream fos = new FileOutputStream(sourceFile);
82
+                            int len;
83
+                            byte[] buf = new byte[2048];
84
+                            while ((len = is.read(buf)) != -1) {
85
+                                fos.write(buf, 0, len);
86
+                            }
87
+                        } catch (Exception e){
88
+                            log.error("解压失败",e);
89
+                        }
90
+                    }
91
+                }
92
+            }
93
+            return true;
94
+
95
+        } catch (IOException e) {
96
+            log.error("解压失败",e);
97
+            return false;
98
+        }
99
+
100
+    }
101
+
102
+
103
+    public static void getFiles(File fileSource, List<File> allFiles) {
104
+        if (!fileSource.exists()) {
105
+            System.out.println("目录不存在");
106
+            return;
107
+        }
108
+        File[] fileArray = fileSource.listFiles();
109
+        if(fileArray!=null&&fileArray.length>0){
110
+            for (File fileIter : fileArray) {
111
+                if (fileIter.isDirectory()) {
112
+                    getFiles(fileIter,allFiles);
113
+                }else {
114
+                    allFiles.add(fileIter);
115
+                }
116
+
117
+            }
118
+
119
+        }
120
+    }
121
+
122
+
123
+
124
+
125
+
126
+}