WellOperationStatService переименован

This commit is contained in:
goodmice 2021-11-29 15:15:58 +05:00
parent 5ad3bd5e07
commit 43a01bd57f
6 changed files with 74 additions and 73 deletions

View File

@ -25,7 +25,7 @@ interface TreeNodeData {
children?: TreeNodeData[]
}
export const WellTreeSelector = (): React.ReactNode => {
export const WellTreeSelector = () => {
const [wellsTree, setWellsTree] = useState<TreeNodeData[]>([])
const [showLoader, setShowLoader] = useState<boolean>(false)
const history = useHistory()

View File

@ -1,21 +1,20 @@
import { WellOperationStatService } from '../../services/api';
import { OperationStatService } from '../../services/api'
const maxPrefix = "isMax"
const minPrefix = "isMin"
const maxPrefix = 'isMax'
const minPrefix = 'isMin'
export const getPrecision = (number) => Number.isNaN(number ?? NaN) ? '-' : number.toFixed(2)
export const getOperations = async (idWell) => {
const ops = await WellOperationStatService.getTvd(idWell);
const ops = await OperationStatService.getTvd(idWell)
if (!ops) return [];
if (!ops) return []
const convert = wellOperationDto =>
({
key: wellOperationDto?.id,
depth: wellOperationDto?.depthStart,
date: wellOperationDto?.dateStart
})
const convert = wellOperationDto => ({
key: wellOperationDto?.id,
depth: wellOperationDto?.depthStart,
date: wellOperationDto?.dateStart
})
const planData = ops
.map(item => convert(item.plan))
@ -26,23 +25,23 @@ export const getOperations = async (idWell) => {
.filter(el => el.key)
const predictData = ops
.map(item => convert(item.predict))
.filter(el => el.key)
.map(item => convert(item.predict))
.filter(el => el.key)
return { operations: ops, plan: planData, fact: factData, predict: predictData }
}
}
export const makeFilterMinMaxFunction = (key) => (filterValue,
export const makeFilterMinMaxFunction = (key) => (filterValue,
dataItem) =>
filterValue === "max"
filterValue === 'max'
? dataItem[maxPrefix + key]
: filterValue === "min"
: filterValue === 'min'
? dataItem[minPrefix + key]
: false
export const calcAndUpdateStats = (data, keys) => {
let mins = {}
let maxs = {}
const mins = {}
const maxs = {}
keys.forEach((key) => {
maxs[key] = Number.MIN_VALUE
@ -52,7 +51,6 @@ export const calcAndUpdateStats = (data, keys) => {
data.forEach((item) => {
keys.forEach((key) => {
if (mins[key] > item[key]) mins[key] = item[key]
if (maxs[key] < item[key]) maxs[key] = item[key]
})
})
@ -64,7 +62,7 @@ export const calcAndUpdateStats = (data, keys) => {
})
}
}
export const calcAndUpdateStatsBySections = (data, keys) => {
const sectionTypes = new Set()
data.forEach((item) => sectionTypes.add(item.sectionType))

View File

@ -3,7 +3,7 @@ import { useState, useEffect } from 'react'
import ClusterWells from './ClusterWells'
import LoaderPortal from '../../components/LoaderPortal'
import { invokeWebApiWrapperAsync } from '../../components/factory'
import { WellOperationStatService } from '../../services/api'
import { OperationStatService } from '../../services/api'
export const Cluster = () => {
@ -13,7 +13,7 @@ export const Cluster = () => {
useEffect(() => invokeWebApiWrapperAsync(
async () => {
const clusterData = await WellOperationStatService.getStatCluster(idClaster)
const clusterData = await OperationStatService.getStatCluster(idClaster)
setData(clusterData?.statsWells ?? [])
},
setShowLoader,

View File

@ -1,16 +1,16 @@
import { useEffect, useState } from "react"
import { invokeWebApiWrapperAsync } from "../../../components/factory"
import LoaderPortal from "../../../components/LoaderPortal";
import { WellOperationStatService } from "../../../services/api";
import ClusterWells from "../../Cluster/ClusterWells";
import { useEffect, useState } from 'react'
import { invokeWebApiWrapperAsync } from '../../../components/factory'
import LoaderPortal from '../../../components/LoaderPortal'
import { OperationStatService } from '../../../services/api'
import ClusterWells from '../../Cluster/ClusterWells'
export const WellCompositeInfo = ({idWell, selectedIdWells}) => {
const [showLoader, setShowLoader] = useState(false);
const [statsWells, setStatsWells] = useState([]);
const [showLoader, setShowLoader] = useState(false)
const [statsWells, setStatsWells] = useState([])
useEffect(() => invokeWebApiWrapperAsync(
async () => {
const operations = await WellOperationStatService.getWellsStat(selectedIdWells)
const operations = await OperationStatService.getWellsStat(selectedIdWells)
setStatsWells(operations)
},
setShowLoader,

View File

@ -5,14 +5,14 @@ import { DepositService, WellCompositeService } from '../../../services/api'
import { invokeWebApiWrapperAsync } from '../../../components/factory'
import LoaderPortal from '../../../components/LoaderPortal'
import { WellCompositeSections } from './WellCompositeSections'
import { WellOperationStatService } from '../../../services/api'
import { OperationStatService } from '../../../services/api'
import ClusterWells from '../../Cluster/ClusterWells'
const { Content } = Layout
export const WellCompositeEditor = ({idWell}) => {
const { tab } = useParams()
const rootPath = `/well/${idWell}/operations/composite`;
const rootPath = `/well/${idWell}/operations/composite`
const [wellsTree, setWellsTree] = useState([])
const [showLoader, setShowLoader] = useState(false)
@ -68,7 +68,7 @@ export const WellCompositeEditor = ({idWell}) => {
useEffect(() => invokeWebApiWrapperAsync(
async () => {
const stats = await WellOperationStatService.getWellsStat(selectedIdWells)
const stats = await OperationStatService.getWellsStat(selectedIdWells)
setStatsWells(Array.isArray(stats) ? stats : [])
},
setShowTabLoader,
@ -98,24 +98,24 @@ export const WellCompositeEditor = ({idWell}) => {
</Col>
<Col span={6}>
<Menu
mode="horizontal"
mode={'horizontal'}
selectable={true}
className="well_menu"
className={'well_menu'}
selectedKeys={[tab]}
>
<Menu.Item key="wells">
<Menu.Item key={'wells'}>
<Link to={`${rootPath}/wells`}>Статистика по скважинам</Link>
</Menu.Item>
<Menu.Item key="sections">
<Menu.Item key={'sections'}>
<Link to={`${rootPath}/sections`}>Статистика по секциям</Link>
</Menu.Item>
</Menu>
</Col>
</Row>
<Layout>
<Content className="site-layout-background">
<Content className={'site-layout-background'}>
<LoaderPortal show={showTabLoader}>
<Switch>
<Switch>
<Route path={`${rootPath}/wells`}>
<ClusterWells statsWells={statsWells}/>
</Route>
@ -135,4 +135,4 @@ export const WellCompositeEditor = ({idWell}) => {
</Layout>
</LoaderPortal>
)
}
}

View File

@ -2,28 +2,28 @@ import { useState, useEffect } from 'react'
import LoaderPortal from '../../components/LoaderPortal'
import { invokeWebApiWrapperAsync } from '../../components/factory'
import { Table, makeColumn, makeColumnsPlanFact } from '../../components/Table'
import { WellOperationStatService } from '../../services/api'
import { OperationStatService } from '../../services/api'
const makeNumberRender = format => value => {
const makeNumberRender = value => {
const v = +value
if(Number.isFinite(v))
return v.toFixed(format)
return v.toFixed(2)
return '-'
}
const columns = [
makeColumn('Тип секции','sectionType'),
makeColumnsPlanFact('Глубина' ,'wellDepth', {render:makeNumberRender(2)}),
makeColumnsPlanFact('Часы' ,'duration', {render:makeNumberRender(2)}),
makeColumnsPlanFact('МСП' ,'rop', {render:makeNumberRender(2)}),
makeColumnsPlanFact('Рейсовая скорость' ,'routeSpeed', {render:makeNumberRender(2)}),
makeColumnsPlanFact('Подъем КНБК' ,'bhaUpSpeed', {render:makeNumberRender(2)}),
makeColumnsPlanFact('Спуск КНБК' ,'bhaDownSpeed', {render:makeNumberRender(2)}),
makeColumnsPlanFact('Спуск ОК' ,'casingDownSpeed', {render:makeNumberRender(2)}),
makeColumn('Тип секции', 'sectionType'),
makeColumnsPlanFact('Глубина' ,'wellDepth', {render:makeNumberRender}),
makeColumnsPlanFact('Часы' ,'duration', {render:makeNumberRender}),
makeColumnsPlanFact('МСП' ,'rop', {render:makeNumberRender}),
makeColumnsPlanFact('Рейсовая скорость' ,'routeSpeed', {render:makeNumberRender}),
makeColumnsPlanFact('Подъем КНБК' ,'bhaUpSpeed', {render:makeNumberRender}),
makeColumnsPlanFact('Спуск КНБК' ,'bhaDownSpeed', {render:makeNumberRender}),
makeColumnsPlanFact('Спуск ОК' ,'casingDownSpeed', {render:makeNumberRender}),
]
const calcDuration = (start, end) => {
const msInDay = 1000*60*60*24
const calcDuration = (start, end) => {
const msInDay = 1000 * 60 * 60 * 24
const startD = new Date(start)
const endD = new Date(end)
const ms = endD - startD
@ -36,11 +36,11 @@ export const WellSectionsStat = ({idWell}) => {
useEffect(() => invokeWebApiWrapperAsync(
async () => {
const sectionsResponse = await WellOperationStatService.getStatWell(idWell)
const sectionsResponse = await OperationStatService.getStatWell(idWell)
if(sectionsResponse?.sections){
const sections = sectionsResponse.sections
.map(s=>({
.map(s => ({
key: s.id,
sectionType: s.caption,
wellDepthPlan: s.plan?.wellDepthEnd,
@ -51,26 +51,29 @@ export const WellSectionsStat = ({idWell}) => {
bhaDownSpeedPlan: s.plan?.bhaDownSpeed,
casingDownSpeedPlan: s.plan?.casingDownSpeed,
wellDepthFact : s.fact?.wellDepthEnd,
durationFact : calcDuration(s.fact?.start, s.fact?.end),
ropFact : s.fact?.rop,
routeSpeedFact : s.fact?.routeSpeed,
bhaUpSpeedFact : s.fact?.bhaUpSpeed,
bhaDownSpeedFact : s.fact?.bhaDownSpeed,
casingDownSpeedFact : s.fact?.casingDownSpeed,
wellDepthFact: s.fact?.wellDepthEnd,
durationFact: calcDuration(s.fact?.start, s.fact?.end),
ropFact: s.fact?.rop,
routeSpeedFact: s.fact?.routeSpeed,
bhaUpSpeedFact: s.fact?.bhaUpSpeed,
bhaDownSpeedFact: s.fact?.bhaDownSpeed,
casingDownSpeedFact: s.fact?.casingDownSpeed,
}))
.sort((a,b) => a.wellDepthPlan - b.wellDepthPlan)
setSections(sections)
}
},
setShowLoader
),[idWell])
), [idWell])
return <LoaderPortal show={showLoader}>
<Table
bordered
size='small'
columns={columns}
dataSource={sections}/>
</LoaderPortal>
}
return (
<LoaderPortal show={showLoader}>
<Table
bordered
size={'small'}
columns={columns}
dataSource={sections}
/>
</LoaderPortal>
)
}