|
|
@ -576,11 +576,10 @@ func (schedsrv *SchedulerSrv) ReleaseSchedule(worklineid string) (err error) { |
|
|
|
} |
|
|
|
}() |
|
|
|
innerLog, err := logger.NewLogger("scheduler", "scheduler") |
|
|
|
fmt.Println("error:", err) |
|
|
|
var ( |
|
|
|
ok bool |
|
|
|
dura time.Duration |
|
|
|
i, j, wipqty, totalrelqty, relqty int |
|
|
|
i, wipqty, totalrelqty, relqty int |
|
|
|
PlanEndDate, PlanEndTime time.Time |
|
|
|
) |
|
|
|
|
|
|
@ -639,7 +638,6 @@ func (schedsrv *SchedulerSrv) ReleaseSchedule(worklineid string) (err error) { |
|
|
|
if err != nil { |
|
|
|
return err |
|
|
|
} |
|
|
|
|
|
|
|
// 按照已下达的批次订单的排序号,依次获取未下达的序列订单
|
|
|
|
// 比较序列订单计划结束时间和要求交期的差值,满足则下达
|
|
|
|
// 为每一个下达的序列订单生成订单消息,用于接口服务处理
|
|
|
@ -650,20 +648,26 @@ func (schedsrv *SchedulerSrv) ReleaseSchedule(worklineid string) (err error) { |
|
|
|
if dura > wlsrv.RelCtrlDura { |
|
|
|
continue |
|
|
|
} |
|
|
|
// 比较每一个序列订单的计划结束事件
|
|
|
|
for j = 0; j < len(schedsrv.LockedTaskArray[i].SerialTaskArray); j++ { |
|
|
|
PlanEndDate = schedsrv.LockedTaskArray[i].Wotab.PlanEndDate.Restore() |
|
|
|
PlanEndTime = schedsrv.LockedTaskArray[i].Wotab.PlanEndDate.Restore() |
|
|
|
dura = PlanEndDate.Sub(PlanEndTime) |
|
|
|
if dura > wlsrv.RelCtrlDura { |
|
|
|
continue |
|
|
|
} |
|
|
|
// 下达序列订单
|
|
|
|
if err = schedsrv.LockedTaskArray[i].SerialTaskArray[j].Release(); err != nil { |
|
|
|
err = errors.New(fmt.Sprintf("下达工单%s的序列工单%s出错%v!", schedsrv.LockedTaskArray[i].TaskId, schedsrv.LockedTaskArray[i].SerialTaskArray[j].TaskId, err)) |
|
|
|
return |
|
|
|
} |
|
|
|
//err = schedsrv.LockedTaskArray[i].LoadSerialOrders()
|
|
|
|
relqty = int(schedsrv.LockedTaskArray[i].WorkOrderQty.PlanQty - schedsrv.LockedTaskArray[i].WorkOrderQty.ReleasedQty) |
|
|
|
if err = schedsrv.LockedTaskArray[i].ReleaseSerialOrder(relqty); err != nil { |
|
|
|
err = errors.New(fmt.Sprintf("下达工单%s出错%v!", schedsrv.LockedTaskArray[i].TaskId, err)) |
|
|
|
return |
|
|
|
} |
|
|
|
// 比较每一个序列订单的计划结束事件
|
|
|
|
//for j = 0; j < len(schedsrv.LockedTaskArray[i].SerialTaskArray); j++ {
|
|
|
|
// PlanEndDate = schedsrv.LockedTaskArray[i].Wotab.PlanEndDate.Restore()
|
|
|
|
// PlanEndTime = schedsrv.LockedTaskArray[i].Wotab.PlanEndDate.Restore()
|
|
|
|
// dura = PlanEndDate.Sub(PlanEndTime)
|
|
|
|
// if dura > wlsrv.RelCtrlDura {
|
|
|
|
// continue
|
|
|
|
// }
|
|
|
|
// // 下达序列订单
|
|
|
|
// if err = schedsrv.LockedTaskArray[i].SerialTaskArray[j].Release(); err != nil {
|
|
|
|
// err = errors.New(fmt.Sprintf("下达工单%s的序列工单%s出错%v!", schedsrv.LockedTaskArray[i].TaskId, schedsrv.LockedTaskArray[i].SerialTaskArray[j].TaskId, err))
|
|
|
|
// return
|
|
|
|
// }
|
|
|
|
//}
|
|
|
|
} |
|
|
|
|
|
|
|
default: |
|
|
@ -677,7 +681,6 @@ func (schedsrv *SchedulerSrv) GetWipQty(worklineid string) (wipqty int, err erro |
|
|
|
session := engine.NewSession() |
|
|
|
defer session.Close() |
|
|
|
dao := wotab.NewSerialOrderDAO(session, common.PlantNr, "scheduler") |
|
|
|
fmt.Println("worklineid:", worklineid) |
|
|
|
if wipqty, err = dao.GetLineWIPQty(worklineid); err != nil { |
|
|
|
err = errors.New(fmt.Sprintf("获取产线%sWIP数量失败%v!", worklineid, err)) |
|
|
|
return |
|
|
|