计算生产出货数据来源于那些工单、那些转道数据?先进先出原理

计算生产出货数据来源于那些工单、那些转道数据?
第一个表生产数据是同一个订单一个项次下开了3个工单3个工单分4次转道(转道的意思是转给物流准备发货了的意思),出货的时候只出了3批就把数据全出完了,第二张图是出货数据,想按照先转道先出的原理把出货数据匹配到生产数据,最终生产如下第三个表,能用python或者sql写出来吗?

img

https://blog.csdn.net/ZK_J1994/article/details/77717700

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7488913
  • 以下回答来自chatgpt:

    这道题目可以使用Python或SQL来实现。以下是基本的解决思路:

    1. 找到生产数据表和出货数据表的关键字段,将两个表格按照关键字段进行关联,以便进行后续的匹配操作。

    2. 对于生产数据,需要将同一个订单按项次开了三个工单的情况进行处理,可以使用group by语句来进行分组,以便后续统计操作。

    3. 对于出货数据,需要根据“先装运先出”原则进行排序,可以使用order by语句来实现。

    4. 在匹配生产数据和出货数据时,需要考虑转道时间和批次的对应关系。可以使用一些数据处理工具来进行匹配。在这里,我们可以使用pandas库来实现数据的处理。

    5. 匹配完成后,将结果保存到第三个表格中。

    下面是使用Python和pandas库实现上述任务的代码:

    import pandas as pd
    
    # 读取两个表格
    data_produce = pd.read_excel('生产数据.xlsx')
    data_shipment = pd.read_excel('出货数据.xlsx')
    
    # 对生产数据进行分组
    data_produce_grouped = data_produce.groupby(['订单号', '项次'])
    
    # 根据装运时间进行排序,并与生产数据进行匹配
    data_shipment_sorted = data_shipment.sort_values(by=['装运时间'])
    
    result = pd.DataFrame()
    for (order_no, item), group in data_produce_grouped:
        # group表示同一个订单号同一个项次的数据,需要对group进行匹配
        for i in range(4):
            # 按照顺序取出四个转道的数据
            group_subset = group[group['转道编号']==i+1].reset_index()
            if len(group_subset) == 0:
                continue
            # 找到与这个转道时间最近的出货数据
            timestamp = group_subset['计划时间'].iloc[-1]
            mask = data_shipment_sorted['装运时间']>timestamp
            if mask.sum() == 0:
                continue
            closest_shipment = data_shipment_sorted[mask].iloc[0]
            # 将生产数据和出货数据合并并加入到结果中
            production_result = group_subset.merge(pd.DataFrame(closest_shipment).T, how='outer')
            result = pd.concat([result, production_result])
    
    # 保存结果到第三个表格
    result.to_excel('匹配结果.xlsx', index=False)
    

    这段代码使用pandas库来进行数据处理和匹配,并将结果保存到一个新的表格中。注意,这里的代码仅仅是一种解决方案,实际情况中可能需要根据数据的具体情况进行适当调整。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^