Browse Source

2026-05-11

RoHs功能优化
master
fengyuan_yang 4 months ago
parent
commit
b823daed24
  1. 4
      src/main/java/com/spring/modules/base/service/Impl/BaseServiceImpl.java
  2. 9
      src/main/java/com/spring/modules/oss/controller/OssController.java
  3. 19
      src/main/java/com/spring/modules/oss/entity/SysOssEntity.java
  4. 3
      src/main/java/com/spring/modules/oss/service/SysOssService.java
  5. 160
      src/main/java/com/spring/modules/oss/service/impl/SysOssServiceImpl.java
  6. 18
      src/main/java/com/spring/modules/sys/entity/GetParamInData.java

4
src/main/java/com/spring/modules/base/service/Impl/BaseServiceImpl.java

@ -264,6 +264,8 @@ public class BaseServiceImpl implements BaseService {
ossEntity.setOrderRef1(inData.getOrderRef1());
ossEntity.setOrderRef2(inData.getOrderRef2());
ossEntity.setOrderRef3(inData.getOrderRef3());
ossEntity.setFileNo(inData.getFileNo());
ossEntity.setRev(inData.getRev());
ossEntity.setFileRemark(inData.getFileRemark());
sysOssService.save(ossEntity);
return ossEntity;
@ -315,6 +317,8 @@ public class BaseServiceImpl implements BaseService {
ossEntity.setOrderRef1(inData.getOrderRef1());
ossEntity.setOrderRef2(inData.getOrderRef2());
ossEntity.setOrderRef3(inData.getOrderRef3());
ossEntity.setFileNo(inData.getFileNo());
ossEntity.setRev(inData.getRev());
ossEntity.setFileRemark(inData.getFileRemark());
sysOssService.save(ossEntity);
ossEntityList.add(ossEntity);

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

@ -9,7 +9,6 @@ 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
@ -25,6 +24,14 @@ public class OssController {
return R.ok("操作成功");
}
@PostMapping("/upgrade")
public R upgrade(@RequestParam("file") MultipartFile file,
@RequestParam("sourceId") Long sourceId,
@RequestParam(value = "fileRemark", required = false) String fileRemark){
sysOssService.upgradeOssFile(file, sourceId, fileRemark);
return R.ok("操作成功");
}
@PostMapping("/remove")
public R removeOssFile(@RequestBody List<Integer> ids){
sysOssService.removeOssFile(ids);

19
src/main/java/com/spring/modules/oss/entity/SysOssEntity.java

@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import org.apache.ibatis.type.Alias;
import org.springframework.format.annotation.DateTimeFormat;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serializable;
import java.util.Date;
@ -76,6 +78,23 @@ public class SysOssEntity implements Serializable {
* 文件备注
*/
private String fileRemark;
/**
* 文件编码
*/
private String fileNo;
/**
* 版本号
*/
private Integer rev;
/**
* 失效时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date invalidationTime;
/**
* 集合
*/

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

@ -9,7 +9,6 @@ import com.spring.modules.oss.vo.SysOssEntityData;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;
@ -50,4 +49,6 @@ public interface SysOssService extends IService<SysOssEntity> {
List<SysOssEntity> queryOssFile(SysOssEntity oss);
void previewOssFileById(Integer id,HttpServletResponse response);
void upgradeOssFile(MultipartFile file, Long sourceId, String fileRemark);
}

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

@ -16,19 +16,14 @@ 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.text.SimpleDateFormat;
import java.util.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
@Service("sysOssService")
@ -36,11 +31,6 @@ public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> impl
@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);
@ -72,43 +62,34 @@ public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> impl
@Override
@Transactional
public void upload(List<MultipartFile> files, SysOssEntity oss) {
// 上传文件
boolean hasVersionMeta = StringUtils.isNotBlank(oss.getFileNo()) || oss.getRev() != null;
if (hasVersionMeta) {
validateFileVersionParam(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();
if (hasVersionMeta) {
long sameVersionCount = lambdaQuery()
.eq(SysOssEntity::getOrderRef1, oss.getOrderRef1())
.eq(SysOssEntity::getOrderRef2, oss.getOrderRef2())
.eq(StringUtils.isNotEmpty(oss.getOrderRef3()), SysOssEntity::getOrderRef3, oss.getOrderRef3())
.eq(SysOssEntity::getFileNo, oss.getFileNo())
.eq(SysOssEntity::getRev, oss.getRev())
.count();
if (sameVersionCount > 0) {
throw new IllegalArgumentException("当前文件编码和版本号已存在,请修改后重试");
}
}
// 保存文件
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);
SysUserEntity sysUserEntity = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
oss.setCreateBy(sysUserEntity.getUsername());
oss.setFileType(suffix);
this.save(oss);
SysOssEntity saveEntity = new SysOssEntity();
saveEntity.setOrderRef1(oss.getOrderRef1());
saveEntity.setOrderRef2(oss.getOrderRef2());
saveEntity.setOrderRef3(oss.getOrderRef3());
saveEntity.setFileTypeCode(oss.getFileTypeCode());
saveEntity.setFileRemark(oss.getFileRemark());
saveEntity.setFileNo(oss.getFileNo());
saveEntity.setRev(oss.getRev());
saveEntity.setInvalidationTime(oss.getInvalidationTime());
saveUploadedFile(file, saveEntity, date);
}
}
@ -132,9 +113,58 @@ public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> impl
.eq(SysOssEntity::getOrderRef1, oss.getOrderRef1())
.eq(SysOssEntity::getOrderRef2, oss.getOrderRef2())
.eq(StringUtils.isNotEmpty(oss.getOrderRef3()), SysOssEntity::getOrderRef3, oss.getOrderRef3())
.orderByDesc(SysOssEntity::getCreateDate)
.orderByDesc(SysOssEntity::getId)
.list();
}
@Override
@Transactional
public void upgradeOssFile(MultipartFile file, Long sourceId, String fileRemark) {
Assert.notNull(sourceId, "请先选择需要升版的文件");
if (file == null || file.isEmpty()) {
throw new IllegalArgumentException("请选择需要上传的新版本文件");
}
SysOssEntity source = this.getById(sourceId);
if (source == null) {
throw new IllegalArgumentException("源文件不存在,无法升版");
}
if (source.getInvalidationTime() != null) {
throw new IllegalArgumentException("当前文件已失效,请选择有效版本进行升版");
}
if (StringUtils.isBlank(source.getFileNo())) {
source.setFileNo("TDS-" + source.getId());
}
int currentRev = source.getRev() == null ? 1 : source.getRev();
source.setRev(currentRev);
int nextRev = currentRev + 1;
long sameVersionCount = lambdaQuery()
.eq(SysOssEntity::getOrderRef1, source.getOrderRef1())
.eq(SysOssEntity::getOrderRef2, source.getOrderRef2())
.eq(SysOssEntity::getOrderRef3, source.getOrderRef3())
.eq(SysOssEntity::getFileNo, source.getFileNo())
.eq(SysOssEntity::getRev, nextRev)
.count();
if (sameVersionCount > 0) {
throw new IllegalArgumentException("新版本号已存在,请刷新后重试");
}
Date now = new Date();
source.setInvalidationTime(now);
this.updateById(source);
SysOssEntity newVersion = new SysOssEntity();
newVersion.setOrderRef1(source.getOrderRef1());
newVersion.setOrderRef2(source.getOrderRef2());
newVersion.setOrderRef3(source.getOrderRef3());
newVersion.setFileTypeCode(source.getFileTypeCode());
newVersion.setFileNo(source.getFileNo());
newVersion.setRev(nextRev);
newVersion.setFileRemark(StringUtils.isNotBlank(fileRemark) ? fileRemark : source.getFileRemark());
saveUploadedFile(file, newVersion, now);
}
@Override
public void previewOssFileById(Integer id, HttpServletResponse response) {
SysOssEntity oss = this.getById(id);
@ -180,4 +210,46 @@ public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> impl
}
}
private void validateFileVersionParam(SysOssEntity oss) {
if (StringUtils.isBlank(oss.getFileNo())) {
throw new IllegalArgumentException("文件编码不能为空");
}
if (oss.getRev() == null || oss.getRev() <= 0) {
throw new IllegalArgumentException("版本号必须大于0");
}
}
private void saveUploadedFile(MultipartFile file, SysOssEntity oss, Date createDate) {
String fileName = file.getOriginalFilename();
if (StringUtils.isEmpty(fileName)) {
throw new IllegalArgumentException("文件名不能为空");
}
String[] strings = fileName.split("\\.");
String suffix = strings[strings.length - 1];
String uuid = java.util.UUID.randomUUID().toString().replaceAll("-", "");
String newFileName = uuid + "." + suffix;
String yearMonth = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
String path = filePath + "\\" + 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(createDate);
SysUserEntity sysUserEntity = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
oss.setCreateBy(sysUserEntity.getUsername());
oss.setFileType(suffix);
oss.setFileSuffix(suffix);
this.save(oss);
}
}

18
src/main/java/com/spring/modules/sys/entity/GetParamInData.java

@ -18,6 +18,8 @@ public class GetParamInData {
private String orderRef1;
private String orderRef2;
private String orderRef3;
private String fileNo;
private Integer rev;
private String projectId;
private String fileRemark; // 文件备注
@ -57,6 +59,22 @@ public class GetParamInData {
this.orderRef3 = orderRef3;
}
public String getFileNo() {
return fileNo;
}
public void setFileNo(String fileNo) {
this.fileNo = fileNo;
}
public Integer getRev() {
return rev;
}
public void setRev(Integer rev) {
this.rev = rev;
}
public String getNum() {
return num;
}

Loading…
Cancel
Save