123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- package com.fjhx.service.impl;
- import cn.hutool.core.bean.BeanUtil;
- import cn.hutool.core.io.FileUtil;
- import cn.hutool.core.lang.UUID;
- import cn.hutool.core.util.ObjectUtil;
- import com.baomidou.mybatisplus.core.toolkit.Wrappers;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.fjhx.base.BaseEntity;
- import com.fjhx.entity.FileInfo;
- import com.fjhx.mapper.FileInfoMapper;
- import com.fjhx.params.FileInfoParam;
- import com.fjhx.service.FileInfoService;
- import org.springblade.core.launch.BladeApplication;
- import org.springblade.core.log.exception.ServiceException;
- import org.springblade.core.tool.utils.DateUtil;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import org.springframework.web.multipart.MultipartFile;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.*;
- import java.util.stream.Collectors;
- @Service
- public class FileInfoServiceImpl extends ServiceImpl<FileInfoMapper, FileInfo> implements FileInfoService {
- @Override
- public Map<String, String> uploadFile(MultipartFile file) {
- String fileName = file.getOriginalFilename();
- String suffix = FileUtil.getSuffix(fileName);
- String rootPath = BladeApplication.isLocalDev() ? "D:/hx/" : "/mnt/file/";
- String path = DateUtil.format(new Date(), "yyyy-MM/dd/");
- String filePath = path + UUID.randomUUID() + "." + suffix;
- FileUtil.mkdir(rootPath + path);
- FileOutputStream fileOutputStream = null;
- InputStream inputStream = null;
- try {
- inputStream = file.getInputStream();
- fileOutputStream = new FileOutputStream(rootPath + filePath);
- int index;
- byte[] bytes = new byte[1024];
- while ((index = inputStream.read(bytes)) != -1) {
- fileOutputStream.write(bytes, 0, index);
- fileOutputStream.flush();
- }
- } catch (IOException e) {
- e.printStackTrace();
- throw new ServiceException("上传文件失败");
- } finally {
- try {
- if (fileOutputStream != null) {
- fileOutputStream.close();
- }
- if (inputStream != null) {
- inputStream.close();
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- FileInfo fileInfo = new FileInfo();
- fileInfo.setFileName(fileName);
- fileInfo.setFileSuffix(suffix);
- fileInfo.setContentType(file.getContentType());
- fileInfo.setFileSize(file.getSize());
- fileInfo.setFilePath(filePath);
- save(fileInfo);
- Map<String, String> map = new HashMap<>();
- map.put("fileName", fileName);
- map.put("filePath", filePath);
- map.put("id", fileInfo.getId().toString());
- return map;
- }
- public void bindingFile(String applicationName, Long businessId, Integer businessType, List<FileInfoParam> paramList) {
- if (paramList.size() == 0) {
- return;
- }
- List<FileInfo> collect = paramList.stream().map(item -> {
- FileInfo fileInfo = new FileInfo();
- fileInfo.setId(item.getId());
- fileInfo.setBusinessId(businessId);
- fileInfo.setBusinessType(businessType);
- fileInfo.setApplicationName(applicationName);
- return fileInfo;
- }).collect(Collectors.toList());
- updateBatchById(collect);
- }
- @Transactional(rollbackFor = Exception.class)
- @Override
- public void againBindingFile(String applicationName, Long businessId, Integer businessType, List<FileInfoParam> paramList) {
-
- List<Long> excludeIdList = new ArrayList<>();
-
- List<FileInfo> collect = paramList.stream().filter(fileInfo -> {
- if (ObjectUtil.isNotEmpty(fileInfo.getBusinessId())) {
- excludeIdList.add(fileInfo.getId());
- return false;
- }
- return true;
- }).map(item -> {
- FileInfo fileInfo = new FileInfo();
- fileInfo.setId(item.getId());
- fileInfo.setBusinessId(businessId);
- fileInfo.setBusinessType(businessType);
- fileInfo.setApplicationName(applicationName);
- return fileInfo;
- }).collect(Collectors.toList());
-
- int excludeIdSize = excludeIdList.size();
- if (paramList.size() != excludeIdSize) {
- remove(Wrappers.<FileInfo>lambdaQuery()
- .eq(FileInfo::getBusinessId, businessId)
- .eq(FileInfo::getBusinessType, businessType)
- .notIn(excludeIdSize > 0, BaseEntity::getId, collect));
- }
-
- if (collect.size() > 0) {
- updateBatchById(collect);
- }
- }
- @Override
- public void relieveBindingFile(Long businessId) {
- if (ObjectUtil.isNotEmpty(businessId)) {
- remove(FileInfo::getBusinessId, businessId);
- }
- }
- @Override
- public List<FileInfoParam> getFileInfo(List<Long> businessIdList) {
- if (businessIdList.size() == 0) {
- return new ArrayList<>();
- }
- List<FileInfo> list = lambdaQuery().in(FileInfo::getBusinessId, businessIdList).list();
- return list.stream().map(item -> BeanUtil.toBean(item, FileInfoParam.class)).collect(Collectors.toList());
- }
- }
|