一、上传
1.前端页面
我们看到需要添加多张图片跟多个附件,于是需要我们进行相关的附件上传处理。
2.后端代码实现
1.DTO入参
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
@ApiModel("房屋修改编辑")
public class RoomDto {
/**
* 房屋图片
*/
@Size(max = 5,message = "数量不能超过5个")
@ApiModelProperty("房屋图片")
private List<FileDTO> filePictureVo;
/**
* 房屋附件
*/
@Size(max = 5,message = "数量不能超过5个")
@ApiModelProperty("附件")
private List<FileDTO> fileVo;
}
2.业务代码
public int editRoom(String id, RoomDto dto) {
BuildingRoom buildingRoom = buildingRoomMapper.selectById(id);
Assert.isTrue(buildingRoom != null, "房间信息不存在");
//将传参的dto一部分内容转到room实体中,进行数据的修改
BeanUtils.copyProperties(dto, buildingRoom);
int i = buildingRoomMapper.updateById(buildingRoom);
//将原始传参的dto拿出,将图片和文件拿出来,同时调用file接口
String subjectId = buildingRoom.getId(); //关联主体id
String subjectTypePicture = File.TYPE_BUILDING_ROOM_PICTURE; //关联类型是图片
String subjectTypeFj = File.TYPE_BUILDING_ROOM_FILE; //关联类型是附件
fileService.deleteBySubjectId(id);
if (ObjectUtil.isNotEmpty(dto.getFilePictureVo())) {
fileService.insertFile(subjectTypePicture, subjectId, dto.getFilePictureVo()); //图片
}
if (ObjectUtil.isNotEmpty(dto.getFileVo())) {
fileService.insertFile(subjectTypeFj, subjectId, dto.getFileVo()); //附件
}
return i;
}
3.附件处理代码
@Override
@Transactional(rollbackFor = Exception.class)
public void insertFile(String subjectType,String subjectId,List<FileDTO> files){
Assert.isTrue(StringUtils.isNotBlank(subjectType)&&StringUtils.isNotBlank(subjectId),"来源不能为空");
if(!CollectionUtils.isEmpty(files)){
List<File> fileBeans = Lists.newArrayList();
for (FileDTO f : files) {
File file = new File();
BeanUtils.copyProperties(f,file);
file.setSubjectType(subjectType);
file.setSubjectId(subjectId);
file.setDeleteStatus(Constants.DELETE_STATUS_NORMAL);
fileBeans.add(file);
}
this.saveBatch(fileBeans);
}
}
最后成功将其添加到文件数据库中
二、回显
1.VO出参
/**
* 图片
*/
@ApiModelProperty("图片文件")
private List<FileVo> filePictureVo;
/**
* 文件
*/
@ApiModelProperty("文件")
private List<FileVo> fileVo;
2.业务代码
List<FileVo> file = fileService.selectFileListBySubjectTypeAndSubjectId(File.TYPE_BUILDING_ROOM_FILE, id);
List<FileVo> filePicture = fileService.selectFileListBySubjectTypeAndSubjectId(File.TYPE_BUILDING_ROOM_PICTURE,id);
buildingRoomInformation.setFilePictureVo(filePicture);
buildingRoomInformation.setFileVo(file);
3.附件处理代码
public List<FileVo> selectFileListBySubjectTypeAndSubjectId(String subjectType, String subjectId) {
return mapper.selectFileListBySubjectId(subjectId,subjectType);
}
成功拿到相关的附件