SwitchService.java 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package top.haijunit.train.service;
  2. import lombok.RequiredArgsConstructor;
  3. import lombok.extern.slf4j.Slf4j;
  4. import org.apache.commons.collections4.MapUtils;
  5. import org.springframework.stereotype.Service;
  6. import top.haijunit.train.domain.constant.SwitchStateEnum;
  7. import top.haijunit.train.domain.entity.SwitchEntity;
  8. import top.haijunit.train.domain.repository.SwitchRepository;
  9. import java.time.LocalTime;
  10. import java.util.Date;
  11. import java.util.Map;
  12. /**
  13. * @author zhanghaijun
  14. * @date 2023/11/29 06:23
  15. * @description 道岔处理
  16. */
  17. @Slf4j
  18. @Service
  19. @RequiredArgsConstructor
  20. public class SwitchService {
  21. private final SwitchRepository switchRepository;
  22. /**
  23. * 改变道岔的状态
  24. *
  25. * @param switchStateMap 改变后的的道岔状态
  26. * @return 是否发生了变化,变化后需要等待时间
  27. */
  28. public boolean changeSwitchState(Map<Long, SwitchStateEnum> switchStateMap) {
  29. boolean isChanged = false;
  30. if (MapUtils.isEmpty(switchStateMap)) {
  31. return isChanged;
  32. }
  33. for (Map.Entry<Long, SwitchStateEnum> entry : switchStateMap.entrySet()) {
  34. SwitchEntity switchEntity = switchRepository.findById(entry.getKey()).orElse(null);
  35. if (switchEntity == null) {
  36. log.error("-----道岔不存在, id: {}", entry.getKey());
  37. continue;
  38. }
  39. if (switchEntity.getSwitchState() != entry.getValue()) {
  40. switchEntity.setSwitchState(entry.getValue());
  41. switchEntity.setUpdateStateTime(new Date());
  42. switchRepository.save(switchEntity);
  43. isChanged = true;
  44. }
  45. }
  46. return isChanged;
  47. }
  48. }