public ActionResult <string> add(dynamic param) { var jsonParams = JsonConvert.DeserializeObject <dynamic>(param.ToString()); int id = jsonParams.DeployId == null ? 0 : Convert.ToInt32(jsonParams.DeployId); DateTime dtTime = common.checkTime(jsonParams.Alarmtime); //if (!_context.Infoalarm.Any()) Infoalarm obj = new Infoalarm { InfoalarmOid = Guid.NewGuid().ToString("D"), DeployId = id, AlarmType = jsonParams.AlarmType, Alarmindex = jsonParams.Alarmindex, Alarmlevel = jsonParams.Alarmlevel, Alarmcontent = jsonParams.Alarmcontent, Alarmtime = dtTime, Cratetime = DateTime.Now }; _context.Add(obj); int result = _context.SaveChanges(); var data = new { InfoalarmOid = obj.InfoalarmOid, result = result }; return(common.transResult(data)); }
public void StartJob() { // 读取文件夹列表 if (common.coon == "") { return; } var provider = new PhysicalFileProvider(Directory.GetCurrentDirectory() + @"/ftpData/alarm"); var contents = provider.GetDirectoryContents(string.Empty); foreach (var item in contents) { if (item.IsDirectory == false) { int result = 0; List <string> errs = new List <string>(); using (System.IO.StreamReader file = System.IO.File.OpenText(item.PhysicalPath)) { Console.WriteLine("new file alarm:: " + item.PhysicalPath); using (JsonTextReader reader = new JsonTextReader(file)) { // 循环解析文件json数据 JObject jsonObject = (JObject)JToken.ReadFrom(reader); JArray jsonValues = (JArray)jsonObject["RECORDS"]; if (jsonValues.Count > 0) { var optionsBuilder = new DbContextOptionsBuilder <db_MicroStationContext>(); optionsBuilder.UseMySql(common.coon); using (var context = new db_MicroStationContext(optionsBuilder.Options)) { var queryAll = context.Infoalarm.AsQueryable().Where("srcOID != @0", "").OrderByDescending(d => d.Alarmtime).Take(1000).ToList(); foreach (var value in jsonValues) { string srcOid = (string)value["id"]; Console.WriteLine("srcOid:: " + srcOid); var query = queryAll.Where(s => s.SrcOid == srcOid).FirstOrDefault(); if (query != null) { continue; } try { Infoalarm obj = new Infoalarm { InfoalarmOid = Guid.NewGuid().ToString("D"), DeployId = (int)value["targetId"], SrcOid = (string)value["id"], AlarmType = (string)value["targetType"] == "station" ? "监测站点实时告警" : "", Alarmindex = (string)value["warningIndicator"], Alarmlevel = (string)value["warningLevel"], Alarmtitle = (string)value["warningTitle"], Alarmcontent = (string)value["warningContent"], Alarmtime = (DateTime)value["createTime"], Datatime = (DateTime)value["lastTime"], Cratetime = DateTime.Now }; if (!string.IsNullOrEmpty((string)value["normalTime"])) { obj.AlarmtimeNormal = (DateTime)value["normalTime"]; } if (!string.IsNullOrEmpty((string)value["lastTime"])) { obj.AlarmtimeLast = (DateTime)value["lastTime"]; } context.Add(obj); } catch (Exception) { Console.WriteLine("err srcID::" + srcOid); errs.Add((string)value["id"]); throw; } } result = context.SaveChanges(); Console.WriteLine("res count::" + result.ToString()); // 记录操作 TaskDocking docking = new TaskDocking { TaskDockingOid = Guid.NewGuid().ToString("D"), Filename = item.Name, Filepath = item.PhysicalPath, Dockingtype = "站点告警", AssociationId = "", Dockingmode = "download", Dockingtime = DateTime.Now, Dockingresults = errs.Count > 0 ? "失败" : "完成", Dockingtimes = 1, Dockmark = errs.ToString(), Createtime = DateTime.Now }; context.Add(docking); int result2 = context.SaveChanges(); } } Task.Run(() => { }); } } // 转移文件 if (result > errs.Count || errs.Count == 0) { File.Copy(item.PhysicalPath, Directory.GetCurrentDirectory() + @"/ftpData/alarm_old/" + item.Name); Thread.Sleep(1000); File.Delete(item.PhysicalPath); } } } }