增加自定义层级相关功能

This commit is contained in:
chenxudong 2025-02-20 15:13:22 +08:00
parent 2c6189cc6e
commit ac415f13b4
17 changed files with 353 additions and 184 deletions

View File

@ -2,6 +2,7 @@ package com.electromagnetic.industry.software.manage.controller;
import com.electromagnetic.industry.software.common.annotations.RequiredPermission;
import com.electromagnetic.industry.software.common.annotations.UserOperation;
import com.electromagnetic.industry.software.common.enums.DataOwnEnum;
import com.electromagnetic.industry.software.common.enums.FilePermission;
import com.electromagnetic.industry.software.common.enums.UserOperationModuleEnum;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
@ -29,27 +30,27 @@ public class EdFileInfoController {
@UserOperation(value = "查看了工程树", modelName = UserOperationModuleEnum.DATABASE)
@RequestMapping("tree")
public ElectromagneticResult<?> tree() {
return edFileInfoService.tree();
return edFileInfoService.tree(DataOwnEnum.COMMON.code);
}
@UserOperation(value = "创建了文件夹", modelName = UserOperationModuleEnum.DATABASE)
@RequestMapping("createFolder")
public ElectromagneticResult<?> createFolder(@RequestBody CreateFolderDTO createFolderDTO) {
return edFileInfoService.createFolder(createFolderDTO);
return edFileInfoService.createFolder(createFolderDTO, DataOwnEnum.COMMON.code);
}
@UserOperation(value = "作废了文件夹", modelName = UserOperationModuleEnum.DATABASE)
@RequiredPermission(value = FilePermission.DELETE)
@RequestMapping("delete")
public ElectromagneticResult<?> delete(@RequestParam String id) {
return edFileInfoService.delete(id);
return edFileInfoService.delete(id, DataOwnEnum.COMMON.code);
}
@UserOperation(value = "查询了文件", modelName = UserOperationModuleEnum.DATABASE)
@RequiredPermission(value = FilePermission.VIEW)
@RequestMapping("info")
public ElectromagneticResult<?> info(@RequestBody FileInfoQueryDTO fileInfoQueryDTO) {
return edFileInfoService.queryEdFileInfo(fileInfoQueryDTO);
return edFileInfoService.queryEdFileInfo(fileInfoQueryDTO, DataOwnEnum.COMMON.code);
}
@UserOperation(value = "上传了文件", modelName = UserOperationModuleEnum.DATABASE)
@ -58,21 +59,21 @@ public class EdFileInfoController {
public ElectromagneticResult<?> upload(@RequestParam("parentId") String parentId,
@RequestParam("file") MultipartFile file,
@RequestParam("strategy") Integer strategy) {
return edFileInfoService.upload(parentId, file, strategy);
return edFileInfoService.upload(parentId, file, strategy, DataOwnEnum.COMMON.code);
}
@UserOperation(value = "下载了文件", modelName = UserOperationModuleEnum.DATABASE)
@RequiredPermission(value = FilePermission.DOWNLOAD)
@RequestMapping("download")
public ResponseEntity<InputStreamResource> download(@RequestParam String id, HttpServletResponse response) {
return edFileInfoService.download(id, response);
return edFileInfoService.download(id, response, DataOwnEnum.COMMON.code);
}
@UserOperation(value = "更新了文件信息", modelName = UserOperationModuleEnum.DATABASE)
@RequiredPermission(value = FilePermission.EDIT)
@RequestMapping("updateFileInfo")
public ElectromagneticResult<?> updateFileInfo(@RequestBody UpdateFileInfoDTO updateFileInfoDTO) {
return edFileInfoService.updateFileInfo(updateFileInfoDTO);
return edFileInfoService.updateFileInfo(updateFileInfoDTO, DataOwnEnum.COMMON.code);
}
@UserOperation(value = "移动了文件", modelName = UserOperationModuleEnum.DATABASE)
@ -81,7 +82,7 @@ public class EdFileInfoController {
public ElectromagneticResult<?> moveFile(@RequestParam("id") String id,
@RequestParam("targetFolderId") String targetFolderId,
@RequestParam("strategy") Integer strategy) {
return edFileInfoService.moveFile(id, targetFolderId, strategy);
return edFileInfoService.moveFile(id, targetFolderId, strategy, DataOwnEnum.COMMON.code);
}
@UserOperation(value = "复制了文件", modelName = UserOperationModuleEnum.DATABASE)
@ -90,7 +91,7 @@ public class EdFileInfoController {
public ElectromagneticResult<?> copyFile(@RequestParam("id") String id,
@RequestParam("targetFolderId") String targetFolderId,
@RequestParam("strategy") Integer strategy) {
return edFileInfoService.copyFile(id, targetFolderId, strategy);
return edFileInfoService.copyFile(id, targetFolderId, strategy, DataOwnEnum.COMMON.code);
}
@UserOperation(value = "查看了文件历史版本信息", modelName = UserOperationModuleEnum.DATABASE)
@ -110,24 +111,24 @@ public class EdFileInfoController {
@UserOperation(value = "导出了数据库", modelName = UserOperationModuleEnum.DATABASE)
@RequestMapping("batchExport")
public ResponseEntity<InputStreamResource> batchExport(@RequestParam String fileIds, HttpServletResponse response) throws IOException {
return edFileInfoService.batchExport(fileIds, response);
return edFileInfoService.batchExport(fileIds, response, DataOwnEnum.COMMON.code);
}
@UserOperation(value = "批量了数据库", modelName = UserOperationModuleEnum.DATABASE)
@UserOperation(value = "批量上传了数据库", modelName = UserOperationModuleEnum.DATABASE)
@RequestMapping(value = "/mergeChunks", method = RequestMethod.GET)
public ElectromagneticResult<?> mergeChunks(@RequestParam String identifier,
@RequestParam String fileName,
@RequestParam Integer totalChunks) {
return edFileInfoService.mergeChunks(identifier, fileName, totalChunks);
return edFileInfoService.mergeChunks(identifier, fileName, totalChunks, DataOwnEnum.COMMON.code);
}
@UserOperation(value = "批量了数据库", modelName = UserOperationModuleEnum.DATABASE)
@UserOperation(value = "批量上传了数据库", modelName = UserOperationModuleEnum.DATABASE)
@RequestMapping(value = "/batchImport", method = RequestMethod.POST)
public ElectromagneticResult<?> batchImport(FileChunkDTO fileChunkDTO) {
return edFileInfoService.batchImport(fileChunkDTO);
}
@UserOperation(value = "批量了数据库")
@UserOperation(value = "批量上传了数据库")
@RequestMapping(value = "/batchImport", method = RequestMethod.GET)
public ElectromagneticResult<?> checkChunkExist(FileChunkDTO fileChunkDTO) {
return edFileInfoService.checkChunkExist(fileChunkDTO);
@ -136,7 +137,7 @@ public class EdFileInfoController {
@UserOperation(value = "查询了发布管理", modelName = UserOperationModuleEnum.DATABASE)
@RequestMapping(value = "/uploadRecord", method = RequestMethod.GET)
public ElectromagneticResult<?> uploadRecord(@RequestParam int pageNum, @RequestParam int pageSize) {
return edFileInfoService.uploadRecord(pageNum, pageSize);
return edFileInfoService.uploadRecord(pageNum, pageSize, DataOwnEnum.COMMON.code);
}
@UserOperation(value = "查询了文件详细信息", modelName = UserOperationModuleEnum.DATABASE)
@ -150,13 +151,13 @@ public class EdFileInfoController {
@RequiredPermission(value = FilePermission.VIEW)
@RequestMapping(value = "/queryChildFolder", method = RequestMethod.GET)
public ElectromagneticResult<?> queryChildFolder(@RequestParam String parentId) {
return edFileInfoService.queryChildFolder(parentId);
return edFileInfoService.queryChildFolder(parentId, DataOwnEnum.COMMON.code);
}
@UserOperation(value = "预览了文件", modelName = UserOperationModuleEnum.DATABASE)
@RequiredPermission(value = FilePermission.DOWNLOAD)
@RequestMapping(value = "preview", method = RequestMethod.GET)
public ResponseEntity<InputStreamResource> preview(@RequestParam String id, HttpServletResponse response) {
return edFileInfoService.preview(id, response);
return edFileInfoService.preview(id, response, DataOwnEnum.COMMON.code);
}
}

View File

@ -1,6 +1,7 @@
package com.electromagnetic.industry.software.manage.controller;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.electromagnetic.industry.software.common.enums.DataOwnEnum;
import com.electromagnetic.industry.software.common.exception.BizException;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil;
@ -86,6 +87,6 @@ public class EdFileRelationController {
@RequestParam("file") MultipartFile file,
@RequestParam("description") String description,
@RequestParam("id") String id) {
return ElectromagneticResultUtil.success(edFileRelationService.uploadFileAndRelation(parentId, id, file, description));
return ElectromagneticResultUtil.success(edFileRelationService.uploadFileAndRelation(parentId, id, file, description, DataOwnEnum.COMMON.code));
}
}

View File

@ -1,6 +1,8 @@
package com.electromagnetic.industry.software.manage.controller;
import com.electromagnetic.industry.software.common.annotations.UserOperation;
import com.electromagnetic.industry.software.common.enums.DataOwnEnum;
import com.electromagnetic.industry.software.common.enums.EleDataStatusEnum;
import com.electromagnetic.industry.software.common.enums.UserOperationModuleEnum;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.manage.pojo.req.FolderResortDTO;
@ -25,43 +27,43 @@ public class ProjectController {
@UserOperation(value = "创建了工程", modelName = UserOperationModuleEnum.PRJ_SETTING)
@RequestMapping("create")
public ElectromagneticResult<?> create(@RequestParam String prjName) {
return edPrjService.createNewPrj(prjName);
return edPrjService.createNewPrj(prjName, DataOwnEnum.SYS_PRJ.code);
}
@UserOperation(value = "复制了文件", modelName = UserOperationModuleEnum.PRJ_SETTING)
@RequestMapping("废除了工程")
@UserOperation(value = "删除工程", modelName = UserOperationModuleEnum.PRJ_SETTING)
@RequestMapping("delete")
public ElectromagneticResult<?> delete(@RequestParam String prjId) {
return edPrjService.delete(prjId);
return edPrjService.delete(prjId, DataOwnEnum.SYS_PRJ.code);
}
@UserOperation(value = "修改了工程名", modelName = UserOperationModuleEnum.PRJ_SETTING)
@RequestMapping("modify")
public ElectromagneticResult<?> modifyPrjName(@RequestParam String newPrjName, @RequestParam String prjId) {
return edPrjService.modifyPrjName(prjId, newPrjName);
return edPrjService.modifyPrjName(prjId, newPrjName, DataOwnEnum.SYS_PRJ.code);
}
@UserOperation(value = "查询了所有工程", modelName = UserOperationModuleEnum.PRJ_SETTING)
@RequestMapping("queryAll")
public ElectromagneticResult<?> queryAll() {
return edPrjService.queryAllPrjInfo();
return edPrjService.queryAllPrjInfo(DataOwnEnum.SYS_PRJ.code);
}
@UserOperation(value = "添加了子集", modelName = UserOperationModuleEnum.PRJ_SETTING)
@RequestMapping("addFolder")
public ElectromagneticResult<?> addFolder(@RequestParam String folderName, @RequestParam String parentId) {
return edPrjService.addFolder(parentId, folderName);
return edPrjService.addFolder(parentId, folderName, DataOwnEnum.SYS_PRJ.code);
}
@UserOperation(value = "修改了子集名称", modelName = UserOperationModuleEnum.PRJ_SETTING)
@RequestMapping("modifyFolder")
public ElectromagneticResult<?> modifyFolder(@RequestParam String newFolderName, @RequestParam String id) {
return edPrjService.modifyFolder(id, newFolderName);
return edPrjService.modifyFolder(id, newFolderName, DataOwnEnum.SYS_PRJ.code);
}
@UserOperation(value = "废除了子集", modelName = UserOperationModuleEnum.PRJ_SETTING)
@RequestMapping("deleteFolder")
public ElectromagneticResult<?> deleteFolder(@RequestParam String id) {
return edPrjService.deleteFolder(id);
return edPrjService.deleteFolder(id, DataOwnEnum.SYS_PRJ.code);
}
@UserOperation(value = "更改了层级顺序", modelName = UserOperationModuleEnum.PRJ_SETTING)
@ -73,18 +75,18 @@ public class ProjectController {
@UserOperation(value = "发布了工程", modelName = UserOperationModuleEnum.PRJ_SETTING)
@RequestMapping("publish")
public ElectromagneticResult<?> publish(@RequestParam String prjId) {
return edPrjService.publish(prjId);
return edPrjService.publish(prjId, DataOwnEnum.SYS_PRJ.code);
}
@UserOperation(value = "引用了工程", modelName = UserOperationModuleEnum.PRJ_SETTING)
@RequestMapping("follow")
public ElectromagneticResult<?> follow(@RequestParam String sourceId, @RequestParam String targetId) {
return edPrjService.follow(sourceId, targetId);
return edPrjService.follow(sourceId, targetId, DataOwnEnum.SYS_PRJ.code);
}
@UserOperation(value = "查询了工程发布状态", modelName = UserOperationModuleEnum.PRJ_SETTING)
@RequestMapping("publishStatus")
public ElectromagneticResult<?> publishStatus(@RequestBody QueryPublishStatus queryPublishStatus) {
return edPrjService.publishStatus(queryPublishStatus);
return edPrjService.publishStatus(queryPublishStatus, DataOwnEnum.SYS_PRJ.code);
}
}

View File

@ -0,0 +1,90 @@
package com.electromagnetic.industry.software.manage.controller;
import com.electromagnetic.industry.software.common.annotations.UserOperation;
import com.electromagnetic.industry.software.common.enums.DataOwnEnum;
import com.electromagnetic.industry.software.common.enums.UserOperationModuleEnum;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.manage.pojo.req.FolderResortDTO;
import com.electromagnetic.industry.software.manage.pojo.req.QueryPublishStatus;
import com.electromagnetic.industry.software.manage.service.EdPrjService;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
@RestController
@RequestMapping("/data/ed/user/prj")
public class UserPrjController {
@Resource
private EdPrjService edPrjService;
@UserOperation(value = "创建了工程", modelName = UserOperationModuleEnum.PRJ_SETTING)
@RequestMapping("create")
public ElectromagneticResult<?> create(@RequestParam String prjName) {
return edPrjService.createNewPrj(prjName, DataOwnEnum.USER_PRJ.code);
}
@UserOperation(value = "删除工程", modelName = UserOperationModuleEnum.PRJ_SETTING)
@RequestMapping("delete")
public ElectromagneticResult<?> delete(@RequestParam String prjId) {
return edPrjService.delete(prjId, DataOwnEnum.USER_PRJ.code);
}
@UserOperation(value = "修改了工程名", modelName = UserOperationModuleEnum.PRJ_SETTING)
@RequestMapping("modify")
public ElectromagneticResult<?> modifyPrjName(@RequestParam String newPrjName, @RequestParam String prjId) {
return edPrjService.modifyPrjName(prjId, newPrjName, DataOwnEnum.USER_PRJ.code);
}
@UserOperation(value = "查询了所有工程", modelName = UserOperationModuleEnum.PRJ_SETTING)
@RequestMapping("queryAll")
public ElectromagneticResult<?> queryAll() {
return edPrjService.queryAllPrjInfo(DataOwnEnum.USER_PRJ.code);
}
@UserOperation(value = "添加了子集", modelName = UserOperationModuleEnum.PRJ_SETTING)
@RequestMapping("addFolder")
public ElectromagneticResult<?> addFolder(@RequestParam String folderName, @RequestParam String parentId) {
return edPrjService.addFolder(parentId, folderName, DataOwnEnum.USER_PRJ.code);
}
@UserOperation(value = "修改了子集名称", modelName = UserOperationModuleEnum.PRJ_SETTING)
@RequestMapping("modifyFolder")
public ElectromagneticResult<?> modifyFolder(@RequestParam String newFolderName, @RequestParam String id) {
return edPrjService.modifyFolder(id, newFolderName, DataOwnEnum.USER_PRJ.code);
}
@UserOperation(value = "废除了子集", modelName = UserOperationModuleEnum.PRJ_SETTING)
@RequestMapping("deleteFolder")
public ElectromagneticResult<?> deleteFolder(@RequestParam String id) {
return edPrjService.deleteFolder(id, DataOwnEnum.USER_PRJ.code);
}
@UserOperation(value = "更改了层级顺序", modelName = UserOperationModuleEnum.PRJ_SETTING)
@RequestMapping("folderResort")
public ElectromagneticResult<?> folderResort(@RequestBody List<FolderResortDTO> folderResortDTOList) {
return edPrjService.folderResort(folderResortDTOList);
}
@UserOperation(value = "发布了工程", modelName = UserOperationModuleEnum.PRJ_SETTING)
@RequestMapping("publish")
public ElectromagneticResult<?> publish(@RequestParam String prjId) {
return edPrjService.publish(prjId, DataOwnEnum.USER_PRJ.code);
}
@UserOperation(value = "引用了工程", modelName = UserOperationModuleEnum.PRJ_SETTING)
@RequestMapping("follow")
public ElectromagneticResult<?> follow(@RequestParam String sourceId, @RequestParam String targetId) {
return edPrjService.follow(sourceId, targetId, DataOwnEnum.USER_PRJ.code);
}
@UserOperation(value = "查询了工程发布状态", modelName = UserOperationModuleEnum.PRJ_SETTING)
@RequestMapping("publishStatus")
public ElectromagneticResult<?> publishStatus(@RequestBody QueryPublishStatus queryPublishStatus) {
return edPrjService.publishStatus(queryPublishStatus, DataOwnEnum.USER_PRJ.code);
}
}

View File

@ -111,10 +111,10 @@ public class EdFileInfo extends BaseModel {
@TableField(value = "file_code")
private String fileCode;
/**
* 是否是管理员定义的系统层级目录
* 数据的归属0-上传的文件或者新建的文件夹 1-系统管理员创建的层级 2-用户自定义的层级
*/
@TableField(value = "prj_dir")
private Boolean prjDir;
private Integer dataOwn;
/** 当一个文件作废时其所有的历史文件也会跟着作废此时该文件及其历史文件的all_deleted=true**/
@TableField(value = "all_deleted")

View File

@ -20,21 +20,21 @@ public interface EdFileInfoService {
* @param fileInfoQueryDTO
* @return
*/
ElectromagneticResult<?> queryEdFileInfo(FileInfoQueryDTO fileInfoQueryDTO);
ElectromagneticResult<?> queryEdFileInfo(FileInfoQueryDTO fileInfoQueryDTO, int dataOwnCode);
/**
* 新建文件夹
*
* @return
*/
ElectromagneticResult<?> createFolder(CreateFolderDTO createFolderDTO);
ElectromagneticResult<?> createFolder(CreateFolderDTO createFolderDTO, int dataOwnCode);
/**
* 项目层级结构查询
*
* @return
*/
ElectromagneticResult<?> tree();
ElectromagneticResult<?> tree(int dataOwnCode);
/**
* 删除目录
@ -42,7 +42,7 @@ public interface EdFileInfoService {
* @param id
* @return
*/
ElectromagneticResult<?> delete(String id);
ElectromagneticResult<?> delete(String id, int dataOwnCode);
/**
* 下载文件
@ -50,14 +50,14 @@ public interface EdFileInfoService {
* @param id
* @return
*/
ResponseEntity<InputStreamResource> download(String id, HttpServletResponse response);
ResponseEntity<InputStreamResource> download(String id, HttpServletResponse response, int dataOwnCode);
/**
* 更新文件信息
*
* @param updateFileInfoDTO
*/
ElectromagneticResult<?> updateFileInfo(UpdateFileInfoDTO updateFileInfoDTO);
ElectromagneticResult<?> updateFileInfo(UpdateFileInfoDTO updateFileInfoDTO, int dataOwnCode);
/**
* 版本回退
@ -92,7 +92,7 @@ public interface EdFileInfoService {
* @param totalChunks
* @return
*/
ElectromagneticResult<?> mergeChunks(String identifier, String fileName, Integer totalChunks);
ElectromagneticResult<?> mergeChunks(String identifier, String fileName, Integer totalChunks, int dataOwnCode);
/**
* 导出
@ -100,7 +100,7 @@ public interface EdFileInfoService {
* @param dataIdArr
* @return
*/
ResponseEntity<InputStreamResource> batchExport(String dataIdArr, HttpServletResponse response) throws IOException;
ResponseEntity<InputStreamResource> batchExport(String dataIdArr, HttpServletResponse response, int dataOwnCode) throws IOException;
/**
* 文件上传
@ -110,7 +110,7 @@ public interface EdFileInfoService {
* @param strategy
* @return
*/
ElectromagneticResult<?> upload(String parentId, MultipartFile file, Integer strategy);
ElectromagneticResult<?> upload(String parentId, MultipartFile file, Integer strategy, int dataOwnCode);
/**
* 版本查看
@ -127,7 +127,7 @@ public interface EdFileInfoService {
* @param targetFolderId
* @return
*/
ElectromagneticResult<?> moveFile(String id, String targetFolderId, Integer strategy);
ElectromagneticResult<?> moveFile(String id, String targetFolderId, Integer strategy, int dataOwnCode);
/**
* 复制文件
@ -136,14 +136,14 @@ public interface EdFileInfoService {
* @param targetFolderId
* @return
*/
ElectromagneticResult<?> copyFile(String id, String targetFolderId, Integer strategy);
ElectromagneticResult<?> copyFile(String id, String targetFolderId, Integer strategy, int dataOwnCode);
/**
* 发布管理
*
* @return
*/
ElectromagneticResult<?> uploadRecord(int pageNum, int pageSize);
ElectromagneticResult<?> uploadRecord(int pageNum, int pageSize, int dataOwnCode);
/**
* 查询文件详情
@ -163,12 +163,12 @@ public interface EdFileInfoService {
* @param parentId
* @return
*/
ElectromagneticResult<?> queryChildFolder(String parentId);
ElectromagneticResult<?> queryChildFolder(String parentId, int dataOwnCode);
/**
* 文件预览
* @param id
* @param response
*/
ResponseEntity<InputStreamResource> preview(String id, HttpServletResponse response);
ResponseEntity<InputStreamResource> preview(String id, HttpServletResponse response, int dataOwnCode);
}

View File

@ -46,8 +46,8 @@ public interface EdFileRelationService {
* @param parentId
* @param id 主文件Id
* @param file
* @param descrption 关系描述
* @param desc 关系描述
* @return
*/
ElectromagneticResult<?> uploadFileAndRelation(String parentId, String id, MultipartFile file, String descrption);
ElectromagneticResult<?> uploadFileAndRelation(String parentId, String id, MultipartFile file, String desc, int dataOwnCode);
}

View File

@ -1,5 +1,6 @@
package com.electromagnetic.industry.software.manage.service;
import com.electromagnetic.industry.software.common.enums.DataOwnEnum;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.manage.pojo.req.FolderResortDTO;
import com.electromagnetic.industry.software.manage.pojo.req.QueryPublishStatus;
@ -13,7 +14,7 @@ public interface EdPrjService {
*
* @param prjName 新的工程名
*/
ElectromagneticResult<?> createNewPrj(String prjName);
ElectromagneticResult<?> createNewPrj(String prjName, int dataOwnCode);
/**
* 修改项目名称
@ -22,7 +23,7 @@ public interface EdPrjService {
* @param newPrjName
* @return
*/
ElectromagneticResult<?> modifyPrjName(String prjId, String newPrjName);
ElectromagneticResult<?> modifyPrjName(String prjId, String newPrjName, int dataOwnCode);
/**
* 删除一个项目做逻辑删除
@ -30,7 +31,7 @@ public interface EdPrjService {
* @param prjId
* @return
*/
ElectromagneticResult<?> delete(String prjId);
ElectromagneticResult<?> delete(String prjId, int dataOwnCode);
/**
* 添加子集
@ -39,14 +40,14 @@ public interface EdPrjService {
* @param folderName
* @return
*/
ElectromagneticResult<?> addFolder(String parentId, String folderName);
ElectromagneticResult<?> addFolder(String parentId, String folderName, int dataOwnCode);
/**
* 查询所有项目
*
* @return
*/
ElectromagneticResult<?> queryAllPrjInfo();
ElectromagneticResult<?> queryAllPrjInfo(int dataOwnCode);
/**
* 子集拖拽重排序
@ -62,7 +63,7 @@ public interface EdPrjService {
* @param prjId
* @return
*/
ElectromagneticResult<?> publish(String prjId);
ElectromagneticResult<?> publish(String prjId, int dataOwnCode);
/**
* 删除子集
@ -70,7 +71,7 @@ public interface EdPrjService {
* @param id
* @return
*/
ElectromagneticResult<?> deleteFolder(String id);
ElectromagneticResult<?> deleteFolder(String id, int dataOwnCode);
/**
* 层级沿用
@ -79,7 +80,7 @@ public interface EdPrjService {
* @param targetId
* @return
*/
ElectromagneticResult<?> follow(String sourceId, String targetId);
ElectromagneticResult<?> follow(String sourceId, String targetId, int dataOwnCode);
/**
* 修改子集名称
@ -88,7 +89,7 @@ public interface EdPrjService {
* @param newFolderName
* @return
*/
ElectromagneticResult<?> modifyFolder(String id, String newFolderName);
ElectromagneticResult<?> modifyFolder(String id, String newFolderName, int dataOwnCode);
/**
* 获取项目的发布状态
@ -96,5 +97,5 @@ public interface EdPrjService {
* @param queryPublishStatus
* @return
*/
ElectromagneticResult<?> publishStatus(QueryPublishStatus queryPublishStatus);
ElectromagneticResult<?> publishStatus(QueryPublishStatus queryPublishStatus, int dataOwnCode);
}

View File

@ -5,14 +5,13 @@ 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.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.electromagnetic.industry.software.common.enums.EffectFlagEnum;
import com.electromagnetic.industry.software.common.enums.EleDataSaveStatusEnum;
import com.electromagnetic.industry.software.common.enums.EleDataStatusEnum;
import com.electromagnetic.industry.software.common.enums.EleDataTypeEnum;
import com.electromagnetic.industry.software.common.cons.ElectromagneticConstants;
import com.electromagnetic.industry.software.common.enums.*;
import com.electromagnetic.industry.software.common.exception.BizException;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.EleCommonUtil;
@ -68,9 +67,11 @@ public class CommonService {
private final EleLog log = new EleLog(CommonService.class);
@Value("${prj.folder.max.length}")
private int prjFolderMaxLength;
@Getter
private String eleDataPath;
private String userDataPath;
@Resource
private Environment environment;
@ -83,25 +84,35 @@ public class CommonService {
@PostConstruct
public void init() {
eleDataPath = EleCommonUtil.isWinOs() ? environment.getProperty("data.windows.path") : environment.getProperty("data.linux.path");
userDataPath = EleCommonUtil.isWinOs() ? environment.getProperty("data.windows.user.path") : environment.getProperty("data.linux.user.path");
}
public String getEleDataPath(int dataOwnCode) {
if (dataOwnCode == DataOwnEnum.USER_PRJ.code) {
return userDataPath;
}
return eleDataPath;
}
/**
* 检查同层级是否有同名的文件夹
*/
public boolean notExistSameFolder(String parentId, String newFolderName) {
public boolean notExistSameFolder(String parentId, String newFolderName, int dataOwnCode) {
Long count = edFileInfoMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class)
.eq(EdFileInfo::getDataType, EleDataTypeEnum.FOLDER.code)
.eq(EdFileInfo::getParentId, parentId)
.eq(EdFileInfo::getDataOwn, dataOwnCode)
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)
.eq(EdFileInfo::getFileName, newFolderName));
return count == 0;
}
public String getFileSysPath(String dbPath) {
public String getFileSysPath(String dbPath, int dataOwnCode) {
ArrayList<String> paths = CollUtil.newArrayList(dbPath.split(MYSQL_FILE_PATH_SPLIT));
String path = getDbPath(paths);
return eleDataPath + File.separator + path;
String prePath = dataOwnCode == DataOwnEnum.USER_PRJ.code ? eleDataPath : userDataPath;
return prePath + File.separator + path;
}
public String getDbPath(String dbPath) {
@ -138,7 +149,7 @@ public class CommonService {
LambdaQueryWrapper<EdFileInfo> queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class)
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)
.eq(EdFileInfo::getDataType, EleDataTypeEnum.FOLDER.code)
.eq(EdFileInfo::getPrjDir, true)
.eq(EdFileInfo::getDataOwn, DataOwnEnum.SYS_PRJ.code)
.likeRight(EdFileInfo::getFilePath, id);
if (!isAdminQuery) {
queryWrapper.in(EdFileInfo::getId, accessableIds);
@ -148,12 +159,12 @@ public class CommonService {
}
@Transactional(rollbackFor = Exception.class)
public ElectromagneticResult<?> addFolder(String parentId, String folderName, boolean maxLengthCheck, boolean isPrjDir, String folderId, String fileNote) {
public ElectromagneticResult<?> addFolder(String parentId, String folderName, boolean maxLengthCheck, String folderId, String fileNote, int dataOwnCode) {
// 验证名称是否合法
Assert.isTrue(EleCommonUtil.isFileNameValid(folderName), NAME_VALID_MSG);
// 检查名称是否存在
Assert.isTrue(notExistSameFolder(parentId, folderName), "该名称已存在");
Assert.isTrue(notExistSameFolder(parentId, folderName, dataOwnCode), "该名称已存在");
LambdaQueryWrapper<EdFileInfo> queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class)
.select(EdFileInfo::getId, EdFileInfo::getFilePath)
@ -189,21 +200,21 @@ public class CommonService {
.setFileType("文件夹")
.setFileCode(createFileCode(parentId, EleDataTypeEnum.FOLDER.desc, FILE_START_VERSION, nowTimeStr))
.setFileTime(nowTimeStr)
.setPrjDir(isPrjDir)
.setDataType(EleDataTypeEnum.FOLDER.code)
.setDataStatus(isPrjDir ? EleDataStatusEnum.NOT_PUBLISHED.code : EleDataStatusEnum.PUBLISHED.code)
.setDataStatus(dataOwnCode == 1 || dataOwnCode == 2 ? EleDataStatusEnum.NOT_PUBLISHED.code : EleDataStatusEnum.PUBLISHED.code)
.setEffectFlag(EffectFlagEnum.EFFECT.code)
.setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code)
.setFilePath(path)
.setSort(names.size() + 1)
.setFileNote(fileNote)
.setDataOwn(dataOwnCode)
.setCreatedTime(now)
.setUpdatedTime(now)
.setCreatedBy(currentUserId)
.setUpdatedBy(currentUserId);
edFileInfoMapper.insert(fileInfo);
// 保存到文件系统
String targetFilePath = getEleDataPath() + File.separator + getDbPath(paths) + File.separator + folderName;
String targetFilePath = getEleDataPath(dataOwnCode) + File.separator + getDbPath(paths) + File.separator + folderName;
fileSystemService.createDirectory(targetFilePath);
return ElectromagneticResultUtil.success(true);
} catch (Exception e) {
@ -213,11 +224,12 @@ public class CommonService {
}
}
public List<String> queryAllPrjInfo(boolean isAdminQuery, List<String> prjIds) {
public List<String> queryAllPrjInfo(boolean isAdminQuery, List<String> prjIds, int dataOwnCode) {
try {
LambdaQueryWrapper<EdFileInfo> queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class)
.select(EdFileInfo::getId)
.eq(EdFileInfo::getDataOwn, dataOwnCode)
.eq(EdFileInfo::getParentId, PRJ_PARENT_ID)
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code);
if (!isAdminQuery) {
@ -276,17 +288,21 @@ public class CommonService {
}
}
public ElectromagneticResult<?> deleteFolder(String id) {
public ElectromagneticResult<?> deleteFolder(String id, int dataOwnCode) {
// 如果文件夹下存在文件包括文件夹和已经逻辑删除的文件则不允许删除后面管理员选择会有物理删除文件夹和文件的功能此时MySQL和文件系统则会进行物理删除该文件
Date now = new Date();
String currentUserId = UserThreadLocal.getUserId();
EdFileInfo srcFileInfo = edFileInfoMapper.selectById(id);
String srcPrjName = srcFileInfo.getFileName();
String srcFilePath = getFileSysPath(srcFileInfo.getFilePath(), dataOwnCode);
try {
// 这里要分两种情况1是删除层级目录2是删除用户创建的文件夹
EdFileInfo fileInfo = edFileInfoMapper.selectOne(Wrappers.<EdFileInfo>lambdaQuery().eq(EdFileInfo::getId, id));
String parentId = fileInfo.getParentId();
if (fileInfo.getPrjDir()) { // 删除的是层级目录
if (fileInfo.getDataOwn().equals(DataOwnEnum.SYS_PRJ.code)) { // 删除的是层级目录
long count = edFileInfoMapper.selectCount(Wrappers.<EdFileInfo>lambdaQuery()
.eq(EdFileInfo::getPrjDir, false)
.eq(EdFileInfo::getDataOwn, DataOwnEnum.COMMON.code)
.eq(EdFileInfo::getDataOwn, dataOwnCode)
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)
.like(EdFileInfo::getFilePath, MYSQL_FILE_PATH_SPLIT + id + MYSQL_FILE_PATH_SPLIT));
if (count > 0) {
@ -307,7 +323,6 @@ public class CommonService {
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)
.ne(EdFileInfo::getDataStatus, EleDataStatusEnum.DELETED.code)
.eq(EdFileInfo::getParentId, parentId)
.orderByAsc(EdFileInfo::getSort));
for (int i = 0; i < edFileInfos1.size(); i++) {
@ -329,14 +344,16 @@ public class CommonService {
log.info(info);
return ElectromagneticResultUtil.fail("-1", info);
} else {
// 逻辑文件夹重排序
// 逻辑删除文件夹
edFileInfoMapper.update(null, Wrappers.<EdFileInfo>lambdaUpdate()
.eq(EdFileInfo::getId, id)
.set(EdFileInfo::getUpdatedBy, currentUserId)
.set(EdFileInfo::getUpdatedTime, now)
.set(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code));
fileSystemService.renameFile(srcFilePath, srcPrjName + "_" + IdUtil.fastSimpleUUID() + DELETE_FLAG);
}
}
// fileSystemService.renameFile(srcFilePath, srcPrjName + "." + IdUtil.fastSimpleUUID() + DELETE_FLAG);
return ElectromagneticResultUtil.success(true);
} catch (Exception e) {
String info = "删除子集异常";
@ -362,8 +379,8 @@ public class CommonService {
return edFileInfoMapper.selectById(prjId).getFileName();
}
public Set<String> selectPrjLeafs() {
List<String> prjInfo = queryAllPrjInfo(true, null);
public Set<String> selectPrjLeafs(int dataOwnCode) {
List<String> prjInfo = queryAllPrjInfo(true, null, dataOwnCode);
Set<String> res = new HashSet<>();
prjInfo.forEach(e -> {
ProjectVO projectVO = JSONUtil.toList(e, ProjectVO.class).get(0);
@ -392,4 +409,11 @@ public class CommonService {
}
}
public void deletePrjSysDir(List<String> paths) {
for (String path : paths) {
String preDirName = new File(path).getParentFile().getName();
fileSystemService.renameFile(path, preDirName + "_" + IdUtil.fastSimpleUUID() + DELETE_FLAG);
}
}
}

View File

@ -91,7 +91,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
* @return
*/
@Override
public ElectromagneticResult<?> queryEdFileInfo(FileInfoQueryDTO pars) {
public ElectromagneticResult<?> queryEdFileInfo(FileInfoQueryDTO pars, int dataOwnCode) {
String parentId = pars.getParentId();
List<String> accessibleTree = permissionService.getAccessibleTree();
@ -165,10 +165,10 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
* @return
*/
@Override
public ElectromagneticResult<?> createFolder(CreateFolderDTO createFolderDTO) {
public ElectromagneticResult<?> createFolder(CreateFolderDTO createFolderDTO, int dataOwnCode) {
Assert.isTrue(EleCommonUtil.isFileNameValid(createFolderDTO.getNewFolderName()), NAME_VALID_MSG);
String folderId = IdWorker.getSnowFlakeIdString();
return commonService.addFolder(createFolderDTO.getParentId(), createFolderDTO.getNewFolderName(), false, false, folderId, createFolderDTO.getFileNote());
return commonService.addFolder(createFolderDTO.getParentId(), createFolderDTO.getNewFolderName(), false, folderId, createFolderDTO.getFileNote(), dataOwnCode);
}
/**
@ -177,12 +177,12 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
* @return
*/
@Override
public ElectromagneticResult<?> tree() {
public ElectromagneticResult<?> tree(int dataOwnCode) {
List<String> prjIds = permissionService.getAccessibleTree();
if (CollUtil.isEmpty(prjIds)) {
return ElectromagneticResultUtil.success(new ArrayList<>());
}
List<String> strings = commonService.queryAllPrjInfo(false, prjIds);
List<String> strings = commonService.queryAllPrjInfo(false, prjIds, dataOwnCode);
List<FileProjectVO> res = new ArrayList<>();
strings.forEach(e -> {
FileProjectVO fileProjectVO = JSONUtil.toList(e, FileProjectVO.class).get(0);
@ -199,10 +199,10 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
* @return
*/
@Override
public ElectromagneticResult<?> delete(String id) {
public ElectromagneticResult<?> delete(String id, int dataOwnCode) {
EdFileInfo fileInfo = this.baseMapper.selectById(id);
if (fileInfo.getDataType() == EleDataTypeEnum.FOLDER.code) {
return commonService.deleteFolder(id);
return commonService.deleteFolder(id, dataOwnCode);
}
Date now = new Date();
String currentUserId = UserThreadLocal.getUserId();
@ -222,11 +222,11 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
* @return
*/
@Override
public ResponseEntity<InputStreamResource> download(String id, HttpServletResponse response) {
public ResponseEntity<InputStreamResource> download(String id, HttpServletResponse response, int dataOwnCode) {
try {
EdFileInfo fileInfo = this.baseMapper.selectById(id);
String fileSysPath = commonService.getFileSysPath(fileInfo.getFilePath());
String fileSysPath = commonService.getFileSysPath(fileInfo.getFilePath(), dataOwnCode);
Assert.isTrue(FileUtil.exist(fileSysPath), "下载文件不存在。");
FileSystemResource fileSystemResource = new FileSystemResource(fileSysPath);
String fileName = fileSystemResource.getFilename();
@ -257,7 +257,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
*/
@Override
@Transactional(rollbackFor = Exception.class)
public ElectromagneticResult<?> updateFileInfo(UpdateFileInfoDTO updateFileInfoDTO) {
public ElectromagneticResult<?> updateFileInfo(UpdateFileInfoDTO updateFileInfoDTO, int dataOwnCode) {
Assert.isTrue(EleCommonUtil.isFileNameValid(updateFileInfoDTO.getFileName()), NAME_VALID_MSG);
try {
// 首先检查新名称是否存在
@ -292,7 +292,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
throw new BizException("文件名已经存在");
}
String srcFilePath = commonService.getFileSysPath(fileInfo.getFilePath());
String srcFilePath = commonService.getFileSysPath(fileInfo.getFilePath(), dataOwnCode);
Date now = new Date();
String currentUserId = UserThreadLocal.getUserId();
this.baseMapper.update(null, Wrappers.lambdaUpdate(EdFileInfo.class)
@ -405,7 +405,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
*/
@Override
@Transactional(rollbackFor = Exception.class)
public ElectromagneticResult<?> mergeChunks(String identifier, String fileName, Integer totalChunks) {
public ElectromagneticResult<?> mergeChunks(String identifier, String fileName, Integer totalChunks, int dataOwnCode) {
String currentUserId = UserThreadLocal.getUserId();
String destColibPath = doSysFileMerge(identifier, fileName, totalChunks);
String mainName = FileUtil.mainName(destColibPath);
@ -425,21 +425,21 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
String uuid = IdUtil.fastSimpleUUID();
String tmpDir = uploadDataDir + currentUserId + File.separator + uuid + File.separator;
ZipUtil.unzip(zipDirPath, tmpDir);
update2Database(tmpDir);
update2Database(tmpDir, dataOwnCode);
fileSystemService.deleteFile(zipDirPath, destColibPath);
return ElectromagneticResultUtil.success(true);
}
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
public void update2Database(String prjDirPath) {
public void update2Database(String prjDirPath, int dataOwnCode) {
String info = FileUtil.readString(prjDirPath + File.separator + "mysql.info", Charset.defaultCharset());
List<EdFileInfo> importAllFiles = JSONUtil.toList(info, EdFileInfo.class);
// 找出层级文件夹
List<EdFileInfo> prjFolders = importAllFiles.stream().filter(e -> ObjUtil.equals(e.getPrjDir(), true))
List<EdFileInfo> prjFolders = importAllFiles.stream().filter(e -> ObjUtil.equals(e.getDataOwn(), dataOwnCode))
.collect(Collectors.toList());
// 找出用户创建的文件夹
List<EdFileInfo> userFolders = importAllFiles.stream().filter(e -> ObjUtil.equals(e.getDataType(), EleDataTypeEnum.FOLDER.code))
.filter(e -> ObjUtil.equals(e.getPrjDir(), false))
.filter(e -> ObjUtil.equals(e.getDataOwn(), dataOwnCode))
.collect(Collectors.toList());
// 找出所有文件
List<EdFileInfo> allFiles = importAllFiles.stream().filter(e -> ObjUtil.equals(e.getDataType(), EleDataTypeEnum.FILE.code)).collect(Collectors.toList());
@ -557,7 +557,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
}
}
this.saveOrUpdateBatch(allObjs);
update2FileSystem(allObjs, prjDirPath);
update2FileSystem(allObjs, prjDirPath, dataOwnCode);
}
private void resetFileInfoName(EdFileInfo fileInfo) {
@ -579,7 +579,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
}
}
private void update2FileSystem(List<EdFileInfo> needMove2FileSystemFiles, String prjDirPath) {
private void update2FileSystem(List<EdFileInfo> needMove2FileSystemFiles, String prjDirPath, int dataOwnCode) {
Map<String, EdFileInfo> maps = needMove2FileSystemFiles.stream().collect(Collectors.toMap(EdFileInfo::getId, e -> e));
List<EdFileInfo> files = needMove2FileSystemFiles.stream().filter(e -> e.getDataType().equals(EleDataTypeEnum.FILE.code)).collect(Collectors.toList());
for (EdFileInfo edFileInfo : files) {
@ -593,7 +593,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
sysFilePath.append(fileInfo.getFileName()).append(".").append(fileInfo.getFileType()).append(".").append(fileInfo.getFileCode());
}
}
String destPath = commonService.getEleDataPath() + File.separator + sysFilePath;
String destPath = commonService.getEleDataPath(dataOwnCode) + File.separator + sysFilePath;
String sourcePath = prjDirPath + File.separator + sysFilePath;
fileSystemService.moveFile(sourcePath, destPath);
}
@ -624,7 +624,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
* @return
*/
@Override
public ResponseEntity<InputStreamResource> batchExport(String dataIdArr, HttpServletResponse response) throws IOException {
public ResponseEntity<InputStreamResource> batchExport(String dataIdArr, HttpServletResponse response, int dataOwnCode) throws IOException {
String userDownloadDataDir = downloadDataDir + File.separator + UserThreadLocal.getUserId();
String[] ids = dataIdArr.split(",");
Map<String, Boolean> map = permissionService.filterExportIds(ids);
@ -640,7 +640,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
String prjId = resFiles.get(0).getFilePath().split(MYSQL_FILE_PATH_SPLIT)[0];
List<EdFileInfo> prjFolders = this.baseMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class)
.likeRight(EdFileInfo::getFilePath, prjId + MYSQL_FILE_PATH_SPLIT)
.eq(EdFileInfo::getPrjDir, true)
.eq(EdFileInfo::getDataOwn, dataOwnCode)
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code));
EdFileInfo prjFileInfo = this.baseMapper.selectById(prjId);
Map<String, EdFileInfo> prjFoldersMap = prjFolders.stream().collect(Collectors.toMap(EdFileInfo::getId, e -> e));
@ -657,7 +657,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
fileSystemService.createDirectory(destFolderPath);
}
for (EdFileInfo edFileInfo : files) {
String filePath = commonService.getFileSysPath(edFileInfo.getFilePath()); // file
String filePath = commonService.getFileSysPath(edFileInfo.getFilePath(), dataOwnCode); // file
String destPath = userDownloadDataDir + File.separator + prjName + File.separator + commonService.getDbPath(edFileInfo.getFilePath());
fileSystemService.copyFile(filePath, destPath);
}
@ -714,7 +714,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
*/
@Override
@Transactional(rollbackFor = Exception.class)
public ElectromagneticResult<?> upload(String parentId, MultipartFile file, Integer strategy) {
public ElectromagneticResult<?> upload(String parentId, MultipartFile file, Integer strategy, int dataOwnCode) {
Assert.isTrue(!file.isEmpty(), "禁止上传空文件");
Assert.isTrue(EleCommonUtil.isFileNameValid(file.getOriginalFilename()), NAME_VALID_MSG);
@ -722,7 +722,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
long dirCount = this.baseMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class)
.eq(EdFileInfo::getParentId, parentId)
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)
.eq(EdFileInfo::getPrjDir, true)
.eq(EdFileInfo::getDataOwn, dataOwnCode)
.eq(EdFileInfo::getDataType, EleDataTypeEnum.FOLDER.code));
Assert.isTrue(dirCount == 0, "层级目录不允许上传文件");
String fileName = file.getOriginalFilename();
@ -739,7 +739,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)
.eq(EdFileInfo::getFileType, suffix));
if (count > 0) {
handUploadRepeatFile(parentId, file, strategy);
handUploadRepeatFile(parentId, file, strategy, dataOwnCode);
} else {
EdFileInfo parentFolderInfo = this.baseMapper.selectOne(Wrappers.lambdaQuery(EdFileInfo.class)
.eq(EdFileInfo::getId, parentId)
@ -760,9 +760,9 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
.setEffectFlag(EffectFlagEnum.EFFECT.code)
.setFileCode(fileCode)
.setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code)
.setPrjDir(false);
.setDataOwn(dataOwnCode);
this.saveOrUpdate(newEdFileInfo);
String fileDestPath = commonService.getFileSysPath(newEdFileInfo.getFilePath());
String fileDestPath = commonService.getFileSysPath(newEdFileInfo.getFilePath(), dataOwnCode);
FileUtil.writeFromStream(file.getInputStream(), fileDestPath);
EleCommonUtil.encryptFile(fileDestPath, SecureUtil.aes(FILE_SEC_PASSWD.getBytes()));
// fileSystemService.save(FileUtil.getInputStream(fileDestPath), fileDestPath); // 这里会导致文件大小为0考虑到当前的系统为OS文件系统暂不处理
@ -776,7 +776,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
.setDataStatus(PublishEnum.PUBLISHED.getCode())
.setEffectFlag(EffectFlagEnum.NOT_EFFECTIVE.code)
.setSaveStatus(EleDataSaveStatusEnum.FAIL.code)
.setPrjDir(false);
.setDataOwn(dataOwnCode);
this.saveOrUpdate(newEdFileInfo);
String info = "上传文件失败";
log.error(info, e);
@ -809,11 +809,11 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
*/
@Override
@Transactional(rollbackFor = Exception.class)
public ElectromagneticResult<?> moveFile(String id, String targetFolderId, Integer strategy) {
public ElectromagneticResult<?> moveFile(String id, String targetFolderId, Integer strategy, int dataOwnCode) {
// 获取原文件mysql模型
EdFileInfo srcFileInfo = this.baseMapper.selectById(id);
String srcFilePath = commonService.getFileSysPath(srcFileInfo.getFilePath());
String srcFilePath = commonService.getFileSysPath(srcFileInfo.getFilePath(), dataOwnCode);
// 判断目标路径下是否有同名文件如果所有的同名文件1如果所有文件都已经被作废则该文件为新文件版本号从100开始2如果有没有被作废的文件则冲突处理方式按---1-跳过冲突文件 2-做版本更新 3-重命名文件名加"_1"
long count = this.baseMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class)
.eq(EdFileInfo::getParentId, targetFolderId)
@ -831,19 +831,20 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
srcFileInfo.setParentId(targetFolderId)
.setFileVersion(FILE_START_VERSION)
.setFileTime(fileTime)
.setDataOwn(dataOwnCode)
.setFilePath(destFolderInfo.getFilePath() + MYSQL_FILE_PATH_SPLIT + srcFileInfo.getId())
.setFileCode(newFileCode);
this.baseMapper.updateById(srcFileInfo);
// 文件系统移动文件
String destFilePath = commonService.getFileSysPath(srcFileInfo.getFilePath());
String destFilePath = commonService.getFileSysPath(srcFileInfo.getFilePath(), dataOwnCode);
fileSystemService.moveFile(srcFilePath, destFilePath);
} else {
return handMoveConflict(targetFolderId, strategy, srcFileInfo, destFolderInfo);
return handMoveConflict(targetFolderId, strategy, srcFileInfo, destFolderInfo, dataOwnCode);
}
return ElectromagneticResultUtil.success(true);
}
private ElectromagneticResult<?> handMoveConflict(String targetFolderId, Integer strategy, EdFileInfo srcFileInfo, EdFileInfo destFolderInfo) {
private ElectromagneticResult<?> handMoveConflict(String targetFolderId, Integer strategy, EdFileInfo srcFileInfo, EdFileInfo destFolderInfo, int dataOwnCode) {
// 禁止同目录下移动和复制
if (srcFileInfo.getParentId().equals(destFolderInfo.getId())) {
@ -869,11 +870,12 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
destSaveFileInfo.setFileVersion(maxFileVersion + 1)
.setFilePath(destFolderInfo.getFilePath() + MYSQL_FILE_PATH_SPLIT + newFileDbId)
.setPreVersion(maxFileVersion)
.setDataOwn(dataOwnCode)
.setEffectFlag(EffectFlagEnum.EFFECT.code)
.setFileCode(fileCode);
this.baseMapper.insert(destSaveFileInfo);
String srcFilePath = commonService.getFileSysPath(srcFileInfo.getFilePath());
String destFilePath = commonService.getFileSysPath(destSaveFileInfo.getFilePath());
String srcFilePath = commonService.getFileSysPath(srcFileInfo.getFilePath(), dataOwnCode);
String destFilePath = commonService.getFileSysPath(destSaveFileInfo.getFilePath(), dataOwnCode);
fileSystemService.copyFile(srcFilePath, destFilePath);
this.baseMapper.deleteById(srcFileInfo.getId());
this.baseMapper.update(null, Wrappers.lambdaUpdate(EdFileInfo.class)
@ -887,14 +889,15 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
String dbPathByDbPath = commonService.getCodePathByDbPath(destFolderInfo.getFilePath());
newEdFileInfo.setParentId(targetFolderId)
.setFileVersion(FILE_START_VERSION)
.setDataOwn(dataOwnCode)
.setFileName(srcFileInfo.getFileName() + "_1")
.setFileCode(commonService.createFileCode(dbPathByDbPath, srcFileInfo.getFileType(), FILE_START_VERSION, newEdFileInfo.getFileTime()))
.setFilePath(destFolderInfo.getFilePath() + MYSQL_FILE_PATH_SPLIT + newEdFileInfo.getId());
resetFileInfoName(newEdFileInfo);
this.baseMapper.insert(newEdFileInfo);
// 移动文件
String srcFileSysPath = commonService.getFileSysPath(srcFileInfo.getFilePath());
String destFileSysPath = commonService.getFileSysPath(newEdFileInfo.getFilePath());
String srcFileSysPath = commonService.getFileSysPath(srcFileInfo.getFilePath(), dataOwnCode);
String destFileSysPath = commonService.getFileSysPath(newEdFileInfo.getFilePath(), dataOwnCode);
fileSystemService.moveFile(srcFileSysPath, destFileSysPath);
this.baseMapper.deleteById(srcFileInfo.getId());
}
@ -909,7 +912,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
* @return
*/
@Override
public ElectromagneticResult<?> copyFile(String id, String targetFolderId, Integer strategy) {
public ElectromagneticResult<?> copyFile(String id, String targetFolderId, Integer strategy, int dataOwnCode) {
// 获取原文件mysql模型
EdFileInfo srcFileInfo = this.baseMapper.selectById(id);
String srcFileDbPath = srcFileInfo.getFilePath();
@ -936,11 +939,11 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
.setFileCode(newFileCode);
this.baseMapper.insert(destFileInfo);
// 文件系统移动文件
String srcFilePath = commonService.getFileSysPath(srcFileDbPath);
String destFilePath = commonService.getFileSysPath(destFileInfo.getFilePath());
String srcFilePath = commonService.getFileSysPath(srcFileDbPath, dataOwnCode);
String destFilePath = commonService.getFileSysPath(destFileInfo.getFilePath(), dataOwnCode);
fileSystemService.copyFile(srcFilePath, destFilePath);
} else {
return handCopyConflict(targetFolderId, strategy, srcFileInfo, destFolderInfo);
return handCopyConflict(targetFolderId, strategy, srcFileInfo, destFolderInfo, dataOwnCode);
}
return ElectromagneticResultUtil.success(true);
}
@ -951,10 +954,10 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
* @return
*/
@Override
public ElectromagneticResult<?> uploadRecord(int pageNum, int pageSize) {
public ElectromagneticResult<?> uploadRecord(int pageNum, int pageSize, int dataOwnCode) {
List<String> accessibleIds = permissionService.getAccessibleTree();
Set<String> allLeafIds = commonService.selectPrjLeafs();
Set<String> allLeafIds = commonService.selectPrjLeafs(dataOwnCode);
List<String> list = new ArrayList<>();
for (String leafId : allLeafIds) {
if (accessibleIds.contains(leafId)) {
@ -966,6 +969,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
}
LambdaQueryWrapper<EdFileInfo> lambdaQuery = Wrappers.lambdaQuery(EdFileInfo.class)
.select(EdFileInfo::getId, EdFileInfo::getFileName, EdFileInfo::getSaveStatus, EdFileInfo::getCreatedTime, EdFileInfo::getFileType)
.eq(EdFileInfo::getDataOwn, dataOwnCode)
.eq(EdFileInfo::getDataType, EleDataTypeEnum.FILE.code)
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code);
lambdaQuery.or(qr -> {
@ -994,7 +998,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
return ElectromagneticResultUtil.success(fileInfoVO);
}
private ElectromagneticResult<?> handCopyConflict(String targetFolderId, Integer strategy, EdFileInfo srcFileInfo, EdFileInfo destFolderInfo) {
private ElectromagneticResult<?> handCopyConflict(String targetFolderId, Integer strategy, EdFileInfo srcFileInfo, EdFileInfo destFolderInfo, int dataOwnCode) {
// 禁止同目录下移动和复制
if (srcFileInfo.getParentId().equals(destFolderInfo.getId())) {
String info = "禁止相同文件夹下复制文件";
@ -1026,8 +1030,8 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
.eq(EdFileInfo::getFileName, srcFileInfo.getFileName())
.eq(EdFileInfo::getFileType, srcFileInfo.getFileType()).set(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code));
this.baseMapper.insert(destSaveFileInfo);
String srcFilePath = commonService.getFileSysPath(srcFileInfo.getFilePath());
String destFilePath = commonService.getFileSysPath(destSaveFileInfo.getFilePath());
String srcFilePath = commonService.getFileSysPath(srcFileInfo.getFilePath(), dataOwnCode);
String destFilePath = commonService.getFileSysPath(destSaveFileInfo.getFilePath(), dataOwnCode);
fileSystemService.copyFile(srcFilePath, destFilePath);
} else if (strategy == 3) {
// 文件名加_1版本号从100开始
@ -1043,15 +1047,15 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
resetFileInfoName(newEdFileInfo);
this.baseMapper.insert(newEdFileInfo);
// 移动文件
String srcFileSysPath = commonService.getFileSysPath(srcFileInfo.getFilePath());
String destFileSysPath = commonService.getFileSysPath(newEdFileInfo.getFilePath());
String srcFileSysPath = commonService.getFileSysPath(srcFileInfo.getFilePath(), dataOwnCode);
String destFileSysPath = commonService.getFileSysPath(newEdFileInfo.getFilePath(), dataOwnCode);
fileSystemService.copyFile(srcFileSysPath, destFileSysPath);
}
return ElectromagneticResultUtil.success(true);
}
@Transactional(rollbackFor = Exception.class)
public void handUploadRepeatFile(String parentId, MultipartFile file, Integer strategy) throws IOException {
public void handUploadRepeatFile(String parentId, MultipartFile file, Integer strategy, int dataOwnCode) throws IOException {
Assert.isTrue(Arrays.asList(1, 2, 3).contains(strategy), "解决同名文件参数错误");
String fileName = file.getOriginalFilename();
String mainName = FileUtil.mainName(fileName);
@ -1095,9 +1099,9 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
.setEffectFlag(EffectFlagEnum.EFFECT.code)
.setFileCode(fileCode)
.setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code)
.setPrjDir(false);
.setDataOwn(dataOwnCode);
this.baseMapper.insert(newEdFileInfo);
String fileDestPath = commonService.getFileSysPath(newEdFileInfo.getFilePath());
String fileDestPath = commonService.getFileSysPath(newEdFileInfo.getFilePath(), dataOwnCode);
fileSystemService.save(file.getInputStream(), fileDestPath);
} else if (strategy == 3) {
// 文件名加_1存为新文件
@ -1122,10 +1126,10 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
.setEffectFlag(EffectFlagEnum.EFFECT.code)
.setFileCode(fileCode)
.setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code)
.setPrjDir(false);
.setDataOwn(dataOwnCode);
resetFileInfoName(newEdFileInfo);
this.baseMapper.insert(newEdFileInfo);
String fileDestPath = commonService.getFileSysPath(newEdFileInfo.getFilePath());
String fileDestPath = commonService.getFileSysPath(newEdFileInfo.getFilePath(), dataOwnCode);
fileSystemService.save(file.getInputStream(), fileDestPath);
}
@ -1172,7 +1176,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
if(file.getId().length() < 6){
throw new StringIndexOutOfBoundsException("此文件的FILE_CODE小于六位"+id);
}
if(file.getPrjDir().equals(Boolean.TRUE)){
if(file.getDataOwn().equals(DataOwnEnum.SYS_PRJ.code) || file.getDataOwn().equals(DataOwnEnum.USER_PRJ.code)){
return id;
}
return file.getFileCode().substring(0, 6);
@ -1185,11 +1189,11 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
* @return
*/
@Override
public ElectromagneticResult<?> queryChildFolder(String parentId) {
public ElectromagneticResult<?> queryChildFolder(String parentId, int dataOwnCode) {
List<EdFileInfo> edFileInfos = this.baseMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class).select(EdFileInfo::getId, EdFileInfo::getFileName)
.eq(EdFileInfo::getDataType, EleDataTypeEnum.FOLDER.code)
.eq(EdFileInfo::getPrjDir, Boolean.FALSE)
.eq(EdFileInfo::getDataOwn, dataOwnCode)
.eq(EdFileInfo::getParentId, parentId)
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code));
List<ChildFolderVO> res = BeanUtil.copyToList(edFileInfos, ChildFolderVO.class);
@ -1203,11 +1207,11 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
* @param response
*/
@Override
public ResponseEntity<InputStreamResource> preview(String id, HttpServletResponse response) {
public ResponseEntity<InputStreamResource> preview(String id, HttpServletResponse response, int dataOwnCode) {
try {
EdFileInfo fileInfo = this.baseMapper.selectById(id);
Assert.isTrue(Objects.nonNull(fileInfo), "文件不存在");
String fileSysPath = commonService.getFileSysPath(fileInfo.getFilePath());
String fileSysPath = commonService.getFileSysPath(fileInfo.getFilePath(), dataOwnCode);
EleCommonUtil.decryptFile(fileSysPath, SecureUtil.aes(FILE_SEC_PASSWD.getBytes()));
if (Arrays.asList("doc", "docx").contains(fileInfo.getFileType())) {
String pdfTmpPath = tmpDir + File.separator + fileInfo.getFileName() + "_" + IdUtil.fastSimpleUUID() + ".pdf";

View File

@ -174,19 +174,19 @@ public class EdFileRelationServiceImpl extends ServiceImpl<EdFileRelationMapper,
* @param parentId
* @param id 主文件Id
* @param file
* @param descrption 关系描述
* @param desc 关系描述
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public ElectromagneticResult<?> uploadFileAndRelation(String parentId, String id, MultipartFile file, String descrption) {
public ElectromagneticResult<?> uploadFileAndRelation(String parentId, String id, MultipartFile file, String desc, int dataOwnCode) {
Assert.isTrue(EleCommonUtil.isFileNameValid(file.getOriginalFilename()), NAME_VALID_MSG);
// 查找下一层看是否存在顶级定义相关文件如果存在则该层属于管理员层级定义的不允许上传文件
long dirCount = edFileInfoService.count(Wrappers.lambdaQuery(EdFileInfo.class)
.eq(EdFileInfo::getParentId, parentId)
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)
.eq(EdFileInfo::getPrjDir, true)
.eq(EdFileInfo::getDataOwn, dataOwnCode)
.eq(EdFileInfo::getDataType, EleDataTypeEnum.FOLDER.code));
Assert.isTrue(dirCount == 0, "层级目录不允许上传文件");
@ -197,7 +197,6 @@ public class EdFileRelationServiceImpl extends ServiceImpl<EdFileRelationMapper,
newEdFileInfo.newInit();
// 首先检查是否是同名文件
try {
Assert.isTrue(EleCommonUtil.isFileNameValid(fileName), NAME_VALID_MSG);
Long count = edFileInfoService.count(Wrappers.lambdaQuery(EdFileInfo.class)
.eq(EdFileInfo::getParentId, parentId)
@ -205,7 +204,7 @@ public class EdFileRelationServiceImpl extends ServiceImpl<EdFileRelationMapper,
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)
.eq(EdFileInfo::getFileType, suffix));
if (count > 0) {
edFileInfoService.handUploadRepeatFile(parentId, file, 3);
edFileInfoService.handUploadRepeatFile(parentId, file, 3, dataOwnCode);
} else {
EdFileInfo parentFolderInfo = edFileInfoService.getOne(Wrappers.lambdaQuery(EdFileInfo.class)
.eq(EdFileInfo::getId, parentId)
@ -226,9 +225,9 @@ public class EdFileRelationServiceImpl extends ServiceImpl<EdFileRelationMapper,
.setEffectFlag(EffectFlagEnum.EFFECT.code)
.setFileCode(fileCode)
.setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code)
.setPrjDir(false);
.setDataOwn(dataOwnCode);
edFileInfoService.saveOrUpdate(newEdFileInfo);
String fileDestPath = commonService.getFileSysPath(newEdFileInfo.getFilePath());
String fileDestPath = commonService.getFileSysPath(newEdFileInfo.getFilePath(), dataOwnCode);
FileUtil.writeFromStream(file.getInputStream(), fileDestPath);
EleCommonUtil.encryptFile(fileDestPath, SecureUtil.aes(FILE_SEC_PASSWD.getBytes()));
// fileSystemService.save(FileUtil.getInputStream(fileDestPath), fileDestPath); // 这里会导致文件大小为0考虑到当前的系统为OS文件系统暂不处理
@ -237,7 +236,7 @@ public class EdFileRelationServiceImpl extends ServiceImpl<EdFileRelationMapper,
EdFileRelation relation = new EdFileRelation();
relation.setId1(id);
relation.setId2(newEdFileInfo.getId());
relation.setRelationship(descrption);
relation.setRelationship(desc);
createRelation(relation);
}
} catch (Exception e) {
@ -249,7 +248,7 @@ public class EdFileRelationServiceImpl extends ServiceImpl<EdFileRelationMapper,
.setDataStatus(PublishEnum.PUBLISHED.getCode())
.setEffectFlag(EffectFlagEnum.NOT_EFFECTIVE.code)
.setSaveStatus(EleDataSaveStatusEnum.FAIL.code)
.setPrjDir(false);
.setDataOwn(dataOwnCode);
edFileInfoService.saveOrUpdate(newEdFileInfo);
String info = "上传文件失败";
log.error(info, e);

View File

@ -2,16 +2,14 @@ package com.electromagnetic.industry.software.manage.service.serviceimpl;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.text.StrFormatter;
import cn.hutool.core.util.IdUtil;
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.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.electromagnetic.industry.software.common.enums.EffectFlagEnum;
import com.electromagnetic.industry.software.common.enums.EleDataSaveStatusEnum;
import com.electromagnetic.industry.software.common.enums.EleDataStatusEnum;
import com.electromagnetic.industry.software.common.enums.EleDataTypeEnum;
import com.electromagnetic.industry.software.common.enums.*;
import com.electromagnetic.industry.software.common.exception.BizException;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.EleCommonUtil;
@ -57,12 +55,13 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
*/
@Override
@Transactional(rollbackFor = Exception.class)
public ElectromagneticResult<?> createNewPrj(String prjName) {
public ElectromagneticResult<?> createNewPrj(String prjName, int dataOwnCode) {
Assert.isTrue(EleCommonUtil.isFileNameValid(prjName), NAME_VALID_MSG);
// 首先检查工程是否存在
Long count = this.baseMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class)
.eq(EdFileInfo::getParentId, PRJ_PARENT_ID)
.eq(EdFileInfo::getDataOwn, dataOwnCode)
.eq(EdFileInfo::getFileName, prjName));
if (count > 0) {
@ -88,7 +87,6 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
.setFileVersion(FILE_START_VERSION)
.setParentId(PRJ_PARENT_ID)
.setFileTime(nowTimeStr)
.setPrjDir(true)
.setDataType(EleDataTypeEnum.FOLDER.code)
.setDataStatus(EleDataStatusEnum.NOT_PUBLISHED.code)
.setEffectFlag(EffectFlagEnum.EFFECT.code)
@ -96,13 +94,14 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
.setFilePath(newPrjId)
.setSort(++prjCount)
.setFileCode(commonService.createFileCode(newPrjId, EleDataTypeEnum.FOLDER.desc, FILE_START_VERSION, nowTimeStr))
.setDataOwn(dataOwnCode)
.setCreatedTime(now)
.setUpdatedTime(now)
.setCreatedBy(currentUserId)
.setUpdatedBy(currentUserId);
this.save(fileInfo);
// 保存到文件系统
fileSystemService.createDirectory(commonService.getEleDataPath() + File.separator + prjName);
fileSystemService.createDirectory(commonService.getEleDataPath(dataOwnCode) + File.separator + prjName);
} catch (Exception e) {
String info = StrFormatter.format("文件创建失败,具体为--->{}", e.getMessage());
log.error(info, e);
@ -120,11 +119,12 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
*/
@Override
@Transactional(rollbackFor = Exception.class)
public ElectromagneticResult<?> modifyPrjName(String prjId, String newPrjName) {
public ElectromagneticResult<?> modifyPrjName(String prjId, String newPrjName, int dataOwnCode) {
Assert.isTrue(EleCommonUtil.isFileNameValid(newPrjName), NAME_VALID_MSG);
try {
Long count = this.baseMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class)
.eq(EdFileInfo::getParentId, PRJ_PARENT_ID)
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)
.eq(EdFileInfo::getFileName, newPrjName));
if (count > 0) {
@ -137,18 +137,17 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
.select(EdFileInfo::getFileName)
.eq(EdFileInfo::getId, prjId));
String oldPrjName = fileInfo.getFileName();
String newPath = commonService.getEleDataPath() + File.separator + newPrjName;
String newPath = commonService.getEleDataPath(dataOwnCode) + File.separator + newPrjName;
if (fileSystemService.checkFolderExist(newPath)) {
String info = StrFormatter.format("工程名{}已经存在", newPrjName);
log.error(info);
return ElectromagneticResultUtil.fail("-1", info);
String tmpPath = newPrjName + "_" + IdUtil.fastSimpleUUID() + DELETE_FLAG;
fileSystemService.renameFile(newPath, tmpPath);
}
this.baseMapper.update(null, Wrappers.lambdaUpdate(EdFileInfo.class)
.eq(EdFileInfo::getId, prjId)
.set(EdFileInfo::getFileName, newPrjName)
.set(EdFileInfo::getUpdatedBy, UserThreadLocal.getUserId())
.set(EdFileInfo::getUpdatedTime, new Date()));
fileSystemService.renameFile(commonService.getEleDataPath(), oldPrjName, newPrjName);
fileSystemService.renameFile(commonService.getEleDataPath(dataOwnCode), oldPrjName, newPrjName);
} catch (Exception e) {
String info = StrFormatter.format("修改工程名异常--->{}{}", newPrjName, e.getMessage());
log.error(info, e);
@ -165,11 +164,13 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
*/
@Override
@Transactional(rollbackFor = Exception.class)
public ElectromagneticResult<?> delete(String prjId) {
public ElectromagneticResult<?> delete(String prjId, int dataOwnCode) {
try {
// 首先查看该工程下是否还有文件
Long count = this.baseMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class)
.eq(EdFileInfo::getDataType, EleDataTypeEnum.FILE.code)
.likeRight(EdFileInfo::getFilePath, prjId));
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)
.likeRight(EdFileInfo::getFilePath, prjId + MYSQL_FILE_PATH_SPLIT));
if (count > 0) {
String info = StrFormatter.format("禁止删除非空项目");
@ -177,14 +178,16 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
ElectromagneticResultUtil.fail("-1", info);
}
List<String> ids = new ArrayList<>();
ids.add(prjId);
LambdaQueryWrapper<EdFileInfo> queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class)
.select(EdFileInfo::getId)
.likeRight(EdFileInfo::getFilePath, prjId + MYSQL_FILE_PATH_SPLIT);
List<EdFileInfo> edFileInfos = this.baseMapper.selectList(queryWrapper);
edFileInfos.forEach(e -> ids.add(e.getId()));
List<String> ids = edFileInfos.stream().map(EdFileInfo::getId).collect(Collectors.toList());
ids.add(prjId);
this.baseMapper.update(null, Wrappers.lambdaUpdate(EdFileInfo.class).set(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code).in(EdFileInfo::getId, ids));
// 对原文件进行处理
EdFileInfo prjFile = this.getById(prjId);
fileSystemService.renameFile(commonService.getFileSysPath(prjId, dataOwnCode), prjFile + "_" + IdUtil.fastSimpleUUID() + DELETE_FLAG);
return ElectromagneticResultUtil.success(true);
} catch (Exception e) {
String info = "删除项目失败";
@ -202,17 +205,18 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
*/
@Override
@Transactional(rollbackFor = Exception.class)
public ElectromagneticResult<?> addFolder(String parentId, String folderName) {
public ElectromagneticResult<?> addFolder(String parentId, String folderName, int dataOwnCode) {
Assert.isTrue(EleCommonUtil.isFileNameValid(folderName), NAME_VALID_MSG);
// 检查当前目录下有文件如果有则不允许添加
long count = this.baseMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class)
.eq(EdFileInfo::getFileType, EleDataTypeEnum.FILE.code)
.eq(EdFileInfo::getDataOwn, dataOwnCode)
.eq(EdFileInfo::getParentId, parentId)
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code));
Assert.isTrue(count == 0, "该层级目录下存在文件,不允许再定义层级目录");
int id = Integer.parseInt(this.baseMapper.maxPrjId());
String folderId = String.valueOf(id + 1);
return commonService.addFolder(parentId, folderName, true, true, folderId, null);
return commonService.addFolder(parentId, folderName, true, folderId, null, dataOwnCode);
}
/**
@ -221,8 +225,8 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
* @return
*/
@Override
public ElectromagneticResult<?> queryAllPrjInfo() {
List<String> res = commonService.queryAllPrjInfo(true, null);
public ElectromagneticResult<?> queryAllPrjInfo(int dataOwnCode) {
List<String> res = commonService.queryAllPrjInfo(true, null, dataOwnCode);
List<ProjectVO> projectVOS = new ArrayList<>();
res.forEach(e -> {
ProjectVO projectVO = JSONUtil.toList(e, ProjectVO.class).get(0);
@ -268,11 +272,23 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
*/
@Override
@Transactional(rollbackFor = Exception.class)
public ElectromagneticResult<?> publish(String prjId) {
public ElectromagneticResult<?> publish(String prjId, int dataOwnCode) {
try {
Date now = new Date();
String currentUserId = UserThreadLocal.getUserId();
// 将已经处于删除状态设置成逻辑删除
LambdaQueryWrapper<EdFileInfo> queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class)
.select(EdFileInfo::getId, EdFileInfo::getFilePath)
.eq(EdFileInfo::getDataStatus, EleDataStatusEnum.DELETED.code)
.likeRight(EdFileInfo::getFilePath, prjId);
List<String> paths = this.baseMapper.selectList(queryWrapper).stream().map(EdFileInfo::getFilePath).collect(Collectors.toList());
List<String> fileSysPaths = new ArrayList<>();
paths.forEach(path -> {
String fileSysPath = commonService.getFileSysPath(path, dataOwnCode);
fileSysPaths.add(fileSysPath);
});
this.update(Wrappers.lambdaUpdate(EdFileInfo.class)
.eq(EdFileInfo::getDataStatus, EleDataStatusEnum.DELETED.code)
.set(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code)
@ -287,6 +303,7 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
.set(EdFileInfo::getUpdatedTime, now)
.likeRight(EdFileInfo::getFilePath, prjId);
this.update(updateWrapper);
commonService.deletePrjSysDir(fileSysPaths);
return ElectromagneticResultUtil.success(true);
} catch (Exception e) {
String info = "项目发布异常";
@ -303,8 +320,8 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
*/
@Override
@Transactional(rollbackFor = Exception.class)
public ElectromagneticResult<?> deleteFolder(String fileId) {
return commonService.deleteFolder(fileId);
public ElectromagneticResult<?> deleteFolder(String fileId, int dataOwnCode) {
return commonService.deleteFolder(fileId, dataOwnCode);
}
/**
@ -316,7 +333,7 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
*/
@Override
@Transactional(rollbackFor = Exception.class)
public ElectromagneticResult<?> follow(String sourceId, String targetId) {
public ElectromagneticResult<?> follow(String sourceId, String targetId, int dataOwnCode) {
try {
String currentUserId = UserThreadLocal.getUserId();
@ -358,7 +375,7 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
.setFileId(newFolderId)
.setFileName(sourceFile.getFileName())
.setFileVersion(FILE_START_VERSION)
.setPrjDir(true)
.setDataOwn(dataOwnCode)
.setParentId(targetParentFile.getId())
.setFileTime(nowTimeStr)
.setDataType(EleDataTypeEnum.FOLDER.code)
@ -374,7 +391,7 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
.setUpdatedBy(currentUserId);
this.save(targetFile);
targetEdFileInfos.add(targetFile);
String targetSysFilePath = commonService.getFileSysPath(targetFile.getFilePath());
String targetSysFilePath = commonService.getFileSysPath(targetFile.getFilePath(), dataOwnCode);
needSavePaths.add(targetSysFilePath);
} else {
String info = "存在相同子集";
@ -403,18 +420,18 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
*/
@Override
@Transactional(rollbackFor = Exception.class)
public ElectromagneticResult<?> modifyFolder(String id, String newFolderName) {
public ElectromagneticResult<?> modifyFolder(String id, String newFolderName, int dataOwnCode) {
Assert.isTrue(EleCommonUtil.isFileNameValid(newFolderName), NAME_VALID_MSG);
try {
String parentId = this.baseMapper.selectById(id).getParentId();
// 首先检查同层是否有同名目录
Assert.isTrue(commonService.notExistSameFolder(parentId, newFolderName), "子集名已经存在");
Assert.isTrue(commonService.notExistSameFolder(parentId, newFolderName, dataOwnCode), "子集名已经存在");
String currentUserId = UserThreadLocal.getUserId();
Date now = new Date();
EdFileInfo fileInfo = this.baseMapper.selectOne(Wrappers.lambdaQuery(EdFileInfo.class)
.eq(EdFileInfo::getId, id));
String sysFilePath = commonService.getFileSysPath(fileInfo.getFilePath());
String sysFilePath = commonService.getFileSysPath(fileInfo.getFilePath(), dataOwnCode);
this.baseMapper.update(null, Wrappers.lambdaUpdate(EdFileInfo.class)
.set(EdFileInfo::getUpdatedTime, now)
.set(EdFileInfo::getUpdatedBy, currentUserId)
@ -436,12 +453,12 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
* @return
*/
@Override
public ElectromagneticResult<?> publishStatus(QueryPublishStatus queryPublishStatus) {
public ElectromagneticResult<?> publishStatus(QueryPublishStatus queryPublishStatus, int dataOwnCode) {
Map<String, Integer> res = new HashMap<>();
List<String> prjIds = queryPublishStatus.getPrjIds();
List<EdFileInfo> edFileInfos = this.baseMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class).select(EdFileInfo::getFilePath)
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)
.eq(EdFileInfo::getPrjDir, true)
.eq(EdFileInfo::getDataOwn, dataOwnCode)
.and(qr -> qr
.eq(EdFileInfo::getDataStatus, EleDataStatusEnum.NOT_PUBLISHED.code)
.or()

View File

@ -375,12 +375,12 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
*
* @return
*/
private List<EdFileInfo> getFiles() {
private List<EdFileInfo> getFiles(int dataOwnCode) {
return edFileInfoMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class)
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)
.eq(EdFileInfo::getDataType, EleDataTypeEnum.FOLDER.code)
.eq(EdFileInfo::getDataStatus, EleDataStatusEnum.PUBLISHED.code)
.eq(EdFileInfo::getPrjDir, true));
.eq(EdFileInfo::getDataOwn, dataOwnCode));
}
}

View File

@ -17,13 +17,24 @@ server.port=12396
data.windows.path=D:/tmp/szsd/data/eleData/dev/project/
data.upload.windows.tmp.path=D:/tmp/szsd/data/eleData/dev/upload/
data.download.windows.tmp.path=D:/tmp/szsd/data/eleData/dev/download/
data.windows.tmp.path=D:/szsd/data/eleData/dev/tmp
data.windows.tmp.path=D:/tmp/szsd/data/eleData/dev/tmp
data.windows.user.path=D:/tmp/szsd/data/eleData/dev/user_project/
data.upload.windows.user.tmp.path=D:/tmp/szsd/data/eleData/dev/user_upload/
data.download.windows.user.tmp.path=D:/tmp/szsd/data/eleData/dev/usr_download/
data.windows.usere.tmp.path=D:/tmp/szsd/data/eleData/dev/user_tmp
data.linux.path=/szsd/data/eleData/dev/project/
data.upload.linux.tmp.path=/szsd/data/eleData/dev/upload/
data.download.linux.tmp.path=/szsd/data/eleData/dev/download/
data.linux.tmp.path=/szsd/data/eleData/dev/tmp
# user path
data.linux.user.path=/szsd/data/eleData/dev/user_project/
data.upload.linux.user.tmp.path=/szsd/data/eleData/dev/user_upload/
data.download.linux.user.tmp.path=/szsd/data/eleData/dev/usr_download/
data.linux.user.tmp.path=/szsd/data/eleData/dev/user_tmp
prj.folder.max.length=6
spring.jackson.time-zone=GMT+8

View File

@ -17,4 +17,6 @@ public interface ElectromagneticConstants {
String FILE_SEC_PASSWD = "adknfhkj87654knd";
int PRJ_ID_LENGTH = 6;
String DELETE_FLAG = "delete";
}

View File

@ -0,0 +1,16 @@
package com.electromagnetic.industry.software.common.enums;
import lombok.AllArgsConstructor;
@AllArgsConstructor
public enum DataOwnEnum {
COMMON(0, "上传的文件或者新建的文件夹"),
SYS_PRJ(1, "系统管理员创建的层级"),
USER_PRJ(2, "用户自定义的层级"),
REPO_FILE(3, "库文件");
public int code;
public String desc;
}

View File

@ -9,6 +9,7 @@ public enum UserOperationModuleEnum {
UNKNOWN("unknown", "未分组"),
DATABASE("database", "数据库管理"),
USER("user", "人员管理"),
USER_PRJ("userPrj", "个人数据"),
PERMISSION("permission", "权限管理");
public final String key;