基于SSM框架的设备台账管理系统 - 源码深度解析

JavaJavaScriptMavenHTMLCSSSSM框架MySQL
2026-03-153 浏览

文章摘要

本系统基于SSM(Spring+SpringMVC+MyBatis)框架构建,旨在为企业提供一套集中化、规范化的设备资产管理与台账维护解决方案。其核心业务价值在于彻底改变传统依赖纸质记录或零散Excel表格的落后管理模式,解决了设备信息分散、状态更新不及时、历史维护记录难以追溯、资产盘点效率低下等核...

在企业资产管理领域,传统的纸质记录和零散的Excel表格管理模式长期存在信息孤岛、更新滞后、追溯困难等痛点。为解决这些问题,我们设计并实现了一套基于SSM(Spring+SpringMVC+MyBatis)框架的企业资产运维管理平台。该系统通过全生命周期的数字化管理,实现了设备资产信息的集中化、规范化和实时化管控。

系统架构与技术栈

该平台采用经典的三层架构设计,展现层使用SpringMVC框架处理Web请求和响应,通过控制器将前端请求分发到相应的业务服务。业务逻辑层基于Spring框架实现,利用其IoC容器管理各种业务组件,并通过AOP机制实现事务控制、日志记录等横切关注点。数据持久层采用MyBatis框架,通过XML映射文件实现对象关系映射,支持动态SQL构建,有效处理复杂的多表关联查询。

前端技术选用JSP作为模板引擎,结合jQuery库实现页面动态交互,使用Bootstrap框架保证界面的响应式布局。项目依赖管理通过Maven进行,数据库采用MySQL 5.7版本,确保了系统的稳定性和可扩展性。

数据库设计精要

系统数据库包含8个核心表,其中设备主表的设计尤为关键:

