开发完成层级定义相关的接口,还没自测。
This commit is contained in:
parent
7f50349104
commit
e76449212e
|
|
@ -15,7 +15,7 @@ import javax.servlet.http.HttpServletResponse;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
@RequestMapping("/data/ed/file")
|
@RequestMapping("/data1/ed/file")
|
||||||
@RestController
|
@RestController
|
||||||
public class EDDataController {
|
public class EDDataController {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,12 +40,21 @@ public class ProjectController {
|
||||||
return edFileInfoService.queryAllPrjInfo();
|
return edFileInfoService.queryAllPrjInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@RequestMapping("addFolder")
|
@RequestMapping("addFolder")
|
||||||
public ElectromagneticResult<?> addFolder(@RequestParam String folderName, @RequestParam String parentId) {
|
public ElectromagneticResult<?> addFolder(@RequestParam String folderName, @RequestParam String parentId) {
|
||||||
return edFileInfoService.addFolder(parentId, folderName);
|
return edFileInfoService.addFolder(parentId, folderName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequestMapping("modifyFolder")
|
||||||
|
public ElectromagneticResult<?> modifyFolder(@RequestParam String newFolderName, @RequestParam String id) {
|
||||||
|
return edFileInfoService.modifyFolder(id, newFolderName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping("deleteFolder")
|
||||||
|
public ElectromagneticResult<?> deleteFolder(@RequestParam String fileId) {
|
||||||
|
return edFileInfoService.deleteFolder(fileId);
|
||||||
|
}
|
||||||
|
|
||||||
@RequestMapping("folderResort")
|
@RequestMapping("folderResort")
|
||||||
public ElectromagneticResult<?> folderResort(@RequestBody List<FolderResortDTO> folderResortDTOList) {
|
public ElectromagneticResult<?> folderResort(@RequestBody List<FolderResortDTO> folderResortDTOList) {
|
||||||
return edFileInfoService.folderResort(folderResortDTOList);
|
return edFileInfoService.folderResort(folderResortDTOList);
|
||||||
|
|
@ -55,4 +64,9 @@ public class ProjectController {
|
||||||
public ElectromagneticResult<?> publish(@RequestParam String prjId) {
|
public ElectromagneticResult<?> publish(@RequestParam String prjId) {
|
||||||
return edFileInfoService.publish(prjId);
|
return edFileInfoService.publish(prjId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequestMapping("follow")
|
||||||
|
public ElectromagneticResult<?> follow(@RequestParam String sourceId, @RequestParam String targetId) {
|
||||||
|
return edFileInfoService.follow(sourceId, targetId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,13 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo;
|
import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface EdFileInfoMapper extends BaseMapper<EdFileInfo> {
|
public interface EdFileInfoMapper extends BaseMapper<EdFileInfo> {
|
||||||
|
|
||||||
String maxPrjId();
|
String maxPrjId();
|
||||||
|
|
||||||
|
List<EdFileInfo> selectAllAdminFolder(String prjId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,13 @@ import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
|
import lombok.experimental.FieldNameConstants;
|
||||||
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@TableName("ed_file_info")
|
@TableName("ed_file_info")
|
||||||
@Accessors(chain = true)
|
@Accessors(chain = true)
|
||||||
@Data
|
@Data
|
||||||
|
@FieldNameConstants
|
||||||
public class EdFileInfo extends BaseModel {
|
public class EdFileInfo extends BaseModel {
|
||||||
/**
|
/**
|
||||||
* 主键ID
|
* 主键ID
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
package com.electromagnetic.industry.software.manage.pojo.resp;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class ProjectVO {
|
||||||
|
|
||||||
|
private String id;
|
||||||
|
private String fileName;
|
||||||
|
private String parentId;
|
||||||
|
private int sort;
|
||||||
|
|
||||||
|
private List<ProjectVO> children;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -55,4 +55,27 @@ public interface EdFileInfoService {
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
ElectromagneticResult<?> publish(String prjId);
|
ElectromagneticResult<?> publish(String prjId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除子集
|
||||||
|
* @param fileId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
ElectromagneticResult<?> deleteFolder(String fileId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 层级沿用
|
||||||
|
* @param sourceId
|
||||||
|
* @param targetId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
ElectromagneticResult<?> follow(String sourceId, String targetId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改子集名称
|
||||||
|
* @param id
|
||||||
|
* @param newFolderName
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
ElectromagneticResult<?> modifyFolder(String id, String newFolderName);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,18 @@
|
||||||
package com.electromagnetic.industry.software.manage.service.serviceimpl;
|
package com.electromagnetic.industry.software.manage.service.serviceimpl;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.io.FileUtil;
|
||||||
|
import cn.hutool.core.lang.Assert;
|
||||||
|
import cn.hutool.core.lang.tree.Tree;
|
||||||
|
import cn.hutool.core.lang.tree.TreeNodeConfig;
|
||||||
|
import cn.hutool.core.lang.tree.TreeUtil;
|
||||||
import cn.hutool.core.text.StrFormatter;
|
import cn.hutool.core.text.StrFormatter;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.electromagnetic.industry.software.common.cons.ElectromagneticConstants;
|
|
||||||
import com.electromagnetic.industry.software.common.enums.EffectFlagEnum;
|
import com.electromagnetic.industry.software.common.enums.EffectFlagEnum;
|
||||||
import com.electromagnetic.industry.software.common.enums.EleDataSaveStatusEnum;
|
import com.electromagnetic.industry.software.common.enums.EleDataSaveStatusEnum;
|
||||||
import com.electromagnetic.industry.software.common.enums.EleDataStatusEnum;
|
import com.electromagnetic.industry.software.common.enums.EleDataStatusEnum;
|
||||||
|
|
@ -16,9 +22,9 @@ import com.electromagnetic.industry.software.common.util.*;
|
||||||
import com.electromagnetic.industry.software.manage.mapper.EdFileInfoMapper;
|
import com.electromagnetic.industry.software.manage.mapper.EdFileInfoMapper;
|
||||||
import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo;
|
import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo;
|
||||||
import com.electromagnetic.industry.software.manage.pojo.req.FolderResortDTO;
|
import com.electromagnetic.industry.software.manage.pojo.req.FolderResortDTO;
|
||||||
|
import com.electromagnetic.industry.software.manage.pojo.resp.ProjectVO;
|
||||||
import com.electromagnetic.industry.software.manage.service.EdFileInfoService;
|
import com.electromagnetic.industry.software.manage.service.EdFileInfoService;
|
||||||
import com.electromagnetic.industry.software.manage.service.FileSystemService;
|
import com.electromagnetic.industry.software.manage.service.FileSystemService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.core.env.Environment;
|
import org.springframework.core.env.Environment;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
@ -33,6 +39,8 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import static com.electromagnetic.industry.software.common.cons.ElectromagneticConstants.*;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo> implements EdFileInfoService {
|
public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo> implements EdFileInfoService {
|
||||||
|
|
||||||
|
|
@ -63,6 +71,14 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ElectromagneticResult<?> createNewPrj(String prjName) {
|
public ElectromagneticResult<?> createNewPrj(String prjName) {
|
||||||
|
|
||||||
|
Assert.isTrue(EleCommonUtil.isFileNameValid(prjName), "文件名不符合规范,只能包含中文字符、下划线、连字符、加号、数字和英文字符且长度小于32。");
|
||||||
|
if (!EleCommonUtil.isFileNameValid(prjName)) {
|
||||||
|
String info = StrFormatter.format("工程名称{}不符合要求", prjName);
|
||||||
|
log.error(info);
|
||||||
|
return ElectromagneticResultUtil.fail("-1", info);
|
||||||
|
}
|
||||||
|
|
||||||
// 首先检查工程是否存在
|
// 首先检查工程是否存在
|
||||||
// TODO 一个项目如果被废除了,然后又新建了一个同名工程,这种情况怎么处理,需要产品确认。当前这里先按照同名如果存在则抛出异常处理。
|
// TODO 一个项目如果被废除了,然后又新建了一个同名工程,这种情况怎么处理,需要产品确认。当前这里先按照同名如果存在则抛出异常处理。
|
||||||
LambdaQueryWrapper<EdFileInfo> existPrjWrapper = Wrappers.lambdaQuery(EdFileInfo.class)
|
LambdaQueryWrapper<EdFileInfo> existPrjWrapper = Wrappers.lambdaQuery(EdFileInfo.class)
|
||||||
|
|
@ -85,7 +101,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
|
||||||
|
|
||||||
EdFileInfo fileInfo = new EdFileInfo();
|
EdFileInfo fileInfo = new EdFileInfo();
|
||||||
fileInfo.setId(newPrjId)
|
fileInfo.setId(newPrjId)
|
||||||
.setFileId(IdWorker.getSnowFlakeIdString())
|
.setFileId(newPrjId)
|
||||||
.setFileName(prjName)
|
.setFileName(prjName)
|
||||||
.setFileVersion(100)
|
.setFileVersion(100)
|
||||||
.setFileTime(EleCommonUtil.getNowTimeStr())
|
.setFileTime(EleCommonUtil.getNowTimeStr())
|
||||||
|
|
@ -153,7 +169,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
|
||||||
ids.add(prjId);
|
ids.add(prjId);
|
||||||
LambdaQueryWrapper<EdFileInfo> queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class)
|
LambdaQueryWrapper<EdFileInfo> queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class)
|
||||||
.select(EdFileInfo::getId)
|
.select(EdFileInfo::getId)
|
||||||
.likeRight(EdFileInfo::getFilePath, prjId + ElectromagneticConstants.MYSQL_FILE_PATH_SPLIT);
|
.likeRight(EdFileInfo::getFilePath, prjId + MYSQL_FILE_PATH_SPLIT);
|
||||||
List<EdFileInfo> edFileInfos = this.baseMapper.selectList(queryWrapper);
|
List<EdFileInfo> edFileInfos = this.baseMapper.selectList(queryWrapper);
|
||||||
edFileInfos.forEach(e -> ids.add(e.getId()));
|
edFileInfos.forEach(e -> ids.add(e.getId()));
|
||||||
Wrappers.lambdaUpdate(EdFileInfo.class).set(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code).in(EdFileInfo::getId, ids);
|
Wrappers.lambdaUpdate(EdFileInfo.class).set(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code).in(EdFileInfo::getId, ids);
|
||||||
|
|
@ -171,18 +187,27 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ElectromagneticResult<?> addFolder(String parentId, String folderName) {
|
public ElectromagneticResult<?> addFolder(String parentId, String folderName) {
|
||||||
|
|
||||||
|
// 验证名称是否合法
|
||||||
|
Assert.isTrue(EleCommonUtil.isFileNameValid(folderName), "文件名不符合规范,只能包含中文字符、下划线、连字符、加号、数字和英文字符且长度小于32。");
|
||||||
|
|
||||||
|
if (!EleCommonUtil.isFileNameValid(folderName)) {
|
||||||
|
String info = StrFormatter.format("子集名称{}不符合要求", folderName);
|
||||||
|
log.error(info);
|
||||||
|
return ElectromagneticResultUtil.fail("-1", info);
|
||||||
|
}
|
||||||
// 首先判断判断当前深度是否已经达到6层
|
// 首先判断判断当前深度是否已经达到6层
|
||||||
LambdaQueryWrapper<EdFileInfo> queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class)
|
LambdaQueryWrapper<EdFileInfo> queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class)
|
||||||
.select(EdFileInfo::getId, EdFileInfo::getFilePath)
|
.select(EdFileInfo::getId, EdFileInfo::getFilePath)
|
||||||
.eq(EdFileInfo::getId, parentId);
|
.eq(EdFileInfo::getId, parentId);
|
||||||
EdFileInfo edFileInfo = this.baseMapper.selectOne(queryWrapper);
|
EdFileInfo edFileInfo = this.baseMapper.selectOne(queryWrapper);
|
||||||
String currentPath = edFileInfo.getFilePath();
|
String currentPath = edFileInfo.getFilePath();
|
||||||
List<String> paths = CollUtil.newArrayList(edFileInfo.getFilePath().split(ElectromagneticConstants.MYSQL_FILE_PATH_SPLIT));
|
List<String> paths = CollUtil.newArrayList(edFileInfo.getFilePath().split(MYSQL_FILE_PATH_SPLIT));
|
||||||
if (paths.size() >= prjFolderMaxLength) {
|
if (paths.size() >= prjFolderMaxLength) {
|
||||||
String info = "当前子集已达到最大层级,禁止创建子集。";
|
String info = "当前子集已达到最大层级,禁止创建子集。";
|
||||||
log.error(info);
|
log.error(info);
|
||||||
return ElectromagneticResultUtil.fail("-1", info);
|
return ElectromagneticResultUtil.fail("-1", info);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 判断文件夹名称是否存在
|
// 判断文件夹名称是否存在
|
||||||
List<EdFileInfo> edFileInfos = this.baseMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class)
|
List<EdFileInfo> edFileInfos = this.baseMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class)
|
||||||
.select(EdFileInfo::getId, EdFileInfo::getFileName)
|
.select(EdFileInfo::getId, EdFileInfo::getFileName)
|
||||||
|
|
@ -194,31 +219,32 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
|
||||||
return ElectromagneticResultUtil.fail("-1", info);
|
return ElectromagneticResultUtil.fail("-1", info);
|
||||||
}
|
}
|
||||||
|
|
||||||
// int id = Integer.parseInt(this.baseMapper.maxPrjId());
|
int id = Integer.parseInt(this.baseMapper.maxPrjId());
|
||||||
// Date now = new Date();
|
Date now = new Date();
|
||||||
// String currentUserId = UserThreadLocal.getUserId();
|
String currentUserId = UserThreadLocal.getUserId();
|
||||||
// String newPrjId = String.valueOf(id + 1);
|
String newFolderId = String.valueOf(id + 1);
|
||||||
// EdFileInfo fileInfo = EdFileInfo.builder()
|
String path = currentPath + MYSQL_FILE_PATH_SPLIT + newFolderId;
|
||||||
// .id(newPrjId)
|
EdFileInfo fileInfo = new EdFileInfo();
|
||||||
// .fileId(IdWorker.getSnowFlakeIdString())
|
fileInfo.setId(newFolderId)
|
||||||
// .fileName(folderName)
|
.setFileId(newFolderId)
|
||||||
// .fileVersion(100)
|
.setFileName(folderName)
|
||||||
// .fileTime(EleCommonUtil.getNowTimeStr())
|
.setFileVersion(100)
|
||||||
// .dataType(EleDataTypeEnum.FOLDER.code)
|
.setParentId(parentId)
|
||||||
// .dataStatus(EleDataStatusEnum.NOT_PUBLISHED.code)
|
.setFileTime(EleCommonUtil.getNowTimeStr())
|
||||||
// .effectFlag(EffectFlagEnum.EFFECT.code)
|
.setDataType(EleDataTypeEnum.FOLDER.code)
|
||||||
// .saveStatus(EleDataSaveStatusEnum.SUCCESS.code)
|
.setDataStatus(EleDataStatusEnum.NOT_PUBLISHED.code)
|
||||||
// .filePath(newPrjId)
|
.setEffectFlag(EffectFlagEnum.EFFECT.code)
|
||||||
// .sort(1)
|
.setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code)
|
||||||
// .createdTime(now)
|
.setFilePath(path)
|
||||||
// .updateTime(now)
|
.setSort(names.size() + 1)
|
||||||
// .createdBy(currentUserId)
|
.setCreatedTime(now)
|
||||||
// .updatedBy(currentUserId)
|
.setUpdateTime(now)
|
||||||
// .build();
|
.setCreatedBy(currentUserId)
|
||||||
// this.save(fileInfo);
|
.setUpdatedBy(currentUserId);
|
||||||
// // 保存到文件系统
|
// 保存到文件系统
|
||||||
// fileSystemService.createDirectory(eleDataPath);
|
String targetFilePath = getPath(paths) + File.separator + folderName;
|
||||||
return null;
|
fileSystemService.createDirectory(targetFilePath);
|
||||||
|
return ElectromagneticResultUtil.success(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -228,7 +254,38 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public ElectromagneticResult<?> queryAllPrjInfo() {
|
public ElectromagneticResult<?> queryAllPrjInfo() {
|
||||||
return null;
|
|
||||||
|
LambdaQueryWrapper<EdFileInfo> queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class)
|
||||||
|
.select(EdFileInfo::getId)
|
||||||
|
.eq(EdFileInfo::getParentId, 0)
|
||||||
|
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code);
|
||||||
|
List<String> ids = this.baseMapper.selectList(queryWrapper).stream().map(EdFileInfo::getId).collect(Collectors.toList());
|
||||||
|
|
||||||
|
List<ProjectVO> projectVOS = new ArrayList<>();
|
||||||
|
|
||||||
|
for (String id : ids) {
|
||||||
|
LambdaQueryWrapper<EdFileInfo> queryWrapper1 = Wrappers.lambdaQuery(EdFileInfo.class)
|
||||||
|
.select(EdFileInfo::getId, EdFileInfo::getFileName, EdFileInfo::getParentId, EdFileInfo::getSort)
|
||||||
|
.like(EdFileInfo::getFilePath, MYSQL_FILE_PATH_SPLIT + id + MYSQL_FILE_PATH_SPLIT);
|
||||||
|
List<EdFileInfo> edFileInfos = this.baseMapper.selectList(queryWrapper1);
|
||||||
|
// 转换为树
|
||||||
|
TreeNodeConfig config = new TreeNodeConfig();
|
||||||
|
config.setIdKey(EdFileInfo.Fields.id);
|
||||||
|
config.setParentIdKey(EdFileInfo.Fields.parentId);
|
||||||
|
config.setWeightKey(EdFileInfo.Fields.sort);
|
||||||
|
|
||||||
|
List<Tree<String>> trees = TreeUtil.build(edFileInfos, "0", config, ((obj, treeNode) -> {
|
||||||
|
treeNode.putExtra(EdFileInfo.Fields.id, obj.getId());
|
||||||
|
treeNode.putExtra(EdFileInfo.Fields.parentId, obj.getParentId());
|
||||||
|
treeNode.putExtra(EdFileInfo.Fields.sort, obj.getSort());
|
||||||
|
treeNode.putExtra(EdFileInfo.Fields.fileName, obj.getFileName());
|
||||||
|
}));
|
||||||
|
|
||||||
|
String jsonStr = JSONUtil.toJsonStr(trees);
|
||||||
|
ProjectVO projectVO = JSONUtil.toList(jsonStr, ProjectVO.class).get(0);
|
||||||
|
projectVOS.add(projectVO);
|
||||||
|
}
|
||||||
|
return ElectromagneticResultUtil.success(projectVOS);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -265,6 +322,149 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
|
||||||
return ElectromagneticResultUtil.success(true);
|
return ElectromagneticResultUtil.success(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除子集
|
||||||
|
*
|
||||||
|
* @param fileId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public ElectromagneticResult<?> deleteFolder(String fileId) {
|
||||||
|
// TODO是否需要判断文件夹是否为空
|
||||||
|
LambdaQueryWrapper<EdFileInfo> queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class)
|
||||||
|
.select(EdFileInfo::getId, EdFileInfo::getFilePath)
|
||||||
|
.like(EdFileInfo::getFilePath, MYSQL_FILE_PATH_SPLIT + fileId + MYSQL_FILE_PATH_SPLIT)
|
||||||
|
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code);
|
||||||
|
List<EdFileInfo> edFileInfos = this.baseMapper.selectList(queryWrapper);
|
||||||
|
List<String> ids = edFileInfos.stream().map(EdFileInfo::getId).collect(Collectors.toList());
|
||||||
|
ids.add(fileId);
|
||||||
|
LambdaUpdateWrapper<EdFileInfo> updateWrapper = Wrappers.lambdaUpdate(EdFileInfo.class)
|
||||||
|
.set(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code)
|
||||||
|
.set(EdFileInfo::getSort, -1)
|
||||||
|
.in(EdFileInfo::getId, ids);
|
||||||
|
this.baseMapper.update(null, updateWrapper);
|
||||||
|
|
||||||
|
String[] tmpFileIds = edFileInfos.get(0).getFilePath().split(MYSQL_FILE_PATH_SPLIT);
|
||||||
|
String parentId = tmpFileIds[0];
|
||||||
|
for (String tmpPathId : tmpFileIds) {
|
||||||
|
parentId = this.baseMapper.maxPrjId();
|
||||||
|
if (fileId.equals(tmpPathId)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 同层级的resort
|
||||||
|
List<EdFileInfo> edFileInfos1 = this.baseMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class)
|
||||||
|
.select(EdFileInfo::getId, EdFileInfo::getSort)
|
||||||
|
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)
|
||||||
|
.eq(EdFileInfo::getParentId, parentId)
|
||||||
|
.orderByAsc(EdFileInfo::getSort));
|
||||||
|
for (int i = 1; i <= edFileInfos1.size(); i++) {
|
||||||
|
String id = edFileInfos1.get(i).getId();
|
||||||
|
this.baseMapper.update(null, Wrappers.lambdaUpdate(EdFileInfo.class)
|
||||||
|
.set(EdFileInfo::getSort, i)
|
||||||
|
.eq(EdFileInfo::getId, id));
|
||||||
|
}
|
||||||
|
return ElectromagneticResultUtil.success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 层级沿用
|
||||||
|
*
|
||||||
|
* @param sourceId
|
||||||
|
* @param targetId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public ElectromagneticResult<?> follow(String sourceId, String targetId) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
String currentUserId = UserThreadLocal.getUserId();
|
||||||
|
// 把source工程的层级结构copy到目标工程
|
||||||
|
// 查找source的全部目录
|
||||||
|
List<EdFileInfo> sourceEdFileInfos = this.baseMapper.selectAllAdminFolder(sourceId);
|
||||||
|
List<EdFileInfo> targetEdFileInfos = this.baseMapper.selectAllAdminFolder(targetId);
|
||||||
|
// 确定层级最大为prjFolderMaxLength层,现在逐层来处理。
|
||||||
|
for (int i = 1; i <= prjFolderMaxLength; ++i) {
|
||||||
|
// 先查找source第i层下有那些子集
|
||||||
|
final int count = i;
|
||||||
|
EdFileInfo targetParentFile = targetEdFileInfos.stream()
|
||||||
|
.filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count - 1)
|
||||||
|
.collect(Collectors.toList()).get(0);
|
||||||
|
List<EdFileInfo> sourceTmpEdFiles = sourceEdFileInfos.stream()
|
||||||
|
.filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
List<EdFileInfo> targetTmpEdFiles = targetEdFileInfos.stream()
|
||||||
|
.filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
Map<String, EdFileInfo> sourceFileNameMap= sourceTmpEdFiles.stream().collect(Collectors.toMap(EdFileInfo::getFileName, e -> e));
|
||||||
|
List<String> targetFileNames = targetTmpEdFiles.stream().map(EdFileInfo::getFileName).collect(Collectors.toList());
|
||||||
|
for (EdFileInfo edFileInfo : sourceTmpEdFiles) {
|
||||||
|
String sourceFileName = edFileInfo.getFileName();
|
||||||
|
if (!targetFileNames.contains(sourceFileName)) {
|
||||||
|
EdFileInfo sourceFile = sourceFileNameMap.get(sourceFileName);
|
||||||
|
EdFileInfo targetFile = new EdFileInfo();
|
||||||
|
int maxFolderId = Integer.parseInt(this.baseMapper.maxPrjId());
|
||||||
|
String newFolderId = String.valueOf(maxFolderId + 1);
|
||||||
|
Date now = new Date();
|
||||||
|
targetFile.setId(newFolderId)
|
||||||
|
.setFileId(newFolderId)
|
||||||
|
.setFileName(sourceFile.getFileName())
|
||||||
|
.setFileVersion(100)
|
||||||
|
.setParentId(targetParentFile.getParentId())
|
||||||
|
.setFileTime(EleCommonUtil.getNowTimeStr())
|
||||||
|
.setDataType(EleDataTypeEnum.FOLDER.code)
|
||||||
|
.setDataStatus(EleDataStatusEnum.NOT_PUBLISHED.code)
|
||||||
|
.setEffectFlag(EffectFlagEnum.EFFECT.code)
|
||||||
|
.setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code)
|
||||||
|
.setFilePath(targetParentFile.getFilePath() + MYSQL_FILE_PATH_SPLIT + newFolderId)
|
||||||
|
.setSort(targetTmpEdFiles.size() + 1)
|
||||||
|
.setCreatedTime(now)
|
||||||
|
.setUpdateTime(now)
|
||||||
|
.setCreatedBy(currentUserId)
|
||||||
|
.setUpdatedBy(currentUserId);
|
||||||
|
this.save(targetFile);
|
||||||
|
String targetSysFilePath = getSysFilePathByDbPath(targetFile.getFilePath()) + File.separator + sourceFileName;
|
||||||
|
FileUtil.mkdir(targetSysFilePath);
|
||||||
|
targetEdFileInfos = this.baseMapper.selectAllAdminFolder(targetId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ElectromagneticResultUtil.success(true);
|
||||||
|
} catch (Exception e) {
|
||||||
|
String info = StrFormatter.format("层级沿用失败");
|
||||||
|
log.error(info, e);
|
||||||
|
return ElectromagneticResultUtil.fail("-1", info);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改子集名称
|
||||||
|
*
|
||||||
|
* @param id
|
||||||
|
* @param newFolderName
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public ElectromagneticResult<?> modifyFolder(String id, String newFolderName) {
|
||||||
|
try {
|
||||||
|
EdFileInfo fileInfo = this.baseMapper.selectOne(Wrappers.lambdaQuery(EdFileInfo.class)
|
||||||
|
.eq(EdFileInfo::getId, id));
|
||||||
|
String sysFilePath = getSysFilePathByDbPath(fileInfo.getFilePath());
|
||||||
|
this.baseMapper.update(null, Wrappers.lambdaUpdate(EdFileInfo.class)
|
||||||
|
.set(EdFileInfo::getFileName, newFolderName));
|
||||||
|
FileUtil.rename(new File(sysFilePath), newFolderName, true);
|
||||||
|
return ElectromagneticResultUtil.success(true);
|
||||||
|
} catch(Exception e) {
|
||||||
|
String info = StrFormatter.format("修改子集名称为{}失败", newFolderName);
|
||||||
|
log.error(info, e);
|
||||||
|
return ElectromagneticResultUtil.fail("-1", info);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getSysFilePathByDbPath(String dbPath) {
|
||||||
|
ArrayList<String> paths = CollUtil.newArrayList(dbPath.split(MYSQL_FILE_PATH_SPLIT));
|
||||||
|
return getPath(paths);
|
||||||
|
}
|
||||||
|
|
||||||
private String getPath(List<String> ids) {
|
private String getPath(List<String> ids) {
|
||||||
LambdaQueryWrapper<EdFileInfo> queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class)
|
LambdaQueryWrapper<EdFileInfo> queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class)
|
||||||
|
|
|
||||||
|
|
@ -7,4 +7,11 @@
|
||||||
select max(id) from ed_file_info where length(id) = 6 and (parent_id is null or parent_id = "")
|
select max(id) from ed_file_info where length(id) = 6 and (parent_id is null or parent_id = "")
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<select id="selectAllAdminFolder"
|
||||||
|
resultType="com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo">
|
||||||
|
select id, file_name, parent_id, sort, file_path from ed_file_info where length(id) = 6 and effect_flag = 1 and data_type = 0
|
||||||
|
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
Loading…
Reference in New Issue