using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using WIDESEA_Core.Utilities;
using WIDESEA_Entity.DomainModels;
using WIDESEA_Entity.DomainModels.Mes;
using WIDESEA_WMS;

namespace WIDESEA_WCSServer.Controllers.ToWms
{
    [Route("api/ToWms")]
    [ApiController]
    public class ToWMSController : ControllerBase
    {
        private static readonly object OutsourceInboundobj = new object();
        private static readonly object agvTransferListobj = new object();
        private static readonly object shiftingparkingobj = new object();
        private static readonly object GetStationobj = new object();
        /// <summary>
        /// 移库(手动,临时)
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpPost, Route("AddToFloat3")]
        public WebResponseContent AddToFloat3([FromBody] MesRequestTemp request)
        {
            return new ToMesServer().AddToFloat3(request);
        }

        /// <summary>
        /// 移库外协
        /// </summary>
        /// <param name="saveModel"></param>
        /// <returns></returns>
        [HttpPost, Route("agvTransferList")]
        public WebResponseContent agvTransferList([FromBody] SaveModel saveModel)
        {
            lock (agvTransferListobj)
            {
                return new ToMesServer().agvTransferList(saveModel);
            }
        }

        /// <summary>
        /// 获取货位
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpPost, Route("GetStation")]
        public WebResponseContent GetStation([FromBody] SaveModel saveModel)
        {
            lock (GetStationobj)
            {
                return new ToMesServer().GetStation(saveModel);
            }
        }

        /// <summary>
        /// 库内移库
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpPost, Route("shiftingparking")]
        public WebResponseContent shiftingparking([FromBody] SaveModel saveModel)
        {
            lock (shiftingparkingobj)
            {
                return new ToMesServer().shiftingparking(saveModel);
            }
        }

        /// <summary>
        /// 外协出库(检测上料)
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpPost, Route("OutsourceInbound")]
        public WebResponseContent OutsourceInbound([FromBody] SaveModel saveModel)
        {
            lock (OutsourceInboundobj)
            {
                return new ToMesServer().OutsourceInbound(saveModel);
            }
        }

        /// <summary>
        /// 空盘
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpPost, Route("SendEpmtyTask")]
        public WebResponseContent SendEpmtyTask([FromBody] SaveModel saveModel)
        {
            return new ToMesServer().SendEpmtyTask(saveModel);
        }

        /// <summary>
        /// 绑定车轮
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpPost, Route("UpdateStation")]
        public WebResponseContent UpdateStation([FromBody] SaveModel saveModel)
        {
            return new ToMesServer().UpdateStation(saveModel);
        }
    }
}