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 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("配置保存失败"))); } } }