SingleForkSRMAnalysisBase.cs 3.71 KB
using HHECS.BllModel;
using HHECS.DAQHandle.Common.Enums;
using HHECS.DAQHandle.Common.Utils;
using HHECS.DAQHandle.Dto;
using HHECS.DAQHandle.Models;

namespace HHECS.DAQHandle.EquipmentHandle
{
    /// <summary>
    /// 单叉堆垛机设备处理基类
    /// </summary>
    internal class SingleForkSRMAnalysisBase : AnalysisBase
    {
        public SingleForkSRMAnalysisBase(AnalysisParameter parameter) : base(parameter)
        {
        }

        protected override BllResult<EquipmentStatus> GetEquipmentStatus(EquipmentExtend equipment, EquipmentDataRecord record)
        {
            try
            {
                var tagResult = JsonConvertToTagList(record.Tags);
                if (!tagResult.Success)
                {
                    return BllResultFactory.Error<EquipmentStatus>(tagResult.Msg);
                }
                var dictionaryResult = TagListConvertToDictionary(equipment.EquipmentProps, tagResult.Data);
                if (!dictionaryResult.Success)
                {
                    return BllResultFactory.Error<EquipmentStatus>(dictionaryResult.Msg);
                }
                var dictionary = dictionaryResult.Data;

                var totalError = dictionary[SRMProps.TotalError.ToString()];
                var operationModel = dictionary[SRMProps.OperationModel.ToString()];
                var fork1TaskExcuteStatus = dictionary[SRMProps.Fork1TaskExcuteStatus.ToString()];

                var equipmentStatus = EquipmentStatus.None;
                //故障
                if (totalError == bool.TrueString)
                {
                    equipmentStatus = EquipmentStatus.Failure;
                    return BllResultFactory.Success(equipmentStatus);
                }

                //运行
                if (operationModel == SRMOperationModel.Online.GetIndexString() && fork1TaskExcuteStatus == SRMTaskExcuteStatus.TaskExecuting.GetIndexString())
                {
                    equipmentStatus = EquipmentStatus.Running;
                    return BllResultFactory.Success(equipmentStatus);
                }

                //空闲
                if (operationModel == SRMOperationModel.Maintain.GetIndexString())
                {
                    equipmentStatus = EquipmentStatus.Free;
                    return BllResultFactory.Success(equipmentStatus);
                }

                if (operationModel == SRMOperationModel.Manual.GetIndexString()
               || operationModel == SRMOperationModel.StandAlone.GetIndexString()
               || operationModel == SRMOperationModel.Airborne.GetIndexString())
                {
                    equipmentStatus = EquipmentStatus.Free;
                    return BllResultFactory.Success(equipmentStatus);

                }
                if (operationModel == SRMOperationModel.Online.GetIndexString()
               && fork1TaskExcuteStatus == SRMTaskExcuteStatus.Standby.GetIndexString())
                {
                    equipmentStatus = EquipmentStatus.Free;
                    return BllResultFactory.Success(equipmentStatus);

                }
                if (operationModel == SRMOperationModel.Online.GetIndexString() && (fork1TaskExcuteStatus == SRMTaskExcuteStatus.TaskInterruptError.GetIndexString()
                   || fork1TaskExcuteStatus == SRMTaskExcuteStatus.TaskSendError.GetIndexString()))
                {
                    equipmentStatus = EquipmentStatus.Free;
                    return BllResultFactory.Success(equipmentStatus);

                }
                return BllResultFactory.Success(equipmentStatus);
            }
            catch (Exception ex)
            {
                return BllResultFactory.Error<EquipmentStatus>(ex.Message);
            }
        }
    }
}