public StructWarn FindFilteredOrderedAlarmsByStruct([FromUri] int structId, [FromBody] AlarmModel_1 alarm_1) { try { // 分解告警等级 string[] levels = alarm_1.FilteredLevel.Split(','); var levelList = levels.Select(s => Convert.ToInt32(s)).ToList(); AlarmModel alarm = new AlarmModel { FilteredDeviceType = alarm_1.FilteredDeviceType, FilteredStatus = alarm_1.FilteredStatus, FilteredLevel = levelList, FilteredStartTime = alarm_1.FilteredStartTime, FilteredEndTime = alarm_1.FilteredEndTime, OrderedDevice = alarm_1.OrderedDevice, OrderedLevel = alarm_1.OrderedLevel, OrderedTime = alarm_1.OrderedTime }; int roleId = 5; // 5-"普通用户"角色(Client). if (Request.Properties.ContainsKey("AuthorizationInfo")) { var info = Request.Properties["AuthorizationInfo"] as AuthorizationInfo; roleId = info != null && info.RoleId != null ? (int)info.RoleId : 5; } using (SecureCloud_Entities entity = new SecureCloud_Entities()) { var query = from s in entity.T_DIM_STRUCTURE where s.ID == structId && s.IsDelete == 0 select s; var list = query.ToList().Select(s => new StructWarn { structId = s.ID, structName = s.STRUCTURE_NAME_CN, warnings = new List <Warning>() }).ToList(); var objAlarm = new Alarm(); var condition = objAlarm.GetFilteredOrderedConditionOfAlarm(alarm, roleId); DataTable dt = null; int start = 0, end = 0; if (this.Request.GetQueryString("amp;startRow") != null && this.Request.GetQueryString("amp;endRow") != null) { start = int.Parse(this.Request.GetQueryString("amp;startRow")); end = int.Parse(this.Request.GetQueryString("amp;endRow")); dt = objAlarm.GetPagedFilteredOrderedAlarmsByStruct(structId, condition, start, end); } else { dt = objAlarm.GetFilteredOrderedAlarmsByStruct(structId, condition); } for (int i = 0; i < list.Count; i++) { foreach (var dataRow in dt.AsEnumerable()) { if (dataRow.Field <int>("StructId") == list[i].structId) { list[i].warnings.Add(new Warning { WarningId = dataRow.Field <int>("Id"), WarningTypeId = dataRow.Field <string>("WarningTypeId"), Source = dataRow.Field <string>("Source"), Level = dataRow["WarningLevel"] == DBNull.Value ? 4 : dataRow.Field <byte>("WarningLevel"), Content = dataRow.Field <string>("Content"), Reason = dataRow.Field <string>("Reason"), Time = dataRow.Field <DateTime>("Time"), DealFlag = dataRow.Field <int>("DealFlag"), Confirmor = dataRow["Confirmor"] == DBNull.Value ? string.Empty : dataRow.Field <string>("Confirmor"), Suggestion = dataRow["Suggestion"] == DBNull.Value ? string.Empty : dataRow.Field <string>("Suggestion"), ConfirmTime = dataRow["ConfirmTime"] == DBNull.Value ? default(DateTime) : dataRow.Field <DateTime>("ConfirmTime") }); } } } return(list.FirstOrDefault()); } } catch (Exception e) { return(new StructWarn()); //throw e; } }
public object FindFactorStatusByStruct(string structs) { int[] strcts = structs.Split(',').Select(s => Convert.ToInt32(s)).ToArray(); using (SecureCloud_Entities entity = new SecureCloud_Entities()) { #region 因子评分产生状态-使用中 Debug.WriteLine("=========================================="); // 查询结构物和包含的监测主题 var query = (from stc in entity.T_DIM_STRUCTURE from sf in entity.T_DIM_STRUCTURE_FACTOR from f in entity.T_DIM_SAFETY_FACTOR_TYPE from f2 in entity.T_DIM_SAFETY_FACTOR_TYPE from orgStc in entity.T_DIM_ORG_STUCTURE where strcts.Contains(stc.ID) && stc.ID == sf.STRUCTURE_ID && sf.SAFETY_FACTOR_TYPE_ID == f.SAFETY_FACTOR_TYPE_ID && f.SAFETY_FACTOR_TYPE_PARENT_ID == f2.SAFETY_FACTOR_TYPE_ID && orgStc.STRUCTURE_ID == stc.ID select new FactorList { StructId = stc.ID, OrgStc = orgStc.ORG_STRUC_ID, FactorId = f2.SAFETY_FACTOR_TYPE_ID, FactorName = f2.SAFETY_FACTOR_TYPE_NAME }).Distinct(); var themeScore = from ts in entity.T_FACT_SAFETY_FACTOR_SCORE from q in query where ts.ORG_STRUC_ID == q.OrgStc && ts.SAFETY_FACTOR_TYPE_ID == q.FactorId select new { Id = ts.ID, q.OrgStc, StructId = q.StructId, FactorId = q.FactorId, FactorName = q.FactorName, Score = ts.SAFETY_FACTOR_SCORE, Date = ts.EVALUATION_DATETIME }; // 查询最后评分ID var ids = themeScore.GroupBy(r => new { r.StructId, r.FactorId, r.FactorName }) .Select(i => i.Select(s => s.Id).Max()) .ToArray(); var scores = themeScore.Where(r => ids.Contains(r.Id)); // 查询主题评分 var rslt = from q in query join w in scores on new { q.OrgStc, q.FactorId } equals new { OrgStc = w.OrgStc, FactorId = w.FactorId } into score from s in score.DefaultIfEmpty() select new { StructId = q.StructId, FactorId = q.FactorId, FactorName = q.FactorName, Score = s.Score, Date = s.Date }; // 分数对应的文字 var scoreWeight = entity.T_FACT_WEIGHT_SCORE.Select( w => new { Low = w.SCORE_VALUE_LOWER_LIMIT, Up = w.SCORE_VALUE_UPPER_LIMIT, Name = w.DESCRIPTION }) .ToList(); var json = new JArray( rslt.ToList() .GroupBy(g => g.StructId) .Select( s => new JObject( new JProperty("structId", s.Key), new JProperty( "entry", new JArray( s.GroupBy(e => new { e.FactorId, e.FactorName }) .Select( e => new JObject( new JProperty("factorId", e.Key.FactorId), new JProperty("factorName", e.Key.FactorName), new JProperty( "status", scoreWeight.Where( w => w.Low <= s.Where( d => d.Date == e.Max(v => v.Date) && d.FactorId == e.Key.FactorId) .Select(d => d.Score) .FirstOrDefault() && w.Up >= s.Where( d => d.Date == e.Max(v => v.Date) && d.FactorId == e.Key.FactorId) .Select(d => d.Score) .FirstOrDefault()).Select(w => w.Name).FirstOrDefault())))))))); return(json); #endregion #region 告警产生状态-非使用中 //var query = from sf in entity.T_DIM_STRUCTURE_FACTOR // from f in entity.T_DIM_SAFETY_FACTOR_TYPE // from s in entity.T_DIM_SENSOR // from fp in entity.T_DIM_SAFETY_FACTOR_TYPE // where // strcts.Contains(sf.STRUCTURE_ID) && sf.SAFETY_FACTOR_TYPE_ID == f.SAFETY_FACTOR_TYPE_ID // && s.STRUCT_ID == sf.STRUCTURE_ID && s.SAFETY_FACTOR_TYPE_ID == f.SAFETY_FACTOR_TYPE_ID // && f.SAFETY_FACTOR_TYPE_PARENT_ID == fp.SAFETY_FACTOR_TYPE_ID // select // new // { // structId = s.STRUCT_ID, // factorId = fp.SAFETY_FACTOR_TYPE_ID, // factorName = fp.SAFETY_FACTOR_TYPE_NAME, // sensorId = s.SENSOR_ID // }; //var device = query.ToList(); //var sensors = device.Select(d => d.sensorId).ToArray(); //var warnings = new DAL.Warning().GetWarningsBySensor( // sensors, // DateTime.Now.AddYears(-1), // DateTime.Now, // false); //var statusMap = new Dictionary<int, string>() { { 1, "差" }, { 2, "劣" }, { 3, "中" }, { 4, "良" } }; //var rslt = // device.GroupBy(s => s.structId) // .Select( // s => // new // { // structId = s.Key, // entry = // s.GroupBy(f => new { f.factorId, f.factorName }) // .Select( // f => // new // { // factorId = f.Key.factorId, // factorName = f.Key.factorName, // status = // (warnings.AsEnumerable() // .Where( // w => // f.Select(sen => sen.sensorId) // .ToArray() // .Contains(w.Field<int>("SensorId"))) // .Min(w => w.Field<int?>("Level"))) == null // ? "优" // : statusMap[ // (warnings.AsEnumerable() // .Where( // w => // f.Select(sen => sen.sensorId) // .ToArray() // .Contains(w.Field<int>("SensorId"))) // .Min(w => w.Field<int>("Level")))] // }) // }); //return rslt; #endregion } }
public object FindWarningsByStruct(string structs, string status, DateTime startDate, DateTime endDate, int?startRow = null, int?endRow = null) { int roleId = 5; // 5-"普通用户"角色(Client). if (Request.Properties.ContainsKey("AuthorizationInfo")) { var info = Request.Properties["AuthorizationInfo"] as AuthorizationInfo; roleId = info != null && info.RoleId != null ? (int)info.RoleId : 5; } int?dealFlag = null; if (roleId == 5) { switch (status) { case "unprocessed": dealFlag = WarningClientUnprocessed; // unprocessed for Client. break; case "processed": dealFlag = WarningClientProcessed; // processed for Client. break; } } else { switch (status) { case "unprocessed": dealFlag = WarningSupportUnprocessed; // unprocessed for Support. break; case "processed": dealFlag = WarningSupportProcessed; // processed for Support. break; case "issued": // "已下发"告警 dealFlag = 5; // unprocessed and processed for Client. break; } } string[] stcs = structs.Split(','); var strcNums = stcs.Select(s => Convert.ToInt32(s)).ToArray(); using (SecureCloud_Entities entity = new SecureCloud_Entities()) { var query = from s in entity.T_DIM_STRUCTURE where strcNums.Contains(s.ID) && s.IsDelete == 0 select s; var list = query.ToList().Select(s => new { structId = s.ID, structName = s.STRUCTURE_NAME_CN, warnings = new List <Warning>() }).ToList(); DataTable dt = null; if (startRow != null && endRow != null) { dt = warningDal.GetPagedWarningsByStruct(strcNums, startDate, endDate, dealFlag, (int)startRow, (int)endRow, roleId); } else { dt = warningDal.GetWarningsByStruct(strcNums, startDate, endDate, dealFlag, roleId); } for (int i = 0; i < list.Count; i++) { foreach (var dataRow in dt.AsEnumerable()) { if (dataRow.Field <int>("StructId") == list[i].structId) { list[i].warnings.Add(new Warning { WarningId = dataRow.Field <int>("Id"), WarningTypeId = dataRow.Field <string>("WarningTypeId"), Source = dataRow.Field <string>("Source"), Level = dataRow["WarningLevel"] == DBNull.Value ? 4 : dataRow.Field <byte>("WarningLevel"), Content = dataRow.Field <string>("Content"), Reason = dataRow.Field <string>("Reason"), Time = dataRow.Field <DateTime>("Time"), DealFlag = dataRow.Field <int>("DealFlag"), Confirmor = dataRow["Confirmor"] == DBNull.Value ? string.Empty : dataRow.Field <string>("Confirmor"), Suggestion = dataRow["Suggestion"] == DBNull.Value ? string.Empty : dataRow.Field <string>("Suggestion"), ConfirmTime = dataRow["ConfirmTime"] == DBNull.Value ? default(DateTime) : dataRow.Field <DateTime>("ConfirmTime") }); } } } return(list); } }
public HttpResponseMessage AddFactorUnit([FromUri] int structId, [FromBody] allData configs) { using (var db = new SecureCloud_Entities()) { var configAll = configs.Date; foreach (var config in configAll) { if (config.Unit == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, StringHelper.GetMessageString("添加配置信息失败,单位不能为空"))); } //修改 try { var subId = from sb in db.T_DIM_FACTOR_UNIT_INT where sb.FACTOR_ID == config.FactorId && sb.VALUE_INDEX == config.ItemId && sb.UNIT == config.Unit select new { id = sb.ID }; var idex = (config.FactorId + config.ItemId).ToString(); var unitInfo = db.T_DIM_STRUCT_FACTOR_UNIT.FirstOrDefault( m => m.STRUCT_ID == structId && m.FACTOR_ID == config.FactorId && m.VALUE_ID == config.ItemId); if (unitInfo != null) { foreach (var s in subId) { unitInfo.SUB_FACTOR_ID = s.id; } unitInfo.STRUCT_ID = config.StructId; unitInfo.FACTOR_ID = config.FactorId; unitInfo.VALUE_ID = config.ItemId; var unitUp = db.Entry(unitInfo); unitUp.State = EntityState.Modified; db.SaveChanges(); } else { //新增配置单位 var unitConfig = new T_DIM_STRUCT_FACTOR_UNIT(); foreach (var s in subId) { unitConfig.SUB_FACTOR_ID = s.id; } unitConfig.STRUCT_ID = config.StructId; unitConfig.FACTOR_ID = config.FactorId; unitConfig.VALUE_ID = config.ItemId; var entry = db.Entry(unitConfig); entry.State = EntityState.Added; db.SaveChanges(); } } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.BadRequest, StringHelper.GetMessageString("配置失败"))); } //#region 日志信息 this.Request.Properties["ActionParameter"] = JsonConvert.SerializeObject(config); this.Request.Properties["ActionParameterShow"] = string.Format( "监测因素编号:{0},监测子因素编号:{1},单位:{2},结构物编号:{3}", config.FactorId, config.ItemId, config.Unit, config.StructId ); //#endregion } } return(Request.CreateResponse(HttpStatusCode.Accepted, StringHelper.GetMessageString("配置成功"))); }
public HttpResponseMessage ConfigStructFactors([FromUri] int structId, [FromBody] string array) { int[] factors = array.Split(',').Select(f => Convert.ToInt32(f)).ToArray(); using (var entity = new SecureCloud_Entities()) { var ori = entity.T_DIM_STRUCTURE_FACTOR.Where(s => s.STRUCTURE_ID == structId) .Select(s => s.SAFETY_FACTOR_TYPE_ID).ToList(); var arrToAdd = factors.Except(ori); var arrToDel = ori.Except(factors); var sens = entity.T_DIM_SENSOR.Where(s => s.STRUCT_ID == structId && arrToDel.Contains((int)s.SAFETY_FACTOR_TYPE_ID) && !s.IsDeleted); if (sens.Any()) { return(Request.CreateResponse( System.Net.HttpStatusCode.Conflict, StringHelper.GetMessageString("请先删除该监测因素下的传感器"))); } foreach (int factorId in arrToAdd) { var sf = new T_DIM_STRUCTURE_FACTOR(); sf.STRUCTURE_ID = structId; sf.SAFETY_FACTOR_TYPE_ID = factorId; var entry = entity.Entry(sf); entry.State = System.Data.EntityState.Added; } var queryDelete = entity.T_DIM_STRUCTURE_FACTOR.Where( s => s.STRUCTURE_ID == structId && arrToDel.Contains(s.SAFETY_FACTOR_TYPE_ID)); foreach (var config in queryDelete) { var entry = entity.Entry(config); entry.State = System.Data.EntityState.Deleted; } #region 日志信息 var stc = entity.T_DIM_STRUCTURE.Where(s => s.ID == structId) .Select(s => s.STRUCTURE_NAME_CN) .FirstOrDefault(); var fac = entity.T_DIM_SAFETY_FACTOR_TYPE.Where(f => factors.Contains(f.SAFETY_FACTOR_TYPE_ID)) .Select(f => f.SAFETY_FACTOR_TYPE_NAME); this.Request.Properties["ActionParameter"] = JsonConvert.SerializeObject(array); this.Request.Properties["ActionParameterShow"] = string.Format( "结构物:{0},监测因素修改为:{1}", stc ?? string.Empty, string.Join(",", fac)); #endregion try { entity.Configuration.AutoDetectChangesEnabled = false; entity.Configuration.ValidateOnSaveEnabled = false; entity.SaveChanges(); return(Request.CreateResponse( System.Net.HttpStatusCode.Accepted, StringHelper.GetMessageString("配置成功"))); } catch (Exception) { return(Request.CreateResponse( System.Net.HttpStatusCode.Accepted, StringHelper.GetMessageString("配置失败"))); } finally { entity.Configuration.AutoDetectChangesEnabled = true; entity.Configuration.ValidateOnSaveEnabled = true; } } }
public HttpResponseMessage ConfigSensorThreshold(IList <SensorThreshold> model) { using (var db = new SecureCloud_Entities()) { try { StringBuilder sb = new StringBuilder(); foreach (var sensorThreshold in model) { //日志信息 var sensor = db.T_DIM_SENSOR.FirstOrDefault(s => s.SENSOR_ID == sensorThreshold.SensorId); string sensorName = string.Empty; string itemName = null; if (sensor != null) { var structId = Config.GetStructId(sensorThreshold.SensorId); sensorName = sensor.SENSOR_LOCATION_DESCRIPTION; var factor = Config.GetConfigByFactors(new[] { Convert.ToInt32(sensor.SAFETY_FACTOR_TYPE_ID) }, structId) .FirstOrDefault(); if (factor != null && sensorThreshold.ItemId < factor.Display.Count()) { itemName = factor.Display[sensorThreshold.ItemId]; } } sb.AppendFormat("传感器:{0}-", sensorName); sb.AppendFormat("监测项:{0}_", itemName ?? sensorThreshold.ItemId.ToString()); foreach (var th in sensorThreshold.Threshold) { SensorThreshold threshold = sensorThreshold; ThresholdModel th1 = th; var old = db.T_FACT_SENSOR_THRESHOLD.Where( st => st.SensorId == threshold.SensorId && st.ItemId == threshold.ItemId && st.ThresholdLevel == th1.Level); if (old.Any()) { List <string> values = new List <string>(old.Count()); foreach (var o in old) { var entry = db.Entry(o); values.Add( string.Format( "({0},{1})", o.ThresholdDownValue == double.MinValue ? "-" : o.ThresholdDownValue.ToString(), o.ThresholdUpValue == double.MaxValue ? "+" : o.ThresholdUpValue.ToString())); entry.State = System.Data.EntityState.Deleted; } if (!string.IsNullOrEmpty(th.Value)) { sb.AppendFormat("[{0}级阈值从{1}改为:{2}]", th.Level, string.Join(";", values), th.Value); } else { sb.AppendFormat("[{0}级阈值从{1}改为空]", th.Level, string.Join(";", values)); } } if (String.IsNullOrEmpty(th1.Value)) { continue; } foreach (var value in th1.Value.Split(';')) { var t = new T_FACT_SENSOR_THRESHOLD(); t.SensorId = sensorThreshold.SensorId; t.ItemId = sensorThreshold.ItemId; t.ThresholdLevel = th1.Level; var v = value.Split(new[] { '(', ',', ')' }); t.ThresholdDownValue = v[1] == "-" ? double.MinValue : double.Parse(v[1]); t.ThresholdUpValue = v[2] == "+" ? double.MaxValue : double.Parse(v[2]); var entry = db.Entry(t); entry.State = System.Data.EntityState.Added; } } sb.Append(";"); } #region 日志信息 this.Request.Properties["ActionParameter"] = JsonConvert.SerializeObject(model); this.Request.Properties["ActionParameterShow"] = sb.ToString(); #endregion db.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.Accepted, StringHelper.GetMessageString("配置成功"))); } catch (FormatException) { return(Request.CreateResponse(HttpStatusCode.BadRequest, StringHelper.GetMessageString("参数无效"))); } catch (Exception) { return(Request.CreateResponse(HttpStatusCode.BadRequest, StringHelper.GetMessageString("配置保存失败"))); } } }
public HttpResponseMessage ConfigAllSensorThreshold(FactorThreshold model) { using (var db = new SecureCloud_Entities()) { try { // 归属的传感器 var sensors = db.T_DIM_SENSOR.Where( s => s.STRUCT_ID == model.StructId && s.SAFETY_FACTOR_TYPE_ID == model.FactorId).ToList(); // 监测因素 var factors = Config.GetConfigByFactors( sensors.Select(s => s.SAFETY_FACTOR_TYPE_ID == null ? -1 : Convert.ToInt32(s.SAFETY_FACTOR_TYPE_ID)) .Distinct() .Where(f => f > 0) .ToArray(), model.StructId); var sensorDetails = from s in sensors from f in factors where s.SAFETY_FACTOR_TYPE_ID == f.Id select new { sensorId = s.SENSOR_ID, location = s.SENSOR_LOCATION_DESCRIPTION, items = f.Display }; // 传感器监测项 var list = new List <SensorThreshold>(); foreach (var sensorDetail in sensorDetails) { int i = 1; foreach (var item in sensorDetail.items) { list.Add( new SensorThreshold { SensorId = sensorDetail.sensorId, ItemId = i }); i++; } } foreach (var threshold in model.Threshold) // 遍历所有等级 { foreach (var item in list) // 遍历所有传感器 { SensorThreshold i = item; ThresholdModel th = threshold; var old = db.T_FACT_SENSOR_THRESHOLD.Where( t => t.SensorId == i.SensorId && t.ItemId == i.ItemId && t.ThresholdLevel == th.Level); if (old.Any()) // 已存在配置 { foreach (var o in old) { var entry = db.Entry(o); entry.State = System.Data.EntityState.Deleted; } } if (!string.IsNullOrEmpty(threshold.Value)) // 该等级阈值不为空 { foreach (var value in threshold.Value.Split(';')) // 遍历阈值内容 { var v = value.Split(new[] { '(', ',', ')' }); var data2Insert = new T_FACT_SENSOR_THRESHOLD(); data2Insert.SensorId = i.SensorId; data2Insert.ItemId = i.ItemId; data2Insert.ThresholdLevel = th.Level; data2Insert.ThresholdDownValue = v[1] == "-" ? double.MinValue : double.Parse(v[1]); data2Insert.ThresholdUpValue = v[2] == "+" ? double.MaxValue : double.Parse(v[2]); var entry2 = db.Entry(data2Insert); entry2.State = System.Data.EntityState.Added; } } } } #region 日志信息 var stc = db.T_DIM_STRUCTURE.Where(s => s.ID == model.StructId) .Select(s => s.STRUCTURE_NAME_CN) .FirstOrDefault(); var fac = db.T_DIM_SAFETY_FACTOR_TYPE.Where(f => f.SAFETY_FACTOR_TYPE_ID == model.FactorId) .Select(f => f.SAFETY_FACTOR_TYPE_NAME) .FirstOrDefault(); string values = "空"; if (model.Threshold != null) { values = string.Join( ";", model.Threshold.Select( t => string.Format("[{0}级:{1}]", t.Level, t.Value ?? "空"))); } this.Request.Properties["ActionParameter"] = JsonConvert.SerializeObject(model); this.Request.Properties["ActionParameterShow"] = string.Format( "结构物:{0},监测因素:{1},阈值设为{2}", stc, fac, values); #endregion db.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.Accepted, StringHelper.GetMessageString("配置成功"))); } catch (FormatException ex) { return(Request.CreateResponse(HttpStatusCode.BadRequest, StringHelper.GetMessageString("参数无效" + ex.StackTrace))); } catch (Exception) { return(Request.CreateResponse(HttpStatusCode.BadRequest, StringHelper.GetMessageString("配置保存失败"))); } } }
public object GetUserRoleMenu(int userId) { using (SecureCloud_Entities entity = new SecureCloud_Entities()) { var ur = (from r in entity.T_DIM_ROLE from u in entity.T_DIM_USER where u.ROLE_ID == r.ROLE_ID && u.USER_NO == userId && u.USER_IS_ENABLED select u.ROLE_ID); if (!ur.ToList().Any()) { return(ur.ToList()); } else { if (ur.FirstOrDefault() == 1) { var query = from r in entity.T_DIM_RESOURCE where r.RESOURCE_MENU != null && r.PARENT_ID == "0" select new { RESOURCE_ID = r.RESOURCE_ID, RESOURCE_NAME = r.RESOURCE_NAME, RESOURCE_MENU = r.RESOURCE_MENU, data = (from cr in entity.T_DIM_RESOURCE where cr.PARENT_ID == r.RESOURCE_ID && cr.RESOURCE_MENU != null select new { RESOURCE_ID = cr.RESOURCE_ID, RESOURCE_NAME = cr.RESOURCE_NAME, RESOURCE_MENU = cr.RESOURCE_MENU }) }; return(query.ToList()); } else { var query = from rr in entity.T_DIM_ROLE_RESOURCE from r in entity.T_DIM_RESOURCE where r.RESOURCE_MENU != null && r.PARENT_ID == "0" && rr.ROLE_ID == ur.FirstOrDefault() && rr.RESOURCE_ID == r.RESOURCE_ID select new { RESOURCE_ID = r.RESOURCE_ID, RESOURCE_NAME = r.RESOURCE_NAME, RESOURCE_MENU = r.RESOURCE_MENU, data = (from crr in entity.T_DIM_ROLE_RESOURCE from cr in entity.T_DIM_RESOURCE where cr.PARENT_ID == r.RESOURCE_ID && cr.RESOURCE_MENU != null && crr.ROLE_ID == ur.FirstOrDefault() && crr.RESOURCE_ID == cr.RESOURCE_ID select new { RESOURCE_ID = cr.RESOURCE_ID, RESOURCE_NAME = cr.RESOURCE_NAME, RESOURCE_MENU = cr.RESOURCE_MENU }) }; return(query.ToList()); } } } }
public object FindThresholdBySensor(int sensorId) { using (var db = new SecureCloud_Entities()) { var sq = from s in db.T_DIM_SENSOR from p in db.T_DIM_SENSOR_PRODUCT where s.SENSOR_ID == sensorId && s.IsDeleted == false && s.PRODUCT_SENSOR_ID == p.PRODUCT_ID && p.PRODUCT_NAME != gps select s; // 归属的传感器 var sensor = sq.FirstOrDefault(); if (sensor == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, StringHelper.GetMessageString("传感器id无效"))); } var structId = Config.GetStructId(sensorId); //修改 // 监测因素 var factors = Config.GetConfigByFactors(new[] { Convert.ToInt32(sensor.SAFETY_FACTOR_TYPE_ID) }, structId); var sensorDetails = from f in factors where sensor.SAFETY_FACTOR_TYPE_ID == f.Id select new { sensorId = sensor.SENSOR_ID, location = sensor.SENSOR_LOCATION_DESCRIPTION, items = f.Display }; var list = new List <SensorThreshold>(); foreach (var sensorDetail in sensorDetails) { int i = 1; foreach (var item in sensorDetail.items) { list.Add( new SensorThreshold { SensorId = sensorDetail.sensorId, Location = sensorDetail.location, ItemId = i, ItemName = item }); i++; } } // 查询阈值 var query = from l in list from t in db.T_FACT_SENSOR_THRESHOLD where t.SensorId == l.SensorId && t.ItemId == l.ItemId select new { l.SensorId, l.ItemId, t.ThresholdLevel, Value = t.ThresholdDownValue == null || t.ThresholdUpValue == null ? null : "(" + (t.ThresholdDownValue == double.MinValue ? "-" : t.ThresholdDownValue.ToString()) + "," + (t.ThresholdUpValue == double.MaxValue ? "+" : t.ThresholdUpValue.ToString()) + ")" }; var thresholds = query.ToList(); // 结果 var rslt = list.GroupBy(l => new { l.SensorId, l.Location, l.ItemId, l.ItemName }) .Select( v => new SensorThreshold { SensorId = v.Key.SensorId, Location = v.Key.Location, ItemId = v.Key.ItemId, ItemName = v.Key.ItemName, Threshold = new[] { new ThresholdModel { Level = 1, Value = String.Join( ";", thresholds.Where( t => t.SensorId == v.Key.SensorId && t.ItemId == v.Key.ItemId && t.ThresholdLevel == 1) .Select(t => t.Value) .ToArray()) }, new ThresholdModel { Level = 2, Value = String.Join( ";", thresholds.Where( t => t.SensorId == v.Key.SensorId && t.ItemId == v.Key.ItemId && t.ThresholdLevel == 2) .Select(t => t.Value) .ToArray()) }, new ThresholdModel { Level = 3, Value = String.Join( ";", thresholds.Where( t => t.SensorId == v.Key.SensorId && t.ItemId == v.Key.ItemId && t.ThresholdLevel == 3) .Select(t => t.Value) .ToArray()) }, new ThresholdModel { Level = 4, Value = String.Join( ";", thresholds.Where( t => t.SensorId == v.Key.SensorId && t.ItemId == v.Key.ItemId && t.ThresholdLevel == 4) .Select(t => t.Value) .ToArray()) } } }); return(rslt); } }
public HttpResponseMessage ModifyGroupJinRunXian([FromUri] int groupId, [FromBody] SensorGroupJinRunXian model) { using (var db = new SecureCloud_Entities()) { try { var group = (from s in db.T_DIM_GROUP where s.GROUP_ID == groupId select s ).FirstOrDefault(); if (group == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, StringHelper.GetMessageString("传感器组不存在"))); } var sensorIds = model.SensorList.Select(s => s.SensorId); var sensors = db.T_DIM_SENSOR.Where(s => sensorIds.Contains(s.SENSOR_ID)).ToList(); StringBuilder sb = new StringBuilder(); group.GROUP_NAME = model.GroupName; // 修改前的传感器列表 var sensorExists = from s in db.T_DIM_SENSOR_GROUP_JINRUNXIAN where s.GROUP_ID == groupId select s; // 删除旧的配置 foreach (var sensorExist in sensorExists) { db.T_DIM_SENSOR_GROUP_JINRUNXIAN.Remove(sensorExist); } // 修改后的传感器列表 var sensorModels = model.SensorList; // 插入新的配置 foreach (var sensor in sensorModels) { sb.AppendFormat( "位置-{0}_是否基准点-{1};", sensors.Where(s => s.SENSOR_ID == sensor.SensorId) .Select(s => s.SENSOR_LOCATION_DESCRIPTION) .FirstOrDefault(), sensor.Height); var sensorGroupJinRunXian = new T_DIM_SENSOR_GROUP_JINRUNXIAN(); sensorGroupJinRunXian.GROUP_ID = groupId; sensorGroupJinRunXian.SENSOR_ID = sensor.SensorId; sensorGroupJinRunXian.HEIGHT = sensor.Height; var entry = db.Entry(sensorGroupJinRunXian); entry.State = System.Data.EntityState.Added; } #region 日志 this.Request.Properties["ActionParameter"] = JsonConvert.SerializeObject(model); this.Request.Properties["ActionParameterShow"] = string.Format("组:{0},传感器:{1}", model.GroupName, sb); #endregion db.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.Accepted, StringHelper.GetMessageString("测斜传感器组修改成功"))); } catch (NullReferenceException e) { return(Request.CreateResponse( HttpStatusCode.BadRequest, StringHelper.GetMessageString("测斜传感器组修改失败:参数无效"))); } catch (Exception e) { return(Request.CreateResponse(HttpStatusCode.BadRequest, StringHelper.GetMessageString("测斜传感器组修改失败"))); } } }
public HttpResponseMessage ModifyGroupChenJiang([FromUri] int groupId, [FromBody] SensorGroupChenJiang model) { using (var db = new SecureCloud_Entities()) { try { var group = (from s in db.T_DIM_GROUP where s.GROUP_ID == groupId select s ).FirstOrDefault(); if (group == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, StringHelper.GetMessageString("传感器组不存在"))); } var sensorIds = model.SensorList.Select(s => s.SensorId); var sensors = db.T_DIM_SENSOR.Where(s => sensorIds.Contains(s.SENSOR_ID)).ToList(); StringBuilder sb = new StringBuilder(); group.GROUP_NAME = model.GroupName; // 修改前的传感器列表 var sensorExists = from s in db.T_DIM_SENSOR_GROUP_CHENJIANG where s.GROUP_ID == groupId select s; // 修改前 组信息 var gsexist = (from s in db.T_DIM_SENSOR from sg in sensorExists from d in db.T_DIM_REMOTE_DTU where s.SENSOR_ID == sg.SENSOR_ID && d.ID == s.DTU_ID select new SensorGroup { GroupId = groupId, DtuId = s.DTU_ID.Value, DtuCode = d.REMOTE_DTU_NUMBER, DacInterval = d.REMOTE_DTU_GRANULARITY.Value }).Distinct(); // 删除旧的配置 foreach (var sensorExist in sensorExists) { db.T_DIM_SENSOR_GROUP_CHENJIANG.Remove(sensorExist); } // 修改后的传感器列表 var sensorModels = model.SensorList; // 插入新的配置 foreach (var sensor in sensorModels) { sb.AppendFormat( "位置-{0}_长度-{2}_是否基准点-{1};", sensors.Where(s => s.SENSOR_ID == sensor.SensorId) .Select(s => s.SENSOR_LOCATION_DESCRIPTION) .FirstOrDefault(), sensor.IsDatum, sensor.Len); var sensorGroupCeXie = new T_DIM_SENSOR_GROUP_CHENJIANG(); sensorGroupCeXie.GROUP_ID = groupId; sensorGroupCeXie.SENSOR_ID = sensor.SensorId; sensorGroupCeXie.isJIZHUNDIAN = sensor.IsDatum; sensorGroupCeXie.LENGTH = sensor.Len; var entry = db.Entry(sensorGroupCeXie); entry.State = System.Data.EntityState.Added; } #region 日志 this.Request.Properties["ActionParameter"] = JsonConvert.SerializeObject(model); this.Request.Properties["ActionParameterShow"] = string.Format("组:{0},传感器:{1}", model.GroupName, sb); #endregion db.SaveChanges(); // 修改后的组信息 var gs = (from s in db.T_DIM_SENSOR from sg in sensorIds from d in db.T_DIM_REMOTE_DTU where s.SENSOR_ID == sg && d.ID == s.DTU_ID select new SensorGroup { GroupId = groupId, DtuId = s.DTU_ID.Value, DtuCode = d.REMOTE_DTU_NUMBER, DacInterval = d.REMOTE_DTU_GRANULARITY.Value }).Distinct(); try { SendMsg2ET(gs.ToList(), gsexist.ToList()); } catch (Exception ex) { log.Error(ex); } return(Request.CreateResponse(HttpStatusCode.Accepted, StringHelper.GetMessageString("测斜传感器组修改成功"))); } catch (NullReferenceException e) { return(Request.CreateResponse( HttpStatusCode.BadRequest, StringHelper.GetMessageString("测斜传感器组修改失败:参数无效"))); } catch (Exception e) { return(Request.CreateResponse(HttpStatusCode.BadRequest, StringHelper.GetMessageString("测斜传感器组修改失败"))); } } }
public HttpResponseMessage AddGroupsChenJiang([FromBody] SensorGroupChenJiang model) { using (var db = new SecureCloud_Entities()) { try { var group = new T_DIM_GROUP(); group.GROUP_NAME = model.GroupName; group.GROUP_TYPE_ID = 2; var entry = db.Entry(group); entry.State = System.Data.EntityState.Added; var sensorIds = model.SensorList.Select(s => s.SensorId); var sensors = db.T_DIM_SENSOR.Where(s => sensorIds.Contains(s.SENSOR_ID)).ToList(); StringBuilder sb = new StringBuilder(); foreach (var p in model.SensorList) { sb.AppendFormat( "位置-{0}_长度-{2}_是否基准点-{1};", sensors.Where(s => s.SENSOR_ID == p.SensorId) .Select(s => s.SENSOR_LOCATION_DESCRIPTION) .FirstOrDefault(), p.IsDatum, p.Len); var sensorGroupChenJiang = new T_DIM_SENSOR_GROUP_CHENJIANG(); sensorGroupChenJiang.GROUP_ID = group.GROUP_ID; sensorGroupChenJiang.SENSOR_ID = p.SensorId; sensorGroupChenJiang.isJIZHUNDIAN = p.IsDatum; sensorGroupChenJiang.LENGTH = p.Len; var test = db.Entry(sensorGroupChenJiang); test.State = System.Data.EntityState.Added; } #region 日志 this.Request.Properties["ActionParameter"] = JsonConvert.SerializeObject(model); this.Request.Properties["ActionParameterShow"] = string.Format("组:{0},传感器:{1}", model.GroupName, sb); #endregion db.SaveChanges(); int gid = group.GROUP_ID; // 增加的组信息 var gs = (from s in db.T_DIM_SENSOR from sg in sensorIds from d in db.T_DIM_REMOTE_DTU where s.SENSOR_ID == sg && d.ID == s.DTU_ID select new SensorGroup { GroupId = gid, DtuId = s.DTU_ID.Value, DtuCode = d.REMOTE_DTU_NUMBER, DacInterval = d.REMOTE_DTU_GRANULARITY.Value }) .Distinct(); try { SendMsg2ET(gs.ToList()); } catch (Exception ex) { log.Error(ex); } return(Request.CreateResponse(HttpStatusCode.Accepted, StringHelper.GetMessageString("测斜传感器组新增成功"))); } catch (NullReferenceException e) { return(Request.CreateResponse( HttpStatusCode.BadRequest, StringHelper.GetMessageString("测斜传感器组新增失败:参数无效"))); } catch (Exception e) { return(Request.CreateResponse(HttpStatusCode.BadRequest, StringHelper.GetMessageString("测斜传感器组新增失败"))); } } }
public HttpResponseMessage RemoveGroup([FromUri] int groupId) { using (var db = new SecureCloud_Entities()) { var group = (from s in db.T_DIM_GROUP where s.GROUP_ID == groupId select s).FirstOrDefault(); if (group == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, StringHelper.GetMessageString("传感器组不存在"))); } #region 日志 this.Request.Properties["ActionParameterShow"] = string.Format("组:{0}", group.GROUP_NAME); #endregion var cexie = from c in db.T_DIM_SENSOR_GROUP_CEXIE where c.GROUP_ID == groupId select c; foreach (var c in cexie) { db.T_DIM_SENSOR_GROUP_CEXIE.Remove(c); } var gscexie = (from s in db.T_DIM_SENSOR from sg in cexie from d in db.T_DIM_REMOTE_DTU where s.SENSOR_ID == sg.SENSOR_ID && d.ID == s.DTU_ID select new SensorGroup { GroupId = groupId, DtuId = s.DTU_ID.Value, DtuCode = d.REMOTE_DTU_NUMBER, DacInterval = d.REMOTE_DTU_GRANULARITY.Value }).Distinct(); var chenjiang = from j in db.T_DIM_SENSOR_GROUP_CHENJIANG where j.GROUP_ID == groupId select j; var gschenjiang = (from s in db.T_DIM_SENSOR from sg in chenjiang from d in db.T_DIM_REMOTE_DTU where s.SENSOR_ID == sg.SENSOR_ID && d.ID == s.DTU_ID select new SensorGroup { GroupId = groupId, DtuId = s.DTU_ID.Value, DtuCode = d.REMOTE_DTU_NUMBER, DacInterval = d.REMOTE_DTU_GRANULARITY.Value }).Distinct(); foreach (var j in chenjiang) { db.T_DIM_SENSOR_GROUP_CHENJIANG.Remove(j); } var jinrunxian = from r in db.T_DIM_SENSOR_GROUP_JINRUNXIAN where r.GROUP_ID == groupId select r; foreach (var r in jinrunxian) { db.T_DIM_SENSOR_GROUP_JINRUNXIAN.Remove(r); } db.T_DIM_GROUP.Remove(group); try { var lstce = gscexie.ToList(); var lstcj = gschenjiang.ToList(); db.SaveChanges(); try { SendMsg2ET(lstce); } catch (Exception ex) { log.Error(ex); } try { SendMsg2ET(lstcj); } catch (Exception ex) { log.Error(ex); } return(Request.CreateResponse(HttpStatusCode.Accepted, StringHelper.GetMessageString("传感器组删除成功"))); } catch (Exception e) { return(Request.CreateResponse(HttpStatusCode.BadRequest, StringHelper.GetMessageString("传感器组删除失败"))); } } }
public object GetLastDataByGroup(int groupId, string direct) { using (var entity = new SecureCloud_Entities()) { var maxDate = (from d in entity.T_THEMES_DEFORMATION_DEEP_DISPLACEMENT from sg in entity.T_DIM_SENSOR_GROUP_CEXIE where d.SENSOR_ID == sg.SENSOR_ID && sg.GROUP_ID == groupId && d.DEEP_CUMULATIVEDISPLACEMENT_X_VALUE != null && d.DEEP_CUMULATIVEDISPLACEMENT_Y_VALUE != null select d.ACQUISITION_DATETIME).Max(); var query = from d in entity.T_THEMES_DEFORMATION_DEEP_DISPLACEMENT from sg in entity.T_DIM_SENSOR_GROUP_CEXIE where d.SENSOR_ID == sg.SENSOR_ID && sg.GROUP_ID == groupId && d.ACQUISITION_DATETIME == maxDate select new { depth = sg.DEPTH, xvalue = d.DEEP_CUMULATIVEDISPLACEMENT_X_VALUE, yvalue = d.DEEP_CUMULATIVEDISPLACEMENT_Y_VALUE, acquistiontime = d.ACQUISITION_DATETIME }; var list = query.ToList(); if (direct == "x") { return(new JArray(list.GroupBy(d => d.acquistiontime).Select(d => new JObject( new JProperty("acquistiontime", d.Key), new JProperty( "values", new JArray(d.OrderBy(v => v.depth).Select(v => new JObject( new JProperty("depth", v.depth), new JProperty("xvalue", v.xvalue))))))))); } if (direct == "y") { return(new JArray(list.GroupBy(d => d.acquistiontime).Select(d => new JObject( new JProperty("acquistiontime", d.Key), new JProperty( "values", new JArray(d.OrderBy(v => v.depth).Select(v => new JObject( new JProperty("depth", v.depth), new JProperty("yvalue", v.yvalue))))))))); } return(new JArray(list.GroupBy(d => d.acquistiontime).Select(d => new JObject( new JProperty("acquistiontime", d.Key), new JProperty( "values", new JArray(d.OrderBy(v => v.depth).Select(v => new JObject( new JProperty("depth", v.depth), new JProperty("xvalue", v.xvalue), new JProperty("yvalue", v.yvalue))))))))); } }