|
|
@ -9,8 +9,10 @@ import org.json.JSONObject;
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
import ru.ulstu.extractor.branch.model.Branch;
|
|
|
|
import ru.ulstu.extractor.http.HttpService;
|
|
|
|
import ru.ulstu.extractor.http.HttpService;
|
|
|
|
import ru.ulstu.extractor.http.JsonTimeSeries;
|
|
|
|
import ru.ulstu.extractor.http.JsonTimeSeries;
|
|
|
|
|
|
|
|
import ru.ulstu.extractor.http.SmoothingTimeSeries;
|
|
|
|
import ru.ulstu.extractor.ts.model.TimeSeries;
|
|
|
|
import ru.ulstu.extractor.ts.model.TimeSeries;
|
|
|
|
import ru.ulstu.extractor.ts.model.TimeSeriesType;
|
|
|
|
import ru.ulstu.extractor.ts.model.TimeSeriesType;
|
|
|
|
import ru.ulstu.extractor.ts.model.TimeSeriesValue;
|
|
|
|
import ru.ulstu.extractor.ts.model.TimeSeriesValue;
|
|
|
@ -31,7 +33,8 @@ public class TimeSeriesService {
|
|
|
|
private final TimeSeriesValueRepository timeSeriesValueRepository;
|
|
|
|
private final TimeSeriesValueRepository timeSeriesValueRepository;
|
|
|
|
private final TimeSeriesDateMapper.TimeSeriesInterval timeSeriesInterval = TimeSeriesDateMapper.TimeSeriesInterval.HOUR;
|
|
|
|
private final TimeSeriesDateMapper.TimeSeriesInterval timeSeriesInterval = TimeSeriesDateMapper.TimeSeriesInterval.HOUR;
|
|
|
|
private final HttpService httpService;
|
|
|
|
private final HttpService httpService;
|
|
|
|
private final static String TIME_SERIES_SERVICE_URL = "http://time-series.athene.tech/api/1.0/add-time-series?setKey=git-extractor";
|
|
|
|
private final static String TIME_SERIES_SAVE_SERVICE_URL = "http://time-series.athene.tech/api/1.0/add-time-series?setKey=git-extractor";
|
|
|
|
|
|
|
|
private final static String TIME_SERIES_TENDENCY_URL = "http://time-series.athene.tech/api/1.0/add-time-series?setKey=git-extractor";
|
|
|
|
|
|
|
|
|
|
|
|
public TimeSeriesService(TimeSeriesRepository timeSeriesRepository,
|
|
|
|
public TimeSeriesService(TimeSeriesRepository timeSeriesRepository,
|
|
|
|
TimeSeriesValueRepository timeSeriesValueRepository,
|
|
|
|
TimeSeriesValueRepository timeSeriesValueRepository,
|
|
|
@ -42,12 +45,11 @@ public class TimeSeriesService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Transactional
|
|
|
|
@Transactional
|
|
|
|
public TimeSeries save(String timeSeriesName, TimeSeriesType timeSeriesType, List<TimeSeriesValue> timeSeriesValues) {
|
|
|
|
public TimeSeries save(String timeSeriesName, Branch branch, TimeSeriesType timeSeriesType, List<TimeSeriesValue> timeSeriesValues) {
|
|
|
|
LOG.debug("Start save {} time series with {} time series values ", timeSeriesName, timeSeriesValues.size());
|
|
|
|
LOG.debug("Start save {} time series with {} time series values ", timeSeriesName, timeSeriesValues.size());
|
|
|
|
final TimeSeries timeSeries = findOrCreate(timeSeriesName);
|
|
|
|
final TimeSeries timeSeries = findOrCreate(timeSeriesName, branch, timeSeriesType);
|
|
|
|
List<TimeSeriesValue> timeSeriesValuesToRemove = timeSeries.getValues();
|
|
|
|
List<TimeSeriesValue> timeSeriesValuesToRemove = timeSeries.getValues();
|
|
|
|
timeSeries.setValues(timeSeriesValues);
|
|
|
|
timeSeries.setValues(timeSeriesValues);
|
|
|
|
timeSeries.setTimeSeriesType(timeSeriesType);
|
|
|
|
|
|
|
|
LOG.debug("Save time series {} ", timeSeries.getName());
|
|
|
|
LOG.debug("Save time series {} ", timeSeries.getName());
|
|
|
|
TimeSeries savedTimeSeries = timeSeriesRepository.save(timeSeries);
|
|
|
|
TimeSeries savedTimeSeries = timeSeriesRepository.save(timeSeries);
|
|
|
|
LOG.debug("Clear {} time series values ", timeSeriesValuesToRemove.size());
|
|
|
|
LOG.debug("Clear {} time series values ", timeSeriesValuesToRemove.size());
|
|
|
@ -56,13 +58,13 @@ public class TimeSeriesService {
|
|
|
|
return savedTimeSeries;
|
|
|
|
return savedTimeSeries;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public TimeSeries findOrCreate(String timeSeriesName) {
|
|
|
|
public TimeSeries findOrCreate(String timeSeriesName, Branch branch, TimeSeriesType timeSeriesType) {
|
|
|
|
Optional<TimeSeries> maybeTimeSeries = timeSeriesRepository.findByName(timeSeriesName);
|
|
|
|
Optional<TimeSeries> maybeTimeSeries = timeSeriesRepository.findByName(timeSeriesName);
|
|
|
|
if (maybeTimeSeries.isPresent()) {
|
|
|
|
if (maybeTimeSeries.isPresent()) {
|
|
|
|
LOG.debug("TimeSeries {} exists.", maybeTimeSeries.get().getName());
|
|
|
|
LOG.debug("TimeSeries {} exists.", maybeTimeSeries.get().getName());
|
|
|
|
return maybeTimeSeries.get();
|
|
|
|
return maybeTimeSeries.get();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return timeSeriesRepository.save(new TimeSeries(timeSeriesName));
|
|
|
|
return timeSeriesRepository.save(new TimeSeries(timeSeriesName, branch, timeSeriesType));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -72,10 +74,10 @@ public class TimeSeriesService {
|
|
|
|
* @return сохраненный список ВР
|
|
|
|
* @return сохраненный список ВР
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
@Transactional
|
|
|
|
@Transactional
|
|
|
|
public List<TimeSeries> save(List<TimeSeries> timeSeries) {
|
|
|
|
public List<TimeSeries> save(List<TimeSeries> timeSeries, Branch branch) {
|
|
|
|
List<TimeSeries> results = new ArrayList<>();
|
|
|
|
List<TimeSeries> results = new ArrayList<>();
|
|
|
|
for (TimeSeries ts : timeSeries) {
|
|
|
|
for (TimeSeries ts : timeSeries) {
|
|
|
|
results.add(save(ts.getName(), ts.getTimeSeriesType(), ts.getValues()));
|
|
|
|
results.add(save(ts.getName(), branch, ts.getTimeSeriesType(), ts.getValues()));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return results;
|
|
|
|
return results;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -87,7 +89,7 @@ public class TimeSeriesService {
|
|
|
|
private void sendToTimeSeriesService(TimeSeries timeSeries) {
|
|
|
|
private void sendToTimeSeriesService(TimeSeries timeSeries) {
|
|
|
|
new Thread(() -> {
|
|
|
|
new Thread(() -> {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
httpService.post(TIME_SERIES_SERVICE_URL, new JSONObject(new JsonTimeSeries(timeSeries)));
|
|
|
|
httpService.post(TIME_SERIES_SAVE_SERVICE_URL, new JSONObject(new JsonTimeSeries(timeSeries)));
|
|
|
|
LOG.debug("Успешно отправлен на сервис");
|
|
|
|
LOG.debug("Успешно отправлен на сервис");
|
|
|
|
} catch (Exception ex) {
|
|
|
|
} catch (Exception ex) {
|
|
|
|
LOG.debug(ex.getMessage());
|
|
|
|
LOG.debug(ex.getMessage());
|
|
|
@ -107,4 +109,15 @@ public class TimeSeriesService {
|
|
|
|
public List<TimeSeriesType> getAllTimeSeriesTypes() {
|
|
|
|
public List<TimeSeriesType> getAllTimeSeriesTypes() {
|
|
|
|
return Arrays.asList(TimeSeriesType.values());
|
|
|
|
return Arrays.asList(TimeSeriesType.values());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public List<TimeSeries> getByBranch(Integer branchId) {
|
|
|
|
|
|
|
|
return timeSeriesRepository.getTimeSeriesByBranchId(branchId);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public Double getLastTimeSeriesTendency(TimeSeries ts) {
|
|
|
|
|
|
|
|
JSONObject response = httpService.post(TIME_SERIES_TENDENCY_URL, new JSONObject(new SmoothingTimeSeries(ts)));
|
|
|
|
|
|
|
|
LOG.debug("Успешно отправлен на сервис сглаживания");
|
|
|
|
|
|
|
|
response.get("timeSeries");
|
|
|
|
|
|
|
|
return 0.0;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|