Browse Source

2024-09-13 附件信息

master
qiezi 1 year ago
parent
commit
2ee1c1c87b
  1. 44
      src/main/java/com/spring/modules/oss/controller/OssController.java
  2. 2
      src/main/java/com/spring/modules/oss/controller/SysOssController.java
  3. 8
      src/main/java/com/spring/modules/oss/service/SysOssService.java
  4. 189
      src/main/java/com/spring/modules/oss/service/impl/SysOssServiceImpl.java

44
src/main/java/com/spring/modules/oss/controller/OssController.java

@ -0,0 +1,44 @@
package com.spring.modules.oss.controller;
import com.spring.common.utils.R;
import com.spring.modules.oss.entity.SysOssEntity;
import com.spring.modules.oss.service.SysOssService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping("/oss")
public class OssController {
@Autowired
private SysOssService sysOssService;
@PostMapping("/upload")
public R upload(@RequestParam("file") List<MultipartFile> files,@ModelAttribute SysOssEntity oss){
sysOssService.upload(files,oss);
return R.ok("操作成功");
}
@PostMapping("/remove")
public R removeOssFile(@RequestBody List<Integer> ids){
sysOssService.removeOssFile(ids);
return R.ok("操作成功");
}
@PostMapping
public R queryOssFile(@RequestBody SysOssEntity oss){
List<SysOssEntity> list = sysOssService.queryOssFile(oss);
return R.ok().put("rows",list);
}
@PostMapping("/{id}")
public void previewOssFileById(@PathVariable("id") Integer id, HttpServletResponse response){
sysOssService.previewOssFileById(id,response);
}
}

2
src/main/java/com/spring/modules/oss/controller/SysOssController.java

