|
@@ -1,5 +1,6 @@
|
|
|
package com.fs.his.service.impl;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.Collections;
|
|
|
import java.util.List;
|
|
|
import java.util.Objects;
|
|
@@ -18,6 +19,7 @@ import org.springframework.stereotype.Service;
|
|
|
import com.fs.his.mapper.FsAttachmentMapper;
|
|
|
import com.fs.his.domain.FsAttachment;
|
|
|
import com.fs.his.service.IFsAttachmentService;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
/**
|
|
|
* 附件管理Service业务层处理
|
|
@@ -52,7 +54,20 @@ public class FsAttachmentServiceImpl extends ServiceImpl<FsAttachmentMapper, FsA
|
|
|
|
|
|
@Override
|
|
|
public List<FsAttachment> selectFsAttachmentList(FsAttachmentPageParam fsAttachment) {
|
|
|
- return baseMapper.selectFsAttachmentListPage(fsAttachment);
|
|
|
+ List<FsAttachment> list = baseMapper.selectFsAttachmentListPage(fsAttachment);
|
|
|
+ //查询文件夹大小
|
|
|
+ for (FsAttachment attachment : list) {
|
|
|
+ long size = 0;
|
|
|
+ if (attachment.getType() == 0){
|
|
|
+ FsAttachment queryParam = new FsAttachment();
|
|
|
+ queryParam.setParentId(attachment.getAttachmentId());
|
|
|
+ queryParam.setUserId(attachment.getUserId());
|
|
|
+ List<FsAttachment> list1 = baseMapper.selectFsAttachmentList(queryParam);
|
|
|
+ } else {
|
|
|
+ size = size + attachment.getSize();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return list;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -62,6 +77,7 @@ public class FsAttachmentServiceImpl extends ServiceImpl<FsAttachmentMapper, FsA
|
|
|
* @return 结果
|
|
|
*/
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public R insertFsAttachment(FsAttachment fsAttachment) {
|
|
|
if (fsAttachment.getUserId() == null) {
|
|
|
return R.error("未获取到创建人!");
|
|
@@ -86,6 +102,7 @@ public class FsAttachmentServiceImpl extends ServiceImpl<FsAttachmentMapper, FsA
|
|
|
//上传类型为文件时可获取为文件名称
|
|
|
if (StringUtils.isBlank(fileName)) {
|
|
|
fileName = FileNameExtractor.getFileNameFromUrl(fsAttachment.getUrl());
|
|
|
+ list = selectFsAttachmentList(queryParam);
|
|
|
}
|
|
|
if (list != null && !list.isEmpty()) {
|
|
|
if (fileName.contains(".")) {
|
|
@@ -125,9 +142,10 @@ public class FsAttachmentServiceImpl extends ServiceImpl<FsAttachmentMapper, FsA
|
|
|
if (fsAttachment.getParentId() == null) {
|
|
|
fsAttachment.setParentId(0L);
|
|
|
}
|
|
|
+ FsAttachment parentItem = new FsAttachment();
|
|
|
if (fsAttachment.getParentId() != 0) {
|
|
|
//查询父文件是否是文件夹
|
|
|
- FsAttachment parentItem = selectFsAttachmentByAttachmentId(fsAttachment.getParentId());
|
|
|
+ parentItem = selectFsAttachmentByAttachmentId(fsAttachment.getParentId());
|
|
|
if (parentItem == null) {
|
|
|
return R.error("上级文件夹不存在");
|
|
|
} else {
|
|
@@ -137,7 +155,15 @@ public class FsAttachmentServiceImpl extends ServiceImpl<FsAttachmentMapper, FsA
|
|
|
}
|
|
|
}
|
|
|
fsAttachment.setCreateTime(DateUtils.getNowDate());
|
|
|
- return baseMapper.insertFsAttachment(fsAttachment) > 0 ? R.ok() : R.error();
|
|
|
+ int i = baseMapper.insertFsAttachment(fsAttachment);
|
|
|
+ //修改文件夹大小
|
|
|
+ if (i>0 && fsAttachment.getType() == 1 && fsAttachment.getParentId() != 0) {
|
|
|
+ Long size = parentItem.getSize();
|
|
|
+ parentItem.setSize(size + fsAttachment.getSize());
|
|
|
+ parentItem.setUpdateTime(fsAttachment.getCreateTime());
|
|
|
+ baseMapper.updateFsAttachment(parentItem);
|
|
|
+ }
|
|
|
+ return i>0 ? R.ok() : R.error();
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -147,9 +173,115 @@ public class FsAttachmentServiceImpl extends ServiceImpl<FsAttachmentMapper, FsA
|
|
|
* @return 结果
|
|
|
*/
|
|
|
@Override
|
|
|
- public int updateFsAttachment(FsAttachment fsAttachment) {
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public R updateFsAttachment(FsAttachment fsAttachment) {
|
|
|
+ if (fsAttachment.getUserId() == null) {
|
|
|
+ return R.error("未获取到修改人!");
|
|
|
+ }
|
|
|
+ FsAttachment oldAttachment = baseMapper.selectFsAttachmentByAttachmentId(fsAttachment.getAttachmentId());
|
|
|
+ if (oldAttachment == null) {
|
|
|
+ return R.error("未查到该文件!");
|
|
|
+ }
|
|
|
+ Integer type = fsAttachment.getType();
|
|
|
+ if (type == null) {
|
|
|
+ type = oldAttachment.getType();
|
|
|
+ fsAttachment.setType(type);
|
|
|
+ }
|
|
|
+ if (!Objects.equals(oldAttachment.getUserId(), fsAttachment.getUserId()) || !Objects.equals(oldAttachment.getType(), type)) {
|
|
|
+ return R.error("非本人修改/不支持修改文件类型");
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取文件名
|
|
|
+ String fileName = fsAttachment.getFileName();
|
|
|
+ //查询文件名是否存在
|
|
|
+ FsAttachment queryParam = new FsAttachment();
|
|
|
+ if (StringUtils.isNotBlank(fileName) && !oldAttachment.getFileName().equals(fileName)) {
|
|
|
+ queryParam.setUserId(fsAttachment.getUserId());
|
|
|
+ queryParam.setParentId(fsAttachment.getParentId());
|
|
|
+ queryParam.setType(fsAttachment.getType());
|
|
|
+ queryParam.setFileName(fsAttachment.getFileName());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if (type == 1) {
|
|
|
+ //文件
|
|
|
+ if (StringUtils.isBlank(fsAttachment.getUrl()) && StringUtils.isBlank(oldAttachment.getUrl())) {
|
|
|
+ return R.error("文件不存在");
|
|
|
+ }
|
|
|
+ //上传类型为文件时可获取为文件名称
|
|
|
+ if (StringUtils.isBlank(fileName) && StringUtils.isBlank(oldAttachment.getFileName())) {
|
|
|
+ fileName = FileNameExtractor.getFileNameFromUrl(fsAttachment.getUrl());
|
|
|
+ queryParam.setFileName(fsAttachment.getFileName());
|
|
|
+ List<FsAttachment> list = selectFsAttachmentList(queryParam);
|
|
|
+ if (list != null && !list.isEmpty()) {
|
|
|
+ if (fileName.contains(".")) {
|
|
|
+ int index = fileName.lastIndexOf(".");
|
|
|
+ String name = fileName.substring(0, index);
|
|
|
+ fileName = name + "(" + (list.size() + 1) + ")" + "." + fileName.substring(index + 1);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ long size = Objects.requireNonNull(ImageUtils.getImage(fsAttachment.getUrl())).length / 1024; // 单位为 KB
|
|
|
+ fsAttachment.setSize(size);
|
|
|
+ } else {
|
|
|
+ fsAttachment.setSize(oldAttachment.getSize());
|
|
|
+ }
|
|
|
+
|
|
|
+ } else if (type == 0) {
|
|
|
+ //文件夹
|
|
|
+ if (StringUtils.isBlank(fsAttachment.getFileName()) && StringUtils.isBlank(oldAttachment.getFileName())) {
|
|
|
+ return R.error("文件夹名称不能为空");
|
|
|
+ }
|
|
|
+ queryParam.setFileName(fsAttachment.getFileName());
|
|
|
+ List<FsAttachment> list = selectFsAttachmentList(queryParam);
|
|
|
+ if (list != null && !list.isEmpty()) {
|
|
|
+ fileName = fileName + "(" + (list.size() + 1) + ")";
|
|
|
+
|
|
|
+ }
|
|
|
+ } else if (type == 2) {
|
|
|
+ //体检报告
|
|
|
+ if (StringUtils.isBlank(fsAttachment.getUrl()) && StringUtils.isBlank(oldAttachment.getUrl())) {
|
|
|
+ return R.error("体检报告不存在");
|
|
|
+ }
|
|
|
+ if (StringUtils.isBlank(fsAttachment.getFileName()) && StringUtils.isBlank(oldAttachment.getFileName())) {
|
|
|
+ return R.error("名称不能为空");
|
|
|
+ }
|
|
|
+ List<FsAttachment> list = selectFsAttachmentList(queryParam);
|
|
|
+ if (list != null && !list.isEmpty()) {
|
|
|
+ fileName = fileName + "(" + (list.size() + 1) + ")";
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ fsAttachment.setFileName(fileName);
|
|
|
+ if (fsAttachment.getParentId() == null) {
|
|
|
+ fsAttachment.setParentId(oldAttachment.getParentId());
|
|
|
+ }
|
|
|
+ FsAttachment parentItem = selectFsAttachmentByAttachmentId(fsAttachment.getParentId());
|
|
|
+ if (fsAttachment.getParentId() != null && !fsAttachment.getParentId().equals(oldAttachment.getParentId())) {
|
|
|
+ if (fsAttachment.getParentId() != 0) {
|
|
|
+ //查询父文件是否是文件夹
|
|
|
+ if (parentItem == null) {
|
|
|
+ return R.error("上级文件夹不存在");
|
|
|
+ } else {
|
|
|
+ if (parentItem.getType() != 0) {
|
|
|
+ return R.error("上级文件夹不存在!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
fsAttachment.setUpdateTime(DateUtils.getNowDate());
|
|
|
- return baseMapper.updateFsAttachment(fsAttachment);
|
|
|
+ int i = baseMapper.updateFsAttachment(fsAttachment);
|
|
|
+ //修改文件夹大小
|
|
|
+ if (i>0 && fsAttachment.getType() == 1 && fsAttachment.getParentId() != 0) {
|
|
|
+ Long size = parentItem.getSize();
|
|
|
+ parentItem.setSize(size - oldAttachment.getSize() + fsAttachment.getSize());
|
|
|
+ parentItem.setUpdateTime(fsAttachment.getUpdateTime());
|
|
|
+ baseMapper.updateFsAttachment(parentItem);
|
|
|
+ }
|
|
|
+ return i > 0 ? R.ok() : R.error();
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -160,6 +292,22 @@ public class FsAttachmentServiceImpl extends ServiceImpl<FsAttachmentMapper, FsA
|
|
|
*/
|
|
|
@Override
|
|
|
public int deleteFsAttachmentByAttachmentIds(Long[] attachmentIds) {
|
|
|
+ if(attachmentIds != null && attachmentIds.length > 0) {
|
|
|
+ for (Long attachmentId : attachmentIds) {
|
|
|
+ FsAttachment fsAttachment = baseMapper.selectFsAttachmentByAttachmentId(attachmentId);
|
|
|
+ if (fsAttachment != null && fsAttachment.getType() == 1 && fsAttachment.getParentId() != 0) {
|
|
|
+ FsAttachment folder = baseMapper.selectFsAttachmentByAttachmentId(fsAttachment.getParentId());
|
|
|
+ if (folder != null) {
|
|
|
+ //修改文件夹大小
|
|
|
+ Long size = folder.getSize();
|
|
|
+ folder.setSize(size - fsAttachment.getSize());
|
|
|
+ folder.setUpdateTime(DateUtils.getNowDate());
|
|
|
+ baseMapper.updateFsAttachment(folder);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
return baseMapper.deleteFsAttachmentByAttachmentIds(attachmentIds);
|
|
|
}
|
|
|
|
|
@@ -171,6 +319,15 @@ public class FsAttachmentServiceImpl extends ServiceImpl<FsAttachmentMapper, FsA
|
|
|
*/
|
|
|
@Override
|
|
|
public int deleteFsAttachmentByAttachmentId(Long attachmentId) {
|
|
|
+ FsAttachment fsAttachment = baseMapper.selectFsAttachmentByAttachmentId(attachmentId);
|
|
|
+ if (fsAttachment != null && fsAttachment.getType() == 1) {
|
|
|
+ FsAttachment folder = baseMapper.selectFsAttachmentByAttachmentId(fsAttachment.getParentId());
|
|
|
+ //修改文件夹大小
|
|
|
+ Long size = folder.getSize();
|
|
|
+ folder.setSize(size - fsAttachment.getSize());
|
|
|
+ folder.setUpdateTime(DateUtils.getNowDate());
|
|
|
+ baseMapper.updateFsAttachment(folder);
|
|
|
+ }
|
|
|
return baseMapper.deleteFsAttachmentByAttachmentId(attachmentId);
|
|
|
}
|
|
|
|