public static void GenerateRunTimeData(TagStatus pstatus) { // Update all tags with current values var tags = context.Tags; DateTime ts = DateTime.Now; // remove milliseconds ts = ts.AddTicks(-(ts.Ticks % TimeSpan.TicksPerSecond)); foreach (var item in tags) { int tagIndex = tags.ToList().IndexOf(item); item.Value = GenerateValue(tagIndex, cursorAngle); item.TimeStamp = ts; item.Status = pstatus; TagHist histRecord = new TagHist { TagDefId = item.Id, TagName = item.Name, Value = item.Value, Status = pstatus, TimeStamp = ts }; context.Historian.Add(histRecord); } context.SaveChanges(); cursorAngle = (cursorAngle + 5) % 360; }
/// <summary> /// 转换为数据传输对象 /// </summary> /// <param name="entity">实体</param> public static TagHistDto ToDto(this TagHist entity) { if (entity == null) { return(new TagHistDto()); } return(new TagHistDto { Id = entity.Id, TAG_CODE = entity.TAG_CODE, TAG_MSTR_ID = entity.TAG_MSTR_ID, TAG_VERSION = entity.TAG_VERSION, TAG_VALUE = entity.TAG_VALUE, TAG_VALUE_DESC = entity.TAG_VALUE_DESC, TAG_REF_DB_ID = entity.TAG_REF_DB_ID, TAG_REF_TABLE_ID = entity.TAG_REF_TABLE_ID, TAG_REF_FIELD_ID = entity.TAG_REF_FIELD_ID, TAG_REF_ROW_NO = entity.TAG_REF_ROW_NO, CREATE_PSN = entity.CREATE_PSN, CREATE_TIME = entity.CREATE_TIME, CREATE_ORG_NO = entity.CREATE_ORG_NO, TAG_SDATE = entity.TAG_SDATE, TAG_EDATE = entity.TAG_EDATE, TAG_FROM = entity.TAG_FROM, TAG_RULE_ID = entity.TAG_RULE_ID, DEL_FLAG = entity.DEL_FLAG, BG_NO = entity.BG_NO }); }
private IEnumerable <TagHist> GetSnapshotValues(string TagName, string StartTime, string EndTime, string Frequency) { if (string.IsNullOrEmpty(TagName)) { return(null); } if (string.IsNullOrEmpty(StartTime)) { return(null); } if (string.IsNullOrEmpty(EndTime)) { return(null); } if (string.IsNullOrEmpty(Frequency)) { return(null); } DateTime pstart = DateTime.Parse(StartTime); DateTime pend = DateTime.Parse(EndTime); IEnumerable <TagHist> _taghist = _taghistRepository.GetAll().Where(u => (u.TagName.Equals(TagName, StringComparison.CurrentCultureIgnoreCase)) && (u.TimeStamp >= pstart && u.TimeStamp <= pend)); //Check if we have frequency. If frequency is not specified then we should just return raw values List <TagHist> snapshotData = new List <TagHist>(); if (!string.IsNullOrEmpty(Frequency)) { if (_taghist == null) { return(null); } if (_taghist.Count() < 1) { return(null); } var temp = _taghist.ToList(); // we have a freq value set int freq = Convert.ToInt32(Frequency); DateTime cTime = pstart; var previous = 0; var cursor = 0; while (cTime <= pend) { // find a record near this time if (temp[cursor].TimeStamp >= cTime) { TagHist nTag = new TagHist() { Id = temp[cursor].Id, TagDefId = temp[cursor].TagDefId, TagName = temp[cursor].TagName, Value = temp[cursor].Value, TimeStamp = cTime, Status = temp[cursor].Status }; snapshotData.Add(nTag); } else { previous = cursor; if (cursor < temp.Count - 1) { cursor++; } if (temp[cursor].TimeStamp > cTime) { TagHist nTag = new TagHist() { Id = temp[previous].Id, TagDefId = temp[previous].TagDefId, TagName = temp[previous].TagName, Value = temp[previous].Value, TimeStamp = cTime, Status = temp[previous].Status }; snapshotData.Add(nTag); } else { TagHist nTag = new TagHist() { Id = temp[cursor].Id, TagDefId = temp[cursor].TagDefId, TagName = temp[cursor].TagName, Value = temp[cursor].Value, TimeStamp = cTime, Status = temp[cursor].Status }; snapshotData.Add(nTag); } } cTime = cTime.AddSeconds(freq); } return(snapshotData.AsEnumerable <TagHist>()); } if (_taghist != null) { return(_taghist); } else { return(null); } }
/// <summary> /// 更新用户标签记录 /// </summary> /// <param name="wct"></param> /// <param name="rm"></param> /// <returns></returns> public ReturnMsg UpdateTagHistInfo(SysUsrWctDto wct, ReturnMsg rm) { var histList = _tagHistRepository.GetAllList(c => c.TAG_REF_ROW_NO == wct.Id && c.DEL_FLAG == 1); var newList = wct.tagIds.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(); var oldList = histList.Select(c => c.TAG_REF_FIELD_ID).ToList(); var result = newList.Except <string>(oldList).ToList(); if (result.Count == 0) { rm.IsSuccess = true; return(rm); } var paInfo = _wxHelper.GetPaInfo(1, c => c.PA_ID_NO == AbpSession.ORG_NO, AbpSession.BG_NO); if (paInfo == null) { rm.IsSuccess = false; rm.msg = "公众号信息不存在"; return(rm); } var requestToken = _wxHelper.GetAccessToken(paInfo, wct.BG_NO); if (!requestToken.IsSuccess) { return(rm); } var tagList = _tagMstrRepository.GetAllList(c => c.CREATE_ORG_NO == wct.BU_NO && c.DEL_FLAG == 1); foreach (var item in result) { var tagHist = new TagHist(); var tag = new TagMstr(); tag = tagList.Where(c => c.TAG_REF_FIELD_ID == item).FirstOrDefault(); var hist = histList.Where(c => c.TAG_REF_ROW_NO == item).FirstOrDefault(); if (hist == null) { rm = AddTag(wct.OPEN_ID, item, requestToken.result, rm); if (!rm.IsSuccess) { return(rm); } tagHist.Id = Guid.NewGuid().ToString(); tagHist.TAG_CODE = tag.Id; tagHist.TAG_VALUE = tag.TAG_NAME; tagHist.TAG_REF_ROW_NO = wct.Id; tagHist.TAG_REF_TABLE_ID = "SYS_USR_WCT"; tagHist.CREATE_TIME = DateTime.Now; tagHist.TAG_SDATE = DateTime.Now; tagHist.TAG_FROM = "手工"; tagHist.TAG_MSTR_ID = "0"; tagHist.TAG_VERSION = "0"; tagHist.TAG_VALUE_DESC = "0"; tagHist.TAG_REF_DB_ID = "0"; tagHist.TAG_REF_FIELD_ID = item; tagHist.TAG_RULE_ID = "0"; tagHist.TAG_EDATE = DateTime.MaxValue; _initHelper.InitAdd(tagHist, AbpSession.USR_ID, wct.BU_NO, wct.BG_NO); } else { rm = DelTag(wct.OPEN_ID, item, requestToken.result, rm); if (!rm.IsSuccess) { return(rm); } _tagHistRepository.DelTagHistInfo(wct.Id, item); } } return(rm); }