表
CREATE TABLE `note` (
`id` varchar(255) NOT NULL,
`title` varchar(255) NOT NULL,
`type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`sponsor` varchar(255) DEFAULT NULL,
`solve` varchar(255) DEFAULT NULL,
`is_assist` int DEFAULT NULL,
`status` int DEFAULT NULL,
`version` varchar(255) DEFAULT NULL,
`desc` varchar(255) DEFAULT NULL,
`solve_method` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
`other` varchar(255) DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
`resource_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`entity_id` int NOT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
CREATE TABLE `sftp_file` (
`file_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '文件id',
`file_name_up` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '文件名称',
`file_name` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '上传文件名称',
`file_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '文件类型',
`file_size` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '文件大小 单位:B',
`server_ip` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '文件服务器地址',
`file_path` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '文件上传路径',
`record_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '操作用户id',
`create_time` datetime NOT NULL COMMENT '上传日期',
PRIMARY KEY (`file_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='附件表'
层次结构
实体类
package com.fh.autocheck.entity;
import java.util.Date;
import java.util.List;
import java.util.UUID;
public class Note {
String resourceName;
Integer entityId;
//唯一主键,用来约束文件相关情况
private String id;
private String title;
private String type;
private String sponsor;
private String solve;
private Integer isAssist;
private Integer status;
private String version;
private String desc;
private String solveMethod;
private String other;
private Date createTime;
private Date updateTime;
public Note() {
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String createId(){
return UUID.randomUUID().toString().replace("-","");
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getSponsor() {
return sponsor;
}
public void setSponsor(String sponsor) {
this.sponsor = sponsor;
}
public String getSolve() {
return solve;
}
public void setSolve(String solve) {
this.solve = solve;
}
public Integer getIsAssist() {
return isAssist;
}
public void setIsAssist(Integer isAssist) {
this.isAssist = isAssist;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getSolveMethod() {
return solveMethod;
}
public void setSolveMethod(String solveMethod) {
this.solveMethod = solveMethod;
}
public String getOther() {
return other;
}
public void setOther(String other) {
this.other = other;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public String getResourceName() {
return resourceName;
}
public void setResourceName(String resourceName) {
this.resourceName = resourceName;
}
public Integer getEntityId() {
return entityId;
}
public void setEntityId(Integer entityId) {
this.entityId = entityId;
}
}
package com.fh.autocheck.entity;
import java.util.Date;
import java.util.UUID;
public class SftpFile {
/**
* 文件id
*/
private String fileId;
/**
* 文件名称
*/
private String fileNameUp;
/**
* 上传文件名称
*/
private String fileName;
/**
* 文件类型
*/
private String fileType;
/**
* 文件大小 B
*/
private String fileSize;
/**
* 文件服务器地址
*/
private String serverIp;
/**
* 文件上传路径
*/
private String filePath;
private String recordId;
private Date createTime;
public SftpFile() {
}
public static String createDbId() {
return UUID.randomUUID().toString().replace("-","");
}
public String getFileId() {
return fileId;
}
public void setFileId(String fileId) {
this.fileId = fileId;
}
public String getFileNameUp() {
return fileNameUp;
}
public void setFileNameUp(String fileNameUp) {
this.fileNameUp = fileNameUp;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getFileType() {
return fileType;
}
public void setFileType(String fileType) {
this.fileType = fileType;
}
public String getFileSize() {
return fileSize;
}
public void setFileSize(String fileSize) {
this.fileSize = fileSize;
}
public String getServerIp() {
return serverIp;
}
public void setServerIp(String serverIp) {
this.serverIp = serverIp;
}
public String getFilePath() {
return filePath;
}
public void setFilePath(String filePath) {
this.filePath = filePath;
}
public String getRecordId() {
return recordId;
}
public void setRecordId(String recordId) {
this.recordId = recordId;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
}
package com.fh.autocheck.entity.Vo;
import com.fh.autocheck.entity.SftpFile;
import java.util.Date;
import java.util.List;
import java.util.UUID;
public class NoteVo {
String resourceName;
Integer entityId;
//唯一主键,用来约束文件相关情况
private String id;
private String title;
private String type;
private String sponsor;
private String solve;
private Integer isAssist;
private Integer status;
private String version;
private String desc;
private String solveMethod;
private String other;
private Date createTime;
private Date updateTime;
private List<SftpFile> files;
public List<SftpFile> getFiles() {
return files;
}
public void setFiles(List<SftpFile> files) {
this.files = files;
}
public NoteVo() {
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String createId(){
return UUID.randomUUID().toString().replace("-","");
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getSponsor() {
return sponsor;
}
public void setSponsor(String sponsor) {
this.sponsor = sponsor;
}
public String getSolve() {
return solve;
}
public void setSolve(String solve) {
this.solve = solve;
}
public Integer getIsAssist() {
return isAssist;
}
public void setIsAssist(Integer isAssist) {
this.isAssist = isAssist;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getSolveMethod() {
return solveMethod;
}
public void setSolveMethod(String solveMethod) {
this.solveMethod = solveMethod;
}
public String getOther() {
return other;
}
public void setOther(String other) {
this.other = other;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public String getResourceName() {
return resourceName;
}
public void setResourceName(String resourceName) {
this.resourceName = resourceName;
}
public Integer getEntityId() {
return entityId;
}
public void setEntityId(Integer entityId) {
this.entityId = entityId;
}
}
service方法
package com.fh.autocheck.service.impl;
import com.fh.autocheck.dao.Filemapper;
import com.fh.autocheck.dao.NoteMapper;
import com.fh.autocheck.entity.Note;
import com.fh.autocheck.entity.SftpFile;
import com.fh.autocheck.entity.Vo.NoteVo;
import com.fh.autocheck.service.NoteService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class NoteServiceImpl implements NoteService {
@Autowired
NoteMapper noteMapper;
@Autowired
Filemapper fileMapper;
public Map<String, Object> getNotes(String resourceName,Integer entityId){
List<NoteVo> noteVos = new ArrayList<>();
List<Note> notes = noteMapper.findBypkey(resourceName, entityId);
for (Note note :
notes) {
NoteVo noteVo = new NoteVo();
List<SftpFile> files = fileMapper.findById(note.getId());
BeanUtils.copyProperties(note, noteVo);
noteVo.setFiles(files);
noteVos.add(noteVo);
}
HashMap<String, Object>resultMap = new HashMap<>();
resultMap.put("note", noteVos);
return resultMap;
}
}
mapper
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.fh.autocheck.dao.Filemapper">
<!--批量添加,附件表-->
<insert id="batchInsertFile" parameterType="java.util.List">
INSERT into sftp_file
(file_id,file_name_up,file_name,file_type,file_size,server_ip,file_path,record_id,create_time)
VALUES
<foreach item="item" collection="sftpFileList" index="index" separator=",">
(#{item.fileId,jdbcType=VARCHAR},
#{item.fileNameUp,jdbcType=VARCHAR},
#{item.fileName,jdbcType=VARCHAR},
#{item.fileType,jdbcType=VARCHAR},
#{item.fileSize,jdbcType=VARCHAR},
#{item.serverIp,jdbcType=VARCHAR},
#{item.filePath,jdbcType=VARCHAR},
#{item.recordId,jdbcType=VARCHAR},
NOW())
</foreach>
</insert>
<!--根据文件ID批量查询文件信息-->
<select id="getFilesByIds" resultType="com.fh.autocheck.entity.SftpFile">
select
file_id as fileId,file_name_up as fileNameUp,file_name as fileName,
file_type as fileType,file_size as fileSize,server_ip as serverIp,
file_path as filePath,user_id asuserId,create_time as createTime
from sftp_file
where
<foreach collection="fileIdList" item="fileId" index="index" open=" file_id IN (" close=")" separator=",">
#{fileId,jdbcType=VARCHAR}
</foreach>
order by
CREATE_TIME DESC
</select>
<select id="findById" resultType="com.fh.autocheck.entity.SftpFile">
select
file_id as fileId,file_name_up as fileNameUp,file_name as fileName,
file_type as fileType,file_size as fileSize,server_ip as serverIp,
file_path as filePath,record_id as recordId,create_time as createTime
from sftp_file
where
record_id=#{recordId}
</select>
<select id="findByFileId" resultType="com.fh.autocheck.entity.SftpFile">
select
file_name_up,file_path , file_name , file_type
from sftp_file
where
file_id = #{fileId}
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.fh.autocheck.dao.NoteMapper">
<!--批量添加,附件表-->
<insert id="insertNote" parameterType="com.fh.autocheck.entity.Note">
INSERT into note
(resource_name,entity_id,`id`,title,`type`,sponsor,solve,is_assist,status,version,`desc`,solve_method,`other`,create_time,update_time)
VALUES
(
#{resourceName},
#{entityId},
#{id},
#{title},
#{type},
#{sponsor},
#{solve},
#{isAssist},
#{status},
#{version},
#{desc},
#{solveMethod},
#{other},
#{createTime},
#{updateTime}
)
</insert>
<select id="findBypkey" resultType="com.fh.autocheck.entity.Note">
select
*
from note
where
resource_name=#{resourceName} and entity_id = #{entityId}
order by
create_time DESC
</select>
<update id="updateNote">
update note set title = #{title},`type` = #{type} ,sponsor = #{sponsor},solve = #{solve},is_assist = {isAssist},status = #{status},version = #{version},`desc` = #{desc},solve_method = #{solveMethod},`other`= #{other},update_time = #{updateTime})
where id=#{id}
</update>
</mapper>
业务逻辑代码
package com.fh.autocheck.controller;
import com.fh.autocheck.dao.Filemapper;
import com.fh.autocheck.dao.NoteMapper;
import com.fh.autocheck.entity.Note;
import com.fh.autocheck.entity.SftpFile;
import com.fh.autocheck.entity.Vo.NoteVo;
import com.fh.autocheck.service.NoteService;
import com.fh.autocheck.util.R;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.log4j.Log4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.math.BigDecimal;
import java.net.InetAddress;
import java.net.URLEncoder;
import java.net.UnknownHostException;
import java.nio.charset.StandardCharsets;
import java.util.*;
@Api(value = "BatchFilesController", tags = {"文件(附件)信息表"})
@Log4j
@Controller
@RequestMapping("/batchFiles")
public class BatchFilesController {
@Autowired
private Filemapper fileMapper;
@Autowired
private NoteMapper noteMapper;
@Autowired
private NoteService noteService;
/**
* @param note 运营记录
* @param files 文件对象
* @return java.lang.String
* @description TODO 批量文件上传
* @author WangTianLiang
* @date 2021/5/21
*/
@ApiOperation("批量文件上传")
@RequestMapping(value = "batchUploadFile", method = RequestMethod.POST)
@ResponseBody
@Transactional(rollbackFor = Exception.class)
public Map<String, Object> batchUploadFile(@RequestParam("files") MultipartFile[] files, Note note, String resourceName, String entityId) {
Map<String, Object> mapData = new HashMap<>();
//拿到note,生成唯一id
note.setId(note.createId());
note.setCreateTime(new Date());
note.setUpdateTime(new Date());
//生成运营记录
int record = noteMapper.insertNote(note);
if (record == 0) {
mapData.put("data", "失败");
return mapData;
}
//step 1: 判断校验文件流是否有文件
if (files == null || files.length <= 0) {
mapData.put("success", false);//false:成功,false:失败
mapData.put("msg", "系统未检测到文件流");
return mapData;
}
//step 2: 创建List集合用于存储文件对象
List<SftpFile> sftpFileList = new ArrayList<>();
//step 3: 创建List集合用于存储文件ID,返给前端
List<String> sftpFileIdList = new ArrayList<>();
for (MultipartFile file : files) {
//step 4: 封装实例对象
SftpFile sftpFile = new SftpFile();
String fileId = SftpFile.createDbId();//随机生产主键ID
sftpFile.setFileId(fileId);//文件id
sftpFile.setRecordId(note.getId());//文件对应记录唯一主键
sftpFile.setCreateTime(new Date());//创建时间
// 获取原始名字
String fileNameUp = file.getOriginalFilename();
sftpFile.setFileNameUp(fileNameUp);//上传文件名称
sftpFile.setFileName(fileId);//存储文件的名称
// 获取后缀名
String suffixType = fileNameUp.substring(fileNameUp.lastIndexOf(".") + 1);
sftpFile.setFileType(suffixType);//文件类型
//获得文件大小
Float size = Float.parseFloat(String.valueOf(file.getSize())) / 1024;
BigDecimal b = new BigDecimal(size);
size = b.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();
sftpFile.setFileSize(size.toString());//文件大小(字节单位)
// 文件保存路径 你还可以在拼接一层路径,例如 20210521 每天上传的都会生成一个新的文件加里
String filePath = "E://image//";
sftpFile.setFilePath(filePath);//文件上传路径
// 文件重命名,防止重复
String filePathName = filePath + fileId + "." + sftpFile.getFileType();
//本机ip 静态方法获取InetAddress对象。
InetAddress ia = null;
try {
ia = ia.getLocalHost();// 获取本地主机
sftpFile.setServerIp(ia.getHostAddress());
} catch (UnknownHostException e) {
log.error("文件传输服务器失败:", e);
}
//step 5: 创建文件对象
File dest = new File(filePathName);
//step 6: 判断路径是否存在,如果不存在则创建
if (!dest.getParentFile().exists()) {
dest.getParentFile().mkdirs();
}
//step 7: 文件存在,返回
if (dest.exists()) {
mapData.put("success", false);//false:成功,false:失败
mapData.put("msg", "文件已存在,请重新上传" + fileNameUp);
return mapData;
}
try {
//step 8: 保存到服务器中
file.transferTo(dest);
//step 9: 将生产的文件ID 和文件对象分别存入对应的集合
sftpFileIdList.add(fileId);
sftpFileList.add(sftpFile);
} catch (Exception e) {
log.error("文件传输服务器失败:", e);
}
}
//判断校验存储文件对象集合是否为空、集合长度是否大于0
if (sftpFileList != null && sftpFileList.size() > 0) {
//step 10: 批量添加文件对象
int i = fileMapper.batchInsertFile(sftpFileList);
//step 11: 判断是否添加成功 存储文件对象的集合长度是否等于数据库执行的条数
if (sftpFileList.size() == i) {
log.info("文件上传成功");//false:成功,false:失败
}
}
return mapData;
}
@ApiOperation("获取该note下的所有信息")
@RequestMapping(value = "note", method = RequestMethod.GET)
@ResponseBody
public R notes(String resourceName, Integer entityId) {
Map<String, Object> notes = noteService.getNotes(resourceName, entityId);
return new R(200, "成功", notes);
}
@RequestMapping("/downloadFile")
public ResponseEntity<byte[]> download(HttpServletRequest request, String fileId) throws IOException {
SftpFile sfile = fileMapper.findByFileId(fileId);
String filePath = sfile.getFilePath() + sfile.getFileName() + "." + sfile.getFileType();
File file = new File(filePath);
byte[] body = null;
InputStream is = new FileInputStream(file);
body = new byte[is.available()];
is.read(body);
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Disposition", "attchement;filename=" + sfile.getFileNameUp());
HttpStatus statusCode = HttpStatus.OK;
ResponseEntity<byte[]> entity = new ResponseEntity<byte[]>(body, headers, statusCode);
return entity;
}
/**
* @param fileId 想要下载的文件的id
* @param response
* @功能描述 下载文件:
*/
@RequestMapping("/download")
public void download(String fileId, HttpServletResponse response) {
try {
// path是指想要下载的文件的路径
SftpFile sfile = fileMapper.findByFileId(fileId);
String filePath = sfile.getFilePath() + sfile.getFileName() + "." + sfile.getFileType();
File file = new File(filePath);
log.info(file.getPath());
// 获取文件名
String filename = file.getName();
// 获取文件后缀名
String ext = filename.substring(filename.lastIndexOf(".") + 1).toLowerCase();
log.info("文件后缀名:" + ext);
// 将文件写入输入流
FileInputStream fileInputStream = new FileInputStream(file);
InputStream fis = new BufferedInputStream(fileInputStream);
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
fis.close();
// 清空response
response.reset();
// 设置response的Header
response.setCharacterEncoding("UTF-8");
//Content-Disposition的作用:告知浏览器以何种方式显示响应返回的文件,用浏览器打开还是以附件的形式下载到本地保存
//attachment表示以附件方式下载 inline表示在线打开 "Content-Disposition: inline; filename=文件名.mp3"
// filename表示文件的默认名称,因为网络传输只支持URL编码的相关支付,因此需要将文件名URL编码后进行传输,前端收到后需要反编码才能获取到真正的名称
response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));
// 告知浏览器文件的大小
response.addHeader("Content-Length", "" + file.length());
OutputStream outputStream = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/octet-stream");
outputStream.write(buffer);
outputStream.flush();
} catch (IOException ex) {
ex.printStackTrace();
}
}
@Transactional
@RequestMapping(value = "updatenote" ,method = RequestMethod.PUT)
public R updateNote(Note note,MultipartFile[] files){
List<SftpFile> sftpFileList = new ArrayList<>();
//设置更新时间
note.setUpdateTime(new Date());
//插入数据
int i = noteMapper.updateNote(note);
if (i == 1) {
log.error("修改失败");
return R.error();
}
if(files != null){
for (MultipartFile file : files) {
//step 4: 封装实例对象
SftpFile sftpFile = new SftpFile();
String fileId = SftpFile.createDbId();//随机生产主键ID
sftpFile.setFileId(fileId);//文件id
sftpFile.setRecordId(note.getId());//文件对应记录唯一主键
// 获取原始名字
String fileNameUp = file.getOriginalFilename();
sftpFile.setFileNameUp(fileNameUp);//上传文件名称
sftpFile.setFileName(fileId);//存储文件的名称
// 获取后缀名
String suffixType = fileNameUp.substring(fileNameUp.lastIndexOf(".") + 1);
sftpFile.setFileType(suffixType);//文件类型
//获得文件大小
Float size = Float.parseFloat(String.valueOf(file.getSize())) / 1024;
BigDecimal b = new BigDecimal(size);
size = b.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();
sftpFile.setFileSize(size.toString());//文件大小(字节单位)
// 文件保存路径 你还可以在拼接一层路径,例如 20210521 每天上传的都会生成一个新的文件加里
String filePath = "E://image//";
sftpFile.setFilePath(filePath);//文件上传路径
// 文件重命名,防止重复
String filePathName = filePath + fileId + "." + sftpFile.getFileType();
//本机ip 静态方法获取InetAddress对象。
InetAddress ia = null;
try {
ia = ia.getLocalHost();// 获取本地主机
sftpFile.setServerIp(ia.getHostAddress());
} catch (UnknownHostException e) {
log.error("文件传输服务器失败:", e);
}
//step 5: 创建文件对象
File dest = new File(filePathName);
//step 6: 判断路径是否存在,如果不存在则创建
if (!dest.getParentFile().exists()) {
dest.getParentFile().mkdirs();
}
//step 7: 文件存在,返回
if (dest.exists()) {
return R.error();
}
try {
//step 8: 保存到服务器中
file.transferTo(dest);
sftpFileList.add(sftpFile);
} catch (Exception e) {
log.error("文件传输服务器失败:", e);
}
}
//将文件信息批量插入数据库中
if (sftpFileList != null && sftpFileList.size() > 0) {
//step 10: 批量添加文件对象
int j = fileMapper.batchInsertFile(sftpFileList);
//step 11: 判断是否添加成功 存储文件对象的集合长度是否等于数据库执行的条数
if (sftpFileList.size() == j) {
log.info("文件上传成功");//false:成功,false:失败
}
}
}
//将数据回显
Map<String, Object> notes = noteService.getNotes(note.getResourceName(), note.getEntityId());
return new R(200, "成功", notes);
}
}