星云文件上传

1.文件上传请求

三个处理
a.上传文件到磁盘  
   文件路径:nebula:
             file:
               location:  D:/文件备份/
                   + temp/ UUIDUtil.getUUID() + originalAttachmentName的后缀
b.往表file_temp_attachment加记录(几个文件就加几个记录)
c.返回AttachmentDTO集合  (三个属性 file_temp_attachmen的前三个字段)

 @PostMapping({"/temp/upload"})
    public ResponseEntity<List<AttachmentDTO>> dealTempAttachmentUpload(@RequestParam("file") List<MultipartFile> multipartFiles) {
        return new ResponseEntity(this.attachmentService.dealTempAttachmentUpload(multipartFiles, SecurityUtil.getOperatorId()), HttpStatus.OK);
    }


返回多个AttachmentDTO
 private String id;                     //临时文件表id
 private String tempAttachmentName;     //临时文件名称
 private String originalAttachmentName; //临时文件原始名称

请求路径加前缀

@RestController
@RequestMapping(value = "/app/attachment")
public class AttachmentResource extends AttachmentCommonResource {

 @Inject
 public AttachmentResource(AttachmentService attachmentService) {
     super(attachmentService);
 }

2.用户、站点保存请求 createOfficialAttachment

两个处理:
  a.把第一步的文件复制到指定位置 fileprefix + getSourceModule +++ 临时文件名称
  b.根据上传时返回的AttachmentDTO往表file_attachment添加记录
  
private void saveLogo(AttachmentDTO logoDTO, String sourceId) {
        List<AttachmentAddDTO> attachmentAddDTOList = new ArrayList<>();
        AttachmentAddDTO attachmentAddDTO = new AttachmentAddDTO();
        attachmentAddDTO.setSourceId(sourceId);
        attachmentAddDTO.setTempAttachmentName(logoDTO.getTempAttachmentName());
        attachmentAddDTO.setOriginalAttachmentName(logoDTO.getOriginalAttachmentName());
        attachmentAddDTO.setSourceModule(FILE_MODULE_NAME);
        attachmentAddDTOList.add(attachmentAddDTO);
        attachmentService.createOfficialAttachment(attachmentAddDTOList, FILE_PREFIX, sourceId);
    }

3.下载头像文件

根据id去查表file_attachment得到原始名称和路径
然后根据完成路径 fileprefix + getSourceModule + 年 + 月 + 临时文件名称去下载

public void dealDownloadAttachmentById(String id, HttpServletResponse response) {
        Attachment attachment = (Attachment)this.attachmentRepository.selectByPrimaryKey(id);
        if (attachment == null) {
            log.error("附件:" + id + "不存在!");
            throw new BasicRuntimeException("attachment", "10005");
        } else {
            this.downloadAttachment(attachment.getOriginalName(), attachment.getLocation(), attachment.getUrlAccess(), response);
        }
    }

4.createOfficialAttachment代码

@Transactional
public List<String> createOfficialAttachment(List<AttachmentAddDTO> attachmentAddDTOS, String prefix, String operatorId) {
    Map<String, AttachmentAddDTO> attachmentAddDTOMap = new HashMap();
    List<String> tempAttachmentNames = (List)attachmentAddDTOS.stream().map((attachmentDTO) -> {
        attachmentAddDTOMap.put(attachmentDTO.getTempAttachmentName(), attachmentDTO);
        return attachmentDTO.getTempAttachmentName();
    }).collect(Collectors.toList());
    List<String> noExistAttachments = new ArrayList();
    List<String> existTempAttachments = this.validTempAttachmentIsExist(tempAttachmentNames, attachmentAddDTOMap, noExistAttachments);
    if (!CollectionUtils.isEmpty(existTempAttachments)) {
        LocalDateTime now = LocalDateTime.now();
        List<Attachment> attachmentList = new ArrayList();
        existTempAttachments.forEach((existTempAttachment) -> {
            AttachmentAddDTO attachmentAddDTO = (AttachmentAddDTO)attachmentAddDTOMap.get(existTempAttachment);
            Attachment attachment = new Attachment();
            attachment.setId(UUIDUtil.getUUID());
            attachment.setName(attachmentAddDTO.getTempAttachmentName());
            attachment.setOriginalName(attachmentAddDTO.getOriginalAttachmentName());
            attachment.setSourceModule(attachmentAddDTO.getSourceModule());
            attachment.setSourceId(attachmentAddDTO.getSourceId());
            attachment.setUrlAccess(attachmentAddDTO.isUrlAccess());
            attachment.setMountFlag(attachmentAddDTO.isMountFlag());
            attachment.setCreatorId(operatorId);
            attachment.setCreateTime(now);
            attachmentList.add(attachment);
            String tempLocation = this.savePath + "temp" + File.separator + existTempAttachment;
            StringBuilder location = new StringBuilder();
            location.append(prefix).append(File.separator).append(attachmentAddDTO.getSourceModule()).append(File.separator).append(now.getYear()).append(File.separator).append(now.getMonth());
            String basicDir = location.toString();
            location.append(File.separator).append(existTempAttachment);
            attachment.setLocation(location.toString());
            String dir;
            if (attachmentAddDTO.isUrlAccess()) {
                dir = "access" + File.separator + basicDir;
            } else {
                dir = basicDir;
            }

            if (attachmentAddDTO.isMountFlag()) {
                StringBuilder mountDir = new StringBuilder();
                if (attachmentAddDTO.isMountAccess()) {
                    mountDir.append(this.savePath).append("mount").append(File.separator).append("access").append(File.separator).append(basicDir);
                } else {
                    mountDir.append(this.savePath).append("mount").append(File.separator).append(basicDir);
                }

                this.createDir(mountDir.toString());
                FileTransferUtil.copy(tempLocation, mountDir.append(File.separator).append(existTempAttachment).toString());
            }

            this.createDir(this.savePath + dir);
            FileTransferUtil.move(tempLocation, this.savePath + dir + File.separator + existTempAttachment);
        });
        SFileTempAttachment sFileTempAttachment = SFileTempAttachment.fileTempAttachment;
        ((SQLDeleteClause)this.sqlQueryFactory.delete(sFileTempAttachment).where(sFileTempAttachment.ftaTempName.in(existTempAttachments))).execute();
        this.attachmentRepository.insertList(attachmentList);
    }

    return noExistAttachments;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的纺织品企业财务管理系统,源码+数据库+毕业论文+视频演示 在如今社会上,关于信息上面的处理,没有任何一个企业或者个人会忽视,如何让信息急速传递,并且归档储存查询,采用之前的纸张记录模式已经不符合当前使用要求了。所以,对纺织品企业财务信息管理的提升,也为了对纺织品企业财务信息进行更好的维护,纺织品企业财务管理系统的出现就变得水到渠成不可缺少。通过对纺织品企业财务管理系统的开发,不仅仅可以学以致用,让学到的知识变成成果出现,也强化了知识记忆,扩大了知识储备,是提升自我的一种很好的方法。通过具体的开发,对整个软件开发的过程熟练掌握,不论是前期的设计,还是后续的编码测试,都有了很深刻的认知。 纺织品企业财务管理系统通过MySQL数据库与Spring Boot框架进行开发,纺织品企业财务管理系统能够实现对财务人员,员工,收费信息,支出信息,薪资信息,留言信息,报销信息等信息的管理。 通过纺织品企业财务管理系统对相关信息的处理,让信息处理变的更加的系统,更加的规范,这是一个必然的结果。已经处理好的信息,不管是用来查找,还是分析,在效率上都会成倍的提高,让计算机变得更加符合生产需要,变成人们不可缺少的一种信息处理工具,实现了绿色办公,节省社会资源,为环境保护也做了力所能及的贡献。 关键字:纺织品企业财务管理系统,薪资信息,报销信息;SpringBoot
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飘然生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值