public IActionResult HeDaowaterImport(IFormFile excelfile) { var response = ResponseModelFactory.CreateInstance; using (_dbContext) { DateTime beginTime = DateTime.Now; string sWebRootFolder = _hostingEnvironment.WebRootPath + "\\UploadFiles\\ImportEmergencyExcel"; //var schoolinfo = _dbContext.SchoolInforManagement.AsQueryable(); string uploadtitle = "河道水位信息导入" + DateTime.Now.ToString("yyyyMMddHHmmss"); string sFileName = $"{uploadtitle}.xlsx"; FileInfo file = new FileInfo(Path.Combine(sWebRootFolder, sFileName)); //string conStr = ConnectionStrings.DefaultConnection; string responsemsgsuccess = ""; string responsemsgrepeat = ""; string responsemsgdefault = ""; int successcount = 0; int repeatcount = 0; int defaultcount = 0; //string today = DateTime.Now.ToString("yyyy-MM-dd"); try { //把excelfile中的数据复制到file中 using (FileStream fs = new FileStream(file.ToString(), FileMode.Create)) //初始化一个指定路径和创建模式的FileStream { excelfile.CopyTo(fs); fs.Flush(); //清空stream的缓存,并且把缓存中的数据输出到file } DataTable dt = Haikan3.Utils.ExcelTools.ExcelToDataTable(file.ToString(), "Sheet1", true); if (dt == null || dt.Rows.Count == 0) { response.SetFailed("表格无数据"); return(Ok(response)); } else { if (!dt.Columns.Contains("地址")) { response.SetFailed("无‘地址’列"); return(Ok(response)); } if (!dt.Columns.Contains("时间")) { response.SetFailed("无‘时间’列"); return(Ok(response)); } if (!dt.Columns.Contains("水位")) { response.SetFailed("无‘水位’列"); return(Ok(response)); } if (!dt.Columns.Contains("临界点")) { response.SetFailed("无‘临界点’列"); return(Ok(response)); } if (!dt.Columns.Contains("水位预警")) { response.SetFailed("无‘水位预警’列"); return(Ok(response)); } if (!dt.Columns.Contains("防汛等级")) { response.SetFailed("无‘防汛等级’列"); return(Ok(response)); } for (int i = 0; i < dt.Rows.Count; i++) { var entity = new HeDaowater(); entity.HeDaowaterUuid = Guid.NewGuid(); if (!string.IsNullOrEmpty(dt.Rows[i]["地址"].ToString())) { entity.HeDaowaterAddress = dt.Rows[i]["地址"].ToString(); } else { responsemsgdefault += "<p style='color:red'>" + "第" + (i + 2) + "行地址为空" + "</p></br>"; defaultcount++; continue; } if (!string.IsNullOrEmpty(dt.Rows[i]["时间"].ToString())) { entity.HeDaowaterTime = dt.Rows[i]["时间"].ToString(); } else { responsemsgdefault += "<p style='color:red'>" + "第" + (i + 2) + "行时间为空" + "</p></br>"; defaultcount++; continue; } if (!string.IsNullOrEmpty(dt.Rows[i]["水位"].ToString())) { entity.HeDaoHeDaowaterSw = dt.Rows[i]["水位"].ToString(); } else { responsemsgdefault += "<p style='color:red'>" + "第" + (i + 2) + "行水位为空" + "</p></br>"; defaultcount++; continue; } if (!string.IsNullOrEmpty(dt.Rows[i]["临界点"].ToString())) { entity.Ljiedian = dt.Rows[i]["临界点"].ToString(); } else { responsemsgdefault += "<p style='color:red'>" + "第" + (i + 2) + "行临界点为空" + "</p></br>"; defaultcount++; continue; } if (!string.IsNullOrEmpty(dt.Rows[i]["水位预警"].ToString())) { entity.HeDaowaterYujin = dt.Rows[i]["水位预警"].ToString(); } else { responsemsgdefault += "<p style='color:red'>" + "第" + (i + 2) + "行水位预警为空" + "</p></br>"; defaultcount++; continue; } if (!string.IsNullOrEmpty(dt.Rows[i]["防汛等级"].ToString())) { entity.FangxunDj = dt.Rows[i]["防汛等级"].ToString(); } else { responsemsgdefault += "<p style='color:red'>" + "第" + (i + 2) + "行防汛等级为空" + "</p></br>"; defaultcount++; continue; } entity.AddTime = DateTime.Now.ToString("yyyy-MM-dd"); entity.AddPeople = AuthContextService.CurrentUser.DisplayName; entity.IsDeleted = 0; _dbContext.HeDaowater.Add(entity); _dbContext.SaveChanges(); successcount++; } } responsemsgsuccess = "<p style='color:green'>导入成功:" + successcount + "条</p></br>" + responsemsgsuccess; responsemsgrepeat = "<p style='color:orange'>重复需手动修改数据:" + repeatcount + "条</p></br>" + responsemsgrepeat; responsemsgdefault = "<p style='color:red'>导入失败:" + defaultcount + "条</p></br>" + responsemsgdefault; ToLog.AddLog("导入", "成功:导入:河道水位监测信息数据", _dbContext); //DateTime endTime = DateTime.Now; //TimeSpan useTime = endTime - beginTime; //string taketime = "导入时间" + useTime.TotalSeconds.ToString() + "秒 "; response.SetData(JsonConvert.DeserializeObject(JsonConvert.SerializeObject(new { //time = taketime, successmsg = responsemsgsuccess , repeatmsg = responsemsgrepeat, defaultmsg = responsemsgdefault }))); return(Ok(response)); } catch (Exception ex) { response.SetFailed(ex.Message); return(Ok(response)); } } }
public void TCP1() { context1 = new HQContext(); try { string message = "当前水位:"; int port = 33300; IPAddress localAddr = IPAddress.Parse("10.172.33.4"); listener1 = new TcpListener(localAddr, port); listener1.Start(); log.Info("监听1开启"); byte[] bytes = new byte[500]; string data = null; while (true) { var date = DateTime.Now; Console.WriteLine(date); TcpClient client = listener1.AcceptTcpClient(); Console.WriteLine("Connected!"); log.Info("TCP1Connected!"); data = null; NetworkStream stream = client.GetStream(); int i; if (stream.CanRead) { log.Info("stream1可读"); while ((i = stream.Read(bytes, 0, bytes.Length)) != 0) { log.Info("接受报文1"); Console.WriteLine("字节数:" + i); var str = ""; Console.WriteLine(ToHex(bytes, 0, 1)); Console.WriteLine(ToHex(bytes, 2, 2)); Console.WriteLine(ToHex(bytes, 3, 7)); Console.WriteLine(ToHex(bytes, 8, 9)); Console.WriteLine(ToHex(bytes, 10, 10)); Console.WriteLine(ToHex(bytes, 11, 12)); Console.WriteLine("----------------------------"); Console.WriteLine(ToHex(bytes, 13, 13)); Console.WriteLine("******************************"); Console.WriteLine(ToHex(bytes, 14, 15)); //1 Console.WriteLine(ToBCD(bytes, 16, 21)); //2 if (i > 25) { Console.WriteLine(ToHex(bytes, 22, 23)); //3 Console.WriteLine(ToHex(bytes, 24, 28)); //4 Console.WriteLine(ToHex(bytes, 29, 29)); //5 Console.WriteLine(ToHex(bytes, 30, 31)); //6 Console.WriteLine(ToBCD(bytes, 32, 36)); //7 Console.WriteLine(ToHex(bytes, 37, 38)); //8 Console.WriteLine(ToHex(bytes, 39, 42)); //9 Console.WriteLine(ToHex(bytes, 43, 44)); //10 Console.WriteLine(ToHex(bytes, 45, 47)); //11 Console.WriteLine(ToHex(bytes, 48, 49)); //12 Console.WriteLine(ToHex(bytes, 50, 52)); //13 Console.WriteLine(ToHex(bytes, 53, 54)); //14 Console.WriteLine(ToHex(bytes, 55, 56)); //15 var dtbdc = (DateTime.Now.Year / 100).ToString() + ToBCD(bytes, 32, 36) + "00"; log.Info("监测时间1:" + dtbdc); var dateTime = DateTime.Now; var checkToTime = DateTime.TryParseExact(dtbdc, "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture, System.Globalization.DateTimeStyles.None, out dateTime); if (checkToTime) { var sdatetime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"); log.Info("监测时间1转换:" + sdatetime); var sw = ToHex(bytes, 39, 42); //var sw = "0000750"; double num = 0; //if (sw[sw.Length - 1] == '0') //{ // num = double.Parse(sw); // num = num / 100; //} //else //{ num = double.Parse(sw); num = num / 1000; Console.WriteLine("水位:" + num); log.Info("水位1:" + num); var checkinfo = ""; if (num == 9999.999) { checkinfo = "大于"; num = 2.5; } else { checkinfo = ""; } //} sw = num.ToString(); var ljsw = (double)context1.SystemSetting.First(x => x.ID == 1).WaterLevelCriticalPoint; if (num >= ljsw) { log.Info("count1:" + count1 + "/" + "lastNum1:" + lastNum1 + "/" + "lastSentTime1:" + lastSentTime1.ToString("yyyy-MM-dd HH:mm:ss")); if (count1 >= 0 && lastNum1 < ljsw) { log.Info("<警告!中鑫村当前水位:" + checkinfo + sw + " (m),已超过临界点"); //YunSendMsg.SendMsg("15868894638", "警告!中鑫村当前水位:" + checkinfo + sw + " (m),已超过临界点"); YunSendMsg.SendMsg("16657110023", "警告!中鑫村当前水位:" + checkinfo + sw + " (m),已超过临界点"); YunSendMsg.SendMsg("18100196818", "警告!中鑫村当前水位:" + checkinfo + sw + " (m),已超过临界点"); count1++; lastNum1 = num; lastSentTime1 = DateTime.Now; } else if (count1 > 0 && lastNum1 > ljsw && (DateTime.Now - lastSentTime1).Minutes >= 29) { log.Info(">警告!中鑫村当前水位:" + checkinfo + sw + " (m),已超过临界点"); //YunSendMsg.SendMsg("15868894638", "警告!中鑫村当前水位:" + checkinfo + sw + " (m),已超过临界点"); YunSendMsg.SendMsg("16657110023", "警告!中鑫村当前水位:" + checkinfo + sw + " (m),已超过临界点"); YunSendMsg.SendMsg("18100196818", "警告!中鑫村当前水位:" + checkinfo + sw + " (m),已超过临界点"); count1++; lastNum1 = num; lastSentTime1 = DateTime.Now; } else { lastNum1 = num; } } lastNum1 = num; num = 0; Console.WriteLine(sw); //if(sw) var cp = ToHex(bytes, 45, 47); num = double.Parse(cp); num = num / 10; HeDaowater heDaowater = new HeDaowater() { HeDaowaterUuid = Guid.NewGuid(), HeDaowaterAddress = ToHex(bytes, 24, 28) + "/" + TelemetryStationType(ToHex(bytes, 29, 29)), HeDaowaterTime = sdatetime, HeDaoHeDaowaterSw = sw, IsDeleted = 0, AddTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), AddPeople = "TCP", CurrentPrecipitation = (decimal?)num, }; if (!context1.HeDaowater.Any(x => x.HeDaowaterAddress == heDaowater.HeDaowaterAddress && x.HeDaowaterTime == sdatetime && x.IsDeleted == 0)) { context1.HeDaowater.Add(heDaowater); context1.SaveChanges(); } } } Console.WriteLine("******************************"); Console.WriteLine(ToHex(bytes, i - 3, i - 3)); Console.WriteLine("----------------------------"); //Console.WriteLine(Encoding.ASCII.GetString(bytes,13,1)); //Console.WriteLine(Encoding.ASCII.GetString(bytes,22,1)); Console.WriteLine(str); if (i > 25) { data = ToHex(bytes, 0, 15) + ToBCD(bytes, 16, 21) + ToHex(bytes, 22, 31) + ToBCD(bytes, 32, 36) + ToHex(bytes, 37, i - 1); } else { data = ToHex(bytes, 0, 15) + ToBCD(bytes, 16, 21) + ToHex(bytes, 21, i - 1); } Console.WriteLine("Received:" + data); log.Info("Received:" + data); data = data.ToUpper(); //byte[] msg = System.Text.Encoding.ASCII.GetBytes(data); //// Send back a response. //stream.Write(msg, 0, msg.Length); //Console.WriteLine("Sent: {0}", data); } } else { log.Info("stream1无法读,"); log.Info(listener1.Server.Connected); log.Info(listener1.Server.Blocking); //stream.Close(); //client.Close(); //client= listener1.AcceptTcpClient(); //stream = client.GetStream(); } //client.Close(); } } catch (Exception ex) { Console.WriteLine(ex.Message); log.Info("监听1错误:" + ex.Message); listener1.Stop(); } finally { //listener1.Stop(); listener1 = null; GC.Collect(); log.Info("重启TCP1"); TCP1(); } }