diff --git a/service/Workline.go b/service/Workline.go index dbca7f5..160281f 100644 --- a/service/Workline.go +++ b/service/Workline.go @@ -179,12 +179,12 @@ LOOP: data := strings.Split(bl_wl.Worklinetab.Mixsortlogic, ";") if len(data) >= 2 { /* 获取锁 */ - LOCK: + MixLOCK: err = etcd.G_jobLock.TryLock("lock") if err != nil { fmt.Println("seq groutine lock fail!") time.Sleep(10 * time.Millisecond) - goto LOCK + goto MixLOCK } //项目1 info1 := strings.Split(data[0], ":") @@ -220,6 +220,7 @@ LOOP: etcd.G_jobLock.UnLock() return } + etcd.G_jobLock.UnLock() //比较swet时间 if len(wotablst1) > 0 { swet1 = wotablst1[0].Swet @@ -314,7 +315,6 @@ LOOP: } } } - etcd.G_jobLock.UnLock() } else if len(data) == 1{ //项目1 info1 := strings.Split(data[0], ":") @@ -357,10 +357,19 @@ LOOP: //非混线逻辑 // 获取待下达任务数 // 非混线排序,则正常加载已计划未下达生产订单 + /* 获取锁 */ + LOCK: + err = etcd.G_jobLock.TryLock("lock") + if err != nil { + fmt.Println("seq groutine lock fail!") + time.Sleep(10 * time.Millisecond) + goto LOCK + } if wotablst, err = bl_wl.GetLineTaskWorkorders(bl_wl.WorklineId, toRelQty); err != nil { err = errors.New(fmt.Sprintf("Failed to load work order for workline: %s due to: %v", bl_wl.WorklineId, err)) return } + etcd.G_jobLock.UnLock() for i = 0; i < len(wotablst); i++ { wotablst[i].Clipped() bl_wo = BL_WorkOrder{}