diff --git a/src/pages/Archive/ArchiveDisplay.jsx b/src/pages/Archive/ArchiveDisplay.jsx index a370bf1..bcb6020 100644 --- a/src/pages/Archive/ArchiveDisplay.jsx +++ b/src/pages/Archive/ArchiveDisplay.jsx @@ -55,7 +55,7 @@ export const ArchiveDisplay = ({data, startDate, interval, onWheel}) => { style={{ width: '15vw' }} data={chartData} lineGroup={group} - interval={Math.round(interval / 1000)} + interval={interval} headerHeight={'50px'} yStart={startDate} /> diff --git a/src/pages/Archive/index.jsx b/src/pages/Archive/index.jsx index 01de787..2af7596 100644 --- a/src/pages/Archive/index.jsx +++ b/src/pages/Archive/index.jsx @@ -127,7 +127,7 @@ export default function Archive({idWell}) { if (loadingInterval <= 0) return invokeWebApiWrapperAsync( async () => { - const data = await TelemetryDataSaubService.getData(idWell, loadingStartDate.toISOString(), loadingInterval, DATA_COUNT) + const data = await TelemetryDataSaubService.getData(idWell, loadingStartDate.toISOString(), loadingInterval, parseInt(DATA_COUNT * loadingInterval / chartInterval)) const loadedStartDate = new Date(Math.max(+newLoaded.start, +startDate - chartInterval * ADDITIVE_PAGES)) const loadedEndDate = new Date(Math.min(+newLoaded.end, +startDate + chartInterval * (ADDITIVE_PAGES + 1))) @@ -164,7 +164,7 @@ export default function Archive({idWell}) {
Период:  - setChartInterval(parseInt(val) * 1000)} /> + setChartInterval(val * 1000)} />
diff --git a/src/pages/TelemetryView/MonitoringColumn.jsx b/src/pages/TelemetryView/MonitoringColumn.jsx index 7a0c79c..906bf36 100644 --- a/src/pages/TelemetryView/MonitoringColumn.jsx +++ b/src/pages/TelemetryView/MonitoringColumn.jsx @@ -33,7 +33,7 @@ export const MonitoringColumn = ({ lineGroup, data, flowChartData, interval, sho const [dataStore, setDataStore] = useState([]) const [lineGroupWithoutShapes, setLineGroupWithoutShapes] = useState([]) const dataLast = data?.[data.length - 1] - const yStart = new Date(+(dataLast?.date ? new Date(dataLast.date) : new Date()) - interval * 1000 * 0.97) + const yStart = new Date(+(dataLast?.date ? new Date(dataLast.date) : new Date()) - interval * 0.97) const pv = lineGroup.filter(line => line.showLabels).map(line => ({ color: line.color, label: line.label, diff --git a/src/pages/TelemetryView/index.jsx b/src/pages/TelemetryView/index.jsx index 2f23ec2..0da3904 100644 --- a/src/pages/TelemetryView/index.jsx +++ b/src/pages/TelemetryView/index.jsx @@ -16,16 +16,16 @@ import { TelemetryDataSpinService, WellService } from '../../services/api' +import { makeDateSorter } from '../../components/Table' import { invokeWebApiWrapperAsync } from '../../components/factory' +import { PeriodPicker, defaultPeriod } from '../../components/PeriodPicker' import MomentStabPicEnabled from '../../images/DempherOn.png' import MomentStabPicDisabled from '../../images/DempherOff.png' import SpinPicEnabled from '../../images/SpinEnabled.png' import SpinPicDisabled from '../../images/SpinDisabled.png' -import { PeriodPicker, defaultPeriod } from '../../components/PeriodPicker' import '../../styles/message.css' -import { makeDateSorter } from '../../components/Table' const { Option } = Select @@ -398,7 +398,7 @@ export default function TelemetryView({ idWell }) { data={dataSaub} flowChartData={flowChartData} lineGroup={group} - interval={chartInterval} + interval={chartInterval * 1000} headerHeight={'50px'} showBorder={getIndexOfDrillingBy(dataSaub) === index} /> diff --git a/src/services/api/index.ts b/src/services/api/index.ts index 2a11d14..288bdbe 100644 --- a/src/services/api/index.ts +++ b/src/services/api/index.ts @@ -7,6 +7,7 @@ export { OpenAPI } from './core/OpenAPI'; export type { AuthDto } from './models/AuthDto'; export type { ClusterDto } from './models/ClusterDto'; export type { ClusterDtoPaginationContainer } from './models/ClusterDtoPaginationContainer'; +export type { ClusterRopStatDto } from './models/ClusterRopStatDto'; export type { CompanyDto } from './models/CompanyDto'; export type { CompanyDtoPaginationContainer } from './models/CompanyDtoPaginationContainer'; export type { DatesRangeDto } from './models/DatesRangeDto'; @@ -36,6 +37,7 @@ export type { TelemetryMessageDto } from './models/TelemetryMessageDto'; export type { TelemetryOperationDto } from './models/TelemetryOperationDto'; export type { TelemetryOperationDtoPaginationContainer } from './models/TelemetryOperationDtoPaginationContainer'; export type { TelemetryOperationDurationDto } from './models/TelemetryOperationDurationDto'; +export type { TelemetryTimeZoneDto } from './models/TelemetryTimeZoneDto'; export type { TelemetryUserDto } from './models/TelemetryUserDto'; export type { UserDto } from './models/UserDto'; export type { UserDtoPaginationContainer } from './models/UserDtoPaginationContainer'; @@ -61,6 +63,7 @@ export { AdminUserRoleService } from './services/AdminUserRoleService'; export { AdminUserService } from './services/AdminUserService'; export { AdminWellService } from './services/AdminWellService'; export { AuthService } from './services/AuthService'; +export { ClusterOperationStatService } from './services/ClusterOperationStatService'; export { ClusterService } from './services/ClusterService'; export { DepositService } from './services/DepositService'; export { DrillFlowChartService } from './services/DrillFlowChartService'; diff --git a/src/services/api/models/ClusterRopStatDto.ts b/src/services/api/models/ClusterRopStatDto.ts new file mode 100644 index 0000000..ed29adb --- /dev/null +++ b/src/services/api/models/ClusterRopStatDto.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type ClusterRopStatDto = { + ropMax?: number; + ropAverage?: number; +} diff --git a/src/services/api/models/TelemetryTimeZoneDto.ts b/src/services/api/models/TelemetryTimeZoneDto.ts new file mode 100644 index 0000000..1e9056b --- /dev/null +++ b/src/services/api/models/TelemetryTimeZoneDto.ts @@ -0,0 +1,9 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type TelemetryTimeZoneDto = { + hours?: number; + timeZoneId?: string | null; + isOverride?: boolean; +} diff --git a/src/services/api/services/ClusterOperationStatService.ts b/src/services/api/services/ClusterOperationStatService.ts new file mode 100644 index 0000000..a15eb9b --- /dev/null +++ b/src/services/api/services/ClusterOperationStatService.ts @@ -0,0 +1,25 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { ClusterRopStatDto } from '../models/ClusterRopStatDto'; +import { request as __request } from '../core/request'; + +export class ClusterOperationStatService { + + /** + * Формирует данные по среднему и максимальному МСП на кусту + * @param idWell id скважины с данного куста (через нее будут полуены данные) + * @returns ClusterRopStatDto Success + * @throws ApiError + */ + public static async getClusterRopStat( + idWell: number, + ): Promise { + const result = await __request({ + method: 'GET', + path: `/api/cluster/${idWell}/ropStat`, + }); + return result.body; + } + +} \ No newline at end of file diff --git a/src/services/api/services/MessageService.ts b/src/services/api/services/MessageService.ts index 09b71d5..1da86dd 100644 --- a/src/services/api/services/MessageService.ts +++ b/src/services/api/services/MessageService.ts @@ -16,6 +16,7 @@ export class MessageService { * @param begin дата начала * @param end окончание * @param searchString Строка поиска + * @param isUtc Даты в формате UTC или часового пояса скважины * @returns MessageDtoPaginationContainer Success * @throws ApiError */ @@ -27,6 +28,7 @@ export class MessageService { begin?: string, end?: string, searchString?: string, + isUtc: boolean = true, ): Promise { const result = await __request({ method: 'GET', @@ -38,6 +40,7 @@ export class MessageService { 'begin': begin, 'end': end, 'searchString': searchString, + 'isUtc': isUtc, }, }); return result.body; @@ -46,15 +49,20 @@ export class MessageService { /** * Выдает список сообщений по скважине * @param idWell id скважины + * @param isUtc Смена дат с UTC формата на часовой пояс скважины * @returns DatesRangeDto Success * @throws ApiError */ public static async getMessagesDateRange( idWell: number, + isUtc: boolean = true, ): Promise { const result = await __request({ method: 'GET', path: `/api/well/${idWell}/message/datesRange`, + query: { + 'isUtc': isUtc, + }, }); return result.body; } diff --git a/src/services/api/services/ReportService.ts b/src/services/api/services/ReportService.ts index cc99805..343ea05 100644 --- a/src/services/api/services/ReportService.ts +++ b/src/services/api/services/ReportService.ts @@ -117,15 +117,20 @@ export class ReportService { /** * Возвращает даты самого старого и самого свежего отчетов в БД * @param idWell id скважины + * @param isUtc Смена дат с UTC формата на часовой пояс скважины * @returns DatesRangeDto Success * @throws ApiError */ public static async getReportsDateRange( idWell: number, + isUtc: boolean = true, ): Promise { const result = await __request({ method: 'GET', path: `/api/well/${idWell}/report/datesRange`, + query: { + 'isUtc': isUtc, + }, }); return result.body; } diff --git a/src/services/api/services/TelemetryAnalyticsService.ts b/src/services/api/services/TelemetryAnalyticsService.ts index d1d2d9f..bd412d8 100644 --- a/src/services/api/services/TelemetryAnalyticsService.ts +++ b/src/services/api/services/TelemetryAnalyticsService.ts @@ -134,15 +134,20 @@ export class TelemetryAnalyticsService { /** * Возвращает даты первой и последней операций на скважине * @param idWell id скважины + * @param isUtc Смена дат с UTC формата на часовой пояс скважины * @returns DatesRangeDto Success * @throws ApiError */ public static async getOperationsDateRange( idWell: number, + isUtc: boolean = true, ): Promise { const result = await __request({ method: 'GET', path: `/api/well/${idWell}/telemetryAnalytics/datesRange`, + query: { + 'isUtc': isUtc, + }, }); return result.body; } diff --git a/src/services/api/services/TelemetryDataSaubService.ts b/src/services/api/services/TelemetryDataSaubService.ts index 0503708..ee6adc1 100644 --- a/src/services/api/services/TelemetryDataSaubService.ts +++ b/src/services/api/services/TelemetryDataSaubService.ts @@ -33,6 +33,7 @@ export class TelemetryDataSaubService { * @param begin дата начала выборки. По умолчанию: текущее время - intervalSec * @param intervalSec интервал времени даты начала выборки, секунды * @param approxPointsCount желаемое количество точек. Если в выборке точек будет больше, то выборка будет прорежена. + * @param isUtc Даты в формате UTC или часового пояса скважины * @returns TelemetryDataSaubDto Success * @throws ApiError */ @@ -41,6 +42,7 @@ export class TelemetryDataSaubService { begin?: string, intervalSec: number = 600, approxPointsCount: number = 1024, + isUtc: boolean = false, ): Promise { const result = await __request({ method: 'GET', @@ -49,6 +51,7 @@ export class TelemetryDataSaubService { 'begin': begin, 'intervalSec': intervalSec, 'approxPointsCount': approxPointsCount, + 'isUtc': isUtc, }, }); return result.body; @@ -57,15 +60,20 @@ export class TelemetryDataSaubService { /** * Возвращает диапазон дат сохраненных данных. * @param idWell id скважины + * @param isUtc Смена дат с UTC формата на часовой пояс скважины * @returns DatesRangeDto Success * @throws ApiError */ public static async getDataDatesRange( idWell: number, + isUtc: boolean = false, ): Promise { const result = await __request({ method: 'GET', path: `/api/TelemetryDataSaub/${idWell}/datesRange`, + query: { + 'isUtc': isUtc, + }, }); return result.body; } diff --git a/src/services/api/services/TelemetryDataSpinService.ts b/src/services/api/services/TelemetryDataSpinService.ts index b01606d..7a0fd7a 100644 --- a/src/services/api/services/TelemetryDataSpinService.ts +++ b/src/services/api/services/TelemetryDataSpinService.ts @@ -33,6 +33,7 @@ export class TelemetryDataSpinService { * @param begin дата начала выборки. По умолчанию: текущее время - intervalSec * @param intervalSec интервал времени даты начала выборки, секунды * @param approxPointsCount желаемое количество точек. Если в выборке точек будет больше, то выборка будет прорежена. + * @param isUtc Даты в формате UTC или часового пояса скважины * @returns TelemetryDataSpinDto Success * @throws ApiError */ @@ -41,6 +42,7 @@ export class TelemetryDataSpinService { begin?: string, intervalSec: number = 600, approxPointsCount: number = 1024, + isUtc: boolean = false, ): Promise { const result = await __request({ method: 'GET', @@ -49,6 +51,7 @@ export class TelemetryDataSpinService { 'begin': begin, 'intervalSec': intervalSec, 'approxPointsCount': approxPointsCount, + 'isUtc': isUtc, }, }); return result.body; @@ -57,15 +60,20 @@ export class TelemetryDataSpinService { /** * Возвращает диапазон дат сохраненных данных. * @param idWell id скважины + * @param isUtc Смена дат с UTC формата на часовой пояс скважины * @returns DatesRangeDto Success * @throws ApiError */ public static async getDataDatesRange( idWell: number, + isUtc: boolean = false, ): Promise { const result = await __request({ method: 'GET', path: `/api/TelemetryDataSpin/${idWell}/datesRange`, + query: { + 'isUtc': isUtc, + }, }); return result.body; } diff --git a/src/services/api/services/TelemetryService.ts b/src/services/api/services/TelemetryService.ts index c00b1c8..405dd97 100644 --- a/src/services/api/services/TelemetryService.ts +++ b/src/services/api/services/TelemetryService.ts @@ -4,6 +4,7 @@ import type { EventDto } from '../models/EventDto'; import type { TelemetryInfoDto } from '../models/TelemetryInfoDto'; import type { TelemetryMessageDto } from '../models/TelemetryMessageDto'; +import type { TelemetryTimeZoneDto } from '../models/TelemetryTimeZoneDto'; import type { TelemetryUserDto } from '../models/TelemetryUserDto'; import { request as __request } from '../core/request'; @@ -12,7 +13,7 @@ export class TelemetryService { /** * Принимает общую информацию по скважине * @param uid Уникальный идентификатор отправителя - * @param requestBody нформация об отправителе + * @param requestBody Информация об отправителе * @returns any Success * @throws ApiError */ @@ -28,6 +29,25 @@ export class TelemetryService { return result.body; } + /** + * Обновляет часовой пояс скважины + * @param uid Уникальный идентификатор отправителя + * @param requestBody Информация о часовом поясе + * @returns any Success + * @throws ApiError + */ + public static async updateTimeZone( + uid: string, + requestBody?: TelemetryTimeZoneDto, + ): Promise { + const result = await __request({ + method: 'POST', + path: `/api/telemetry/${uid}/timeZone`, + body: requestBody, + }); + return result.body; + } + /** * Принимает список новых сообщений от телеметрии * @param uid Уникальный идентификатор отправителя