Commit 1cd8a6b3 authored by Georgios Dagkakis's avatar Georgios Dagkakis

Batch plugin to be able to work even if there are no operators

parent a63bfcbd
...@@ -18,55 +18,57 @@ class BatchesOperatorSpreadsheet(plugin.OutputPreparationPlugin): ...@@ -18,55 +18,57 @@ class BatchesOperatorSpreadsheet(plugin.OutputPreparationPlugin):
scheduleSheet.write(rowIndex,3,'End Time',headingStyle) scheduleSheet.write(rowIndex,3,'End Time',headingStyle)
rowIndex+=1 rowIndex+=1
solutionList=None
# get the result the the router gives # get the result the the router gives
for element in data['result']['result_list'][-1]['elementList']: for element in data['result']['result_list'][-1]['elementList']:
if element['_class']=='Dream.SkilledRouter': if element['_class']=='Dream.SkilledRouter':
solutionList=element['results']['solutionList'] solutionList=element['results']['solutionList']
# create a list with all the operator ids that were at least in one allocation if solutionList:
operatorList=[] # create a list with all the operator ids that were at least in one allocation
for record in solutionList: operatorList=[]
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: for record in solutionList:
time=record['time'] for key in record['allocation']:
allocation=record['allocation'] if key not in operatorList:
machineId=None operatorList.append(key)
if operator in allocation.keys():
machineId=allocation[operator] # create for every operator a list like [time,machineId]. If the operator is not in the solution latter is to None
operatorSchedule.append([time,machineId]) normalizedSchedule={}
for operator in operatorList:
# now create a normalized schedule for the operator like [MachineId, EntranceTime, ExitTime] operatorSchedule=[]
k=0 normalizedSchedule[operator]=[]
for record in operatorSchedule: for record in solutionList:
normalizedSchedule[operator].append([record[1],record[0]]) time=record['time']
for nextRecord in operatorSchedule[k+1:]: allocation=record['allocation']
if nextRecord[1]==record[1]: machineId=None
operatorSchedule.remove(nextRecord) if operator in allocation.keys():
else: machineId=allocation[operator]
normalizedSchedule[operator][-1].append(nextRecord[0]) operatorSchedule.append([time,machineId])
break
k+=1 # 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,PBstyle)
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
# output the results in excel
for operator in normalizedSchedule.keys():
scheduleSheet.write(rowIndex,0,operator,PBstyle)
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 # return the workbook as encoded
scheduleStringIO = StringIO.StringIO() scheduleStringIO = StringIO.StringIO()
scheduleFile.save(scheduleStringIO) scheduleFile.save(scheduleStringIO)
......
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