@ -36,7 +36,7 @@ import java.util.Map;
*
*/
@RestController
@RequestMapping("sys/oss")
@RequestMapping("/sys/oss")
public class SysOssController extends AbstractController {
@Autowired
private SysOssService sysOssService;

8
src/main/java/com/spring/modules/oss/service/SysOssService.java

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.spring.common.utils.PageUtils;
import com.spring.modules.oss.entity.SysOssEntity;
import com.spring.modules.oss.vo.SysOssEntityData;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@ -42,4 +43,11 @@ public interface SysOssService extends IService<SysOssEntity> {
**/
void updateOssRef(SysOssEntity sysOssEntity);
void upload(List<MultipartFile> files, SysOssEntity oss);
void removeOssFile(List<Integer> ids);
List<SysOssEntity> queryOssFile(SysOssEntity oss);
void previewOssFileById(Integer id,HttpServletResponse response);
}

189
src/main/java/com/spring/modules/oss/service/impl/SysOssServiceImpl.java

@ -10,17 +10,21 @@ import com.spring.modules.oss.service.SysOssService;
import com.spring.modules.oss.vo.OssVo;
import com.spring.modules.oss.vo.SysOssEntityData;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
@ -28,35 +32,150 @@ import java.util.zip.ZipOutputStream;
@Service("sysOssService")
public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> implements SysOssService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
String fileName = (String)params.get("fileName");
String fileType = (String)params.get("fileType");
String orderRef1 = (String)params.get("orderRef1");
String orderRef2 = (String)params.get("orderRef2");
String orderRef3 = (String)params.get("orderRef3");
long page = Long.valueOf(params.get("page").toString());
long limit = Long.valueOf(params.get("limit").toString());
IPage<OssVo> pageData = this.baseMapper.queryPage( new Page<OssVo>(page, limit),params);
return new PageUtils(pageData);
}
@Override
public List<SysOssEntityData> getSysOssEntityList(SysOssEntityData sysOssEntityData) {
return this.baseMapper.getSysOssEntityList(sysOssEntityData);
}
@Override
public void updateOssRef(SysOssEntity sysOssEntity) {
lambdaUpdate()
.set(StringUtils.isNotEmpty(sysOssEntity.getFileType()),SysOssEntity::getFileType,sysOssEntity.getFileType())
.set(StringUtils.isNotEmpty(sysOssEntity.getOrderRef1()),SysOssEntity::getOrderRef1,sysOssEntity.getOrderRef1())
.set(StringUtils.isNotEmpty(sysOssEntity.getOrderRef2()),SysOssEntity::getOrderRef2,sysOssEntity.getOrderRef2())
.set(StringUtils.isNotEmpty(sysOssEntity.getOrderRef3()),SysOssEntity::getOrderRef3,sysOssEntity.getOrderRef3())
.set(StringUtils.isNotEmpty(sysOssEntity.getFileSuffix()),SysOssEntity::getFileSuffix,sysOssEntity.getFileSuffix())
.set(sysOssEntity.getFileTypeCode()!=null,SysOssEntity::getFileTypeCode,sysOssEntity.getFileTypeCode())
.eq(SysOssEntity::getId,sysOssEntity.getId())
.update();
}
@Override
public PageUtils queryPage(Map<String, Object> params) {
String fileName = (String) params.get("fileName");
String fileType = (String) params.get("fileType");
String orderRef1 = (String) params.get("orderRef1");
String orderRef2 = (String) params.get("orderRef2");
String orderRef3 = (String) params.get("orderRef3");
long page = Long.valueOf(params.get("page").toString());
long limit = Long.valueOf(params.get("limit").toString());
IPage<OssVo> pageData = this.baseMapper.queryPage(new Page<OssVo>(page, limit), params);
return new PageUtils(pageData);
}
@Override
public List<SysOssEntityData> getSysOssEntityList(SysOssEntityData sysOssEntityData) {
return this.baseMapper.getSysOssEntityList(sysOssEntityData);
}
@Override
public void updateOssRef(SysOssEntity sysOssEntity) {
lambdaUpdate()
.set(StringUtils.isNotEmpty(sysOssEntity.getFileType()), SysOssEntity::getFileType, sysOssEntity.getFileType())
.set(StringUtils.isNotEmpty(sysOssEntity.getOrderRef1()), SysOssEntity::getOrderRef1, sysOssEntity.getOrderRef1())
.set(StringUtils.isNotEmpty(sysOssEntity.getOrderRef2()), SysOssEntity::getOrderRef2, sysOssEntity.getOrderRef2())
.set(StringUtils.isNotEmpty(sysOssEntity.getOrderRef3()), SysOssEntity::getOrderRef3, sysOssEntity.getOrderRef3())
.set(StringUtils.isNotEmpty(sysOssEntity.getFileSuffix()), SysOssEntity::getFileSuffix, sysOssEntity.getFileSuffix())
.set(sysOssEntity.getFileTypeCode() != null, SysOssEntity::getFileTypeCode, sysOssEntity.getFileTypeCode())
.eq(SysOssEntity::getId, sysOssEntity.getId())
.update();
}
@Value("${sys-file.file-path}")
private String filePath;
@Override
@Transactional
public void upload(List<MultipartFile> files, SysOssEntity oss) {
// 上传文件
Date date = new Date();
for (MultipartFile file : files) {
String fileName = file.getOriginalFilename();
if (StringUtils.isEmpty(fileName)) {
throw new IllegalArgumentException("文件名不能为空");
}
String[] strings = fileName.split("\\.");
String suffix = strings[strings.length - 1];
// UUID生成文件名
String uuid = java.util.UUID.randomUUID().toString().replaceAll("-", "");
String newFileName = uuid +"."+ suffix;
// 根目录 D:\plm-file 当前年月日
String rootPath = filePath;
String yearMonth = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
String path = rootPath + "\\" + yearMonth;
File fileDir = new File(path);
if (!fileDir.exists()) {
fileDir.mkdirs();
}
// 保存文件
File targetFile = new File(path, newFileName);
try {
file.transferTo(targetFile);
} catch (IOException e) {
throw new RuntimeException("上传文件失败");
}
// 保存文件信息
oss.setFileName(fileName);
oss.setUrl(path + "\\" + newFileName);
oss.setNewFileName(newFileName);
oss.setCreateDate(date);
oss.setFileType(suffix);
this.save(oss);
}
}
@Override
@Transactional
public void removeOssFile(List<Integer> ids) {
List<SysOssEntity> list = lambdaQuery().in(SysOssEntity::getId, ids).list();
for (SysOssEntity entity : list) {
File file = new File(entity.getUrl());
if (file.exists()) {
file.delete();
}
}
removeByIds(ids);
}
@Override
public List<SysOssEntity> queryOssFile(SysOssEntity oss) {
if (Objects.isNull(oss.getOrderRef1()) && Objects.isNull(oss.getOrderRef2()) && Objects.isNull(oss.getOrderRef3())) {
return new ArrayList<>();
}
return lambdaQuery()
.eq(SysOssEntity::getOrderRef1, oss.getOrderRef1())
.eq(SysOssEntity::getOrderRef2, oss.getOrderRef2())
.eq(StringUtils.isNotEmpty(oss.getOrderRef3()), SysOssEntity::getOrderRef3, oss.getOrderRef3())
.list();
}
@Override
public void previewOssFileById(Integer id, HttpServletResponse response) {
SysOssEntity oss = this.getById(id);
if (Objects.isNull(oss)) {
throw new IllegalArgumentException("文件不存在");
}
// 创建文件对象
File file = new File(oss.getUrl());
if (!file.exists()) {
throw new IllegalArgumentException("文件不存在");
}
String encodedFileName;
try {
encodedFileName = URLEncoder.encode(oss.getFileName(), "UTF-8");
} catch (UnsupportedEncodingException e) {
throw new RuntimeException("文件名编码失败", e);
}
// 设置响应头
if ("txt".equals(oss.getFileSuffix())){
response.setContentType("text/plain;charset=utf-8");
}else {
response.setContentType("application/octet-stream;charset=utf-8");
}
response.setHeader("Content-Disposition", "attachment; filename=" + encodedFileName);
try (FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
ServletOutputStream os = response.getOutputStream()) {
byte[] buffer = new byte[1024];
int bytesRead;
// 循环读取文件内容并写入到响应流中
while ((bytesRead = bis.read(buffer)) != -1) {
os.write(buffer, 0, bytesRead);
}
} catch (IOException e) {
throw new RuntimeException("文件下载失败", e);
}
}
}
Loading…
Cancel
Save