Commit b9e38d62 authored by Georgios Dagkakis's avatar Georgios Dagkakis

Excel output for operator schedule

parent ebf3a7d6
......@@ -14,8 +14,58 @@ class BatchesOperatorSpreadsheet(plugin.OutputPreparationPlugin):
scheduleSheet.write(rowIndex,1,'Machine')
scheduleSheet.write(rowIndex,2,'Start Time')
scheduleSheet.write(rowIndex,3,'End Time')
rowIndex+=1
# get the result the the router gives
for element in data['result']['result_list'][-1]['elementList']:
if element['_class']=='Dream.SkilledRouter':
solutionList=element['results']['solutionList']
# create a list with all the operator ids that were at least in one allocation
operatorList=[]
for record in solutionList:
for key in record['allocation']:
if key not in operatorList:
operatorList.append(key)
# create for every operator a list like [time,machineId]. If the operator is not in the solution latter is to None
normalizedSchedule={}
for operator in operatorList:
operatorSchedule=[]
normalizedSchedule[operator]=[]
for record in solutionList:
time=record['time']
allocation=record['allocation']
machineId=None
if operator in allocation.keys():
machineId=allocation[operator]
operatorSchedule.append([time,machineId])
# now create a normalized schedule for the operator like [MachineId, EntranceTime, ExitTime]
k=0
for record in operatorSchedule:
normalizedSchedule[operator].append([record[1],record[0]])
for nextRecord in operatorSchedule[k+1:]:
if nextRecord[1]==record[1]:
operatorSchedule.remove(nextRecord)
else:
normalizedSchedule[operator][-1].append(nextRecord[0])
break
k+=1
# output the results in excel
for operator in normalizedSchedule.keys():
scheduleSheet.write(rowIndex,0,operator)
for record in normalizedSchedule[operator]:
# skip the records that have 'None'
if not record[0]:
continue
scheduleSheet.write(rowIndex,1,record[0])
scheduleSheet.write(rowIndex,2,record[1])
scheduleSheet.write(rowIndex,3,record[2])
rowIndex+=1
# return the workbook as encoded
scheduleStringIO = StringIO.StringIO()
scheduleFile.save(scheduleStringIO)
encodedScheduleFile=scheduleStringIO.getvalue().encode('base64')
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment