建设用地规划许可证数字档案馆系统搭建实战指南

系统架构与核心技术选型

本系统采用微服务架构,前端使用Vue 3 + Element Plus,后端采用Spring Boot 2.7,数据库使用PostgreSQL 14,文件存储使用MinIO。这种组合确保系统的高可扩展性和稳定性。

技术栈详细说明

PostgreSQL负责存储结构化数据,包括许可证信息、用户数据等。MinIO作为对象存储服务,专门存放扫描件、PDF等文件。Spring Boot微服务提供RESTful API,Vue 3前端负责用户交互界面。

环境准备与安装

基础环境配置

在Ubuntu 22.04 LTS系统上执行以下操作:

更新系统并安装必要工具:

``` sudo apt update sudo apt install -y openjdk-17-jdk maven nodejs npm postgresql postgresql-contrib ```

安装MinIO对象存储:

``` wget https://dl.min.io/server/minio/release/linux-amd64/minio chmod +x minio sudo mv minio /usr/local/bin/ ```

数据库初始化

创建PostgreSQL数据库和用户:

``` sudo -u postgres psql CREATE DATABASE land_archive_db; CREATE USER archive_admin WITH PASSWORD 'YourSecurePassword123'; GRANT ALL PRIVILEGES ON DATABASE land_archive_db TO archive_admin; \q ```

后端服务搭建

项目结构创建

使用Spring Initializr创建项目,选择以下依赖:Spring Web, Spring Data JPA, PostgreSQL Driver, Spring Security。执行命令:

``` mvn archetype:generate -DgroupId=com.landarchive -DartifactId=backend-service -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false ```

核心配置文件

在application.yml中配置:

``` server: port: 8080 spring: datasource: url: jdbc:postgresql://localhost:5432/land_archive_db username: archive_admin password: YourSecurePassword123 driver-class-name: org.postgresql.Driver jpa: hibernate: ddl-auto: update show-sql: true servlet: multipart: max-file-size: 50MB max-request-size: 50MB minio: endpoint: http://localhost:9000 accessKey: minioadmin secretKey: minioadmin123 bucket: land-archive-files ```

实体类设计

创建许可证实体类:

``` @Entity @Table(name = "planning_permit") public class PlanningPermit { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false, unique = true) private String permitNumber; @Column(nullable = false) private String applicantName; @Column(nullable = false) private String landLocation; @Column(nullable = false) private Double landArea; @Column(nullable = false) private LocalDate issueDate; @Column(nullable = false) private LocalDate expiryDate; @Column(name = "document_path") private String documentPath; // Getters and setters } ```

文件存储服务实现

创建MinIO服务类:

``` @Service public class MinioService { @Value("${minio.endpoint}") private String endpoint; @Value("${minio.accessKey}") private String accessKey; @Value("${minio.secretKey}") private String secretKey; @Value("${minio.bucket}") private String bucket; private MinioClient minioClient; @PostConstruct public void init() { minioClient = MinioClient.builder() .endpoint(endpoint) .credentials(accessKey, secretKey) .build(); } public String uploadFile(MultipartFile file, String permitNumber) throws Exception { String fileName = permitNumber + "_" + System.currentTimeMillis() + getFileExtension(file.getOriginalFilename()); if (!minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucket).build())) { minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucket).build()); } minioClient.putObject( PutObjectArgs.builder() .bucket(bucket) .object(fileName) .stream(file.getInputStream(), file.getSize(), -1) .contentType(file.getContentType()) .build() ); return endpoint + "/" + bucket + "/" + fileName; } } ```

前端界面开发

Vue项目初始化

创建Vue项目并安装依赖:

``` npm create vue@latest land-archive-frontend cd land-archive-frontend npm install element-plus axios vue-router ```

许可证管理组件

建设用地规划许可证数字档案馆系统搭建实战指南

创建许可证列表组件:

``` ```

文件上传组件

创建文件上传功能:

``` ```

系统部署与配置

MinIO服务启动

创建MinIO启动脚本:

``` !/bin/bash export MINIO_ROOT_USER=minioadmin export MINIO_ROOT_PASSWORD=minioadmin123 minio server /data/minio --console-address ":9001" ```

设置脚本权限并启动:

``` chmod +x start-minio.sh ./start-minio.sh ```

Nginx反向代理配置

配置Nginx统一访问入口:

``` server { listen 80; server_name archive.yourdomain.com; location /api { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ```

系统启动脚本

创建一键启动脚本start-system.sh:

``` !/bin/bash 启动MinIO echo "启动MinIO服务..." ./start-minio.sh & 启动后端服务 echo "启动后端服务..." cd backend-service mvn spring-boot:run & 启动前端服务 echo "启动前端服务..." cd ../land-archive-frontend npm run dev & echo "所有服务启动完成" echo "前端访问: http://localhost:3000" echo "MinIO控制台: http://localhost:9001" ```

数据迁移与备份

数据库备份脚本

创建每日自动备份脚本:

``` !/bin/bash BACKUP_DIR="/backups/land-archive" DATE=$(date +%Y%m%d_%H%M%S) BACKUP_FILE="$BACKUP_DIR/backup_$DATE.sql" mkdir -p $BACKUP_DIR pg_dump -U archive_admin land_archive_db > $BACKUP_FILE 保留最近7天备份 find $BACKUP_DIR -name ".sql" -mtime +7 -delete ```

文件存储同步

配置MinIO数据同步到备份存储:

``` mc mirror --watch /data/minio backup-minio/land-archive ```

系统监控与维护

日志配置

在application.yml中添加日志配置:

``` logging: level: com.landarchive: DEBUG file: name: logs/land-archive.log logback: rollingpolicy: max-file-size: 10MB max-history: 30 ```

健康检查接口

添加系统健康检查:

``` @RestController @RequestMapping("/health") public class HealthController { @GetMapping public ResponseEntity> healthCheck() { Map status = new HashMap<>(); status.put("status", "UP"); status.put("timestamp", LocalDateTime.now().toString()); return ResponseEntity.ok(status); } } ```

完成以上所有步骤后,系统即可投入运行。通过访问配置的域名或IP地址,可以开始管理建设用地规划许可证的数字化档案。

AI咨询
热线电话

028-85154420

15388110056

全国售前咨询电话

扫码咨询
安答联动微信公众号二维码

微信扫码关注安答联动

申请试用
热线电话
申请试用

安答联动档案管理系统