/// <summary> /// /// </summary> /// <param name="tag"></param> /// <returns></returns> private DBDevelopService.HisTagMessage ConvertToHisTagMessage(Cdy.Tag.HisTag tag) { DBDevelopService.HisTagMessage re = new DBDevelopService.HisTagMessage(); if (tag != null) { re.Id = (uint)tag.Id; re.TagType = (uint)tag.TagType; re.Type = (uint)tag.Type; re.CompressType = (uint)tag.CompressType; re.Circle = (ulong)tag.Circle; if (tag.Parameters != null) { foreach (var vv in tag.Parameters) { re.Parameter.Add(new DBDevelopService.hisTagParameterItem() { Name = vv.Key, Value = vv.Value }); } } } else { re.Id = uint.MaxValue; } return(re); }
/// <summary> /// /// </summary> /// <param name="database"></param> /// <param name="group"></param> /// <returns></returns> public Dictionary <int, Tuple <Cdy.Tag.Tagbase, Cdy.Tag.HisTag> > QueryTagByGroup(string database, string group) { Dictionary <int, Tuple <Cdy.Tag.Tagbase, Cdy.Tag.HisTag> > re = new Dictionary <int, Tuple <Cdy.Tag.Tagbase, Cdy.Tag.HisTag> >(); if (mCurrentClient != null && !string.IsNullOrEmpty(mLoginId)) { int idx = 0; int count = 0; do { var result = mCurrentClient.GetTagByGroup(new DBDevelopService.GetTagByGroupRequest() { Database = database, LoginId = mLoginId, Group = group, Index = idx }); idx = result.Index; count = result.Count; if (!result.Result) { break; } Dictionary <int, Cdy.Tag.Tagbase> mRealTag = new Dictionary <int, Cdy.Tag.Tagbase>(); foreach (var vv in result.RealTag) { var tag = GetTag((int)vv.TagType); tag.Id = (int)vv.Id; tag.LinkAddress = vv.LinkAddress; tag.Name = vv.Name; tag.Desc = vv.Desc; tag.Group = vv.Group; mRealTag.Add(tag.Id, tag); } Dictionary <int, Cdy.Tag.HisTag> mHisTag = new Dictionary <int, Cdy.Tag.HisTag>(); foreach (var vv in result.HisTag) { var tag = new Cdy.Tag.HisTag { Id = (int)vv.Id, TagType = (Cdy.Tag.TagType)vv.TagType, Type = (Cdy.Tag.RecordType)vv.Type, CompressType = (int)vv.CompressType }; if (vv.Parameter.Count > 0) { tag.Parameters = new Dictionary <string, double>(); foreach (var vvv in vv.Parameter) { tag.Parameters.Add(vvv.Name, vvv.Value); } } mHisTag.Add(tag.Id, tag); } foreach (var vv in mRealTag) { if (mHisTag.ContainsKey(vv.Key)) { re.Add(vv.Key, new Tuple <Cdy.Tag.Tagbase, Cdy.Tag.HisTag>(mRealTag[vv.Key], mHisTag[vv.Key])); } else { re.Add(vv.Key, new Tuple <Cdy.Tag.Tagbase, Cdy.Tag.HisTag>(mRealTag[vv.Key], null)); } } idx++; }while (idx < count); } return(re); }