AgvConvingController.cs 3.54 KB
using MassTransit;
using MassTransit.Mediator;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using Rcs.Application.Common;
using Rcs.Application.MessageBus.Commands;
using Rcs.Application.MessageBus.Commands.PlatformInteraction;
using Rcs.Domain.Repositories;
using Rcs.Domain.Settings;

namespace Rcs.Api.Controllers
{
    [ApiController]
    [Route("api/[controller]")]
    public class AgvConvingController : ControllerBase
    {
        private readonly ILogger<AgvConvingController> _logger;
        private readonly IMediator _mediator;
        private readonly PlatformPickRepository _pickRepository;
        private readonly AppSettings _appSettings;

        public AgvConvingController(
            ILogger<AgvConvingController> logger,
            IMediator mediator,
            PlatformPickRepository pickRepository,
            IOptions<AppSettings> appSettings)
        {
            _logger = logger ?? throw new ArgumentNullException(nameof(logger));
            _mediator = mediator;
            _pickRepository = pickRepository;
            _appSettings = appSettings.Value;
        }
        /// <summary>
        /// 取货
        /// </summary>
        /// <param name="command"></param>
        /// <returns></returns>
        [HttpPost("PickUp")]
        public async Task<IActionResult> PLCStationInteraction([FromBody] PLCStationInteraction command)
        {
            var client = _mediator.CreateRequestClient<PLCStationInteraction>();
            var response = await client.GetResponse<ApiResponse>(command);

            return Ok(response.Message);
        }
        /// <summary>
        /// 放货
        /// </summary>
        /// <param name="command"></param>
        /// <returns></returns>
        [HttpPost("PutDown")]
        public async Task<IActionResult> PLCStationReleaseInteraction([FromBody] PLCStationReleaseInteraction command)
        {
            var client = _mediator.CreateRequestClient<PLCStationReleaseInteraction>();
            var response = await client.GetResponse<ApiResponse>(command);

            return Ok(response.Message);
        }
        /// <summary>
        /// 站台信号
        /// </summary>
        /// <param name="command"></param>
        /// <returns></returns>
        [HttpPost("OutOrPut")]
        public async Task<IActionResult> PLCStationoutandpull([FromBody] PLCStationConvingExtend command)
        {
            var client = _mediator.CreateRequestClient<PLCStationConvingExtend>();
            var response = await client.GetResponse<ApiResponse>(command);

            return Ok(response.Message);
        }
        /// <summary>
        /// 门控信号
        /// </summary>
        /// <param name="command"></param>
        /// <returns></returns>
        [HttpPost("OpenOrClose")]
        public async Task<IActionResult> PLCStationOpenOrClose([FromBody] PLCStaionGating command)
        {
            var client = _mediator.CreateRequestClient<PLCStaionGating>();
            var response = await client.GetResponse<ApiResponse>(command);

            return Ok(response.Message);
        }
        /// <summary>
        /// 获取气缸状态
        /// </summary>
        /// <param name="command"></param>
        /// <returns></returns>
        [HttpPost("GetCyliderStatu")]
        public async Task<IActionResult> GetCyliderStatu([FromBody] GetCylinderStatu command)
        {
            var client = _mediator.CreateRequestClient<GetCylinderStatu>();
            var response = await client.GetResponse<ApiResponse>(command);

            return Ok(response.Message);
        }
    }
}