网站首页/ 信息中心/ 行业信息/

城建档案管理系统:从零搭建可扩展的数字化管理平台

发布时间:2026年06月17日 06:25:18 浏览量:0

一、系统架构设计与技术选型

本方案采用前后端分离架构,后端使用Spring Boot 3.x,前端使用Vue 3.x,数据库使用PostgreSQL 14.x。这种组合保证了系统的稳定性、可维护性和扩展性。

1.1 环境要求与工具清单

开发环境需要安装以下软件,版本必须严格匹配:

1.2 数据库设计核心表结构

创建数据库和基础表结构,执行以下SQL命令:

```sql CREATE DATABASE urban_archive; \c urban_archive; CREATE TABLE archive_category ( id SERIAL PRIMARY KEY, category_code VARCHAR(20) UNIQUE NOT NULL, category_name VARCHAR(100) NOT NULL, parent_id INTEGER REFERENCES archive_category(id), sort_order INTEGER DEFAULT 0, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE archive_file ( id SERIAL PRIMARY KEY, file_number VARCHAR(50) UNIQUE NOT NULL, project_name VARCHAR(200) NOT NULL, archive_category_id INTEGER REFERENCES archive_category(id), storage_location VARCHAR(500), file_status VARCHAR(20) DEFAULT 'active', created_by VARCHAR(50), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ```

二、后端服务搭建

2.1 项目初始化与依赖配置

使用Spring Initializr创建项目,pom.xml关键依赖配置:

```xml org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-data-jpa org.postgresql postgresql 42.6.0 org.projectlombok lombok true ```

2.2 数据库连接配置

在application.yml中配置数据库连接:

```yaml spring: datasource: url: jdbc:postgresql://localhost:5432/urban_archive username: postgres password: your_password driver-class-name: org.postgresql.Driver jpa: hibernate: ddl-auto: update show-sql: true properties: hibernate: dialect: org.hibernate.dialect.PostgreSQLDialect ```

2.3 实体类与Repository

创建档案文件实体类:

```java @Entity @Table(name = "archive_file") @Data public class ArchiveFile { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "file_number", unique = true, nullable = false) private String fileNumber; @Column(name = "project_name", nullable = false) private String projectName; @ManyToOne @JoinColumn(name = "archive_category_id") private ArchiveCategory category; @Column(name = "storage_location") private String storageLocation; @Column(name = "file_status") private String fileStatus = "active"; @Column(name = "created_by") private String createdBy; @Column(name = "created_at") private LocalDateTime createdAt = LocalDateTime.now(); @Column(name = "updated_at") private LocalDateTime updatedAt = LocalDateTime.now(); } ```

创建Repository接口:

```java @Repository public interface ArchiveFileRepository extends JpaRepository { Optional findByFileNumber(String fileNumber); List findByProjectNameContaining(String projectName); List findByCategoryId(Long categoryId); } ```

2.4 服务层实现

创建档案管理服务:

```java @Service @Transactional public class ArchiveFileService { @Autowired private ArchiveFileRepository archiveFileRepository; public ArchiveFile createArchiveFile(ArchiveFileDTO dto) { ArchiveFile file = new ArchiveFile(); file.setFileNumber(generateFileNumber()); file.setProjectName(dto.getProjectName()); file.setStorageLocation(dto.getStorageLocation()); file.setCreatedBy(dto.getCreatedBy()); return archiveFileRepository.save(file); } private String generateFileNumber() { String datePart = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")); String randomPart = String.format("%04d", new Random().nextInt(10000)); return "AR" + datePart + randomPart; } } ```

2.5 控制器实现

创建REST API控制器:

```java @RestController @RequestMapping("/api/archive-files") public class ArchiveFileController { @Autowired private ArchiveFileService archiveFileService; @PostMapping public ResponseEntity createArchiveFile(@RequestBody ArchiveFileDTO dto) { ArchiveFile file = archiveFileService.createArchiveFile(dto); return ResponseEntity.ok(file); } @GetMapping("/{id}") public ResponseEntity getArchiveFile(@PathVariable Long id) { return archiveFileRepository.findById(id) .map(ResponseEntity::ok) .orElse(ResponseEntity.notFound().build()); } } ```

