FlowAnalyser/koerselsOverblikUtils.py
Dennis Kerschus 5b0b3badbb m
2023-09-05 09:48:55 +02:00

55 lines
1.9 KiB
Python

from datetime import datetime
from typing import List
from sysjobs import Sysjobs
class SysjobsAlike:
name=None
startTime=None
endTime=None
stepId=None
antalDage=None
ugeDage=None
def __init__(self,name):
self.name=name
def getName(self):
return self.name
def getMedianDag(self,stepId,antalDage,ugeDage):
medianDag=[self.startTime,self.endTime]
return medianDag
def mergeOneMore(self,sysjobs:Sysjobs):
medianDag=sysjobs.getMedianDag(self.stepId,self.antalDage,self.ugeDage)
if self.startTime>medianDag[0]:
self.startTime=medianDag[0]
if self.endTime<medianDag[1]:
self.endTime=medianDag[1]
def timeRangeMerge(mainList : List['Sysjobs'], name,stepId,antalDage,ugeDage):
sysjobalike = SysjobsAlike(name)
sysjobalike.stepId=stepId
sysjobalike.antalDage=antalDage
sysjobalike.ugeDage=ugeDage
for job in mainList:
medianDag=job.getMedianDag(stepId,antalDage,ugeDage)
if sysjobalike.startTime is None or sysjobalike.startTime>medianDag[0]:
sysjobalike.startTime=medianDag[0]
if sysjobalike.endTime is None or sysjobalike.endTime<medianDag[1]:
sysjobalike.endTime=medianDag[1]
return sysjobalike
def convertToAlike(mainList : List,stepId,antalDage,ugeDage):
returnList=[]
for job in mainList:
if not isinstance(job,Sysjobs) and isinstance(job[0],Sysjobs):
job=job[0]
jobAlike=SysjobsAlike(job.name)
jobAlike.stepId=stepId
jobAlike.antalDage=antalDage
jobAlike.ugeDage=ugeDage
medianDag=job.getMedianDag(stepId,antalDage,ugeDage)
if len(medianDag)==0:
continue
jobAlike.startTime=medianDag[0]
jobAlike.endTime=medianDag[1]
returnList.append(jobAlike)
return returnList