Files
bj_power/bj_power_mes/internal/robot/manager.go
T

65 lines
1.4 KiB
Go

package robot
import (
"bj_power_mes/ent"
"bj_power_mes/internal/alarm"
"bj_power_mes/internal/plc"
"bj_power_mes/internal/sse"
"github.com/zeromicro/go-zero/core/logx"
)
type Manager struct {
robot *Controller
plcManager *plc.Manager
entClient *ent.Client
sseHandler *sse.Handler
alarmSvc *alarm.Service
}
func MustNewManager(entClient *ent.Client, plcManager *plc.Manager, sseHandler *sse.Handler, alarmSvc *alarm.Service) *Manager {
m, err := NewManager(entClient, plcManager, sseHandler, alarmSvc)
logx.Must(err)
return m
}
func NewManager(entClient *ent.Client, plcManager *plc.Manager, sseHandler *sse.Handler, alarmSvc *alarm.Service) (*Manager, error) {
m := &Manager{
plcManager: plcManager,
entClient: entClient,
sseHandler: sseHandler,
alarmSvc: alarmSvc,
}
if err := m.Init(); err != nil {
return nil, err
}
return m, nil
}
func (m *Manager) Init() error {
//robots, err := m.entClient.Robot.Query().All(context.Background())
//if err != nil {
// return err
//}
//if len(robots) > 0 {
//robot := robots[0]
pc := m.plcManager.GetPlc()
m.robot = NewRobotController(pc, m.entClient, m.sseHandler, m.alarmSvc)
//}
return nil
}
func (m *Manager) GetRobot() (rc *Controller, exist bool) {
return m.robot, m.robot != nil
}
func (m *Manager) GetRobotX() (rc *Controller) {
return m.robot
}
func (m *Manager) IsConnected() bool {
return m.robot != nil && m.plcManager.IsConnected()
}