自动生产代码解析

发布时间 2024-01-07 17:23:53作者: 神行乌龟

 

Order_id 是前端获取的订单的编号

Order_time是要用的暂时存储开始时间

Maxtime 用来计算该项目最后完成的时间

Producelist存储工序信息

Worklist 存储员工信息

Partslist 存储零件

 

上述代码 通过前端传来的订单编号来查询出需要生产订单信息,然后用该订单的信息去从仓库中取出需要的产品。然后利用订单编号查询出该产品的所有零件,为后续从仓库中零件取出做准备,然后先将maxtime设置为开始时间(此为初始值)。

进行第一次循环,遍历所有的零件,利用零件编号从仓库中取出需要的零件,然后在利用零件的编号来查询出该零件所需要的工序,此时准备进行生产安排,首先将生产开始时间设置为订单的开始时间。

Hour 总工作数

 

进行第二次循环,遍历所有工序,首先将需要的工序先加入到生产工序表中,根据工序中的属性工作时长,计算出总时长存储到hour中,然后根据工序的编号去查找职员(从职员临时工作表中),首先遍历一下职员,判断职员的上次任务完成日期和这次任务分配日期的先后,将这次任务的开始时间设置为两者靠后的时间。然后根据该工序的工作人数将总工作数平均的分配到每个职员身上。然后经过一个每天工作8小时的计算,计算出了职员要工作的天数,将这个天数加在该职员的开始工作日期就获得了职员该任务的完成日期。最后将这次任务的基本信息全部录入到职员临时工作表(该表基础不变,修改员工的工作时长,工作开始时间和工作结束时间)

 

这里在遍历一下员工,因为每一条员工都需要写入一条工作计划到工作计划表,把一次完整的工作计划填写完毕后就写入工作计划表。然后每次循环中进行一次比对,maxtime和当前任务最后完成时间对比,maxtime永远取时间靠后的值。这样在maxtime最后的值就是该订单完成的时间。其次要将order_time的设置为这次工序的完成时间,因为工序是有优先级的,一个零件的工序二要在工序一之后完成。那么工序二的开始时间就是工序一的完成时间,这个时间在工序外边的循环会进行一次初始化,不会保留到下一个零件的工序中,这样就完成了对于工序优先级的处理。

 

最后在循环外面,我们将订单信息填写入生产订单表来记录这次生产的订单。

至此自动排产功能就结束了。

 

该函数是写来判断两个时间谁更靠后,在上述代码中有调用。