yuxc
2025-01-15 9503c595d3508c80cbbacf6e69dca459771d250e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
package com.vci.web.controller;
 
import com.vci.constant.FrameWorkLangCodeConstant;
import com.vci.dto.VciFileObjectDTO;
import com.vci.pagemodel.VciFileObjectVO;
import com.vci.starter.web.annotation.controller.VciUnCheckRight;
import com.vci.starter.web.exception.VciBaseException;
import com.vci.starter.web.pagemodel.BaseResult;
import com.vci.starter.web.util.LangBaseUtil;
import com.vci.starter.web.util.VciBaseUtil;
import com.vci.web.service.VciFileObjectServiceI;
import com.vci.web.service.VciFileUploadServiceI;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
 
import java.io.IOException;
 
import static com.vci.starter.web.util.Lcm.Charsets.UTF_8;
 
/**
 * 文档上传控制器
 *
 * @author dangsn
 * @date 2020-08-04
 */
@RestController
@RequestMapping("/vciFileUploadController")
public class VciFileUploadController {
 
    /**
     * 文件上传业务层
     */
    @Autowired
    private VciFileUploadServiceI vciFileUploadServiceI;
 
    /**
     * 文件的对象服务
     */
    @Autowired
    private VciFileObjectServiceI fileObjectService;
 
    /**
     * 前端页面单文件上传。(先数据,后文件模式上传)
     * @param file 上传的文件
     * @param fileObjectDTO 文件信息传输对象
     * @return 文件信息显示对象
     */
    @PostMapping("/uploadFile")
    public BaseResult<VciFileObjectVO> uploadFile(MultipartFile file, VciFileObjectDTO fileObjectDTO){
        try {
            if (file != null ) {
                return vciFileUploadServiceI.uploadFile(file, fileObjectDTO);
            } else {
                return BaseResult.fail(FrameWorkLangCodeConstant.UPLOAD_FAIL, new String[]{"无上传的文件"});
            }
        }catch (Throwable e) {
            throw new VciBaseException(e.getMessage(),new String[0],e);
        }
    }
 
    /**
     * 供其他服务调用的文件上传接口。(分片上传)
     * @param multipartFile 片文件
     * @param offSet 文件偏移位置
     * @param fileOid 文件主键
     * @return 文件信息显示对象
     */
    @PostMapping(value = "/uploadFileForOtherService",consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public BaseResult<VciFileObjectVO> uploadFileForOtherService(@RequestPart("file") MultipartFile multipartFile,
                                                                 @RequestParam("offSet") long offSet,
                                                                 @RequestParam("fileOid") String fileOid){
        return vciFileUploadServiceI.uploadFileForOtherService(multipartFile, offSet, fileOid);
    }
 
    /**
     * 其他服务上传文件之前初始化文件信息
     * @param vciFileObjectDTOList 文件信息传输对象集合所在对象
     * @return 文件信息显示对象
     */
    @PostMapping("/initUploadFileInfo")
    public BaseResult<VciFileObjectVO> initUploadFileInfo(@RequestBody VciFileObjectDTO vciFileObjectDTOList){
        return vciFileUploadServiceI.initUploadFileInfo(vciFileObjectDTOList.getVciFileObjectDTOList());
    }
 
    /**
     * 将原业务数据下的所有文件共享到其他的业务类型下
     * @param sourceBtmName 原业务类型
     * @param sourceBusinessOid 原业务数据主键
     * @param btmName 业务类型
     * @param businessOid 业务数据主键
     * @return 文件信息显示对象
     */
    @PostMapping("/shareFilesFromBO")
    public BaseResult<VciFileObjectVO> shareFilesToBO(String sourceBtmName, String sourceBusinessOid,
                                                      String btmName, String businessOid){
        return vciFileUploadServiceI.shareFilesToBO(sourceBtmName, sourceBusinessOid, btmName, businessOid);
    }
 
    /**
     * 将文件共享到其他的业务类型下
     * @param fileOids 文件主键
     * @param btmName 业务类型
     * @param businessOid 业务数据主键
     * @return 共享后的文件显示对象
     */
    @PostMapping("/shareFileFromFile")
    public BaseResult shareFilesToBO(String fileOids, String btmName, String businessOid){
        return vciFileUploadServiceI.shareFilesToBO(VciBaseUtil.str2List(fileOids), btmName, businessOid);
    }
 
    /**
     * 将原业务数据下的非表单相关文件共享到其他的业务类型下
     * @param sourceBtmName 原业务类型
     * @param sourceBusinessOid 原业务数据主键
     * @param btmName 业务类型
     * @param businessOid 业务数据主键
     * @return 文件信息显示对象
     */
    @PostMapping("/shareAnnexFilesToBO")
    public BaseResult<VciFileObjectVO> shareAnnexFilesToBO(String sourceBtmName, String sourceBusinessOid,
                                                           String btmName, String businessOid){
        return vciFileUploadServiceI.shareAnnexFilesToBO(sourceBtmName, sourceBusinessOid, btmName, businessOid);
    }
 
    /**
     * 删除文件
     * @param oids 文件的主键
     * @return 执行结果
     */
    @DeleteMapping("/deleteFiles")
    public BaseResult deleteFiles(String oids){
        return fileObjectService.deleteFiles(VciBaseUtil.str2List(oids));
    }
 
    /**
     * 删除文件
     * @param oids 文件的主键
     * @return 执行结果
     */
    @PostMapping("/deleteFilesPost")
    public BaseResult deleteFilesPost(String oids){
        return deleteFiles(oids);
    }
 
    /**
     * 读取上传文件的内容
     * @param file 文件的对象
     * @return 内容
     */
    @PostMapping("/readUploadFile")
    @VciUnCheckRight
    public BaseResult<String> readUploadFile(MultipartFile file){
        try {
            return BaseResult.success(new String(file.getBytes(),UTF_8));
        } catch (IOException e) {
            return BaseResult.fail(LangBaseUtil.getErrorMsg(e));
        }
    }
 
}