CREATE TABLE physical_device (
    device_id INT PRIMARY KEY AUTO_INCREMENT,
    device_name VARCHAR(100) NOT NULL,
    device_type VARCHAR(50),
    manufacturer VARCHAR(100),
    model VARCHAR(50),
    serial_number VARCHAR(100) UNIQUE,
    purchase_date DATE,
    warranty_expiry DATE,
    status ENUM('运行中','待机','维修中','已报废') DEFAULT '运行中',
    current_owner VARCHAR(50),
    location VARCHAR(200),
    last_maintenance_date DATE,
    next_maintenance_date DATE,
    created_time DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

该表设计体现了多个技术亮点:使用ENUM类型规范设备状态,确保数据一致性;通过serial_number字段的唯一索引防止设备重复录入;created_time和updated_time时间戳自动维护记录生命周期;合理的索引策略优化查询性能。

IP地址管理表的设计展示了复杂业务关系的处理能力:

CREATE TABLE ip_address (
    ip_id INT PRIMARY KEY AUTO_INCREMENT,
    device_id INT NOT NULL,
    ip_address VARCHAR(15) UNIQUE NOT NULL,
    subnet_mask VARCHAR(15),
    gateway VARCHAR(15),
    dns_servers VARCHAR(100),
    allocation_type ENUM('静态','动态') DEFAULT '静态',
    assigned_date DATE,
    FOREIGN KEY (device_id) REFERENCES physical_device(device_id) ON DELETE CASCADE
);

通过外键约束实现设备与IP地址的强关联,CASCADE删除策略确保数据完整性。UNIQUE约束防止IP地址冲突,ENUM类型规范分配方式,体现了精细化的网络资源管理思路。

核心功能实现解析

1. 设备全生命周期管理

设备管理模块实现了从采购入库到报废处置的全流程跟踪。核心服务类通过注解方式声明事务边界:

@Service
@Transactional
public class DeviceManagementService {
    
    @Autowired
    private PhysicalDeviceMapper deviceMapper;
    
    public void addDevice(PhysicalDevice device) {
        // 验证设备序列号唯一性
        if (deviceMapper.selectBySerialNumber(device.getSerialNumber()) != null) {
            throw new BusinessException("设备序列号已存在");
        }
        deviceMapper.insert(device);
        
        // 记录设备状态变更日志
        logDeviceStatusChange(device.getDeviceId(), "新设备入库", device.getStatus());
    }
    
    public void updateDeviceStatus(Long deviceId, DeviceStatus newStatus, String operator) {
        PhysicalDevice device = deviceMapper.selectById(deviceId);
        if (device == null) {
            throw new BusinessException("设备不存在");
        }
        
        DeviceStatus oldStatus = device.getStatus();
        device.setStatus(newStatus);
        deviceMapper.updateStatus(device);
        
        // 异步记录状态变更历史
        CompletableFuture.runAsync(() -> {
            DeviceStatusHistory history = new DeviceStatusHistory(deviceId, oldStatus, newStatus, operator);
            statusHistoryMapper.insert(history);
        });
    }
}

物理设备管理界面

该界面展示了设备列表的完整信息架构,支持按状态、类型、部门等多维度筛选。通过颜色编码直观显示设备状态,便于快速识别异常设备。

2. 动态IP地址分配系统

IP地址管理模块实现了智能分配和冲突检测机制:

@RestController
@RequestMapping("/api/ip")
public class IpAddressController {
    
    @PostMapping("/assign")
    public ResponseEntity<?> assignIpAddress(@RequestBody IpAssignmentRequest request) {
        // IP地址格式验证
        if (!isValidIpAddress(request.getIpAddress())) {
            return ResponseEntity.badRequest().body("IP地址格式错误");
        }
        
        // 检查IP是否已被占用
        if (ipService.isIpOccupied(request.getIpAddress())) {
            return ResponseEntity.badRequest().body("IP地址已被占用");
        }
        
        // 执行分配操作
        IpAddress ipAddress = ipService.assignIpToDevice(
            request.getDeviceId(), 
            request.getIpAddress(), 
            request.getAllocationType()
        );
        
        return ResponseEntity.ok(ipAddress);
    }
    
    @GetMapping("/available")
    public List<String> getAvailableIps(@RequestParam String subnet) {
        return ipService.findAvailableIpsInSubnet(subnet);
    }
}

IP地址查看界面

该功能提供了清晰的IP地址可视化展示,支持按网段筛选和快速搜索。地址分配状态实时更新,避免资源冲突。

3. 虚拟化资源统一管控

虚拟机管理模块实现了物理资源与虚拟资源的关联管理:

<!-- MyBatis映射文件中的复杂查询 -->
<select id="selectVmsWithHostInfo" resultMap="VmWithHostResultMap">
    SELECT 
        vm.vm_id,
        vm.vm_name,
        vm.os_type,
        vm.cpu_cores,
        vm.memory_gb,
        vm.disk_size_gb,
        vm.status,
        pd.device_name as host_name,
        pd.location as host_location
    FROM virtual_machine vm
    LEFT JOIN physical_device pd ON vm.host_device_id = pd.device_id
    WHERE vm.status = '运行中'
    <if test="departmentId != null">
        AND vm.department_id = #{departmentId}
    </if>
    <if test="minCpu != null">
        AND vm.cpu_cores >= #{minCpu}
    </if>
    ORDER BY vm.created_time DESC
</select>

虚拟机管理界面

界面展示了虚拟机与宿主机的关系拓扑,支持资源使用率的可视化监控。通过动态条件查询实现资源的精确筛选。

4. 智能通知与预警机制

系统内置了基于设备状态的自动通知功能:

@Component
public class MaintenanceNotificationScheduler {
    
    @Scheduled(cron = "0 0 8 * * ?") // 每天上午8点执行
    public void checkMaintenanceSchedule() {
        List<PhysicalDevice> dueDevices = deviceMapper.selectDevicesDueForMaintenance();
        
        for (PhysicalDevice device : dueDevices) {
            Notification notification = Notification.builder()
                .title("设备维护提醒")
                .content(String.format("设备%s即将到达维护周期,请安排维护", device.getDeviceName()))
                .recipient(device.getCurrentOwner())
                .priority("HIGH")
                .build();
                
            notificationService.sendNotification(notification);
            
            // 更新下次维护日期
            updateNextMaintenanceDate(device.getDeviceId());
        }
    }
}

通知公告管理

通知系统支持优先级分类和定向推送,确保重要信息及时传达给相关人员。

实体模型与业务逻辑

设备实体模型采用富领域模型设计,封装了复杂的业务规则:

public class PhysicalDevice {
    private Long deviceId;
    private String deviceName;
    private DeviceType deviceType;
    private String manufacturer;
    private String model;
    private String serialNumber;
    private LocalDate purchaseDate;
    private LocalDate warrantyExpiry;
    private DeviceStatus status;
    private String currentOwner;
    private String location;
    private List<MaintenanceRecord> maintenanceHistory;
    private List<IpAddress> assignedIps;
    
    public boolean isUnderWarranty() {
        return LocalDate.now().isBefore(warrantyExpiry);
    }
    
    public boolean requiresMaintenance() {
        return nextMaintenanceDate != null && 
               LocalDate.now().isAfter(nextMaintenanceDate.minusDays(7));
    }
    
    public void changeStatus(DeviceStatus newStatus, String operator) {
        if (this.status.canTransitionTo(newStatus)) {
            DeviceStatus oldStatus = this.status;
            this.status = newStatus;
            DomainEventPublisher.publish(new DeviceStatusChangedEvent(this, oldStatus, newStatus, operator));
        } else {
            throw new IllegalStateException("无效的状态转换");
        }
    }
}

性能优化策略

系统在数据访问层实施了多项优化措施。MyBatis的二级缓存配置减少了数据库访问压力:

<cache eviction="LRU" flushInterval="60000" size="512" readOnly="true"/>

针对大数据量查询,采用分页插件优化性能:

PageHelper.startPage(pageNum, pageSize);
List<PhysicalDevice> devices = deviceMapper.selectByCondition(condition);
PageInfo<PhysicalDevice> pageInfo = new PageInfo<>(devices);

数据库层面建立了复合索引提升查询效率:

CREATE INDEX idx_device_status_department 
ON physical_device(status, department_id, created_time);

CREATE INDEX idx_ip_subnet_status 
ON ip_address(subnet_mask, allocation_type, assigned_date);

系统安全机制

安全控制贯穿整个系统架构。权限管理采用基于角色的访问控制模型:

@PreAuthorize("hasRole('ADMIN') or (#device.departmentId == authentication.departmentId)")
public void updateDevice(PhysicalDevice device) {
    deviceMapper.update(device);
}

数据传输过程中使用HTTPS加密,敏感信息如IP地址进行脱敏处理。SQL注入防护通过MyBatis的参数绑定机制天然实现,XSS攻击防范通过JSTL标签库自动处理。

未来优化方向

  1. 物联网集成:通过MQTT协议接入设备传感器数据,实现实时状态监控和预测性维护。可引入规则引擎实现智能告警升级。

  2. 移动端支持:开发React Native跨平台应用,支持扫码盘点、移动审批等场景。利用PWA技术实现离线数据同步。

  3. 数据分析增强:集成Apache Spark进行设备运行数据分析,构建设备寿命预测模型。通过ELK栈实现运维日志的智能分析。

  4. 自动化运维:结合Ansible或SaltStack实现设备配置的自动化部署。通过Webhook与CI/CD工具集成,实现应用部署的自动化跟踪。

  5. 多云资源管理:扩展支持AWS、Azure等云平台虚拟机管理,实现混合云资源的统一管控。通过Terraform模板实现基础设施即代码。

该系统通过严谨的架构设计和深度的业务建模,为企业设备资产管理提供了完整的数字化解决方案。其模块化设计为后续功能扩展奠定了坚实基础,技术选型的合理性确保了系统的长期可维护性。随着技术的不断发展,系统将持续演进以满足更复杂的业务需求。

本文关键词
SSM框架设备台账管理系统源码解析企业资产管理设备全生命周期管理

上下篇

上一篇
没有更多文章
下一篇
没有更多文章