Files
picking-route/utils/batch/mapping_batch.py
2021-11-01 23:12:52 +01:00

30 lines
1.1 KiB
Python

import numpy as np
import pandas as pd
import itertools
from ast import literal_eval
def orderlines_mapping(df_orderlines, orders_number):
'''Mapping orders with wave number'''
df_orderlines.sort_values(by='DATE', ascending = True, inplace = True)
# Unique order numbers list
list_orders = df_orderlines.OrderNumber.unique()
dict_map = dict(zip(list_orders, [i for i in range(1, len(list_orders))]))
# Order ID mapping
df_orderlines['OrderID'] = df_orderlines['OrderNumber'].map(dict_map)
# Grouping Orders by Wave of orders_number
df_orderlines['WaveID'] = (df_orderlines.OrderID%orders_number == 0).shift(1).fillna(0).cumsum()
# Counting number of Waves
waves_number = df_orderlines.WaveID.max() + 1
return df_orderlines, waves_number
def locations_listing(df_orderlines, wave_id):
'''Getting storage locations to cover for a wave of orders'''
df = df_orderlines[df_orderlines.WaveID == wave_id]
# Create coordinates listing
list_locs = list(df['Coord'].apply(lambda t: literal_eval(t)).values)
list_locs.sort()
# List of unique coordinates
list_locs = list(k for k,_ in itertools.groupby(list_locs))
n_locs = len(list_locs)
return list_locs, n_locs