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() }