@golemio/energetics 1.4.9-dev.1632309400 → 1.4.9-rc.1648069376
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/db/migrations/postgresql/20250120141804-ptas-selected-meters.js +53 -0
- package/db/migrations/postgresql/sqls/20250120141804-ptas-selected-meters-down.sql +1 -0
- package/db/migrations/postgresql/sqls/20250120141804-ptas-selected-meters-up.sql +3 -0
- package/dist/input-gateway/pre/PreCsvInputController.js +4 -13
- package/dist/input-gateway/pre/PreCsvInputController.js.map +1 -1
- package/dist/input-gateway/pre/PreInputRouter.js +6 -15
- package/dist/input-gateway/pre/PreInputRouter.js.map +1 -1
- package/dist/input-gateway/pre/PreJsonInputController.js +4 -13
- package/dist/input-gateway/pre/PreJsonInputController.js.map +1 -1
- package/dist/input-gateway/ptas/PtasRouter.js +3 -12
- package/dist/input-gateway/ptas/PtasRouter.js.map +1 -1
- package/dist/input-gateway/ptas/PtasWebScrapingController.js +4 -13
- package/dist/input-gateway/ptas/PtasWebScrapingController.js.map +1 -1
- package/dist/integration-engine/commodity-providers/datasources/ppas-ave-api/helpers/PpasAveApiHelper.js +9 -18
- package/dist/integration-engine/commodity-providers/datasources/ppas-ave-api/helpers/PpasAveApiHelper.js.map +1 -1
- package/dist/integration-engine/commodity-providers/datasources/pre-elektro-api/helpers/PreElectroHelper.js +29 -40
- package/dist/integration-engine/commodity-providers/datasources/pre-elektro-api/helpers/PreElectroHelper.js.map +1 -1
- package/dist/integration-engine/commodity-providers/ioc/Di.js +1 -1
- package/dist/integration-engine/commodity-providers/ioc/Di.js.map +1 -1
- package/dist/integration-engine/commodity-providers/repositories/MeasurementRepository.js +15 -26
- package/dist/integration-engine/commodity-providers/repositories/MeasurementRepository.js.map +1 -1
- package/dist/integration-engine/commodity-providers/repositories/StaticMeterSettingsRepository.js +24 -38
- package/dist/integration-engine/commodity-providers/repositories/StaticMeterSettingsRepository.js.map +1 -1
- package/dist/integration-engine/commodity-providers/workers/tasks/AbstractFetchMeasurementsTask.js +13 -24
- package/dist/integration-engine/commodity-providers/workers/tasks/AbstractFetchMeasurementsTask.js.map +1 -1
- package/dist/integration-engine/commodity-providers/workers/tasks/FetchMeasurementOptionsStaticDataTask.js +14 -25
- package/dist/integration-engine/commodity-providers/workers/tasks/FetchMeasurementOptionsStaticDataTask.js.map +1 -1
- package/dist/integration-engine/commodity-providers/workers/tasks/FetchMeasurementsFromEEProvidersTask.js +18 -29
- package/dist/integration-engine/commodity-providers/workers/tasks/FetchMeasurementsFromEEProvidersTask.js.map +1 -1
- package/dist/integration-engine/commodity-providers/workers/tasks/FetchMeasurementsFromProvidersTask.js +30 -41
- package/dist/integration-engine/commodity-providers/workers/tasks/FetchMeasurementsFromProvidersTask.js.map +1 -1
- package/dist/integration-engine/commodity-providers/workers/tasks/FetchPpasEEMeasurementsTask.js +33 -61
- package/dist/integration-engine/commodity-providers/workers/tasks/FetchPpasEEMeasurementsTask.js.map +1 -1
- package/dist/integration-engine/commodity-providers/workers/tasks/FetchPpasMeasurementsTask.js +50 -92
- package/dist/integration-engine/commodity-providers/workers/tasks/FetchPpasMeasurementsTask.js.map +1 -1
- package/dist/integration-engine/commodity-providers/workers/tasks/FetchPreMeasurementDataTask.js +20 -31
- package/dist/integration-engine/commodity-providers/workers/tasks/FetchPreMeasurementDataTask.js.map +1 -1
- package/dist/integration-engine/commodity-providers/workers/tasks/FetchPtasWebScrapedMeasurementsTask.d.ts +1 -3
- package/dist/integration-engine/commodity-providers/workers/tasks/FetchPtasWebScrapedMeasurementsTask.js +27 -38
- package/dist/integration-engine/commodity-providers/workers/tasks/FetchPtasWebScrapedMeasurementsTask.js.map +1 -1
- package/dist/integration-engine/commodity-providers/workers/tasks/FetchVeoliaMeasurementsTask.js +46 -87
- package/dist/integration-engine/commodity-providers/workers/tasks/FetchVeoliaMeasurementsTask.js.map +1 -1
- package/dist/integration-engine/commodity-providers/workers/tasks/ProcessPreEanMeasurementsTask.js +13 -24
- package/dist/integration-engine/commodity-providers/workers/tasks/ProcessPreEanMeasurementsTask.js.map +1 -1
- package/dist/integration-engine/datasources/vpalace/BaseVpalaceFactory.js +8 -12
- package/dist/integration-engine/datasources/vpalace/BaseVpalaceFactory.js.map +1 -1
- package/dist/integration-engine/datasources/vpalace/VpalaceMeasurementDataSource.js +3 -14
- package/dist/integration-engine/datasources/vpalace/VpalaceMeasurementDataSource.js.map +1 -1
- package/dist/integration-engine/datasources/vpalace/VpalaceMeasuringEquipmentDataSource.js +3 -14
- package/dist/integration-engine/datasources/vpalace/VpalaceMeasuringEquipmentDataSource.js.map +1 -1
- package/dist/integration-engine/datasources/vpalace/VpalaceMeterTypeDataSource.js +3 -14
- package/dist/integration-engine/datasources/vpalace/VpalaceMeterTypeDataSource.js.map +1 -1
- package/dist/integration-engine/datasources/vpalace/VpalaceTypeMeasuringEquipmentDataSource.js +3 -14
- package/dist/integration-engine/datasources/vpalace/VpalaceTypeMeasuringEquipmentDataSource.js.map +1 -1
- package/dist/integration-engine/datasources/vpalace/VpalaceUnitsDataSource.js +3 -14
- package/dist/integration-engine/datasources/vpalace/VpalaceUnitsDataSource.js.map +1 -1
- package/dist/integration-engine/helpers/ParserHelpers.js +1 -1
- package/dist/integration-engine/helpers/ParserHelpers.js.map +1 -1
- package/dist/integration-engine/helpers/UnimonitorCemApiHelper.js +7 -17
- package/dist/integration-engine/helpers/UnimonitorCemApiHelper.js.map +1 -1
- package/dist/integration-engine/repositories/oict-energetika/AccessLimitationRepository.js +24 -36
- package/dist/integration-engine/repositories/oict-energetika/AccessLimitationRepository.js.map +1 -1
- package/dist/integration-engine/repositories/oict-energetika/ConsumptionRepository.js +3 -12
- package/dist/integration-engine/repositories/oict-energetika/ConsumptionRepository.js.map +1 -1
- package/dist/integration-engine/repositories/vpalace/VpalacUnitsRepository.js +4 -13
- package/dist/integration-engine/repositories/vpalace/VpalacUnitsRepository.js.map +1 -1
- package/dist/integration-engine/repositories/vpalace/VpalaceMeasurementRepository.js +4 -13
- package/dist/integration-engine/repositories/vpalace/VpalaceMeasurementRepository.js.map +1 -1
- package/dist/integration-engine/repositories/vpalace/VpalaceMeasuringEquipmentRepository.js +4 -13
- package/dist/integration-engine/repositories/vpalace/VpalaceMeasuringEquipmentRepository.js.map +1 -1
- package/dist/integration-engine/repositories/vpalace/VpalaceMeterTypeRepository.js +4 -13
- package/dist/integration-engine/repositories/vpalace/VpalaceMeterTypeRepository.js.map +1 -1
- package/dist/integration-engine/repositories/vpalace/VpalaceTypeMeasuringEquipmentRepository.js +4 -13
- package/dist/integration-engine/repositories/vpalace/VpalaceTypeMeasuringEquipmentRepository.js.map +1 -1
- package/dist/integration-engine/tasks/oict-energetika/FetchAccessConfigurationTask.js +3 -14
- package/dist/integration-engine/tasks/oict-energetika/FetchAccessConfigurationTask.js.map +1 -1
- package/dist/integration-engine/tasks/oict-energetika/FetchConsumptionTask.js +12 -23
- package/dist/integration-engine/tasks/oict-energetika/FetchConsumptionTask.js.map +1 -1
- package/dist/integration-engine/tasks/oict-energetika/FetchDataTask.js +4 -15
- package/dist/integration-engine/tasks/oict-energetika/FetchDataTask.js.map +1 -1
- package/dist/integration-engine/tasks/vpalace/FetchDateFactory.js +15 -26
- package/dist/integration-engine/tasks/vpalace/FetchDateFactory.js.map +1 -1
- package/dist/integration-engine/tasks/vpalace/FetchXDaysDataTask.js +18 -29
- package/dist/integration-engine/tasks/vpalace/FetchXDaysDataTask.js.map +1 -1
- package/dist/integration-engine/tasks/vpalace/FetchXHoursDataTask.js +15 -26
- package/dist/integration-engine/tasks/vpalace/FetchXHoursDataTask.js.map +1 -1
- package/dist/integration-engine/tasks/vpalace/MeasurementDataFetcher.js +5 -14
- package/dist/integration-engine/tasks/vpalace/MeasurementDataFetcher.js.map +1 -1
- package/dist/integration-engine/tasks/vpalace/MeasuringEquipmentFetcher.js +5 -14
- package/dist/integration-engine/tasks/vpalace/MeasuringEquipmentFetcher.js.map +1 -1
- package/dist/integration-engine/tasks/vpalace/MeterTypeFetcher.js +5 -14
- package/dist/integration-engine/tasks/vpalace/MeterTypeFetcher.js.map +1 -1
- package/dist/integration-engine/tasks/vpalace/TypeMeasuringEquipmentFetcher.js +5 -14
- package/dist/integration-engine/tasks/vpalace/TypeMeasuringEquipmentFetcher.js.map +1 -1
- package/dist/integration-engine/tasks/vpalace/UnitDataFetcher.js +5 -14
- package/dist/integration-engine/tasks/vpalace/UnitDataFetcher.js.map +1 -1
- package/dist/integration-engine/transformations/oict-energetika/ConsumptionTransformation.js +2 -11
- package/dist/integration-engine/transformations/oict-energetika/ConsumptionTransformation.js.map +1 -1
- package/dist/integration-engine/transformations/vpalace/VpalacMeasuringEquipmentTransformation.js +2 -11
- package/dist/integration-engine/transformations/vpalace/VpalacMeasuringEquipmentTransformation.js.map +1 -1
- package/dist/integration-engine/transformations/vpalace/VpalacMeterTypeTransformation.js +2 -11
- package/dist/integration-engine/transformations/vpalace/VpalacMeterTypeTransformation.js.map +1 -1
- package/dist/integration-engine/transformations/vpalace/VpalacTypeMeasuringEquipmentTransformation.js +2 -11
- package/dist/integration-engine/transformations/vpalace/VpalacTypeMeasuringEquipmentTransformation.js.map +1 -1
- package/dist/integration-engine/transformations/vpalace/VpalacUnitsTransformation.js +2 -11
- package/dist/integration-engine/transformations/vpalace/VpalacUnitsTransformation.js.map +1 -1
- package/dist/output-gateway/controllers/v2/AbstractController.js +6 -17
- package/dist/output-gateway/controllers/v2/AbstractController.js.map +1 -1
- package/dist/output-gateway/controllers/v2/BuildingsController.js +15 -24
- package/dist/output-gateway/controllers/v2/BuildingsController.js.map +1 -1
- package/dist/output-gateway/controllers/v2/V2DevicesController.js +8 -17
- package/dist/output-gateway/controllers/v2/V2DevicesController.js.map +1 -1
- package/dist/output-gateway/controllers/v2/V2MeasurementsController.js +18 -19
- package/dist/output-gateway/controllers/v2/V2MeasurementsController.js.map +1 -1
- package/dist/output-gateway/controllers/v2/V2OrganizationsController.js +9 -18
- package/dist/output-gateway/controllers/v2/V2OrganizationsController.js.map +1 -1
- package/dist/output-gateway/repositories/AccessLimitationRepository.js +13 -24
- package/dist/output-gateway/repositories/AccessLimitationRepository.js.map +1 -1
- package/dist/output-gateway/repositories/DevicesRepository.js +26 -39
- package/dist/output-gateway/repositories/DevicesRepository.js.map +1 -1
- package/dist/output-gateway/repositories/MeasurementRepository.js +49 -66
- package/dist/output-gateway/repositories/MeasurementRepository.js.map +1 -1
- package/dist/output-gateway/repositories/OrganizationBuildingsRepository.js +4 -17
- package/dist/output-gateway/repositories/OrganizationBuildingsRepository.js.map +1 -1
- package/dist/output-gateway/repositories/OrganizationResponsibleUsersRepository.js +4 -17
- package/dist/output-gateway/repositories/OrganizationResponsibleUsersRepository.js.map +1 -1
- package/dist/output-gateway/repositories/OrganizationsRepository.js +67 -82
- package/dist/output-gateway/repositories/OrganizationsRepository.js.map +1 -1
- package/dist/output-gateway/repositories/PrimaryBuildingsRepository.js +37 -52
- package/dist/output-gateway/repositories/PrimaryBuildingsRepository.js.map +1 -1
- package/dist/output-gateway/transformations/BuildingTransformationFull.js +114 -115
- package/dist/output-gateway/transformations/BuildingTransformationFull.js.map +1 -1
- package/dist/output-gateway/transformations/BuildingsTransformation.js +2 -3
- package/dist/output-gateway/transformations/BuildingsTransformation.js.map +1 -1
- package/dist/output-gateway/transformations/OrganizationDetailDtoTransformation.js +1 -2
- package/dist/output-gateway/transformations/OrganizationDetailDtoTransformation.js.map +1 -1
- package/dist/schema-definitions/datasources/interfaces/IStaticMeterSettings.d.ts +3 -0
- package/dist/schema-definitions/models/helpers/StaticDataResourceTypeEnum.d.ts +2 -1
- package/dist/schema-definitions/models/helpers/StaticDataResourceTypeEnum.js +1 -0
- package/dist/schema-definitions/models/helpers/StaticDataResourceTypeEnum.js.map +1 -1
- package/dist/schema-definitions/models/interfaces/IStaticDataOutputDto.d.ts +2 -1
- package/docs/implementation_documentation.md +1 -0
- package/package.json +4 -4
package/dist/integration-engine/commodity-providers/workers/tasks/FetchPpasMeasurementsTask.js
CHANGED
|
@@ -11,34 +11,6 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
12
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
13
|
};
|
|
14
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
15
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
16
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
17
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
18
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
19
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
20
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
21
|
-
});
|
|
22
|
-
};
|
|
23
|
-
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
24
|
-
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
25
|
-
var m = o[Symbol.asyncIterator], i;
|
|
26
|
-
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
27
|
-
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
28
|
-
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
29
|
-
};
|
|
30
|
-
var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
|
|
31
|
-
var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
|
|
32
|
-
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
33
|
-
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
|
34
|
-
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
|
|
35
|
-
function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
|
|
36
|
-
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
|
|
37
|
-
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
|
38
|
-
function fulfill(value) { resume("next", value); }
|
|
39
|
-
function reject(value) { resume("throw", value); }
|
|
40
|
-
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
|
|
41
|
-
};
|
|
42
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
15
|
exports.FetchPpasMeasurementsTask = void 0;
|
|
44
16
|
const CommodityProviderEnum_1 = require("../../datasources/helpers/CommodityProviderEnum");
|
|
@@ -68,54 +40,42 @@ let FetchPpasMeasurementsTask = exports.FetchPpasMeasurementsTask = class FetchP
|
|
|
68
40
|
this.queueTtl = 60 * 60 * 1000;
|
|
69
41
|
this.schema = PpasMeasurementsSchema_1.PpasMeasurementsValidationSchema;
|
|
70
42
|
}
|
|
71
|
-
execute(data) {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
const
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
for (const option of options) {
|
|
100
|
-
const consumptionBatch = measurements.map((item) => this.measurementTransformation.transformElement(Object.assign(Object.assign({}, item), option)));
|
|
101
|
-
consumptionData = consumptionData.concat(consumptionBatch);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
106
|
-
finally {
|
|
107
|
-
try {
|
|
108
|
-
if (!_d && !_a && (_b = measurementChunkGenerator_1.return)) yield _b.call(measurementChunkGenerator_1);
|
|
109
|
-
}
|
|
110
|
-
finally { if (e_1) throw e_1.error; }
|
|
43
|
+
async execute(data) {
|
|
44
|
+
let measurementOptions = await this.meterSettingsRepository.getData(data.providerType, StaticDataResourceTypeEnum_1.StaticDataResourceType.MeasurementOptions);
|
|
45
|
+
if (!measurementOptions) {
|
|
46
|
+
throw new golemio_errors_1.GeneralError("Measurement options not found", this.constructor.name);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
measurementOptions = this.splitOptionsByVars(measurementOptions);
|
|
50
|
+
}
|
|
51
|
+
const { baseUrl, config } = this.getProviderConfig(data);
|
|
52
|
+
const aveApiHelper = new PpasAveApiHelper_1.PpasAveApiHelper(baseUrl, config);
|
|
53
|
+
const sessionId = await aveApiHelper.createSession();
|
|
54
|
+
try {
|
|
55
|
+
const places = await this.getDataFromDataSource("Places", sessionId);
|
|
56
|
+
let consumptionData = [];
|
|
57
|
+
for (const place of places) {
|
|
58
|
+
const options = measurementOptions.filter((item) => item.MeterSerialNumber === place.DeviceSerialNumber);
|
|
59
|
+
if (options.length === 0) {
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
this.logger.info(`Fetching data for device ${place.DeviceSerialNumber}`);
|
|
63
|
+
const measurementChunkGenerator = this.generateMeasurements({ ...data, placeId: place.Id }, sessionId);
|
|
64
|
+
for await (const measurements of measurementChunkGenerator) {
|
|
65
|
+
for (const option of options) {
|
|
66
|
+
const consumptionBatch = measurements.map((item) => this.measurementTransformation.transformElement({
|
|
67
|
+
...item,
|
|
68
|
+
...option,
|
|
69
|
+
}));
|
|
70
|
+
consumptionData = consumptionData.concat(consumptionBatch);
|
|
111
71
|
}
|
|
112
72
|
}
|
|
113
|
-
yield this.saveConsumptionData(consumptionData);
|
|
114
73
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
74
|
+
await this.saveConsumptionData(consumptionData);
|
|
75
|
+
}
|
|
76
|
+
finally {
|
|
77
|
+
await aveApiHelper.terminateSession(sessionId);
|
|
78
|
+
}
|
|
119
79
|
}
|
|
120
80
|
getProviderConfig(data) {
|
|
121
81
|
return {
|
|
@@ -128,28 +88,26 @@ let FetchPpasMeasurementsTask = exports.FetchPpasMeasurementsTask = class FetchP
|
|
|
128
88
|
let result = [];
|
|
129
89
|
for (const option of options) {
|
|
130
90
|
const vars = option.Var.split("|");
|
|
131
|
-
result = result.concat(vars.map((v) => (
|
|
91
|
+
result = result.concat(vars.map((v) => ({ ...option, Var: v })));
|
|
132
92
|
}
|
|
133
93
|
return result;
|
|
134
94
|
}
|
|
135
|
-
generateMeasurements(data, sessionId) {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
}
|
|
152
|
-
});
|
|
95
|
+
async *generateMeasurements(data, sessionId) {
|
|
96
|
+
const dateFrom = luxon_1.DateTime.fromISO(data.dateFrom).startOf("day");
|
|
97
|
+
const dateTo = luxon_1.DateTime.fromISO(data.dateTo).startOf("day");
|
|
98
|
+
const intervals = luxon_1.Interval.fromDateTimes(dateFrom, dateTo).splitBy({ days: 5 });
|
|
99
|
+
for (const interval of intervals) {
|
|
100
|
+
const start = interval.start.startOf("day");
|
|
101
|
+
const end = interval.end.startOf("day");
|
|
102
|
+
yield this.getDataFromDataSource("DeviceData", sessionId, {
|
|
103
|
+
placeId: data.placeId,
|
|
104
|
+
dateFrom: start.toISODate(),
|
|
105
|
+
dateTo: end.toISODate(),
|
|
106
|
+
isoDate: "1",
|
|
107
|
+
// fill all measurement values (we need the OperatingAmount and ConvertDifference values)
|
|
108
|
+
dataType: AveDataTypeEnum_1.AveDataType.RawData.toString(),
|
|
109
|
+
});
|
|
110
|
+
}
|
|
153
111
|
}
|
|
154
112
|
getDataFromDataSource(resourceTypeKey, sessionId, params) {
|
|
155
113
|
const dataSource = this.dataSourceFactory.getDataSource(CommodityProviderEnum_1.CommodityProvider.PpasInternetAveApi, PpasAveApiHelper_1.PpasAveApiHelper.resourceType[resourceTypeKey], sessionId, params);
|
package/dist/integration-engine/commodity-providers/workers/tasks/FetchPpasMeasurementsTask.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FetchPpasMeasurementsTask.js","sourceRoot":"","sources":["../../../../../src/integration-engine/commodity-providers/workers/tasks/FetchPpasMeasurementsTask.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FetchPpasMeasurementsTask.js","sourceRoot":"","sources":["../../../../../src/integration-engine/commodity-providers/workers/tasks/FetchPpasMeasurementsTask.ts"],"names":[],"mappings":"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"}
|
package/dist/integration-engine/commodity-providers/workers/tasks/FetchPreMeasurementDataTask.js
CHANGED
|
@@ -11,15 +11,6 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
12
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
13
|
};
|
|
14
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
15
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
16
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
17
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
18
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
19
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
20
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
21
|
-
});
|
|
22
|
-
};
|
|
23
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
15
|
exports.FetchPreMeasurementDataTask = void 0;
|
|
25
16
|
const constants_1 = require("../../constants");
|
|
@@ -47,30 +38,28 @@ let FetchPreMeasurementDataTask = exports.FetchPreMeasurementDataTask = class Fe
|
|
|
47
38
|
this.queueName = "fetchPreElectroMeasurementsTask";
|
|
48
39
|
this.queueTtl = 60 * 60 * 1000;
|
|
49
40
|
}
|
|
50
|
-
execute(data) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
continue;
|
|
67
|
-
}
|
|
68
|
-
const consumptionData = this.transformation.transformElement({ option, measurement });
|
|
69
|
-
batch.push(consumptionData);
|
|
41
|
+
async execute(data) {
|
|
42
|
+
const measurementOptions = await this.meterSettingsRepository.getData(CommodityProviderTypeEnum_1.CommodityProviderType.PreOptions, StaticDataResourceTypeEnum_1.StaticDataResourceType.MeasurementOptions);
|
|
43
|
+
if (!measurementOptions) {
|
|
44
|
+
throw new golemio_errors_1.GeneralError("Measurement options not found", this.constructor.name);
|
|
45
|
+
}
|
|
46
|
+
const files = await this.helper.filterFilesByDate(data.dateFrom, data.dateTo);
|
|
47
|
+
if (!files) {
|
|
48
|
+
throw new golemio_errors_1.GeneralError("No files to import", this.constructor.name);
|
|
49
|
+
}
|
|
50
|
+
for (const file of files) {
|
|
51
|
+
let batch = [];
|
|
52
|
+
const { data: measurements } = await this.dataSourceProvider.getMeasurements(file);
|
|
53
|
+
for (const measurement of measurements) {
|
|
54
|
+
const option = measurementOptions.find((item) => item.MeterSerialNumber === measurement["ELM"] && item.Meter === measurement["EAN"]);
|
|
55
|
+
if (!option) {
|
|
56
|
+
continue;
|
|
70
57
|
}
|
|
71
|
-
|
|
58
|
+
const consumptionData = this.transformation.transformElement({ option, measurement });
|
|
59
|
+
batch.push(consumptionData);
|
|
72
60
|
}
|
|
73
|
-
|
|
61
|
+
await this.measurementRepository.bulkSave(batch);
|
|
62
|
+
}
|
|
74
63
|
}
|
|
75
64
|
};
|
|
76
65
|
exports.FetchPreMeasurementDataTask = FetchPreMeasurementDataTask = __decorate([
|
package/dist/integration-engine/commodity-providers/workers/tasks/FetchPreMeasurementDataTask.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FetchPreMeasurementDataTask.js","sourceRoot":"","sources":["../../../../../src/integration-engine/commodity-providers/workers/tasks/FetchPreMeasurementDataTask.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FetchPreMeasurementDataTask.js","sourceRoot":"","sources":["../../../../../src/integration-engine/commodity-providers/workers/tasks/FetchPreMeasurementDataTask.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { PreElectroHelper } from "../../datasources/pre-elektro-api/helpers/PreElectroHelper";
|
|
2
1
|
import { MeasurementRepository } from "../../repositories/MeasurementRepository";
|
|
3
2
|
import { StaticMeterSettingsRepository } from "../../repositories/StaticMeterSettingsRepository";
|
|
4
3
|
import { PtasWebMeasurementTransformation } from "../../transformations/PtasWebMeasurementTransformation";
|
|
@@ -11,11 +10,10 @@ export declare class FetchPtasWebScrapedMeasurementsTask extends AbstractTaskJso
|
|
|
11
10
|
private meterSettingsRepository;
|
|
12
11
|
protected measurementRepository: MeasurementRepository;
|
|
13
12
|
protected transformation: PtasWebMeasurementTransformation;
|
|
14
|
-
protected helper: PreElectroHelper;
|
|
15
13
|
protected schema: JSONSchemaValidator;
|
|
16
14
|
readonly queueName = "savePtasMeasurements";
|
|
17
15
|
readonly queueTtl: number;
|
|
18
|
-
constructor(logger: ILogger, meterSettingsRepository: StaticMeterSettingsRepository, measurementRepository: MeasurementRepository, transformation: PtasWebMeasurementTransformation
|
|
16
|
+
constructor(logger: ILogger, meterSettingsRepository: StaticMeterSettingsRepository, measurementRepository: MeasurementRepository, transformation: PtasWebMeasurementTransformation);
|
|
19
17
|
protected execute(data: IPtasWebScrapingInput): Promise<void>;
|
|
20
18
|
private handleDuplicates;
|
|
21
19
|
}
|
|
@@ -11,19 +11,9 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
12
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
13
|
};
|
|
14
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
15
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
16
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
17
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
18
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
19
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
20
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
21
|
-
});
|
|
22
|
-
};
|
|
23
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
15
|
exports.FetchPtasWebScrapedMeasurementsTask = void 0;
|
|
25
16
|
const constants_1 = require("../../constants");
|
|
26
|
-
const PreElectroHelper_1 = require("../../datasources/pre-elektro-api/helpers/PreElectroHelper");
|
|
27
17
|
const WorkerContainerToken_1 = require("../../ioc/WorkerContainerToken");
|
|
28
18
|
const MeasurementRepository_1 = require("../../repositories/MeasurementRepository");
|
|
29
19
|
const StaticMeterSettingsRepository_1 = require("../../repositories/StaticMeterSettingsRepository");
|
|
@@ -37,43 +27,44 @@ const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
|
|
|
37
27
|
const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
|
|
38
28
|
const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
|
|
39
29
|
let FetchPtasWebScrapedMeasurementsTask = exports.FetchPtasWebScrapedMeasurementsTask = class FetchPtasWebScrapedMeasurementsTask extends AbstractTaskJsonSchema_1.AbstractTaskJsonSchema {
|
|
40
|
-
constructor(logger, meterSettingsRepository, measurementRepository, transformation
|
|
30
|
+
constructor(logger, meterSettingsRepository, measurementRepository, transformation) {
|
|
41
31
|
super(constants_1.WORKER_NAME);
|
|
42
32
|
this.logger = logger;
|
|
43
33
|
this.meterSettingsRepository = meterSettingsRepository;
|
|
44
34
|
this.measurementRepository = measurementRepository;
|
|
45
35
|
this.transformation = transformation;
|
|
46
|
-
this.helper = helper;
|
|
47
36
|
this.schema = new golemio_validator_1.JSONSchemaValidator("FetchPtasWebScrapedMeasurementsTask", PtasWebScrapingJsonSchema_1.ptasWebScrapingJsonSchema);
|
|
48
37
|
this.queueName = "savePtasMeasurements";
|
|
49
38
|
this.queueTtl = 60 * 60 * 1000;
|
|
50
39
|
}
|
|
51
|
-
execute(data) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
40
|
+
async execute(data) {
|
|
41
|
+
const measurementOptions = await this.meterSettingsRepository.getData(CommodityProviderTypeEnum_1.CommodityProviderType.PtasOptions, StaticDataResourceTypeEnum_1.StaticDataResourceType.MeasurementOptions);
|
|
42
|
+
if (!measurementOptions) {
|
|
43
|
+
throw new golemio_errors_1.GeneralError("Measurement options not found", this.constructor.name);
|
|
44
|
+
}
|
|
45
|
+
const selectedMeters = await this.meterSettingsRepository.getData(CommodityProviderTypeEnum_1.CommodityProviderType.PtasOptions, StaticDataResourceTypeEnum_1.StaticDataResourceType.SelectedMeters);
|
|
46
|
+
if (!selectedMeters) {
|
|
47
|
+
throw new golemio_errors_1.GeneralError("Static data of selected meters not found", this.constructor.name);
|
|
48
|
+
}
|
|
49
|
+
//podle původního scraperu z C# bereme pouze teplo horké vody
|
|
50
|
+
let hotWaterMeasurements = data.measurements.filter((item) => item["Druh registru"] === "Teplo horké vody");
|
|
51
|
+
hotWaterMeasurements = this.handleDuplicates(data["placeId"], hotWaterMeasurements, selectedMeters);
|
|
52
|
+
let batch = [];
|
|
53
|
+
for (const measurement of hotWaterMeasurements) {
|
|
54
|
+
const option = measurementOptions.find((item) => item.Meter === data["placeId"]);
|
|
55
|
+
if (!option) {
|
|
56
|
+
this.logger.warn(`Incoming Meter id ${data["placeId"]} is missing in the static data file (measurement options).`);
|
|
57
|
+
continue;
|
|
69
58
|
}
|
|
70
|
-
|
|
71
|
-
|
|
59
|
+
const consumptionData = this.transformation.transformElement({ option, measurement });
|
|
60
|
+
batch.push(consumptionData);
|
|
61
|
+
}
|
|
62
|
+
await this.measurementRepository.bulkSave(batch);
|
|
72
63
|
}
|
|
73
64
|
// temporary solution to finish project "převzetí energetické databáze"
|
|
74
|
-
handleDuplicates(placeId, measurements) {
|
|
75
|
-
if (placeId
|
|
76
|
-
return measurements.filter((item) => item["Výrobní číslo"] ===
|
|
65
|
+
handleDuplicates(placeId, measurements, selectedMeters) {
|
|
66
|
+
if (Object.keys(selectedMeters).includes(placeId)) {
|
|
67
|
+
return measurements.filter((item) => item["Výrobní číslo"] === selectedMeters[placeId]);
|
|
77
68
|
}
|
|
78
69
|
// create list of unique item["Výrobní číslo"]
|
|
79
70
|
const uniqueSerialNumbers = Array.from(new Set(measurements.map((item) => item["Výrobní číslo"])));
|
|
@@ -89,10 +80,8 @@ exports.FetchPtasWebScrapedMeasurementsTask = FetchPtasWebScrapedMeasurementsTas
|
|
|
89
80
|
__param(1, (0, tsyringe_1.inject)(WorkerContainerToken_1.WorkerContainerToken.StaticMeterSettingsRepository)),
|
|
90
81
|
__param(2, (0, tsyringe_1.inject)(WorkerContainerToken_1.WorkerContainerToken.MeasurementRepository)),
|
|
91
82
|
__param(3, (0, tsyringe_1.inject)(WorkerContainerToken_1.WorkerContainerToken.PtasWebMeasurementTransformation)),
|
|
92
|
-
__param(4, (0, tsyringe_1.inject)(WorkerContainerToken_1.WorkerContainerToken.PreElectroHelper)),
|
|
93
83
|
__metadata("design:paramtypes", [Object, StaticMeterSettingsRepository_1.StaticMeterSettingsRepository,
|
|
94
84
|
MeasurementRepository_1.MeasurementRepository,
|
|
95
|
-
PtasWebMeasurementTransformation_1.PtasWebMeasurementTransformation
|
|
96
|
-
PreElectroHelper_1.PreElectroHelper])
|
|
85
|
+
PtasWebMeasurementTransformation_1.PtasWebMeasurementTransformation])
|
|
97
86
|
], FetchPtasWebScrapedMeasurementsTask);
|
|
98
87
|
//# sourceMappingURL=FetchPtasWebScrapedMeasurementsTask.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FetchPtasWebScrapedMeasurementsTask.js","sourceRoot":"","sources":["../../../../../src/integration-engine/commodity-providers/workers/tasks/FetchPtasWebScrapedMeasurementsTask.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FetchPtasWebScrapedMeasurementsTask.js","sourceRoot":"","sources":["../../../../../src/integration-engine/commodity-providers/workers/tasks/FetchPtasWebScrapedMeasurementsTask.ts"],"names":[],"mappings":"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"}
|
package/dist/integration-engine/commodity-providers/workers/tasks/FetchVeoliaMeasurementsTask.js
CHANGED
|
@@ -11,34 +11,6 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
12
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
13
|
};
|
|
14
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
15
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
16
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
17
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
18
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
19
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
20
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
21
|
-
});
|
|
22
|
-
};
|
|
23
|
-
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
24
|
-
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
25
|
-
var m = o[Symbol.asyncIterator], i;
|
|
26
|
-
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
27
|
-
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
28
|
-
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
29
|
-
};
|
|
30
|
-
var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
|
|
31
|
-
var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
|
|
32
|
-
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
33
|
-
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
|
34
|
-
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
|
|
35
|
-
function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
|
|
36
|
-
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
|
|
37
|
-
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
|
38
|
-
function fulfill(value) { resume("next", value); }
|
|
39
|
-
function reject(value) { resume("throw", value); }
|
|
40
|
-
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
|
|
41
|
-
};
|
|
42
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
15
|
exports.FetchVeoliaMeasurementsTask = void 0;
|
|
44
16
|
const CommodityProviderEnum_1 = require("../../datasources/helpers/CommodityProviderEnum");
|
|
@@ -67,53 +39,42 @@ let FetchVeoliaMeasurementsTask = exports.FetchVeoliaMeasurementsTask = class Fe
|
|
|
67
39
|
this.queueTtl = 60 * 60 * 1000;
|
|
68
40
|
this.schema = VeoliaMeasurementsSchema_1.VeoliaMeasurementsValidationSchema;
|
|
69
41
|
}
|
|
70
|
-
execute(data) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
const consumptionBatch = measurements.map((item) => this.measurementTransformation.transformElement(Object.assign(Object.assign(Object.assign({}, item), options), { counterTypeId: counter.pot_id })));
|
|
99
|
-
consumptionData = consumptionData.concat(consumptionBatch);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
103
|
-
finally {
|
|
104
|
-
try {
|
|
105
|
-
if (!_d && !_a && (_b = measurementChunkGenerator_1.return)) yield _b.call(measurementChunkGenerator_1);
|
|
106
|
-
}
|
|
107
|
-
finally { if (e_1) throw e_1.error; }
|
|
108
|
-
}
|
|
42
|
+
async execute(data) {
|
|
43
|
+
const measurementOptions = await this.meterSettingsRepository.getData(data.providerType, StaticDataResourceTypeEnum_1.StaticDataResourceType.MeasurementOptions);
|
|
44
|
+
if (!measurementOptions) {
|
|
45
|
+
throw new golemio_errors_1.GeneralError("Measurement options not found", this.constructor.name);
|
|
46
|
+
}
|
|
47
|
+
const { url, config } = this.getProviderConfig(data);
|
|
48
|
+
const cemApiHelper = new helpers_1.UnimonitorCemApiHelper(url, config);
|
|
49
|
+
const authCookie = await cemApiHelper.createSession();
|
|
50
|
+
try {
|
|
51
|
+
const devices = await this.getDataFromDataSource("Devices", authCookie);
|
|
52
|
+
const counters = await this.getDataFromDataSource("Counters", authCookie);
|
|
53
|
+
let consumptionData = [];
|
|
54
|
+
for (const device of devices) {
|
|
55
|
+
const options = measurementOptions.find((item) => item.MeterSerialNumber === device.me_serial);
|
|
56
|
+
if (!options) {
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
const relevantCounters = counters.filter((item) => item.me_id === device.me_id);
|
|
60
|
+
for (const counter of relevantCounters) {
|
|
61
|
+
this.logger.info(`Fetching data for device ${device.me_serial} and counter ${counter.var_id}`);
|
|
62
|
+
const measurementChunkGenerator = this.generateMeasurements({ ...data, counterId: counter.var_id }, authCookie);
|
|
63
|
+
for await (const measurements of measurementChunkGenerator) {
|
|
64
|
+
const consumptionBatch = measurements.map((item) => this.measurementTransformation.transformElement({
|
|
65
|
+
...item,
|
|
66
|
+
...options,
|
|
67
|
+
counterTypeId: counter.pot_id,
|
|
68
|
+
}));
|
|
69
|
+
consumptionData = consumptionData.concat(consumptionBatch);
|
|
109
70
|
}
|
|
110
71
|
}
|
|
111
|
-
yield this.saveConsumptionData(consumptionData, true);
|
|
112
72
|
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
73
|
+
await this.saveConsumptionData(consumptionData, true);
|
|
74
|
+
}
|
|
75
|
+
finally {
|
|
76
|
+
await cemApiHelper.terminateSession(authCookie);
|
|
77
|
+
}
|
|
117
78
|
}
|
|
118
79
|
getProviderConfig(data) {
|
|
119
80
|
return {
|
|
@@ -121,21 +82,19 @@ let FetchVeoliaMeasurementsTask = exports.FetchVeoliaMeasurementsTask = class Fe
|
|
|
121
82
|
config: this.config.getValue(`module.energetics.commodityProviders.${data.providerType}`),
|
|
122
83
|
};
|
|
123
84
|
}
|
|
124
|
-
generateMeasurements(data, authCookie) {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
}
|
|
138
|
-
});
|
|
85
|
+
async *generateMeasurements(data, authCookie) {
|
|
86
|
+
const dateFrom = luxon_1.DateTime.fromISO(data.dateFrom).startOf("day");
|
|
87
|
+
const dateTo = luxon_1.DateTime.fromISO(data.dateTo).startOf("day");
|
|
88
|
+
const intervals = luxon_1.Interval.fromDateTimes(dateFrom, dateTo).splitBy({ days: 5 });
|
|
89
|
+
for (const interval of intervals) {
|
|
90
|
+
const start = interval.start.startOf("day");
|
|
91
|
+
const end = interval.end.startOf("day");
|
|
92
|
+
yield this.getDataFromDataSource("MeasurementsByCounter", authCookie, {
|
|
93
|
+
counterId: data.counterId,
|
|
94
|
+
dateFrom: start.toISODate(),
|
|
95
|
+
dateTo: end.toISODate(),
|
|
96
|
+
});
|
|
97
|
+
}
|
|
139
98
|
}
|
|
140
99
|
getDataFromDataSource(resourceTypeKey, authCookie, params) {
|
|
141
100
|
const dataSource = this.dataSourceFactory.getDataSource(CommodityProviderEnum_1.CommodityProvider.UnimonitorCemApi, helpers_1.UnimonitorCemApiHelper.resourceType[resourceTypeKey], authCookie, params);
|