using MesServerWork;
using MisDataFunDll;
using System;
using WebApi;

namespace MesServerFunctions
{
    partial class FunctionMES
    {
        /// <summary>
        /// 下空托盘操作
        /// </summary>
        /// <param name="e"></param>
        private void UnloadEmptyTray(object e)
        {
            try
            {
                DeviceDriver_BasicData.CustomeEvetnArgs msgEvent = (DeviceDriver_BasicData.CustomeEvetnArgs)e;
                string OpName = Convert.ToString(msgEvent.OpName);
                int tagValue = Convert.ToInt32(msgEvent.TagValue);
                string msg;

                if (tagValue == 1)
                {
                    // 记录下空托盘请求状态
                    MisDataFun.Location_MIS_MOBY_Insert(OpName, "UnloadEmptyTray", "1");
                    MisDataFun.Location_MIS_MOBY_Insert(OpName, "配送类型", "5");

                    // 调用下空托盘接口
                    // deliveryType: 1退托盘，2叫料，3送料，4转序，5下空，6上空，7点对点
                    bool isOk = CALL_Inerface_DataHandle.CALL_Inerface_CallMaterial(OpName, "5");
                    if (isOk)
                    {
                        msg = $"【{OpName}】下空托盘操作成功";
                        MIS_BASE.WritePLC(306, OpName, 1); // 任务状态反馈
                    }
                    else
                    {
                        msg = $"【{OpName}】下空托盘操作失败";
                        MIS_BASE.WritePLC(306, OpName, 2); // 任务状态反馈
                    }

                    SendMessage.AsyncSendMessage_Notice(OpName, msg);
                    MyLog4Net.MyLogHelper.Info("UnloadEmptyTray", msg);
                }
                else
                {
                    MisDataFun.Location_MIS_MOBY_Insert(OpName, "UnloadEmptyTray", "0");
                    MIS_BASE.WritePLC(301, OpName, false); // 请求进入
                    MIS_BASE.WritePLC(302, OpName, false); // 托盘到位
                    MIS_BASE.WritePLC(303, OpName, false); // AGV已离开
                    MIS_BASE.WritePLC(305, OpName, "0");   // 比对结果
                    MIS_BASE.WritePLC(304, OpName, false); // 比对完成
                    MIS_BASE.WritePLC(306, OpName, 0); // 任务状态反馈
                }
            }
            catch (Exception err)
            {
                MisDataSaveDate.FuntionMesRead.Alarm_SaveFileLog4Error(System.Reflection.MethodBase.GetCurrentMethod().Name, e, "Fun1054", err);
            }
        }
    }
}