using HHECS.BllModel; using HHECS.DAQHandle.Dto; using HHECS.DAQShared.Common.Enums; using HHECS.DAQShared.Models; namespace HHECS.DAQHandle.EquipmentHandle { /// <summary> /// AGV数据解析 /// </summary> internal class AGVAnalysis : AnalysisBase { public AGVAnalysis(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 travelStatus = dictionary[AGVProp.TravelStatus.ToString()]; var isOnline = dictionary[AGVProp.IsOnline.ToString()]; var validationResult = ValidationIsNullOrWhiteSpace(travelStatus, isOnline); if (!validationResult.Success) { return BllResultFactory.Error<EquipmentStatus>(validationResult.Msg); } var equipmentStatus = EquipmentStatus.None; if (isOnline == "0") { equipmentStatus = EquipmentStatus.Offline; return BllResultFactory.Success(equipmentStatus); } //这里待完善 var totalError = dictionary.Where(x => x.Key.Contains("Abnormal") && x.Value == "1").Any(); //故障 if (totalError) { equipmentStatus = EquipmentStatus.Failure; return BllResultFactory.Success(equipmentStatus); } //运行 if (travelStatus == "1") { equipmentStatus = EquipmentStatus.Running; return BllResultFactory.Success(equipmentStatus); } equipmentStatus = EquipmentStatus.Free; return BllResultFactory.Success(equipmentStatus); } catch (Exception ex) { return BllResultFactory.Error<EquipmentStatus>(ex.Message); } } } }