服务端的TigerApi 框架,基于.NET6 2024 版本
Rodney Chen
2024-10-26 442edf5bd61810684e0e7da754039590acf6d56c
增加雅达装箱controller
已添加1个文件
281 ■■■■■ 文件已修改
Tiger.Controllers.MES/Controllers/MESController.YadaPacking.cs 281 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Controllers.MES/Controllers/MESController.YadaPacking.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,281 @@
using Autofac;
using Microsoft.AspNetCore.Mvc;
using Rhea.Common;
using SqlSugar;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Xml.Linq;
using Tiger.IBusiness;
using Tiger.Model;
using Tiger.Model.Entitys.MES.Position;
namespace Tiger.Api.Controllers.MES
{
    public partial class MESController : ControllerBase
    {
        /// <summary>
        /// GetTransaction(ApiAction(Data:NewPositionInput))
        /// </summary>
        /// <param name="action"></param>
        /// <returns></returns>
        [HttpPost]
        [Route("api/[controller]/YadaPacking/GetTransaction")]
        public IActionResult YadaPacking_GetTransaction([FromBody] ApiAction<NewPositionInput> action)
        {
            ApiAction response;
            IYadaPacking trans = null;
            try
            {
                if (iBiz.MES.Context.GetTransDic().ContainsKey(action.ID))
                {
                    trans = iBiz.MES.Context.GetTransDic()[action.ID] as IYadaPacking;
                }
                else
                {
                    trans = AutoFacContainer.Instance.Resolve<IYadaPacking>().Init(action.ID, Request.Host.Value, action.Data?.USER_CODE, action.Data?.POST_CODE);
                    iBiz.MES.Context.NewTransaction(HttpContext, trans);
                }
                response = action.GetResponse();
            }
            catch (System.IO.InvalidDataException ex)
            {
                response = action.GetResponse();
                response.IsSuccessed = false;
                response.LocaleMsg = new(ex.Message, ex.InnerException.Message.Split('|', System.StringSplitOptions.RemoveEmptyEntries));
            }
            catch (System.Exception ex)
            {
                response = action.GetResponse().CatchExceptionWithLog(ex);
            }
            trans?.AddHistory(Request, action);
            return Ok(response);
        }
        /// <summary>
        /// CloseTransaction(ApiAction)
        /// å…³é—­äº‹åŠ¡
        /// </summary>
        /// <param name="action"></param>
        /// <returns></returns>
        [HttpPost]
        [Route("api/[controller]/YadaPacking/CloseTransaction")]
        public IActionResult YadaPacking_CloseTransaction([FromBody] ApiAction action)
        {
            ApiAction response;
            IYadaPacking trans = null;
            try
            {
                if (iBiz.MES.Context.GetTransDic().ContainsKey(action.ID))
                {
                    trans = iBiz.MES.Context.GetTransDic()[action.ID] as IYadaPacking;
                    if (!trans.IsFinished)
                    {
                        if (action.IsAsync)
                        {
                            response = action.GetResponse(trans.Close());
                        }
                        else
                        {
                            lock (trans.TransLock) { response = action.GetResponse(trans.Close()); }
                        }
                        response.Message = $"岗位[{trans.PostCode}]的雅达装箱工序事务[ID:{action.ID}]关闭{(response.IsSuccessed ? "成功" : "失败")}";
                    }
                    else
                    {
                        response = action.GetResponse($"Transaction Error: å²—位[{trans.PostCode}]的雅达装箱工序事务[ID:{action.ID}]已经关闭", false);
                    }
                }
                else
                {
                    response = action.GetResponse($"Transaction Error: å²—位的雅达装箱工序事务[ID:{action.ID}]已经被关闭", false);
                }
            }
            catch (System.Exception ex)
            {
                response = action.GetResponse().CatchExceptionWithLog(ex);
            }
            trans?.AddHistory(Request, action);
            return Ok(response);
        }
        /// <summary>
        /// Reset(ApiAction)
        /// é‡ç½®å·¥åºæ“ä½œ
        /// </summary>
        /// <param name="action"></param>
        /// <returns></returns>
        [HttpPost]
        [Route("api/[controller]/YadaPacking/Reset")]
        public async Task<IActionResult> YadaPacking_ResetAsync([FromBody] ApiAction action)
        {
            ApiAction response;
            IYadaPacking trans = null;
            try
            {
                if (iBiz.MES.Context.GetTransDic().ContainsKey(action.ID))
                {
                    trans = iBiz.MES.Context.GetTransDic()[action.ID] as IYadaPacking;
                    if (!trans.IsFinished)
                    {
                        lock (trans.TransLock) { response = action.GetResponse(trans.Reset()); }
                    }
                    else
                    {
                        response = action.GetResponse($"Transaction Error: å²—位[{trans.PostCode}]的雅达装箱工序事务[ID:{action.ID}]已经关闭", false);
                    }
                }
                else
                {
                    response = action.GetResponse($"Transaction Error: å²—位的雅达装箱工序事务[ID:{action.ID}]已经被关闭", false);
                }
            }
            catch (System.Exception ex)
            {
                response = action.GetResponse().CatchExceptionWithLog(ex);
            }
            trans?.AddHistory(Request, action);
            return Ok(response);
        }
        /// <summary>
        /// SelectWO(ApiAction(Data:{WoInput}))
        /// é›…达装箱工序:选择工单
        /// </summary>
        /// <param name="action"></param>
        /// <returns></returns>
        [HttpPost]
        [Route("api/[controller]/YadaPacking/SelectWO")]
        public async Task<IActionResult> YadaPacking_SelectWOAsync([FromBody] ApiAction<WoInput> action)
        {
            ApiAction response;
            IYadaPacking trans = null;
            try
            {
                if (iBiz.MES.Context.GetTransDic().ContainsKey(action.ID))
                {
                    trans = iBiz.MES.Context.GetTransDic()[action.ID] as IYadaPacking;
                    if (!trans.IsFinished)
                    {
                        if (action.IsAsync)
                        {
                            response = action.GetResponse(await trans.SelectOrder(action.Data));
                        }
                        else
                        {
                            lock (trans.TransLock) { response = action.GetResponse(trans.SelectOrder(action.Data).Result); }
                        }
                    }
                    else
                    {
                        response = action.GetResponse($"Transaction Error: å²—位[{trans.PostCode}]的雅达装箱工序事务[ID:{action.ID}]已经关闭", false);
                    }
                }
                else
                {
                    response = action.GetResponse($"Transaction Error: å²—位的雅达装箱工序事务[ID:{action.ID}]已经被关闭", false);
                }
            }
            catch (System.Exception ex)
            {
                response = action.GetResponse().CatchExceptionWithLog(ex);
            }
            trans?.AddHistory(Request, action);
            return Ok(response);
        }
        /// <summary>
        /// Submit(ApiAction(Data:{SubmitInput}))
        /// é›…达装箱工序:提交操作数据
        /// </summary>
        /// <param name="action"></param>
        /// <returns></returns>
        [HttpPost]
        [Route("api/[controller]/YadaPacking/Submit")]
        public async Task<IActionResult> YadaPacking_SubmitAsync([FromBody] ApiAction<SubmitInput> action)
        {
            ApiAction response;
            IYadaPacking trans = null;
            try
            {
                if (iBiz.MES.Context.GetTransDic().ContainsKey(action.ID))
                {
                    trans = iBiz.MES.Context.GetTransDic()[action.ID] as IYadaPacking;
                    if (!trans.IsFinished)
                    {
                        if (action.IsAsync)
                        {
                            response = action.GetResponse(await trans.Submit(action.Data));
                        }
                        else
                        {
                            lock (trans.TransLock) { response = action.GetResponse(trans.Submit(action.Data).Result); }
                        }
                    }
                    else
                    {
                        response = action.GetResponse($"Transaction Error: å²—位[{trans.PostCode}]的雅达装箱工序事务[ID:{action.ID}]已经关闭", false);
                    }
                }
                else
                {
                    response = action.GetResponse($"Transaction Error: å²—位的雅达装箱工序事务[ID:{action.ID}]已经被关闭", false);
                }
            }
            catch (System.Exception ex)
            {
                response = action.GetResponse().CatchExceptionWithLog(ex);
            }
            trans?.AddHistory(Request, action);
            return Ok(response);
        }
        /// <summary>
        /// CompletePkg(ApiAction)
        /// é›…达装箱工序:手动结束包装
        /// </summary>
        /// <param name="action"></param>
        /// <returns></returns>
        [HttpPost]
        [Route("api/[controller]/YadaPacking/CompletePkg")]
        public async Task<IActionResult> YadaPacking_CompletePkgAsync([FromBody] ApiAction action)
        {
            ApiAction response;
            IYadaPacking trans = null;
            try
            {
                if (iBiz.MES.Context.GetTransDic().ContainsKey(action.ID))
                {
                    trans = iBiz.MES.Context.GetTransDic()[action.ID] as IYadaPacking;
                    if (!trans.IsFinished)
                    {
                        if (action.IsAsync)
                        {
                            response = action.GetResponse(await trans.CompletePkg(action));
                        }
                        else
                        {
                            lock (trans.TransLock) { response = action.GetResponse(trans.CompletePkg(action).Result); }
                        }
                    }
                    else
                    {
                        response = action.GetResponse($"Transaction Error: å²—位[{trans.PostCode}]的雅达装箱工序事务[ID:{action.ID}]已经关闭", false);
                    }
                }
                else
                {
                    response = action.GetResponse($"Transaction Error: å²—位的雅达装箱工序事务[ID:{action.ID}]已经被关闭", false);
                }
            }
            catch (System.Exception ex)
            {
                response = action.GetResponse().CatchExceptionWithLog(ex);
            }
            trans?.AddHistory(Request, action);
            return Ok(response);
        }
    }
}