Commit 19784844 authored by Sebastien Robin's avatar Sebastien Robin

PartJobShop: handle prerequisites

parent ca6317a3
...@@ -119,11 +119,11 @@ ...@@ -119,11 +119,11 @@
"Due Date", "Due Date",
"Priority", "Priority",
"Project Manager", "Project Manager",
"Parts", "Part",
"Part Type", "Part Type",
"Sequence", "Sequence",
"Processing Times", "Processing Times",
"Electrodes Needed" "Prerequisites Parts"
] ]
]; ];
wip_part_spreadsheet.handsontable({ wip_part_spreadsheet.handsontable({
......
...@@ -220,11 +220,11 @@ ...@@ -220,11 +220,11 @@
"Due Date", "Due Date",
"Priority", "Priority",
"Project Manager", "Project Manager",
"Parts", "Part",
"Part Type", "Part Type",
"Sequence", "Sequence",
"Processing Times", "Processing Times",
"Electrodes Needed" "Prerequisites Parts"
], ],
[ [
"Order 1", "Order 1",
...@@ -234,7 +234,7 @@ ...@@ -234,7 +234,7 @@
"Mould1 Design", "Mould1 Design",
"Design", "Design",
"CAD", "CAD",
"3", "2",
null null
], ],
[ [
...@@ -257,7 +257,7 @@ ...@@ -257,7 +257,7 @@
"Basic", "Basic",
"CAM", "CAM",
"2", "2",
null ""
], ],
[ [
"Order 2", "Order 2",
......
...@@ -96,7 +96,7 @@ class Simulation(ACO.Simulation): ...@@ -96,7 +96,7 @@ class Simulation(ACO.Simulation):
print "getNotMachineNodePredecessorList, %r : %r" % (step_name, predecessor_list) print "getNotMachineNodePredecessorList, %r : %r" % (step_name, predecessor_list)
return predecessor_list return predecessor_list
def getRouteList(self, sequence_list, processing_time_list): def getRouteList(self, sequence_list, processing_time_list, prerequisite_list):
route_list = [] route_list = []
route_counter = 0 route_counter = 0
for j, sequence_step in enumerate(sequence_list): for j, sequence_step in enumerate(sequence_list):
...@@ -113,10 +113,17 @@ class Simulation(ACO.Simulation): ...@@ -113,10 +113,17 @@ class Simulation(ACO.Simulation):
"setupTime": {"setupDistribution": "Fixed", "setupTime": {"setupDistribution": "Fixed",
"setupMean": "0.5"}, # XXX hardcoded value "setupMean": "0.5"}, # XXX hardcoded value
} }
if prerequisite_list:
route["prerequisites"] = prerequisite_list
route_list.append(route) route_list.append(route)
route_counter += 1 route_counter += 1
return route_list return route_list
def getListFromString(self, my_string):
my_list = []
if not my_string in (None, ''):
my_list = my_string.split('-')
return my_list
def _preprocess(self, in_data): def _preprocess(self, in_data):
""" Set the WIP in queue from spreadsheet data. """ Set the WIP in queue from spreadsheet data.
...@@ -147,9 +154,10 @@ class Simulation(ACO.Simulation): ...@@ -147,9 +154,10 @@ class Simulation(ACO.Simulation):
order_dict = {} order_dict = {}
wip_list.append(order_dict) wip_list.append(order_dict)
order_id, due_date, priority, project_manager, part, part_type,\ order_id, due_date, priority, project_manager, part, part_type,\
sequence_list, processing_time_list, electrode_needed = value_list sequence_list, processing_time_list, prerequisite_string = value_list
print "evaluate due_date : %r" % (due_date,) print "evaluate due_date : %r" % (due_date,)
due_date = (datetime.strptime(due_date, '%Y/%m/%d') - now).days due_date = (datetime.strptime(due_date, '%Y/%m/%d') - now).days
prerequisite_list = self.getListFromString(prerequisite_string)
sequence_list = sequence_list.split('-') sequence_list = sequence_list.split('-')
processing_time_list = processing_time_list.split('-') processing_time_list = processing_time_list.split('-')
...@@ -159,7 +167,8 @@ class Simulation(ACO.Simulation): ...@@ -159,7 +167,8 @@ class Simulation(ACO.Simulation):
order_dict["name"] = order_id order_dict["name"] = order_id
# XXX make it dynamic by writing a function that will reuse the # XXX make it dynamic by writing a function that will reuse the
# code available a bit after # code available a bit after
order_dict["route"] = self.getRouteList(sequence_list, processing_time_list) order_dict["route"] = self.getRouteList(sequence_list, processing_time_list,
prerequisite_list)
i += 1 i += 1
component_list = [] component_list = []
if i < wip_part_spreadsheet_length: if i < wip_part_spreadsheet_length:
...@@ -169,8 +178,9 @@ class Simulation(ACO.Simulation): ...@@ -169,8 +178,9 @@ class Simulation(ACO.Simulation):
if value_list[4] in (None, ''): if value_list[4] in (None, ''):
break break
order_id, due_date, priority, project_manager, part, part_type,\ order_id, due_date, priority, project_manager, part, part_type,\
sequence_list, processing_time_list, electrode_needed = value_list sequence_list, processing_time_list, prerequisite_string = value_list
sequence_list = sequence_list.split('-') sequence_list = sequence_list.split('-')
prerequisite_list = self.getListFromString(prerequisite_string)
processing_time_list = processing_time_list.split('-') processing_time_list = processing_time_list.split('-')
component_dict = {} component_dict = {}
component_dict["_class"] = "Dream.OrderComponent" component_dict["_class"] = "Dream.OrderComponent"
...@@ -178,7 +188,8 @@ class Simulation(ACO.Simulation): ...@@ -178,7 +188,8 @@ class Simulation(ACO.Simulation):
component_dict["id"] = "%i" % i # XXX hack, we use it in UI to retrieve spreadsheet line component_dict["id"] = "%i" % i # XXX hack, we use it in UI to retrieve spreadsheet line
component_dict["name"] = part component_dict["name"] = part
component_list.append(component_dict) component_list.append(component_dict)
route_list = self.getRouteList(sequence_list, processing_time_list) route_list = self.getRouteList(sequence_list, processing_time_list,
prerequisite_list)
component_dict["route"] = route_list component_dict["route"] = route_list
i+=1 i+=1
order_dict["componentsList"] = component_list order_dict["componentsList"] = component_list
......
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