Initial commit
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
using RobotNet10.FleetManager.Script;
|
||||
using RobotNet10.FleetManager.Services.RobotManager;
|
||||
using RobotNet10.FleetManager.Services.TrafficControl;
|
||||
using System.Linq.Expressions;
|
||||
|
||||
namespace RobotNet10.FleetManager.Services.Script;
|
||||
|
||||
public class ScriptRobotmanager(IRobotManagerService RobotManager, IServiceScopeFactory ScopeFactory, IOrderControlService OrderControlService) : IRobotManager
|
||||
{
|
||||
public async Task<IRobot?> GetRobotById(string robotId)
|
||||
{
|
||||
using var scope = ScopeFactory.CreateScope();
|
||||
var _robotService = scope.ServiceProvider.GetRequiredService<IRobotService>();
|
||||
var robotDb = await _robotService.GetByRobotIdAsync(robotId);
|
||||
if (robotDb is null) return null;
|
||||
var robotController = RobotManager.GetRobotController(robotId);
|
||||
if (robotController is null) return null;
|
||||
return new ScriptRobot(robotDb.RobotId, robotDb.Name, robotDb.ModelId, robotDb.MapId, robotController);
|
||||
}
|
||||
|
||||
public Task<RobotOrderStatus> GetRobotOrderStatus(string robotId)
|
||||
{
|
||||
var orderStatus = OrderControlService.GetRobotOrderStatus(robotId);
|
||||
return orderStatus switch
|
||||
{
|
||||
OrderStatus.IsError => Task.FromResult(RobotOrderStatus.IsError),
|
||||
OrderStatus.IsCompleted => Task.FromResult(RobotOrderStatus.IsCompleted),
|
||||
OrderStatus.IsProccessing => Task.FromResult(RobotOrderStatus.IsProccessing),
|
||||
OrderStatus.IsCanceled => Task.FromResult(RobotOrderStatus.IsCanceled),
|
||||
_ => Task.FromResult(RobotOrderStatus.Empty),
|
||||
};
|
||||
}
|
||||
|
||||
public Task<RobotState?> GetRobotState(string robotId)
|
||||
{
|
||||
var robotController = RobotManager.GetRobotController(robotId);
|
||||
if (robotController is null || robotController.Data is null || robotController.Data.State is null || robotController.Data.Visualization is null) return Task.FromResult<RobotState?>(null);
|
||||
return Task.FromResult<RobotState?>(new RobotState(robotController.IsReady,
|
||||
robotController.Data.State.BatteryState.BatteryVoltage ?? 0,
|
||||
robotController.Data.State.Loads,
|
||||
robotController.Data.State.BatteryState.Charging,
|
||||
robotController.Data.Visualization.AgvPosition.X,
|
||||
robotController.Data.Visualization.AgvPosition.Y,
|
||||
robotController.Data.Visualization.AgvPosition.Theta));
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<string>> SearchRobots(string layout, string version, string level, string model)
|
||||
=> await RobotManager.GetAvailableRobots(layout, version, level, model, state => true);
|
||||
|
||||
public async Task<IEnumerable<string>> SearchRobots(string layout, string version, string level, string model, Expression<Func<RobotState, bool>> expr)
|
||||
=> await RobotManager.GetAvailableRobots(layout, version, level, model, expr.Compile());
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user