Browse Source

物料和物料分类上传SOP

master
常熟吴彦祖 4 days ago
parent
commit
301536241f
  1. 42
      src/main/java/com/xujie/modules/audit/service/impl/SrmAuditWorkOrderServiceImpl.java
  2. 119
      src/main/java/com/xujie/modules/oss/service/impl/SysOssServiceImpl.java

42
src/main/java/com/xujie/modules/audit/service/impl/SrmAuditWorkOrderServiceImpl.java

@ -335,21 +335,18 @@ public class SrmAuditWorkOrderServiceImpl extends ServiceImpl<SrmAuditWorkOrderD
if (getFileData == null) { if (getFileData == null) {
throw new RuntimeException("该文件不存在,请刷新列表"); throw new RuntimeException("该文件不存在,请刷新列表");
} }
File file = new File(getFileData.getUrl());
File file = resolveStorageFile(getFileData);
if (!file.exists()) {
throw new RuntimeException("文件不存在,请刷新后重试");
}
//读取缓存1kb //读取缓存1kb
byte[] buffer = new byte[1024]; byte[] buffer = new byte[1024];
FileInputStream fis = null;
BufferedInputStream bis = null;
FileOutputStream fos = null;
BufferedOutputStream bos = null;
String encodedFileName =new String(getFileData.getFileName().getBytes("gbk"), "iso8859-1"); String encodedFileName =new String(getFileData.getFileName().getBytes("gbk"), "iso8859-1");
response.setContentType("application/force-download;charset=utf-8"); response.setContentType("application/force-download;charset=utf-8");
response.setHeader("Content-disposition", "attachment; filename=" + encodedFileName ); response.setHeader("Content-disposition", "attachment; filename=" + encodedFileName );
try {
try (FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis)) {
//读取文件 //读取文件
fis = new FileInputStream(file);
//加缓存
bis = new BufferedInputStream(fis);
//开始读取 //开始读取
int i = bis.read(buffer); int i = bis.read(buffer);
//设置输出流 //设置输出流
@ -362,16 +359,27 @@ public class SrmAuditWorkOrderServiceImpl extends ServiceImpl<SrmAuditWorkOrderD
os.close(); os.close();
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException(e.getMessage()); throw new RuntimeException(e.getMessage());
}finally {
try {
assert fis != null;
fis.close();
assert bis != null;
bis.close();
} catch (IOException e) {
throw new RuntimeException(e);
} }
} }
private File resolveStorageFile(SysOssEntity ossEntity) {
if (ossEntity == null || !StringUtils.hasText(ossEntity.getUrl())) {
return new File("");
}
File fileByUrl = new File(ossEntity.getUrl());
if (StringUtils.hasText(ossEntity.getNewFileName())) {
File fileByNewName;
if (fileByUrl.isDirectory()) {
fileByNewName = new File(fileByUrl, ossEntity.getNewFileName());
} else {
File parent = fileByUrl.getParentFile();
fileByNewName = parent == null ? new File(ossEntity.getNewFileName()) : new File(parent, ossEntity.getNewFileName());
}
if (fileByNewName.exists()) {
return fileByNewName;
}
}
return fileByUrl;
} }
/** /**

119
src/main/java/com/xujie/modules/oss/service/impl/SysOssServiceImpl.java

@ -85,6 +85,7 @@ public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> impl
// 上传文件 // 上传文件
Date date = new Date(); Date date = new Date();
for (MultipartFile file : files) { for (MultipartFile file : files) {
SysOssEntity uploadEntity = new SysOssEntity();
String fileName = file.getOriginalFilename(); String fileName = file.getOriginalFilename();
if (StringUtils.isEmpty(fileName)) { if (StringUtils.isEmpty(fileName)) {
throw new IllegalArgumentException("文件名不能为空"); throw new IllegalArgumentException("文件名不能为空");
@ -103,20 +104,29 @@ public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> impl
fileDir.mkdirs(); fileDir.mkdirs();
} }
// 保存文件 // 保存文件
File targetFile = new File(path, fileName);
File targetFile = new File(path, newFileName);
try { try {
file.transferTo(targetFile); file.transferTo(targetFile);
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException("上传文件失败"); throw new RuntimeException("上传文件失败");
} }
// 保存文件信息 // 保存文件信息
oss.setFileName(fileName);
oss.setUrl(path + "\\" + fileName);
oss.setNewFileName(newFileName);
oss.setCreateDate(date);
oss.setFileType(suffix);
oss.setOrderReftype("询价文档");
this.save(oss);
uploadEntity.setFileName(fileName);
uploadEntity.setUrl(targetFile.getPath());
uploadEntity.setNewFileName(newFileName);
uploadEntity.setCreateDate(date);
uploadEntity.setFileType(suffix);
uploadEntity.setOrderReftype("询价文档");
uploadEntity.setCreatedBy(oss.getCreatedBy());
uploadEntity.setOrderRef1(oss.getOrderRef1());
uploadEntity.setOrderRef2(oss.getOrderRef2());
uploadEntity.setOrderRef3(oss.getOrderRef3());
uploadEntity.setOrderRef4(oss.getOrderRef4());
uploadEntity.setOrderRef5(oss.getOrderRef5());
uploadEntity.setOrderRef6(oss.getOrderRef6());
uploadEntity.setFileTypeCode(oss.getFileTypeCode());
uploadEntity.setCAdditionalInfo(oss.getCAdditionalInfo());
this.save(uploadEntity);
} }
} }
@Override @Override
@ -125,6 +135,7 @@ public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> impl
// 上传文件 // 上传文件
Date date = new Date(); Date date = new Date();
for (MultipartFile file : files) { for (MultipartFile file : files) {
SysOssEntity uploadEntity = new SysOssEntity();
String fileName = file.getOriginalFilename(); String fileName = file.getOriginalFilename();
if (StringUtils.isEmpty(fileName)) { if (StringUtils.isEmpty(fileName)) {
throw new IllegalArgumentException("文件名不能为空"); throw new IllegalArgumentException("文件名不能为空");
@ -146,20 +157,29 @@ public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> impl
fileDir.mkdirs(); fileDir.mkdirs();
} }
// 保存文件 // 保存文件
File targetFile = new File(path, fileName);
File targetFile = new File(path, newFileName);
try { try {
file.transferTo(targetFile); file.transferTo(targetFile);
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException("上传文件失败"); throw new RuntimeException("上传文件失败");
} }
// 保存文件信息 // 保存文件信息
oss.setFileName(fileName);
oss.setUrl(path + "\\" + fileName);
oss.setNewFileName(newFileName);
oss.setCreateDate(date);
oss.setFileType(suffix);
oss.setOrderReftype(oss.getOrderReftype());
this.save(oss);
uploadEntity.setFileName(fileName);
uploadEntity.setUrl(targetFile.getPath());
uploadEntity.setNewFileName(newFileName);
uploadEntity.setCreateDate(date);
uploadEntity.setFileType(suffix);
uploadEntity.setOrderReftype(oss.getOrderReftype());
uploadEntity.setCreatedBy(oss.getCreatedBy());
uploadEntity.setOrderRef1(oss.getOrderRef1());
uploadEntity.setOrderRef2(oss.getOrderRef2());
uploadEntity.setOrderRef3(oss.getOrderRef3());
uploadEntity.setOrderRef4(oss.getOrderRef4());
uploadEntity.setOrderRef5(oss.getOrderRef5());
uploadEntity.setOrderRef6(oss.getOrderRef6());
uploadEntity.setFileTypeCode(oss.getFileTypeCode());
uploadEntity.setCAdditionalInfo(oss.getCAdditionalInfo());
this.save(uploadEntity);
} }
} }
@Override @Override
@ -206,7 +226,7 @@ public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> impl
fileDir.mkdirs(); fileDir.mkdirs();
} }
// 保存文件 // 保存文件
File targetFile = new File(path, fileName);
File targetFile = new File(path, newFileName);
try { try {
file.transferTo(targetFile); file.transferTo(targetFile);
} catch (IOException e) { } catch (IOException e) {
@ -215,7 +235,7 @@ public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> impl
oss.setCreatedBy(oss2.getCreatedBy()); oss.setCreatedBy(oss2.getCreatedBy());
// 保存文件信息 // 保存文件信息
oss.setFileName(fileName); oss.setFileName(fileName);
oss.setUrl(path + "\\" + fileName);
oss.setUrl(targetFile.getPath());
oss.setNewFileName(newFileName); oss.setNewFileName(newFileName);
oss.setCreateDate(date); oss.setCreateDate(date);
oss.setFileType(suffix); oss.setFileType(suffix);
@ -282,7 +302,7 @@ public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> impl
public void removeOssFile(List<Integer> ids) { public void removeOssFile(List<Integer> ids) {
List<SysOssEntity> list = lambdaQuery().in(SysOssEntity::getId, ids).list(); List<SysOssEntity> list = lambdaQuery().in(SysOssEntity::getId, ids).list();
for (SysOssEntity entity : list) { for (SysOssEntity entity : list) {
File file = new File(entity.getUrl());
File file = resolveStorageFile(entity);
if (file.exists()) { if (file.exists()) {
file.delete(); file.delete();
} }
@ -315,7 +335,7 @@ public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> impl
} }
// 创建文件对象 // 创建文件对象
File file = new File(oss.getUrl());
File file = resolveStorageFile(oss);
if (!file.exists()) { if (!file.exists()) {
throw new IllegalArgumentException("文件不存在"); throw new IllegalArgumentException("文件不存在");
} }
@ -328,7 +348,7 @@ public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> impl
} }
// 设置响应头 // 设置响应头
if ("txt".equals(oss.getFileSuffix())){
if ("txt".equalsIgnoreCase(resolveFileSuffix(oss))){
response.setContentType("text/plain;charset=utf-8"); response.setContentType("text/plain;charset=utf-8");
}else { }else {
response.setContentType("application/octet-stream;charset=utf-8"); response.setContentType("application/octet-stream;charset=utf-8");
@ -384,21 +404,18 @@ public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> impl
if (getFileData.isEmpty()) { if (getFileData.isEmpty()) {
throw new RuntimeException("该文件不存在,请刷新列表"); throw new RuntimeException("该文件不存在,请刷新列表");
} }
File file = new File(getFileData.get(0).getUrl());
SysOssEntity ossEntity = getFileData.get(0);
File file = resolveStorageFile(ossEntity);
if (!file.exists()) {
throw new RuntimeException("文件不存在,请刷新后重试");
}
//读取缓存1kb //读取缓存1kb
byte[] buffer = new byte[1024]; byte[] buffer = new byte[1024];
FileInputStream fis = null;
BufferedInputStream bis = null;
//FileOutputStream fos = null;
//BufferedOutputStream bos = null;
response.setContentType("application/force-download;charset=utf-8"); response.setContentType("application/force-download;charset=utf-8");
response.setHeader("Content-disposition", "attachment; filename=" + new String(getFileData.get(0).getFileName().getBytes("gbk"), "iso8859-1"));
try {
response.setHeader("Content-disposition", "attachment; filename=" + new String(ossEntity.getFileName().getBytes("gbk"), "iso8859-1"));
try (FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis)) {
//读取文件 //读取文件
fis = new FileInputStream(file);
//加缓存
bis = new BufferedInputStream(fis);
//开始读取
int i = bis.read(buffer); int i = bis.read(buffer);
//设置输出流 //设置输出流
ServletOutputStream os = response.getOutputStream(); ServletOutputStream os = response.getOutputStream();
@ -407,10 +424,44 @@ public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> impl
os.write(buffer, 0, i); os.write(buffer, 0, i);
i = bis.read(buffer); i = bis.read(buffer);
} }
fis.close();
//fos.close();
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException(e.getMessage()); throw new RuntimeException(e.getMessage());
} }
} }
private File resolveStorageFile(SysOssEntity ossEntity) {
if (ossEntity == null || StringUtils.isEmpty(ossEntity.getUrl())) {
return new File("");
}
File fileByUrl = new File(ossEntity.getUrl());
if (StringUtils.isNotEmpty(ossEntity.getNewFileName())) {
File fileByNewName;
if (fileByUrl.isDirectory()) {
fileByNewName = new File(fileByUrl, ossEntity.getNewFileName());
} else {
File parent = fileByUrl.getParentFile();
fileByNewName = parent == null ? new File(ossEntity.getNewFileName()) : new File(parent, ossEntity.getNewFileName());
}
if (fileByNewName.exists()) {
return fileByNewName;
}
}
return fileByUrl;
}
private String resolveFileSuffix(SysOssEntity ossEntity) {
if (ossEntity == null) {
return "";
}
if (StringUtils.isNotEmpty(ossEntity.getFileSuffix())) {
return ossEntity.getFileSuffix();
}
if (StringUtils.isNotEmpty(ossEntity.getFileType())) {
return ossEntity.getFileType();
}
if (StringUtils.isNotEmpty(ossEntity.getFileName()) && ossEntity.getFileName().contains(".")) {
return ossEntity.getFileName().substring(ossEntity.getFileName().lastIndexOf(".") + 1);
}
return "";
}
} }
Loading…
Cancel
Save