@Override public boolean isOutOfService() { if (getServiceRecords() == null) { return false; } return getServiceRecords().stream().anyMatch(sr -> sr.isOutOfService() && sr.getEndTime() == null && sr.getStartTime() != null && sr.getStartTime().before(new Date()) && sr.getPosition() == null); }
@Override public Set<InstrumentPosition> getOutOfServicePositions() { if (isOutOfService()) { return getInstrumentModel().getPositions(); } return getInstrumentModel().getPositions().stream() .filter(pos -> getServiceRecords().stream().anyMatch(sr -> sr.isOutOfService() && sr.getEndTime() == null && sr.getStartTime() != null && sr.getStartTime().before(new Date()) && sr.getPosition().getAlias().equals(pos.getAlias()))) .collect(Collectors.toSet()); }
.collect(Collectors.toList())); ServiceRecord instrumentOutOfServiceRecord = from.getInstrument().getServiceRecords().stream() .filter(sr -> sr.isOutOfService() && sr.getStartTime() != null && sr.getEndTime() == null && (sr.getPosition() == null || sr.getPosition().getAlias().equals(pos.getAlias()))) .min(Comparator.comparing(ServiceRecord::getStartTime)) if (instrumentOutOfServiceRecord != null) { posDto.setOutOfService(true); posDto.setOutOfServiceTime(formatDateTime(instrumentOutOfServiceRecord.getStartTime()));
private void applyRecordChanges(ServiceRecord target, ServiceRecord source) { target.setTitle(source.getTitle()); target.setDetails(source.getDetails()); if (source.getPosition() == null) { target.setPosition(null); } else { target.setPosition(findPosition(source.getPosition().getId(), target.getInstrument())); } target.setServicedByName(source.getServicedByName()); target.setReferenceNumber(source.getReferenceNumber()); target.setServiceDate(source.getServiceDate()); target.setStartTime(source.getStartTime()); target.setOutOfService(source.isOutOfService()); target.setEndTime(source.getEndTime()); }