package com.gym.service; import com.gym.model.Equipment; import com.gym.model.MaintenanceRecord; import com.gym.repository.EquipmentRepository; import com.gym.repository.MaintenanceRecordRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; import java.util.List; @Service public class MaintenanceService { @Autowired private MaintenanceRecordRepository maintenanceRecordRepository; @Autowired private EquipmentRepository equipmentRepository; // 不再依赖 EquipmentService,直接使用 EquipmentRepository // 添加维护记录并更新设备状态 @Transactional public MaintenanceRecord addMaintenanceRecord(Long equipmentId, String notes, Long maintainerId, String maintainerName) { Equipment equipment = equipmentRepository.findById(equipmentId) .orElseThrow(() -> new RuntimeException("器材不存在")); // 创建维护记录 MaintenanceRecord record = new MaintenanceRecord(); record.setEquipmentId(equipmentId); record.setMaintenanceDate(LocalDate.now()); record.setMaintainerId(maintainerId); record.setMaintainerName(maintainerName); record.setNotes(notes); record.setStatus("COMPLETED"); // 更新设备状态 equipment.setLastMaintenance(LocalDate.now()); equipment.setNextMaintenance(LocalDate.now().plusMonths(3)); equipment.setStatus("NORMAL"); equipment.setIsAvailable(true); // 更新设备描述,添加维护记录 String newDescription = equipment.getDescription() == null ? "" : equipment.getDescription(); newDescription += "\n[维护记录 " + LocalDate.now() + " - " + maintainerName + "]: " + notes; equipment.setDescription(newDescription); equipmentRepository.save(equipment); return maintenanceRecordRepository.save(record); } // 获取设备的维护记录 public List getMaintenanceRecords(Long equipmentId) { return maintenanceRecordRepository.findByEquipmentIdOrderByMaintenanceDateDesc(equipmentId); } // 获取设备的最近维护记录 public MaintenanceRecord getLatestMaintenanceRecord(Long equipmentId) { List records = maintenanceRecordRepository .findByEquipmentIdOrderByMaintenanceDateDesc(equipmentId); return records.isEmpty() ? null : records.get(0); } }