HoistAnalysis.cs 3.29 KB
using HHECS.BllModel;
using HHECS.DAQHandle.Common.Enums;
using HHECS.DAQHandle.Common.Utils;
using HHECS.DAQHandle.Models;
using HHECS.EquipmentModel;

namespace HHECS.DAQHandle.EquipmentHandle
{
    /// <summary>
    /// 双叉堆垛机数据解析
    /// </summary>
    internal class HoistAnalysis : BaseAnalysis
    {
        public HoistAnalysis(EquipmentType equipmentType) : base(equipmentType) { }
        /// <summary>
        /// 获取设备当前状态
        /// </summary>
        /// <param name="equipmentDataRecord"></param>
        /// <returns></returns>
        public override EquipmentStatusRecordStatus? GetEquipmentStatus(EquipmentDataRecord equipmentInfo)
        {

            EquipmentStatusRecordStatus? equipmentStatus = null;
            var totalError = GetPropValue(equipmentInfo, SRMProps.TotalError);
            //故障
            if (string.IsNullOrWhiteSpace(totalError))
            {
                SystemLog.PrintError($"记录{equipmentInfo.Id}的totalError属性无有效数据");
            }
            else if (totalError == "True")
            {
                equipmentStatus = EquipmentStatusRecordStatus.Error;
            }
            else
            {
                var operationModel = GetPropValue(equipmentInfo, SRMProps.OperationModel);
                var fork1TaskExcuteStatus = GetPropValue(equipmentInfo, SRMProps.Fork1TaskExcuteStatus);

                if (string.IsNullOrWhiteSpace(operationModel) || string.IsNullOrWhiteSpace(fork1TaskExcuteStatus))
                {
                    SystemLog.PrintError($"记录{equipmentInfo.Id}的operationModel属性无有效数据{operationModel}或fork1TaskExcuteStatus 无有效数据{fork1TaskExcuteStatus}");
                }
                if (operationModel == SRMOperationModel.Maintain.GetIndexString())
                {//维修
                    equipmentStatus = EquipmentStatusRecordStatus.Maintain;
                }
                else if (operationModel == SRMOperationModel.Manual.GetIndexString()
                || operationModel == SRMOperationModel.StandAlone.GetIndexString()
                || operationModel == SRMOperationModel.Airborne.GetIndexString())
                {
                    equipmentStatus = EquipmentStatusRecordStatus.Manual;
                }
                else if (operationModel == SRMOperationModel.Online.GetIndexString()
                && fork1TaskExcuteStatus == SRMTaskExcuteStatus.TaskExecuting.GetIndexString())
                {
                    equipmentStatus = EquipmentStatusRecordStatus.Running;
                }
                else if (operationModel == SRMOperationModel.Online.GetIndexString()
                && fork1TaskExcuteStatus == SRMTaskExcuteStatus.Standby.GetIndexString())
                {
                    equipmentStatus = EquipmentStatusRecordStatus.Free;
                }
                else if (operationModel == SRMOperationModel.Online.GetIndexString()
                && (fork1TaskExcuteStatus == SRMTaskExcuteStatus.TaskInterruptError.GetIndexString()
                    || fork1TaskExcuteStatus == SRMTaskExcuteStatus.TaskSendError.GetIndexString()))
                {
                    equipmentStatus = EquipmentStatusRecordStatus.TaskExcuteError;
                }


            }
            return equipmentStatus;
        }


    }
}