三、前端界面开发

3.1 Vue项目初始化

创建Vue项目并安装必要依赖:

```bash npm create vue@latest urban-archive-frontend cd urban-archive-frontend npm install axios element-plus ```

3.2 档案列表页面

创建档案列表组件:

```vue ```

3.3 档案录入表单

城建档案管理系统:从零搭建可扩展的数字化管理平台

创建档案录入组件:

```vue ```

四、文件上传与存储功能

4.1 后端文件上传接口

创建文件上传控制器:

```java @RestController @RequestMapping("/api/files") public class FileUploadController { @Value("${file.upload-dir}") private String uploadDir; @PostMapping("/upload") public ResponseEntity> uploadFile( @RequestParam("file") MultipartFile file, @RequestParam("archiveId") Long archiveId) { try { String originalFilename = file.getOriginalFilename(); String fileExtension = originalFilename.substring(originalFilename.lastIndexOf(".")); String fileName = UUID.randomUUID().toString() + fileExtension; Path uploadPath = Paths.get(uploadDir); if (!Files.exists(uploadPath)) { Files.createDirectories(uploadPath); } Path filePath = uploadPath.resolve(fileName); Files.copy(file.getInputStream(), filePath, StandardCopyOption.REPLACE_EXISTING); Map response = new HashMap<>(); response.put("fileName", fileName); response.put("originalName", originalFilename); response.put("filePath", filePath.toString()); return ResponseEntity.ok(response); } catch (IOException e) { return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); } } } ```

4.2 前端文件上传组件

创建文件上传组件:

```vue ```

五、系统部署与配置

5.1 后端应用打包

使用Maven打包Spring Boot应用:

```bash mvn clean package -DskipTests ```

打包完成后,在target目录下会生成urban-archive-backend-1.0.0.jar文件。

5.2 前端应用构建

构建Vue应用:

```bash npm run build ```

构建完成后,在dist目录下生成前端静态文件。

5.3 Nginx配置

配置Nginx反向代理,创建配置文件:

```nginx server { listen 80; server_name archive.example.com; location / { root /var/www/urban-archive-frontend/dist; index index.html; try_files $uri $uri/ /index.html; } location /api/ { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ```

5.4 启动应用

启动Spring Boot应用:

```bash java -jar urban-archive-backend-1.0.0.jar \ --spring.profiles.active=prod \ --server.port=8080 ```

六、数据备份与维护

6.1 数据库备份脚本

创建自动备份脚本:

```bash !/bin/bash BACKUP_DIR="/backup/urban-archive" DATE=$(date +%Y%m%d_%H%M%S) BACKUP_FILE="$BACKUP_DIR/backup_$DATE.sql" pg_dump -U postgres urban_archive > $BACKUP_FILE gzip $BACKUP_FILE 删除30天前的备份文件 find $BACKUP_DIR -name ".gz" -mtime +30 -delete ```

6.2 应用日志配置

配置logback-spring.xml日志文件:

```xml ${LOG_PATH}/urban-archive.log ${LOG_PATH}/urban-archive.%d{yyyy-MM-dd}.log 30 %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n ```

按照以上步骤操作,即可完成城建档案管理系统的基础搭建。系统具备档案管理、文件上传、分类检索等核心功能,后续可根据实际需求扩展统计报表、权限管理、工作流等功能模块。

搞对用好档案软件C/S版 消防资质申报年审顺得没话说
搞对用好档案软件C/S版 消防资质申报年审顺得没话说
各位搞消防工程、攥着消防资质过日子的老伙计小老弟老妹小嫂子们!今天咱掏心窝子唠唠——最近是不是被资质那边的各种要求搓得头冒火星子?尤其是消防档案这一块,一会儿查归档一会儿查借阅一会儿查安全存管期限,动...
2026年06月17日 06:25:18
微信咨询
电话联系
QQ客服
微信咨询一对一服务
服务热线: 028-8744 4417
QQ客服: 2305721818