55 lines
1.9 KiB
Python
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 |