65 lines
1.4 KiB
Go
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()
|
|
}
|