using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace RGDWCSServices.WMS
{
    public class uploadWhExceptionInfo : PlatformBase
    {
        /// <summary>入参定义
        /// 入参定义
        /// </summary>
        [Serializable]
        public class PARA : Base.InPara
        {

            private string _wh_id;

            private string _oper_no;

            private string _device_no;

            private string _device_name;

            private string _exception_msg;

            private string _exception_time;

            public string WH_ID
            {
                get { return this._wh_id; }
                set { this._wh_id = value; }
            }


            public string OPER_NO
            {
                get { return this._oper_no; }
                set { this._oper_no = value; }
            }

            public string DEVICE_NO
            {
                get { return this._device_no; }
                set { this._device_no = value; }
            }


            public string DEVICE_NAME
            {
                get { return this._device_name; }
                set { this._device_name = value; }
            }

            public string EXCEPTION_MSG
            {
                get { return this._exception_msg; }
                set { this._exception_msg = value; }
            }


            public string EXCEPTION_TIME
            {
                get { return this._exception_time; }
                set { this._exception_time = value; }
            }

        }

        /// <summary>出参定义
        /// 出参定义
        /// </summary>
        [Serializable]
        public class DATA : Base.OutPara
        {

        }

        /// <summary>入参实体
        /// 入参实体
        /// </summary>
        private PARA _inPara;

        /// <summary>出参实体
        /// 出参实体
        /// </summary>
        private DATA _outPara;

        public uploadWhExceptionInfo()
        {
            this._inPara = new PARA();
        }

        /// <summary>通知
        /// 通知
        /// </summary>
        /// <param name="IO_TASK_NO">任务单号</param>
        /// <param name="ePLAN_STATUS">任务状态</param>
        /// <param name="sResult">返回结果</param>
        /// <returns></returns>
        public bool Notify( string DEVICE_NO, string DEVICE_NAME, string EXCEPTION_MSG, string EXCEPTION_TIME, out string sResult)
        {
            bool bResult = true;

            sResult = string.Empty;

            string sXmlOut = string.Empty;

            try
            {
                this._inPara.WH_ID = GetWarehouseIndex();

                this._inPara.OPER_NO = GetOperNo();

                this._inPara.DEVICE_NO = DEVICE_NO;

                this._inPara.DEVICE_NAME = DEVICE_NAME;

                this._inPara.EXCEPTION_MSG = EXCEPTION_MSG;

                this._inPara.EXCEPTION_TIME = EXCEPTION_TIME;

                string sXmlIn = this.Serializer<PARA>(this._inPara);

                bResult = this.uploadWhExceptionInfo(sXmlIn, out sXmlOut);

                //调用服务成功
                if (bResult)
                {
                    this._outPara = this.DeSerialize<DATA>(sXmlOut);

                    bResult = this._outPara.RESULT_FLAG.Equals(Enum.RESULT_FLAG.Success.ToString("d"));

                    sResult = sXmlOut;
                }

                return bResult;
            }
            catch (Exception ex)
            {
                bResult = false;

                sResult = string.Format(ex.Message);
            }

            return bResult;
        }
    }
}
