root 1 vecka sedan
förälder
incheckning
27f9a11a99

+ 1 - 1
internal/app/ami/action/call.go

@@ -28,7 +28,7 @@ func InActiveHangup() {
 		HangupTask("PA")
 		HangupTask("CPA")
 		HangupTask("VOL")
-		HangupTask("PAD-OCC")
+		//HangupTask("PAD-OCC")
 	} else {
 		HangupTask("PA")
 		HangupTask("PAD-OCC")

+ 79 - 63
internal/app/ami/action/index.go

@@ -353,62 +353,77 @@ func HandleAMI(event map[string]string) {
 
 				//time.Sleep(time.Millisecond * 100) //wait io idle
 				//lfshook.NewLogger().Infof("====Start OCC-PAD===next==%+v", res)
-				if active.ActivedCab == "1" && ExtenStatus("1411") == "Idle" { //check active and OCC status
-					time.Sleep(time.Second)
-					PADChan := ""
-
-					if res.Entrys != nil {
-						for _, chanEntry := range res.Entrys {
-							lfshook.NewLogger().Infof("PAD answered by OCC1 pos:%s chan:%s", chanEntry.Position, chanEntry.Channel)
-
-							if chanEntry.Position == "1" {
-								PADChan = chanEntry.Channel
-								utils.LoggerDebug.Printf("PAD-OCC , Get the first PAD(%s) in the queue !", PADChan)
-								break
+				if active.TrainDevide == 0 { //列车没有断开
+					if (active.ActivedCab == "1" && ExtenStatus("1411") == "Idle") || (active.ActivedCab == "" && active.ActivedCabDelay == "1" && ExtenStatus("1411") == "Idle") { //check active and OCC status
+						time.Sleep(time.Second)
+						PADChan := ""
+
+						if res.Entrys != nil {
+							for _, chanEntry := range res.Entrys {
+								lfshook.NewLogger().Infof("PAD answered by OCC1 pos:%s chan:%s", chanEntry.Position, chanEntry.Channel)
+
+								if chanEntry.Position == "1" {
+									PADChan = chanEntry.Channel
+									utils.LoggerDebug.Printf("PAD-OCC , Get the first PAD(%s) in the queue !", PADChan)
+									break
+								}
 							}
-						}
 
-						if PADChan != "" {
-							Ext := strings.Split(strings.Split(res.Entrys[0].Channel, "/")[1], "-")[0]
-							alstatus.AlarmStatus(Ext, "connect")
+							if PADChan != "" {
+								Ext := strings.Split(strings.Split(res.Entrys[0].Channel, "/")[1], "-")[0]
+								alstatus.AlarmStatus(Ext, "connect")
 
-							utils.LoggerDebug.Printf("PAD goto OCC1 , redirect %s to OCC1 !", PADChan)
-							go RedirectInQueue(PADChan, "1411", "pad-page-occ-icp", Ext) //PAD Page(OCC+ICPs)
+								utils.LoggerDebug.Printf("PAD goto OCC1 , redirect %s to OCC1 !", PADChan)
+								go RedirectInQueue(PADChan, "1411", "pad-page-occ-icp", Ext) //PAD Page(OCC+ICPs)
 
-							go Dial("0401", "0512", "pad-rule-pacus-occ", "ano1", "ano1", "1") // PACUs dial OCC1
-						} else {
-							lfshook.NewLogger().Infof("OCC-QueueStatus PADCchan NULL")
-							utils.LoggerDebug.Printf("PAD-OCC , OCC Queue Status PADCchan return NULL .")
-						}
-					}
-					break
-				} else if active.ActivedCab == "8" && ExtenStatus("1481") == "Idle" {
-					time.Sleep(time.Second)
-					PADChan := ""
-
-					if res.Entrys != nil {
-						for _, chanEntry := range res.Entrys {
-							lfshook.NewLogger().Infof("PAD answered by OCC1 pos:%s chan:%s", chanEntry.Position, chanEntry.Channel)
-							if chanEntry.Position == "1" {
-								PADChan = chanEntry.Channel
-								utils.LoggerDebug.Printf("PAD-OCC , Get the first PAD(%s) in the queue !", PADChan)
-								break
+								go Dial("0401", "0512", "pad-rule-pacus-occ", "ano1", "ano1", "1") // PACUs dial OCC1
+							} else {
+								lfshook.NewLogger().Infof("OCC-QueueStatus PADCchan NULL")
+								utils.LoggerDebug.Printf("PAD-OCC , OCC Queue Status PADCchan return NULL .")
 							}
 						}
+						break
+					} else if (active.ActivedCab == "8" && ExtenStatus("1481") == "Idle") || (active.ActivedCab == "" && active.ActivedCabDelay == "8" && ExtenStatus("1481") == "Idle") {
+						time.Sleep(time.Second)
+						PADChan := ""
+
+						if res.Entrys != nil {
+							for _, chanEntry := range res.Entrys {
+								lfshook.NewLogger().Infof("PAD answered by OCC1 pos:%s chan:%s", chanEntry.Position, chanEntry.Channel)
+								if chanEntry.Position == "1" {
+									PADChan = chanEntry.Channel
+									utils.LoggerDebug.Printf("PAD-OCC , Get the first PAD(%s) in the queue !", PADChan)
+									break
+								}
+							}
 
-						if PADChan != "" {
-							Ext := strings.Split(strings.Split(res.Entrys[0].Channel, "/")[1], "-")[0]
-							alstatus.AlarmStatus(Ext, "connect")
+							if PADChan != "" {
+								Ext := strings.Split(strings.Split(res.Entrys[0].Channel, "/")[1], "-")[0]
+								alstatus.AlarmStatus(Ext, "connect")
 
-							utils.LoggerDebug.Printf("PAD goto OCC8 , redirect %s to OCC8 !", PADChan)
-							go RedirectInQueue(PADChan, "1481", "pad-page-occ-icp", Ext) //PAD Page(OCC+ICPs)
+								utils.LoggerDebug.Printf("PAD goto OCC8 , redirect %s to OCC8 !", PADChan)
+								go RedirectInQueue(PADChan, "1481", "pad-page-occ-icp", Ext) //PAD Page(OCC+ICPs)
 
-							go Dial("0401", "0512", "pad-rule-pacus-occ", "ano8", "ano8", "8") // PACUs dial OCC1
-						} else {
-							lfshook.NewLogger().Infof("OCC QueueStatus PADCchan NULL")
+								go Dial("0401", "0512", "pad-rule-pacus-occ", "ano8", "ano8", "8") // PACUs dial OCC1
+							} else {
+								lfshook.NewLogger().Infof("OCC QueueStatus PADCchan NULL")
+							}
 						}
+						break
+					}
+				} else { //列车断开模式下
+					if active.ActivedCab == "1" && ExtenStatus("1411") == "Idle" { //check active and OCC status
+
+						alstatus.AlarmStatus(event["CallerIDNum"], "connect")
+						go RedirectInQueue(event["Channel"], "1411", "pad-page-occ-icp", event["CallerIDNum"]) //PAD Page(OCC+ICPs)
+						go Dial("0401", "0512", "pad-rule-pacus-occ", "ano1", "ano1", "1")                     // PACUs dial OCC1
+
+					} else if active.ActivedCab == "8" && ExtenStatus("1481") == "Idle" {
+
+						alstatus.AlarmStatus(event["CallerIDNum"], "connect")
+						go RedirectInQueue(event["Channel"], "1481", "pad-page-occ-icp", event["CallerIDNum"]) //PAD Page(OCC+ICPs)
+						go Dial("0401", "0512", "pad-rule-pacus-occ", "ano8", "ano8", "8")                     // PACUs dial OCC8
 					}
-					break
 				}
 			}
 		}
@@ -549,9 +564,9 @@ func HandleAMI(event map[string]string) {
 				active.QueueTimer = time.AfterFunc(time.Duration(active.PADTimeout)*time.Second, func() { // check the PAD 30s timeout
 					//active.QueueTimer = time.AfterFunc(30*time.Second, func() { // check the PAD 30s timeout
 					//if both not active , return
-					if active.ActivedCab == "" {
-						return
-					}
+					//if active.ActivedCab == "" {
+					//	return
+					//}
 
 					res, err := QueueStatus("0301", "") // check OCC queue , if empty OCC-PAD start
 					if err != nil {
@@ -610,20 +625,20 @@ func HandleAMI(event map[string]string) {
 
 				time.Sleep(time.Millisecond * 300)
 
-				//if active.TrainDevide == 0 { //列车没有断开
-				if active.ActivedCab == "1" && ExtenStatus("1411") == "Idle" { //check active and OCC status
-					utils.LoggerDebug.Printf("PAD %s goto OCC1 .", event["CallerIDNum"])
-					alstatus.AlarmStatus(event["CallerIDNum"], "connect")
-					go RedirectInQueue(event["Channel"], "1411", "pad-page-occ-icp", event["CallerIDNum"]) //PAD Page(OCC+ICPs)
-					go Dial("0401", "0512", "pad-rule-pacus-occ", "ano1", "ano1", "1")                     // PACUs dial OCC1
-
-				} else if active.ActivedCab == "8" && ExtenStatus("1481") == "Idle" {
-					utils.LoggerDebug.Printf("PAD %s goto OCC8 .", event["CallerIDNum"])
-					alstatus.AlarmStatus(event["CallerIDNum"], "connect")
-					go RedirectInQueue(event["Channel"], "1481", "pad-page-occ-icp", event["CallerIDNum"]) //PAD Page(OCC+ICPs)
-					go Dial("0401", "0512", "pad-rule-pacus-occ", "ano8", "ano8", "8")                     // PACUs dial OCC8
-				}
-				/*} else { //列车断开模式下
+				if active.TrainDevide == 0 { //列车没有断开
+					if (active.ActivedCab == "1" && ExtenStatus("1411") == "Idle") || (active.ActivedCab == "" && active.ActivedCabDelay == "1" && ExtenStatus("1411") == "Idle") { //check active and OCC status
+						utils.LoggerDebug.Printf("PAD %s goto OCC1 .", event["CallerIDNum"])
+						alstatus.AlarmStatus(event["CallerIDNum"], "connect")
+						go RedirectInQueue(event["Channel"], "1411", "pad-page-occ-icp", event["CallerIDNum"]) //PAD Page(OCC+ICPs)
+						go Dial("0401", "0512", "pad-rule-pacus-occ", "ano1", "ano1", "1")                     // PACUs dial OCC1
+
+					} else if (active.ActivedCab == "8" && ExtenStatus("1481") == "Idle") || (active.ActivedCab == "" && active.ActivedCabDelay == "8" && ExtenStatus("1481") == "Idle") {
+						utils.LoggerDebug.Printf("PAD %s goto OCC8 .", event["CallerIDNum"])
+						alstatus.AlarmStatus(event["CallerIDNum"], "connect")
+						go RedirectInQueue(event["Channel"], "1481", "pad-page-occ-icp", event["CallerIDNum"]) //PAD Page(OCC+ICPs)
+						go Dial("0401", "0512", "pad-rule-pacus-occ", "ano8", "ano8", "8")                     // PACUs dial OCC8
+					}
+				} else { //列车断开模式下
 					if active.ActivedCab == "1" && ExtenStatus("1411") == "Idle" { //check active and OCC status
 
 						alstatus.AlarmStatus(event["CallerIDNum"], "connect")
@@ -636,7 +651,8 @@ func HandleAMI(event map[string]string) {
 						go RedirectInQueue(event["Channel"], "1481", "pad-page-occ-icp", event["CallerIDNum"]) //PAD Page(OCC+ICPs)
 						go Dial("0401", "0512", "pad-rule-pacus-occ", "ano8", "ano8", "8")                     // PACUs dial OCC8
 					}
-				}*/
+				}
+
 			} else {
 				lfshook.NewLogger().Infof("====PAD-OCC Priority false===")
 			}

+ 2 - 0
internal/app/stc/active/index.go

@@ -15,6 +15,8 @@ var ActivedCab = "1"
 var PADTimeout = 30
 var Master = false
 
+var ActivedCabDelay = "1"
+
 var TrainDevide = 0
 var RadioFault = 0
 

+ 5 - 1
internal/app/stc/broadcast/stc-broadcast.go

@@ -467,7 +467,7 @@ func Active(data [3]byte) {
 	master := int(data[1])
 	TrainInfo := int(data[2])
 
-	lfshook.NewLogger().Logger.Infof("=====active:%x======cab=%s Master=%d=====data:%x======", Signal, active.CabNum, master, data)
+	lfshook.NewLogger().Logger.Infof("=====active:%x======cab=%s Master=%d=====data:%x======ActivedCabDelay:%x", Signal, active.CabNum, master, data, active.ActivedCabDelay)
 
 	//Set Master
 	if master == 1 && active.CabNum == "1" {
@@ -558,6 +558,8 @@ func Active(data [3]byte) {
 		//active signal from 8 to 1
 		if active.ActivedCab == "8" || active.ActivedCab == "" {
 			active.ActivedCab = "1"
+			active.ActivedCabDelay = "1"
+
 			action.InActiveHangup()
 		}
 
@@ -565,6 +567,8 @@ func Active(data [3]byte) {
 		//active signal from 1 to 8
 		if active.ActivedCab == "1" || active.ActivedCab == "" {
 			active.ActivedCab = "8"
+			active.ActivedCabDelay = "8"
+
 			action.InActiveHangup()
 		}
 

+ 2 - 2
internal/app/stc/priority/index.go

@@ -145,9 +145,9 @@ func CheckPriority(runType string) bool {
 
 			switch runType {
 			case "PAD-ICP":
-				return true
+				return false
 			case "PAD-TMS":
-				return true
+				return false
 			case "EMG":
 				return true
 			case "SPC":