|
|
|
@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
|
|
|
import com.spring.common.utils.PageUtils; |
|
|
|
import com.spring.modules.base.service.TransNoControlService; |
|
|
|
import com.spring.modules.oss.dao.SysOssDao; |
|
|
|
import com.spring.modules.oss.entity.SysOssEntity; |
|
|
|
import com.spring.modules.oss.service.SysOssService; |
|
|
|
@ -12,6 +13,7 @@ import com.spring.modules.oss.vo.SysOssEntityData; |
|
|
|
import com.spring.modules.sys.entity.SysUserEntity; |
|
|
|
import org.apache.commons.lang.StringUtils; |
|
|
|
import org.apache.shiro.SecurityUtils; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.beans.factory.annotation.Value; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
@ -29,6 +31,12 @@ import java.util.*; |
|
|
|
@Service("sysOssService") |
|
|
|
public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> implements SysOssService { |
|
|
|
|
|
|
|
private static final String TDS_PROPERTY_GROUP = "tdsProperty"; |
|
|
|
private static final String FILE_NO_TRANS_TYPE = "file_no"; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private TransNoControlService transNoControlService; |
|
|
|
|
|
|
|
@Override |
|
|
|
public PageUtils queryPage(Map<String, Object> params) { |
|
|
|
long page = Long.valueOf(params.get("page").toString()); |
|
|
|
@ -62,24 +70,9 @@ 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); |
|
|
|
} |
|
|
|
boolean tdsProperty = TDS_PROPERTY_GROUP.equals(oss.getOrderRef3()); |
|
|
|
Date date = new Date(); |
|
|
|
for (MultipartFile file : files) { |
|
|
|
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("当前文件编码和版本号已存在,请修改后重试"); |
|
|
|
} |
|
|
|
} |
|
|
|
SysOssEntity saveEntity = new SysOssEntity(); |
|
|
|
saveEntity.setOrderRef1(oss.getOrderRef1()); |
|
|
|
saveEntity.setOrderRef2(oss.getOrderRef2()); |
|
|
|
@ -89,6 +82,26 @@ public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> impl |
|
|
|
saveEntity.setFileNo(oss.getFileNo()); |
|
|
|
saveEntity.setRev(oss.getRev()); |
|
|
|
saveEntity.setInvalidationTime(oss.getInvalidationTime()); |
|
|
|
|
|
|
|
if (tdsProperty) { |
|
|
|
fillTdsUploadVersionInfo(saveEntity); |
|
|
|
} |
|
|
|
boolean hasVersionMeta = StringUtils.isNotBlank(saveEntity.getFileNo()) || saveEntity.getRev() != null; |
|
|
|
if (hasVersionMeta) { |
|
|
|
validateFileVersionParam(saveEntity); |
|
|
|
} |
|
|
|
if (hasVersionMeta) { |
|
|
|
long sameVersionCount = lambdaQuery() |
|
|
|
.eq(SysOssEntity::getOrderRef1, saveEntity.getOrderRef1()) |
|
|
|
.eq(SysOssEntity::getOrderRef2, saveEntity.getOrderRef2()) |
|
|
|
.eq(StringUtils.isNotEmpty(saveEntity.getOrderRef3()), SysOssEntity::getOrderRef3, saveEntity.getOrderRef3()) |
|
|
|
.eq(SysOssEntity::getFileNo, saveEntity.getFileNo()) |
|
|
|
.eq(SysOssEntity::getRev, saveEntity.getRev()) |
|
|
|
.count(); |
|
|
|
if (sameVersionCount > 0) { |
|
|
|
throw new IllegalArgumentException("当前文件编码和版本号已存在,请修改后重试"); |
|
|
|
} |
|
|
|
} |
|
|
|
saveUploadedFile(file, saveEntity, date); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -120,7 +133,7 @@ public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> impl |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public void upgradeOssFile(MultipartFile file, Long sourceId, String fileRemark) { |
|
|
|
public void upgradeOssFile(MultipartFile file, Long sourceId, String fileRemark, Integer newRev) { |
|
|
|
Assert.notNull(sourceId, "请先选择需要升版的文件"); |
|
|
|
if (file == null || file.isEmpty()) { |
|
|
|
throw new IllegalArgumentException("请选择需要上传的新版本文件"); |
|
|
|
@ -134,17 +147,27 @@ public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> impl |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isBlank(source.getFileNo())) { |
|
|
|
source.setFileNo("TDS-" + source.getId()); |
|
|
|
if (StringUtils.isBlank(source.getOrderRef1())) { |
|
|
|
throw new IllegalArgumentException("源文件缺少工厂信息(order_ref1),无法自动生成文件编码"); |
|
|
|
} |
|
|
|
String autoFileNo = transNoControlService.transNo(source.getOrderRef1(), FILE_NO_TRANS_TYPE); |
|
|
|
if (StringUtils.isBlank(autoFileNo)) { |
|
|
|
throw new IllegalArgumentException("文件编码规则缺失,请维护TransNoControl:transType=file_no"); |
|
|
|
} |
|
|
|
source.setFileNo(autoFileNo); |
|
|
|
} |
|
|
|
int currentRev = source.getRev() == null ? 1 : source.getRev(); |
|
|
|
source.setRev(currentRev); |
|
|
|
int nextRev = currentRev + 1; |
|
|
|
int targetRev = newRev == null ? (currentRev + 1) : newRev; |
|
|
|
if (targetRev <= currentRev) { |
|
|
|
throw new IllegalArgumentException("新版本号必须大于当前版本号"); |
|
|
|
} |
|
|
|
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) |
|
|
|
.eq(SysOssEntity::getRev, targetRev) |
|
|
|
.count(); |
|
|
|
if (sameVersionCount > 0) { |
|
|
|
throw new IllegalArgumentException("新版本号已存在,请刷新后重试"); |
|
|
|
@ -160,11 +183,23 @@ public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> impl |
|
|
|
newVersion.setOrderRef3(source.getOrderRef3()); |
|
|
|
newVersion.setFileTypeCode(source.getFileTypeCode()); |
|
|
|
newVersion.setFileNo(source.getFileNo()); |
|
|
|
newVersion.setRev(nextRev); |
|
|
|
newVersion.setRev(targetRev); |
|
|
|
newVersion.setFileRemark(StringUtils.isNotBlank(fileRemark) ? fileRemark : source.getFileRemark()); |
|
|
|
saveUploadedFile(file, newVersion, now); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public String getNextFileNo(String site) { |
|
|
|
if (StringUtils.isBlank(site)) { |
|
|
|
throw new IllegalArgumentException("工厂信息不能为空"); |
|
|
|
} |
|
|
|
String fileNo = transNoControlService.transNo(site, FILE_NO_TRANS_TYPE); |
|
|
|
if (StringUtils.isBlank(fileNo)) { |
|
|
|
throw new IllegalArgumentException("文件编码规则缺失,请维护TransNoControl:transType=file_no"); |
|
|
|
} |
|
|
|
return fileNo; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void previewOssFileById(Integer id, HttpServletResponse response) { |
|
|
|
SysOssEntity oss = this.getById(id); |
|
|
|
@ -220,6 +255,22 @@ public class SysOssServiceImpl extends ServiceImpl<SysOssDao, SysOssEntity> impl |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private void fillTdsUploadVersionInfo(SysOssEntity entity) { |
|
|
|
if (StringUtils.isBlank(entity.getOrderRef1())) { |
|
|
|
throw new IllegalArgumentException("TDS属性上传缺少工厂信息(order_ref1)"); |
|
|
|
} |
|
|
|
if (StringUtils.isBlank(entity.getFileNo())) { |
|
|
|
String autoFileNo = transNoControlService.transNo(entity.getOrderRef1(), FILE_NO_TRANS_TYPE); |
|
|
|
if (StringUtils.isBlank(autoFileNo)) { |
|
|
|
throw new IllegalArgumentException("文件编码规则缺失,请维护TransNoControl:transType=file_no"); |
|
|
|
} |
|
|
|
entity.setFileNo(autoFileNo); |
|
|
|
} |
|
|
|
if (entity.getRev() == null || entity.getRev() <= 0) { |
|
|
|
entity.setRev(1); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private void saveUploadedFile(MultipartFile file, SysOssEntity oss, Date createDate) { |
|
|
|
String fileName = file.getOriginalFilename(); |
|
|
|
if (StringUtils.isEmpty(fileName)) { |
|
|
|
|