package top.haijunit.train.service; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.MapUtils; import org.springframework.stereotype.Service; import top.haijunit.train.domain.constant.SwitchStateEnum; import top.haijunit.train.domain.entity.SwitchEntity; import top.haijunit.train.domain.repository.SwitchRepository; import java.time.LocalTime; import java.util.Date; import java.util.Map; /** * @author zhanghaijun * @date 2023/11/29 06:23 * @description 道岔处理 */ @Slf4j @Service @RequiredArgsConstructor public class SwitchService { private final SwitchRepository switchRepository; /** * 改变道岔的状态 * * @param switchStateMap 改变后的的道岔状态 * @return 是否发生了变化,变化后需要等待时间 */ public boolean changeSwitchState(Map switchStateMap) { boolean isChanged = false; if (MapUtils.isEmpty(switchStateMap)) { return isChanged; } for (Map.Entry entry : switchStateMap.entrySet()) { SwitchEntity switchEntity = switchRepository.findById(entry.getKey()).orElse(null); if (switchEntity == null) { log.error("-----道岔不存在, id: {}", entry.getKey()); continue; } if (switchEntity.getSwitchState() != entry.getValue()) { switchEntity.setSwitchState(entry.getValue()); switchEntity.setUpdateStateTime(new Date()); switchRepository.save(switchEntity); isChanged = true; } } return isChanged; } }