diff --git a/bonus-admin/src/main/java/com/bonus/web/controller/archive/ArchiveController.java b/bonus-admin/src/main/java/com/bonus/web/controller/archive/ArchiveController.java index a0e74de..5d41adf 100644 --- a/bonus-admin/src/main/java/com/bonus/web/controller/archive/ArchiveController.java +++ b/bonus-admin/src/main/java/com/bonus/web/controller/archive/ArchiveController.java @@ -63,7 +63,7 @@ public class ArchiveController extends BaseController { @PostMapping @SysLog(title = "新增档案目录", module = "档案管理->档案目录管理", businessType = OperaType.INSERT, details = "新增档案目录", logType = 1) @RequiresPermissions("archive:catalogue:add") - public R> saveArchivalCatalogue(@RequestBody ArchivalCatalogueDto dto) { + public R saveArchivalCatalogue(@RequestBody ArchivalCatalogueDto dto) { try { if (dto.getParentId() == null) { return R.fail("父级有误"); diff --git a/bonus-admin/src/main/java/com/bonus/web/controller/archive/FileManagementController.java b/bonus-admin/src/main/java/com/bonus/web/controller/archive/FileManagementController.java new file mode 100644 index 0000000..a8bc21a --- /dev/null +++ b/bonus-admin/src/main/java/com/bonus/web/controller/archive/FileManagementController.java @@ -0,0 +1,110 @@ +package com.bonus.web.controller.archive; + +import com.bonus.common.annotation.RequiresPermissions; +import com.bonus.common.annotation.SysLog; +import com.bonus.common.core.controller.BaseController; +import com.bonus.common.core.domain.R; +import com.bonus.common.core.page.TableDataInfo; +import com.bonus.common.enums.OperaType; +import com.bonus.web.domain.DaKyProFilesContentsDto; +import com.bonus.web.service.FileManageService; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Author:liang.chao + * @Date:2025/9/11 - 13:29 + */ +@RestController +@RequestMapping("/fileManage") +@Slf4j +public class FileManagementController extends BaseController { + + @Autowired + private FileManageService fileManageService; + + @ApiOperation(value = "档案管理") + @GetMapping("getFileManageTree") + @SysLog(title = "档案管理列表", module = "档案管理->档案左侧树", businessType = OperaType.QUERY, details = "档案管理列表", logType = 1) + @RequiresPermissions("file:manage:tree") + public R> getFileManageTree(DaKyProFilesContentsDto dto) { + try { + List list = fileManageService.list(dto); + return R.ok(list); + } catch (Exception e) { + log.error(e.toString(), e); + return R.fail("请求出错了"); + } + } + + + @ApiOperation(value = "第四级档案信息") + @GetMapping("getFileManage") + @SysLog(title = "第四级档案信息", module = "档案管理->档案右侧列表", businessType = OperaType.QUERY, details = "第四级档案信息", logType = 1) + @RequiresPermissions("file:manage:list") + public TableDataInfo getFileManage(DaKyProFilesContentsDto dto) { + try { + startPage(); + List list = fileManageService.FileManage(dto); + return getDataTable(list); + } catch (Exception e) { + log.error(e.toString(), e); + return getDataTable(new ArrayList<>()); + } + } + + @ApiOperation(value = "新增档案") + @PostMapping + @SysLog(title = "新增档案目录", module = "档案管理->档案目录管理", businessType = OperaType.INSERT, details = "新增档案目录", logType = 1) + @RequiresPermissions("file:manage:add") + public R saveArchivalCatalogue(@RequestBody DaKyProFilesContentsDto dto) { + try { + if (dto.getParentId() == null) { + return R.fail("父级有误"); + } + if (dto.getLevel() == null) { + return R.fail("级别有误"); + } + return fileManageService.saveFileManage(dto); + } catch (Exception e) { + log.error(e.toString(), e); + return R.fail("请求出错了"); + } + } + + @ApiOperation(value = "修改档案") + @PostMapping + @SysLog(title = "修改档案", module = "档案管理->档案目录管理", businessType = OperaType.UPDATE, details = "修改档案", logType = 1) + @RequiresPermissions("file:manage:update") + public R updateFileManage(@RequestBody DaKyProFilesContentsDto dto) { + try { + return fileManageService.updateFileManage(dto); + } catch (Exception e) { + log.error(e.toString(), e); + return R.fail("请求出错了"); + } + } + + @ApiOperation(value = "删除档案") + @PostMapping + @SysLog(title = "删除档案", module = "档案管理->档案目录管理", businessType = OperaType.DELETE, details = "删除档案", logType = 1) + @RequiresPermissions("file:manage:del") + public R delFileManage(@RequestBody DaKyProFilesContentsDto dto) { + try { + Integer i = fileManageService.delFileManage(dto); + if (i > 0) { + return R.ok(); + } else { + return R.fail("删除失败"); + } + } catch (Exception e) { + log.error(e.toString(), e); + return R.fail("请求出错了"); + } + } +} diff --git a/bonus-admin/src/main/java/com/bonus/web/controller/tool/TreeBuilder.java b/bonus-admin/src/main/java/com/bonus/web/controller/tool/TreeBuilder.java index e6b6e84..a4c3bb9 100644 --- a/bonus-admin/src/main/java/com/bonus/web/controller/tool/TreeBuilder.java +++ b/bonus-admin/src/main/java/com/bonus/web/controller/tool/TreeBuilder.java @@ -1,6 +1,7 @@ package com.bonus.web.controller.tool; import com.bonus.web.domain.ArchivalCatalogueDto; +import com.bonus.web.domain.DaKyProFilesContentsDto; import java.util.*; import java.util.stream.Collectors; @@ -46,4 +47,37 @@ public class TreeBuilder { return roots; } + + public static List buildTreeDaKyProFilesContents(List list) { + // 过滤已删除的数据(del_flag = '0' 表示已删除) + List validList = list.stream() + .filter(item -> "1".equals(item.getDelFlag())) + .collect(Collectors.toList()); + + // 使用 Map 提升查找效率 + Map map = new HashMap<>(); + List roots = new ArrayList<>(); + + // 第一步:将所有节点放入 map + for (DaKyProFilesContentsDto item : validList) { + map.put(item.getId(), item); + } + + // 第二步:构建父子关系 + for (DaKyProFilesContentsDto item : validList) { + Integer parentId = item.getParentId(); + // 如果 parent_id 为 null,则为根节点 + if (parentId == null) { + roots.add(item); + } else { + DaKyProFilesContentsDto parent = map.get(parentId); + if (parent != null) { + parent.getChildren().add(item); + } + } + } + + return roots; + } + } diff --git a/bonus-admin/src/main/java/com/bonus/web/domain/DaKyProFilesContents.java b/bonus-admin/src/main/java/com/bonus/web/domain/DaKyProFilesContentsDto.java similarity index 70% rename from bonus-admin/src/main/java/com/bonus/web/domain/DaKyProFilesContents.java rename to bonus-admin/src/main/java/com/bonus/web/domain/DaKyProFilesContentsDto.java index 61f42b7..94a8d5d 100644 --- a/bonus-admin/src/main/java/com/bonus/web/domain/DaKyProFilesContents.java +++ b/bonus-admin/src/main/java/com/bonus/web/domain/DaKyProFilesContentsDto.java @@ -2,16 +2,19 @@ package com.bonus.web.domain; import lombok.Data; +import java.util.ArrayList; +import java.util.List; + /** * @Author:liang.chao * @Date:2025/9/11 - 11:05 */ @Data -public class DaKyProFilesContents { +public class DaKyProFilesContentsDto { /** * id */ - private String id; + private Integer id; /** * 项目id @@ -26,7 +29,7 @@ public class DaKyProFilesContents { /** * 父节点id */ - private String parentId; + private Integer parentId; /** * 层级 @@ -92,14 +95,40 @@ public class DaKyProFilesContents { * 修改人ID */ private Long updateUserId; + /** + * 业务id + */ + private String businessId; /** * 修改人姓名 */ private String updateUserName; + /** + * 文件地址 + */ + private String filePath; + /** + * 文件名称 + */ + private String fileName; + /** + * 文件类型 + */ + private String fileType; + /** + * 资源类型 + */ + private String sourceType; + /** + * 文件源文件名 + */ + private String sourceFileName; /** * 是否删除 0.删除 1.未删除 */ private String delFlag; + + private List children = new ArrayList<>(); } diff --git a/bonus-admin/src/main/java/com/bonus/web/mapper/FileManageMapper.java b/bonus-admin/src/main/java/com/bonus/web/mapper/FileManageMapper.java new file mode 100644 index 0000000..cbd9027 --- /dev/null +++ b/bonus-admin/src/main/java/com/bonus/web/mapper/FileManageMapper.java @@ -0,0 +1,31 @@ +package com.bonus.web.mapper; + +import com.bonus.web.domain.DaKyProFilesContentsDto; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Author:liang.chao + * @Date:2025/9/11 - 13:39 + */ +@Mapper +public interface FileManageMapper { + List list(DaKyProFilesContentsDto daKyProFilesContentsDto); + + List FileManage(DaKyProFilesContentsDto dto); + + Integer saveFileManage(DaKyProFilesContentsDto dto); + + Integer saveFileSource(DaKyProFilesContentsDto dto); + + Integer updateFileManage(DaKyProFilesContentsDto dto); + + Integer updateFileSource(DaKyProFilesContentsDto dto); + + Integer delFileSource(DaKyProFilesContentsDto dto); + + Integer delFileManage(DaKyProFilesContentsDto dto); + + Integer selectFileManage(DaKyProFilesContentsDto dto); +} diff --git a/bonus-admin/src/main/java/com/bonus/web/mapper/ProjectMapper.java b/bonus-admin/src/main/java/com/bonus/web/mapper/ProjectMapper.java index 9305b6c..e7731df 100644 --- a/bonus-admin/src/main/java/com/bonus/web/mapper/ProjectMapper.java +++ b/bonus-admin/src/main/java/com/bonus/web/mapper/ProjectMapper.java @@ -1,7 +1,7 @@ package com.bonus.web.mapper; import com.bonus.web.domain.ArchivalCatalogueDto; -import com.bonus.web.domain.DaKyProFilesContents; +import com.bonus.web.domain.DaKyProFilesContentsDto; import com.bonus.web.domain.ProjectDto; import org.apache.ibatis.annotations.Mapper; @@ -19,5 +19,5 @@ public interface ProjectMapper { Integer updateContentsName(ProjectDto projectDto); - Integer insertDakyProFilesContents(DaKyProFilesContents dakyProFilesContents); + Integer insertDakyProFilesContents(DaKyProFilesContentsDto dakyProFilesContentsDto); } diff --git a/bonus-admin/src/main/java/com/bonus/web/service/FileManageService.java b/bonus-admin/src/main/java/com/bonus/web/service/FileManageService.java new file mode 100644 index 0000000..09ba420 --- /dev/null +++ b/bonus-admin/src/main/java/com/bonus/web/service/FileManageService.java @@ -0,0 +1,22 @@ +package com.bonus.web.service; + +import com.bonus.common.core.domain.R; +import com.bonus.web.domain.DaKyProFilesContentsDto; + +import java.util.List; + +/** + * @Author:liang.chao + * @Date:2025/9/11 - 13:32 + */ +public interface FileManageService { + List list(DaKyProFilesContentsDto daKyProFilesContentsDto); + + List FileManage(DaKyProFilesContentsDto dto); + + R saveFileManage(DaKyProFilesContentsDto dto); + + R updateFileManage(DaKyProFilesContentsDto dto); + + Integer delFileManage(DaKyProFilesContentsDto dto); +} diff --git a/bonus-admin/src/main/java/com/bonus/web/service/impl/FileManageServiceImpl.java b/bonus-admin/src/main/java/com/bonus/web/service/impl/FileManageServiceImpl.java new file mode 100644 index 0000000..1588853 --- /dev/null +++ b/bonus-admin/src/main/java/com/bonus/web/service/impl/FileManageServiceImpl.java @@ -0,0 +1,73 @@ +package com.bonus.web.service.impl; + +import com.bonus.common.core.domain.R; +import com.bonus.web.controller.tool.TreeBuilder; +import com.bonus.web.domain.DaKyProFilesContentsDto; +import com.bonus.web.mapper.FileManageMapper; +import com.bonus.web.service.FileManageService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +import static com.bonus.common.utils.SecurityUtils.getLoginUser; + +/** + * @Author:liang.chao + * @Date:2025/9/11 - 13:33 + */ +@Service +public class FileManageServiceImpl implements FileManageService { + @Autowired + private FileManageMapper fileManageMapper; + + @Override + public List list(DaKyProFilesContentsDto daKyProFilesContentsDto) { + List list = fileManageMapper.list(daKyProFilesContentsDto); + // 构建树 + List tree = TreeBuilder.buildTreeDaKyProFilesContents(list); + return tree; + } + + @Override + public List FileManage(DaKyProFilesContentsDto dto) { + return fileManageMapper.FileManage(dto); + } + + @Override + public R saveFileManage(DaKyProFilesContentsDto dto) { + dto.setCreateUserId(getLoginUser().getUserId()); + dto.setCreateUserName(getLoginUser().getUsername()); + // 查询档案名称是否重复 + Integer i = fileManageMapper.selectFileManage(dto); + if (i > 0) { + return R.fail("档案名称重复"); + } + if (StringUtils.isNotBlank(dto.getFilePath())) { + fileManageMapper.saveFileSource(dto); + } + return R.ok(fileManageMapper.saveFileManage(dto)); + } + + @Override + public R updateFileManage(DaKyProFilesContentsDto dto) { + dto.setUpdateUserId(getLoginUser().getUserId()); + dto.setUpdateUserName(getLoginUser().getUsername()); + Integer i = fileManageMapper.selectFileManage(dto); + if (i > 0) { + return R.fail("档案名称重复"); + } + fileManageMapper.updateFileSource(dto); + if (StringUtils.isBlank(dto.getFilePath())) { + dto.setId(null); + } + return R.ok(fileManageMapper.updateFileManage(dto)); + } + + @Override + public Integer delFileManage(DaKyProFilesContentsDto dto) { + fileManageMapper.delFileSource(dto); + return fileManageMapper.delFileManage(dto); + } +} diff --git a/bonus-admin/src/main/java/com/bonus/web/service/impl/ProjectServiceImpl.java b/bonus-admin/src/main/java/com/bonus/web/service/impl/ProjectServiceImpl.java index 35a5dd5..e63cd3f 100644 --- a/bonus-admin/src/main/java/com/bonus/web/service/impl/ProjectServiceImpl.java +++ b/bonus-admin/src/main/java/com/bonus/web/service/impl/ProjectServiceImpl.java @@ -2,7 +2,7 @@ package com.bonus.web.service.impl; import com.bonus.common.core.domain.AjaxResult; import com.bonus.web.domain.ArchivalCatalogueDto; -import com.bonus.web.domain.DaKyProFilesContents; +import com.bonus.web.domain.DaKyProFilesContentsDto; import com.bonus.web.domain.ProjectDto; import com.bonus.web.mapper.ProjectMapper; import com.bonus.web.service.ProjectService; @@ -41,14 +41,14 @@ public class ProjectServiceImpl implements ProjectService { Integer num = projectMapper.updateContentsName(projectDto); if (num > 0) { // 档案管理中新增一条目录 - DaKyProFilesContents dakyProFilesContents = new DaKyProFilesContents(); - dakyProFilesContents.setProId(projectDto.getId()); - dakyProFilesContents.setContentName(projectDto.getContentsName()); - dakyProFilesContents.setLevel("1"); - dakyProFilesContents.setSort(0L); - dakyProFilesContents.setCreateUserId(getLoginUser().getUserId()); - dakyProFilesContents.setCreateUserName(getLoginUser().getUsername()); - projectMapper.insertDakyProFilesContents(dakyProFilesContents); + DaKyProFilesContentsDto dakyProFilesContentsDto = new DaKyProFilesContentsDto(); + dakyProFilesContentsDto.setProId(projectDto.getId()); + dakyProFilesContentsDto.setContentName(projectDto.getContentsName()); + dakyProFilesContentsDto.setLevel("1"); + dakyProFilesContentsDto.setSort(0L); + dakyProFilesContentsDto.setCreateUserId(getLoginUser().getUserId()); + dakyProFilesContentsDto.setCreateUserName(getLoginUser().getUsername()); + projectMapper.insertDakyProFilesContents(dakyProFilesContentsDto); return AjaxResult.success("配置成功"); } else { return AjaxResult.error("配置失败"); diff --git a/bonus-admin/src/main/resources/mapper/FileManageMapper.xml b/bonus-admin/src/main/resources/mapper/FileManageMapper.xml new file mode 100644 index 0000000..7bff206 --- /dev/null +++ b/bonus-admin/src/main/resources/mapper/FileManageMapper.xml @@ -0,0 +1,170 @@ + + + + + INSERT INTO da_ky_pro_files_contents + + id, + pro_id, + content_name, + parent_id, + `level`, + sort, + mark_code, + term, + unit_name, + data_source, + is_unique, + integrity_status, + create_time, + update_time, + create_user_id, + create_user_name, + update_user_id, + update_user_name, + + VALUES + + #{id}, + #{proId}, + #{contentName}, + #{parentId}, + #{level}, + #{sort}, + #{markCode}, + #{term}, + #{unitName}, + #{dataSource}, + #{isUnique}, + #{integrityStatus}, + #{createTime}, + #{updateTime}, + #{createUserId}, + #{createUserName}, + #{updateUserId}, + #{updateUserName}, + + + + INSERT INTO da_ky_sys_file_source + + business_id, + file_path, + source_file_name, + file_name, + file_type, + source_type, + create_user_id, + create_user_name, + createTime + + VALUES + + #{businessId}, + #{filePath}, + #{sourceFileName}, + #{fileName}, + #{fileType}, + #{sourceType}, + #{createUserId}, + #{createUserName}, + now() + + + + UPDATE da_ky_pro_files_contents + + id = #{id}, + content_name = #{contentName}, + parent_id = #{parentId}, + `level` = #{level}, + sort = #{sort}, + mark_code = #{markCode}, + term = #{term}, + unit_name = #{unitName}, + data_source = #{dataSource}, + is_unique = #{isUnique}, + integrity_status = #{integrityStatus}, + update_user_id = #{updateUserId}, + update_user_name = #{updateUserName}, + update_time = now() + + WHERE content_name = #{contentName} + + + UPDATE da_ky_sys_file_source + set + file_path = #{filePath}, + source_file_name = #{sourceFileName}, + file_name = #{fileName}, + file_type = #{fileType}, + source_type = #{sourceType}, + update_user_id = #{updateUserId}, + update_user_name = #{updateUserName}, + update_time = now() + WHERE id = #{id} + + + DELETE FROM da_ky_sys_file_source + WHERE id = #{id} + + + DELETE FROM da_ky_pro_files_contents + WHERE id = #{id} + + + + + + diff --git a/bonus-admin/src/main/resources/mapper/ProjectMapper.xml b/bonus-admin/src/main/resources/mapper/ProjectMapper.xml index 8836400..c2c561b 100644 --- a/bonus-admin/src/main/resources/mapper/ProjectMapper.xml +++ b/bonus-admin/src/main/resources/mapper/ProjectMapper.xml @@ -52,7 +52,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" id = #{id} - SELECT dkp.*, dksdd.dict_label proTypeName, @@ -60,11 +60,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" dksdd3.dict_label proStatusName FROM da_ky_project dkp - LEFT JOIN da_ky_sys_dict_data dksdd ON dkp.pro_type = dksdd.dict_code - LEFT JOIN da_ky_sys_dict_data dksdd2 ON dkp.voltage_level = dksdd2.dict_code - LEFT JOIN da_ky_sys_dict_data dksdd3 ON dkp.pro_status = dksdd3.dict_code + LEFT JOIN da_ky_sys_dict_data dksdd ON dkp.pro_type = dksdd.dict_value and dksdd.dict_type = 'pro_type' + LEFT JOIN da_ky_sys_dict_data dksdd2 ON dkp.voltage_level = dksdd2.dict_value and dksdd2.dict_type = 'voltage_level' + LEFT JOIN da_ky_sys_dict_data dksdd3 ON dkp.pro_status = dksdd3.dict_value and dksdd3.dict_type = 'pro_status' WHERE dkp.del_flag = '1' + + AND dkp.pro_name LIKE CONCAT('%',#{proName},'%') + + + AND dkp.pro_type = #{proType} + + + AND dkp.voltage_level = #{voltageLevel} + + + AND dkp.pro_status = #{proStatus} + +