c# 日期函数 DateTime dt = DateTime.Now; Label1.Text = dt.ToString();//2005-11-5 13:21:25 Label2.T

本文介绍了使用C#中的DateTime类进行日期和时间的操作方法,包括获取当前时间、格式化日期时间、添加时间间隔等常见任务,并展示了如何通过各种属性和方法来精确地控制和展示日期时间。

c# 日期函数    DateTime dt = DateTime.Now;   

Label1.Text = dt.ToString();//2005-11-5 13:21:25   

Label2.Text = dt.ToFileTime().ToString();//127756416859912816  

Label3.Text = dt.ToFileTimeUtc().ToString();//127756704859912816  

Label4.Text = dt.ToLocalTime().ToString();//2005-11-5 21:21:25 

 Label5.Text = dt.ToLongDateString().ToString();//2005年11月5日  

Label6.Text = dt.ToLongTimeString().ToString();//13:21:25  

Label7.Text = dt.ToOADate().ToString();//38661.5565508218  

Label8.Text = dt.ToShortDateString().ToString();//2005-11-5  

Label9.Text = dt.ToShortTimeString().ToString();//13:21   

Label10.Text = dt.ToUniversalTime().ToString();//2005-11-5 5:21:25  ?2005-11-5 13:30:28.4412864  

 Label1.Text = dt.Year.ToString();//2005   

Label2.Text = dt.Date.ToString();//2005-11-5 0:00:00  

Label3.Text = dt.DayOfWeek.ToString();//Saturday  

Label4.Text = dt.DayOfYear.ToString();//309  

Label5.Text = dt.Hour.ToString();//13   

Label6.Text = dt.Millisecond.ToString();//441  

Label7.Text = dt.Minute.ToString();//30  

Label8.Text = dt.Month.ToString();//11  

Label9.Text = dt.Second.ToString();//28   

Label10.Text = dt.Ticks.ToString();//632667942284412864 

 Label11.Text = dt.TimeOfDay.ToString();//13:30:28.4412864 

 Label1.Text = dt.ToString();//2005-11-5 13:47:04   

Label2.Text = dt.AddYears(1).ToString();//2006-11-5 13:47:04  

Label3.Text = dt.AddDays(1.1).ToString();//2005-11-6 16:11:04  

Label4.Text = dt.AddHours(1.1).ToString();//2005-11-5 14:53:04   

Label5.Text = dt.AddMilliseconds(1.1).ToString();//2005-11-5 13:47:04  

Label6.Text = dt.AddMonths(1).ToString();//2005-12-5 13:47:04  

Label7.Text = dt.AddSeconds(1.1).ToString();//2005-11-5 13:47:05  

Label8.Text = dt.AddMinutes(1.1).ToString();//2005-11-5 13:48:10  

Label9.Text = dt.AddTicks(1000).ToString();//2005-11-5 13:47:04  

Label10.Text = dt.CompareTo(dt).ToString();//0   //

Label11.Text = dt.Add(?).ToString();//问号为一个时间段  

 Label1.Text = dt.Equals("2005-11-6 16:11:04").ToString();//False  

Label2.Text = dt.Equals(dt).ToString();//True   

Label3.Text = dt.GetHashCode().ToString();//1474088234  

Label4.Text = dt.GetType().ToString();//System.DateTime  

Label5.Text = dt.GetTypeCode().ToString();//DateTime    

Label1.Text =  dt.GetDateTimeFormats('s')[0].ToString();//2005-11-05T14:06:25 

public partial class MainForm : Form { public static DataEngineProxy.DynaWS ws = new DynaWS("S1Report", "P2 WIP Move Vs P1 Tracing", "S1", DataEngineProxy.DynaWS._CSharp, "S1Report"); //public static string strDB = ""; public static string StrUserName = Environment.UserName; public static String LastDay; public static String TodayDay; public static String Type2 = "Type2"; DataTable dt1 = new DataTable(); DataTable dt2 = new DataTable(); DataTable dt3 = new DataTable(); DataTable dt4 = new DataTable(); DataTable dt5 = new DataTable(); DataTable dt6 = new DataTable(); DateTime now1; DateTime now2; DateTime now3; DateTime now_m ; DateTime now_y; TimeSpan fsc1 ; TimeSpan fsc2; TimeSpan fsc3; int DFMP4_EQPCNT; int DFMAA_EQPCNT; Regex reg = new Regex(@"[\u4e00-\u9fa5]"); //正则表达式 //double t =fsc.TotalHours; double t1; double t2; double t3; private Excel.Range range = null; public MainForm() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { ws.Login(); ws.Record_App_User_Log("Query", "For Query"); Realtime_Movewip_show(); Privilege_show(); summove_wip(); subtotalmove_wip(); this.Text = "Key Group Performance"; } private void Privilege_show() { if (ws.VerifyPrivilege("Maintain_selfgroup")) { //Maintain_simpleButton1.Enabled = true; //contextMenuStrip1.Visible = true; //contextMenuStrip2.Visible = true; //contextMenuStrip3.Visible = true; } else { Maintain_simpleButton1.Enabled = false; contextMenuStrip1.Visible = false; contextMenuStrip2.Visible = false; contextMenuStrip3.Visible = false; lITHOToolStripMenuItem.Visible = false; eTCHToolStripMenuItem.Visible=false; dIFFToolStripMenuItem.Visible=false; tFToolStripMenuItem.Visible=false; metrologyToolStripMenuItem.Visible=false; deleteGroupToolStripMenuItem.Visible=false; eTCHToolStripMenuItem1.Visible=false; dIFFToolStripMenuItem1.Visible=false; tFToolStripMenuItem1.Visible=false; deleteGroupToolStripMenuItem1.Visible=false; deleteGroupToolStripMenuItem2.Visible = false; } if (ws.VerifyPrivilege("Maintain_selfgroup") || StrUserName == "E020413" || StrUserName == "E041823") { Btn_Maintain.Enabled = true; } else { Btn_Maintain.Enabled = false; } } //P1,P2实时move,wip,Daily move,wip private void Realtime_Movewip_show() { try { RealTime_label6.Text = System.DateTime.Now.ToString(); LastDay = DateTime.Now.AddDays(-1).AddDays(-GetTimeFormatNumber()).ToString("yyyy-MM-dd"); TodayDay = DateTime.Now.AddDays(0).AddDays(-GetTimeFormatNumber()).ToString("yyyy-MM-dd"); DailyTime_label6.Text = LastDay.Substring(5, 5) + " 07:30"; DaliyTime_label7.Text = TodayDay.Substring(5, 5) + " 07:30"; //now = System.DateTime.Now; now_m = new DateTime(System.DateTime.Now.Year, System.DateTime.Now.Month, System.DateTime.Now.Day, 7, 30, 0); now_y = new DateTime(System.DateTime.Now.Year, System.DateTime.Now.Month, System.DateTime.Now.Day, 7, 30, 0).AddDays(-1); Int64 Ttime = Convert.ToInt64(System.DateTime.Now.ToString("yyyyMMddHHmmss")); Int64 T2time = Convert.ToInt64(System.DateTime.Now.ToString("yyyyMMdd") + "070000"); string time1_sql = @"SELECT to_char(to_date(Trim(SubStr(TIME,0,15)),'yyyymmddhh24miss'),'yyyy-mm-dd hh24:mi:ss ')TIME FROM( SELECT Max(TRACKOUTTIME) time FROM sdb_tb_wip_tito_hist )"; DataTable time1_dt = ws.GetDataTable("fp1db", time1_sql); string time2_sql = @"SELECT to_char(to_date(Trim(SubStr(TIME,0,15)),'yyyymmddhh24miss'),'yyyy-mm-dd hh24:mi:ss ')TIME FROM( SELECT Max(TRACKOUTTIME) time FROM sdb_tb_wip_tito_hist )"; DataTable time2_dt = ws.GetDataTable("fp2db", time2_sql); string time3_sql = @"SELECT to_char(to_date(Trim(SubStr(TIME,0,15)),'yyyymmddhh24miss'),'yyyy-mm-dd hh24:mi:ss ')TIME FROM( SELECT Max(TRACKOUTTIME) time FROM sdb_tb_wip_tito_hist )"; DataTable time3_dt = ws.GetDataTable("fp3db", time3_sql); //DateTime TIME=time_dt.Rows[0][0]; now1 = Convert.ToDateTime(time1_dt.Rows[0][0].ToString()); now2 = Convert.ToDateTime(time1_dt.Rows[0][0].ToString()); now3 = Convert.ToDateTime(time1_dt.Rows[0][0].ToString()); if(T2time<Ttime) { fsc1 = now1 - now_m; fsc2 = now2 - now_m; fsc3 = now3 - now_m; } else if (Ttime <= T2time) { fsc1 = now1 - now_y; fsc2 = now2 - now_y; fsc3 = now3 - now_y; } t1 = fsc1.TotalDays; t2 = fsc2.TotalDays; t3 = fsc3.TotalDays; string rtime_sql1 = @"SELECT EQP_TYPE,RP1_WIP,RP1_MOVE,FSCMOVE1 FROM mfg_vw_p1_tracing_wipmove_rt "; dt1 = ws.GetDataTable("fp1db", rtime_sql1); string rtime_sql2 = @"SELECT EQP_TYPE,RP2_WIP,RP2_MOVE,FSCMOVE2 FROM mfg_vw_p2_tracing_wipmove_rt "; dt2 = ws.GetDataTable("fp2db", rtime_sql2); string rtime_sql3 = @"SELECT EQP_TYPE,RP3_WIP,RP3_MOVE,FSCMOVE3 FROM mfg_vw_p3_tracing_wipmove_rt "; dt3 = ws.GetDataTable("fp3db", rtime_sql3); string Daily_sql1 = @"SELECT EQ_TYPE,DP1_WIP,DP1_MOVE FROM MFG_VW_P1_TRACING_WIPMOVE_DP "; dt4 = ws.GetDataTable("fp1db", Daily_sql1); string Daily_sql2 = @"SELECT EQ_TYPE,DP2_WIP,DP2_MOVE FROM MFG_VW_P2_TRACING_WIPMOVE_DP "; dt5 = ws.GetDataTable("fp2db", Daily_sql2); string Daily_sql3 = @"SELECT EQ_TYPE,DP3_WIP,DP3_MOVE FROM MFG_VW_P3_TRACING_WIPMOVE_DP "; dt6 = ws.GetDataTable("fp3db", Daily_sql3); dt2.Columns.Add("RP1_WIP"); dt2.Columns.Add("RP1_MOVE"); dt2.Columns.Add("FSCMOVE1"); dt2.Columns.Add("EQP_TYPE "); dt2.Columns.Add("DP2_WIP"); dt2.Columns.Add("DP2_MOVE"); dt2.Columns.Add("DP1_WIP"); dt2.Columns.Add("DP1_MOVE"); for (int i = 0; i <= dt2.Rows.Count - 1; i++) { dt2.Rows[i]["RP1_WIP"] = Convert.ToInt64(dt1.Rows[i]["RP1_WIP"].ToString()); dt2.Rows[i]["RP1_MOVE"] = Convert.ToInt64(dt1.Rows[i]["RP1_MOVE"].ToString()); dt2.Rows[i]["FSCMOVE1"] = Convert.ToDecimal(dt1.Rows[i]["FSCMOVE1"].ToString()); dt2.Rows[i]["EQP_TYPE "] = dt5.Rows[i]["EQ_TYPE"].ToString(); dt2.Rows[i]["DP2_WIP"] = Convert.ToInt64(dt5.Rows[i]["DP2_WIP"].ToString()); dt2.Rows[i]["DP2_MOVE"] = Convert.ToInt64(dt5.Rows[i]["DP2_MOVE"].ToString()); dt2.Rows[i]["DP1_WIP"] = Convert.ToInt64(dt4.Rows[i]["DP1_WIP"].ToString()); dt2.Rows[i]["DP1_MOVE"] = Convert.ToInt64(dt4.Rows[i]["DP1_MOVE"].ToString()); } gridControl1.DataSource = dt2; gridView1.Columns["FSCMOVE1"].Visible = false; gridView1.Columns["FSCMOVE2"].Visible = false; gridView1.Columns[0].Width = 120; gridView1.Columns[1].Width = 70; gridView1.Columns[2].Width = 70; gridView1.Columns[3].Width = 70; gridView1.Columns[4].Width = 70; gridView1.Columns[5].Width = 70; gridView1.Columns[6].Width = 70; gridView1.Columns[7].Width = 120; gridView1.Columns[8].Width = 70; gridView1.Columns[9].Width = 70; gridView1.Columns[10].Width = 70; gridView1.Columns[11].Width = 70; gridView1.Columns[0].AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Near; gridView1.Columns[0].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Near; gridView1.Columns[1].AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView1.Columns[1].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView1.Columns[2].AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView1.Columns[2].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView1.Columns[3].AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView1.Columns[3].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView1.Columns[4].AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView1.Columns[4].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView1.Columns[5].AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView1.Columns[5].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView1.Columns[6].AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView1.Columns[6].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView1.Columns[7].AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Near; gridView1.Columns[7].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Near; gridView1.Columns[8].AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView1.Columns[8].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView1.Columns[9].AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView1.Columns[9].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView1.Columns[10].AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView1.Columns[10].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView1.Columns[11].AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView1.Columns[11].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; dt3.Columns.Add("FSC"); dt3.Columns.Add(" - "); dt3.Columns.Add("EQP_TYPE "); dt3.Columns.Add("DP3_WIP"); dt3.Columns.Add("DP3_MOVE"); dt3.Columns.Add(" - "); dt3.Columns.Add(" - "); for (int i = 0; i <= dt3.Rows.Count - 1; i++) { dt3.Rows[i]["FSC"] = Math.Round(Convert.ToDecimal(dt3.Rows[i]["FSCMOVE3"].ToString()), 0); dt3.Rows[i][" - "] = "-"; dt3.Rows[i]["EQP_TYPE "] = dt6.Rows[i]["EQ_TYPE"].ToString(); dt3.Rows[i]["DP3_WIP"] = Convert.ToInt64(dt6.Rows[i]["DP3_WIP"].ToString()); dt3.Rows[i]["DP3_MOVE"] = Convert.ToInt64(dt6.Rows[i]["DP3_MOVE"].ToString()); dt3.Rows[i][" - "] = "-"; dt3.Rows[i][" - "] = "-"; } gridControl2.DataSource = dt3; gridView2.Columns["FSCMOVE3"].Visible = false; gridView2.Columns[0].Width = 120; gridView2.Columns[1].Width = 70; gridView2.Columns[2].Width = 70; gridView2.Columns[3].Width = 70; gridView2.Columns[4].Width = 70; gridView2.Columns[5].Width = 70; gridView2.Columns[6].Width = 120; gridView2.Columns[7].Width = 70; gridView2.Columns[8].Width = 70; gridView2.Columns[9].Width = 70; gridView2.Columns[10].Width = 70; //gridView2.Columns[11].Width = 70; gridView2.Columns[0].AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Near; gridView2.Columns[0].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Near; gridView2.Columns[1].AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView2.Columns[1].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView2.Columns[2].AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView2.Columns[2].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView2.Columns[3].AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView2.Columns[3].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView2.Columns[4].AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView2.Columns[4].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView2.Columns[5].AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView2.Columns[5].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView2.Columns[6].AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Near; gridView2.Columns[6].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Near; gridView2.Columns[7].AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView2.Columns[7].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView2.Columns[8].AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView2.Columns[8].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView2.Columns[9].AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView2.Columns[9].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView2.Columns[10].AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridView2.Columns[10].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; //gridView2.Columns[11].AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; //gridView2.Columns[11].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } public float GetTimeFormatNumber() { string str = "select get_time_format('" + Type2 + "') as result from dual "; DataTable TimeFormatNumber = ws.GetDataTable("fp0db", str); return (Convert.ToSingle(TimeFormatNumber.Rows[0][0].ToString())); } //刷新数据 private void Refresh_simpleButton1_Click(object sender, EventArgs e) { this.Cursor = Cursors.WaitCursor; Realtime_Movewip_show(); this.Cursor = Cursors.Default; MessageBox.Show("Refresh successfully!"); } private void Refresh_simpleButton1_MouseMove(object sender, MouseEventArgs e) { this.Refresh_simpleButton1.Cursor = Cursors.Hand; } //打印功能 private void Print_simpleButton1_Click(object sender, EventArgs e) { try { GridControl[] grids = new GridControl[] { gridControl1, gridControl2 }; PrintingSystem ps = new PrintingSystem(); DevExpress.XtraPrintingLinks.CompositeLink compositeLink = new DevExpress.XtraPrintingLinks.CompositeLink(); compositeLink.PrintingSystem = ps; foreach (GridControl grid in grids) { PrintableComponentLink link = new PrintableComponentLink(); link.Component = grid; compositeLink.Links.Add(link); } //保存到桌面 string desktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); Console.WriteLine(desktop);//桌面路径 string excel = System.IO.Path.Combine(desktop, @"P2_WIP_Move_vs_P1_Tracing.xlsx"); compositeLink.ExportToXlsx(excel);//导出到excel Excel.Application ExcelApp = new Excel.Application(); //声明一个应用程序类实例 //ExcelApp.DefaultFilePath = ""; //默认文件路径导出excel的路径还是在参数strFileName里设置 //ExcelApp.DisplayAlerts = true; //ExcelApp.SheetsInNewWorkbook = 1;///返回或设置 Microsoft Excel 自动插入到新工作簿中的工作表数目。 Excel.Workbook worksBook = ExcelApp.Workbooks.Open(excel); //打开已有的工作簿 Excel.Worksheet workSheet = (Excel.Worksheet)worksBook.Worksheets[1]; //在工作簿中得到sheet。 ExcelApp.Visible = true; //------------------------打印页面相关设置-------------------------------- //workSheet.Cells.ColumnWidth = 16;//打印列宽设置 workSheet.Cells.ColumnWidth = 8.75;//打印列宽设置 workSheet.Cells[1].ColumnWidth = 16.5; workSheet.Cells[6].ColumnWidth = 16.5; workSheet.Rows.RowHeight = 12.5; range = workSheet.get_Range("A1", "J123"); //range.Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlLineStyleNone;//实线 range.Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;//实线 //range.Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlDash;//虚线 range.Borders.Color = Color.FromArgb(195, 195, 195); //range.Borders.Color = Color.Black; //range.Borders.LineStyle = 1; //workSheet.Cells.Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous; //string null_sql = @"select * from fp_tbl_keygroup_p1vsp2_loading order by loading"; //DataTable dt9 = ws.GetDataTable("fp0db", null_sql); for (int i = dt2.Rows.Count+1; i > dt2.Rows.Count - 10; i--) { workSheet.Rows[i].Delete(); } for (int j = dt3.Rows.Count + dt2.Rows.Count + 2; j > dt3.Rows.Count + dt2.Rows.Count - 10; j--) { workSheet.Rows[j].Delete(); } //workSheet.HideRow(); workSheet.PageSetup.PaperSize = Excel.XlPaperSize.xlPaperA4;//纸张大小 workSheet.PageSetup.Orientation = Excel.XlPageOrientation.xlPortrait;//页面纵向 //workSheet.PageSetup.Zoom = 100; //打印时页面设置,缩放比例百分之几 workSheet.PageSetup.Zoom = false; //打印时页面设置,必须设置为false,页高,页宽才有效 //打印在一页上面 workSheet.PageSetup.FitToPagesWide = 1; //设置页面缩放的页宽为1页宽 workSheet.PageSetup.FitToPagesTall = 1; //设置页面缩放的页高为1页高 //workSheet.PageSetup.CenterHeader = "P2 WIP Move vs P1 Tracing";//页面标题 workSheet.PageSetup.PrintGridlines = true; //打印单元格网线 workSheet.PageSetup.TopMargin = 1 / 0.035; //上边距为1cm(转换为in) workSheet.PageSetup.BottomMargin = 0 / 0.035; //下边距为0cm workSheet.PageSetup.LeftMargin = 0 / 0.035; //左边距为0cm workSheet.PageSetup.RightMargin = 0 / 0.035; //右边距为0cm workSheet.PageSetup.CenterHorizontally = true; //页面水平居中 //------------------------打印页面设置结束-------------------------------- worksBook.PrintPreview(); //打印预览 } catch(Exception ex) { MessageBox.Show(ex.Message.ToString()); } } //维护功能 private void Maintain_simpleButton1_Click(object sender, EventArgs e) { this.Cursor = Cursors.WaitCursor; Maintain Maintain_show = new Maintain(); Maintain_show.ShowDialog(); this.Cursor = Cursors.Default; } private void gridView1_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e) { if (e.Column.ToString() == "EQP_TYPE" || e.Column.ToString() == "EQP_TYPE ") { //e.Appearance.ForeColor = Color.FromArgb(44, 51, 188); e.Appearance.ForeColor = Color.Black; e.Appearance.Font = new Font("Arial", 9, FontStyle.Bold); if ((e.RowHandle >= 8 && e.RowHandle <= 28) || (e.RowHandle >= 49 && e.RowHandle <= 71)) { e.Appearance.BackColor = Color.FromArgb(136, 255, 255); } else { e.Appearance.BackColor = Color.FromArgb(240, 255, 255); //e.Column.Visible = false; } } } private void gridView2_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e) { if (e.Column.ToString() == "EQP_TYPE" || e.Column.ToString() == "EQP_TYPE ") { e.Appearance.BackColor = Color.FromArgb(240, 255, 255); e.Column.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Near; //e.Appearance.BackColor = Color.FromArgb(204, 255, 255); //e.Appearance.ForeColor = Color.FromArgb(44, 51, 188); //e.Appearance.ForeColor = Color.FromArgb(21, 24, 89); e.Appearance.ForeColor = Color.Black; //e.Appearance.Font = new Font("Arial", 9, FontStyle.Bold); } } //P1,P2 MOVE,WIP 总量以及forecastmove DataTable dt7 = new DataTable(); DataTable dt9 = new DataTable(); private void summove_wip() { dt7.Columns.Clear(); //DataTable dt7 = new DataTable(); //DateTime now = System.DateTime.Now; //DateTime now_m = new DateTime(System.DateTime.Now.Year, System.DateTime.Now.Month, System.DateTime.Now.Day, 7, 30, 0); //TimeSpan fsc = now - now_m; ////double t =fsc.TotalHours; //double t = fsc.TotalDays; dt7.Columns.Add("Group"); dt7.Columns.Add("Daily Move"); dt7.Columns.Add("Real WIP"); dt7.Columns.Add("Real Move"); dt7.Columns.Add("FCST"); dt7.Columns.Add("TARGET"); string nonsp_g = ""; Int64 nonsp_d1 = 0; Int64 nonsp_rw1 = 0; Int64 nonsp_rm1 = 0; Int64 nonsp_f1 = 0; Int64 nonsp_t1 = 0; Int64 nonsp_d2 = 0; Int64 nonsp_rw2 = 0; Int64 nonsp_rm2 = 0; Int64 nonsp_f2 = 0; Int64 nonsp_t2 = 0; Int64 nonsp_d = 0; Int64 nonsp_rw = 0; Int64 nonsp_rm = 0; Int64 nonsp_f = 0; string target_sql = @"SELECT SELFGROUP,LOADING,MARK,TARGET,WIP_TARGET FROM mfg_vw_wipmove_tracing"; dt9 = ws.GetDataTable("fp0db", target_sql); for (int i = 0; i <= dt2.Rows.Count - 1; i++) { dt7.Rows.Add(); dt7.Rows[i]["Group"] = dt2.Rows[i]["EQP_TYPE"].ToString(); dt7.Rows[i]["Daily Move"] = Convert.ToInt64(dt2.Rows[i]["DP2_MOVE"].ToString()) + Convert.ToInt64(dt2.Rows[i]["DP1_MOVE"].ToString()); dt7.Rows[i]["Real WIP"] = Convert.ToInt64(dt2.Rows[i]["RP2_WIP"].ToString()) + Convert.ToInt64(dt2.Rows[i]["RP1_WIP"].ToString()); dt7.Rows[i]["Real Move"] = Convert.ToInt64(dt2.Rows[i]["RP2_MOVE"].ToString()) + Convert.ToInt64(dt2.Rows[i]["RP1_MOVE"].ToString()); dt7.Rows[i]["FCST"] = Math.Round(Convert.ToDecimal(dt2.Rows[i]["FSCMOVE1"].ToString()) + Convert.ToDecimal(dt2.Rows[i]["FSCMOVE2"].ToString()), 0); if(dt9.Rows[i]["TARGET"].ToString()=="") { dt7.Rows[i]["TARGET"] = "0"; } else{ dt7.Rows[i]["TARGET"] = Convert.ToInt64(dt9.Rows[i]["TARGET"].ToString()); } //string XX = dt2.Rows[i]["EQP_TYPE"].ToString(); if (dt2.Rows[i]["EQP_TYPE"].ToString() == "AL_USG") { nonsp_g = "N-Speed"; nonsp_d1 = Convert.ToInt64(dt7.Rows[i]["Daily Move"].ToString()); nonsp_rw1 = Convert.ToInt64(dt7.Rows[i]["Real WIP"].ToString()); nonsp_rm1 = Convert.ToInt64(dt7.Rows[i]["Real Move"].ToString()); nonsp_f1 = Convert.ToInt64(dt7.Rows[i]["FCST"].ToString()); nonsp_t1 = Convert.ToInt64(dt9.Rows[i]["TARGET"].ToString()); } //else if (dt2.Rows[i]["EQP_TYPE"].ToString() == "Speed") //{ // nonsp_d2 = Convert.ToInt64(dt7.Rows[i]["Daily Move"].ToString()); // nonsp_rw2 = Convert.ToInt64(dt7.Rows[i]["Real WIP"].ToString()); // nonsp_rm2 = Convert.ToInt64(dt7.Rows[i]["Real Move"].ToString()); // nonsp_f2 = Convert.ToInt64(dt7.Rows[i]["FCST"].ToString()); // nonsp_t2 = Convert.ToInt64(dt9.Rows[i]["TARGET"].ToString()); //} if (dt9.Rows[i]["SELFGROUP"].ToString() == "N-Speed") { nonsp_t1 = Convert.ToInt64(dt9.Rows[i]["TARGET"].ToString()); //dt7.Rows.Add(nonsp_g, nonsp_d1 - nonsp_d2, nonsp_rw1 - nonsp_rw2, nonsp_rm1 - nonsp_rm2, nonsp_f1 - nonsp_f2, nonsp_t1 - nonsp_t2); } } for (int h = 0; h <= dt2.Rows.Count - 1; h++) { if (dt2.Rows[h]["EQP_TYPE"].ToString() == "Speed") { nonsp_d2 = Convert.ToInt64(dt7.Rows[h]["Daily Move"].ToString()); nonsp_rw2 = Convert.ToInt64(dt7.Rows[h]["Real WIP"].ToString()); nonsp_rm2 = Convert.ToInt64(dt7.Rows[h]["Real Move"].ToString()); nonsp_f2 = Convert.ToInt64(dt7.Rows[h]["FCST"].ToString()); nonsp_t2 = Convert.ToInt64(dt9.Rows[h]["TARGET"].ToString()); dt7.Rows.Add(nonsp_g, nonsp_d1 - nonsp_d2, nonsp_rw1 - nonsp_rw2, nonsp_rm1 - nonsp_rm2, nonsp_f1 - nonsp_f2, nonsp_t1 - nonsp_t2); } } } //筛选group private void subtotalmove_wip() { try{ gridView3.Columns.Clear(); DataTable dt8 = new DataTable(); DataTable dc = new DataTable(); dc.Columns.Clear(); DataTable dc_m = new DataTable(); dc_m.Columns.Clear(); dc_m.Columns.Add("Area"); dc_m.Columns.Add("Group"); dc_m.Columns.Add("P1 WIP"); dc_m.Columns.Add("P2 WIP"); dc_m.Columns.Add("ALL WIP"); dc_m.Columns.Add("TARGET"); dc_m.Columns.Add("ROWRANK"); dc_m.Columns.Add("Daily WIP"); int g = -1; string area_sql = @"select * from fp_tbl_keyeqp_grouparea where AREA='Metrology' ORDER BY AREARANK,ROWRANK "; DataTable dt_area = ws.GetDataTable("FP0DB", area_sql); string eqpsql = @"select * from fp_tbl_keyeqp_grouparea ORDER BY AREARANK,ROWRANK "; dt8 = ws.GetDataTable("FP0DB", eqpsql); string avg_wip = @"select * from mfg_vw_tracing_metrology"; DataTable dt_wip = ws.GetDataTable("FP0DB", avg_wip); dc.Columns.Add("Area"); dc.Columns.Add("Group"); dc.Columns.Add("Real WIP"); dc.Columns.Add("Real Move"); dc.Columns.Add("FCST"); dc.Columns.Add("TARGET"); dc.Columns.Add("ROWRANK"); dc.Columns.Add("Daily Move"); string target_sql = @"SELECT SELFGROUP,LOADING,MARK,TARGET,WIP_TARGET FROM mfg_vw_wipmove_tracing"; DataTable dt_p3 = ws.GetDataTable("fp3db", target_sql); for (int j = 0; j <= dt8.Rows.Count - 1; j++) { if ((dt8.Rows[j]["EQPGROUP"].ToString() == "ALL_SCANNER" && dt8.Rows[j]["Area"].ToString() == "LITHO") || (dt8.Rows[j]["EQPGROUP"].ToString() == "ALL_DUV" && dt8.Rows[j]["Area"].ToString() == "LITHO")) { dc.Rows.Add(); for (int R = 0; R <= dt_p3.Rows.Count - 1;R++ ) { if (dt8.Rows[j]["EQPGROUP"].ToString() == dt3.Rows[R]["EQP_TYPE"].ToString()) { for (int w = 0; w <= dt7.Rows.Count - 1; w++) { if (dt7.Rows[w]["Group"].ToString() == dt8.Rows[j]["EQPGROUP"].ToString()) { dc.Rows[j]["Area"] = dt8.Rows[j]["AREA"].ToString(); dc.Rows[j]["Group"] = dt8.Rows[j]["EQPGROUP"].ToString(); dc.Rows[j]["Daily Move"] = Convert.ToInt64(dt7.Rows[w]["Daily Move"].ToString()) + Convert.ToInt64(dt3.Rows[R]["DP3_MOVE"].ToString()); dc.Rows[j]["Real WIP"] = Convert.ToInt64(dt7.Rows[w]["Real WIP"].ToString()) + Convert.ToInt64(dt3.Rows[R]["RP3_WIP"].ToString()); dc.Rows[j]["Real Move"] = Convert.ToInt64(dt7.Rows[w]["Real Move"].ToString()) + Convert.ToInt64(dt3.Rows[R]["RP3_move"].ToString()); dc.Rows[j]["FCST"] = Convert.ToInt64(dt7.Rows[w]["FCST"].ToString()) + Math.Round(Convert.ToDecimal(dt3.Rows[R]["FSCMOVE3"].ToString()), 0); if (dt_p3.Rows[R]["TARGET"].ToString() == "" || dt7.Rows[w]["TARGET"].ToString() == "") { dc.Rows[j]["TARGET"] = "0"; } else { dc.Rows[j]["TARGET"] = Convert.ToInt64(dt7.Rows[w]["TARGET"].ToString()); } dc.Rows[j]["ROWRANK"] = Convert.ToInt64(dt8.Rows[j]["ROWRANK"].ToString()); } } } } } else { if (dt8.Rows[j]["Area"].ToString() == "LITHO" || dt8.Rows[j]["Area"].ToString() == "ETCH" || dt8.Rows[j]["Area"].ToString() == "DIFF" || dt8.Rows[j]["Area"].ToString() == "TF") { dc.Rows.Add(); for (int i = 0; i <= dt7.Rows.Count - 1; i++) { if (dt7.Rows[i]["Group"].ToString() == dt8.Rows[j]["EQPGROUP"].ToString()) { dc.Rows[j]["Area"] = dt8.Rows[j]["AREA"].ToString(); dc.Rows[j]["Group"] = dt8.Rows[j]["EQPGROUP"].ToString(); dc.Rows[j]["Daily Move"] = Convert.ToInt64(dt7.Rows[i]["Daily Move"].ToString()); dc.Rows[j]["Real WIP"] = Convert.ToInt64(dt7.Rows[i]["Real WIP"].ToString()); dc.Rows[j]["Real Move"] = Convert.ToInt64(dt7.Rows[i]["Real Move"].ToString()); dc.Rows[j]["FCST"] = Convert.ToInt64(dt7.Rows[i]["FCST"].ToString()); dc.Rows[j]["TARGET"] = Convert.ToInt64(dt7.Rows[i]["TARGET"].ToString()); dc.Rows[j]["ROWRANK"] = Convert.ToInt64(dt8.Rows[j]["ROWRANK"].ToString()); } } } else if (dt8.Rows[j]["Area"].ToString() == "Cu_LITHO" || dt8.Rows[j]["Area"].ToString() == "Cu_ETCH" || dt8.Rows[j]["Area"].ToString() == "Cu_DIFF" || dt8.Rows[j]["Area"].ToString() == "Cu_TF") { dc.Rows.Add(); for (int k = 0; k <= dt3.Rows.Count - 1; k++) { if (dt3.Rows[k]["EQP_TYPE"].ToString() == dt8.Rows[j]["EQPGROUP"].ToString()) { dc.Rows[j]["Area"] = dt8.Rows[j]["AREA"].ToString(); dc.Rows[j]["Group"] = dt8.Rows[j]["EQPGROUP"].ToString(); dc.Rows[j]["Daily Move"] = Convert.ToInt64(dt3.Rows[k]["DP3_MOVE"].ToString()); dc.Rows[j]["Real WIP"] = Convert.ToInt64(dt3.Rows[k]["RP3_WIP"].ToString()); dc.Rows[j]["Real Move"] = Convert.ToInt64(dt3.Rows[k]["RP3_move"].ToString()); dc.Rows[j]["FCST"] = Math.Round(Convert.ToDecimal(dt3.Rows[k]["FSCMOVE3"].ToString()), 0); if (dt_p3.Rows[k]["TARGET"].ToString() == "") { dc.Rows[j]["TARGET"] = "0"; } else { dc.Rows[j]["TARGET"] = Convert.ToInt64(dt_p3.Rows[k]["TARGET"].ToString()); } dc.Rows[j]["ROWRANK"] = Convert.ToInt64(dt8.Rows[j]["ROWRANK"].ToString()); } } } else if (dt8.Rows[j]["Area"].ToString() == "Metrology" ) { dc_m.Rows.Add(); g = g + 1; for (int h = 0; h <= dt2.Rows.Count - 1; h++) { if (dt2.Rows[h]["EQP_TYPE"].ToString() == dt8.Rows[j]["EQPGROUP"].ToString()) { dc_m.Rows[g]["Area"] = dt8.Rows[j]["AREA"].ToString(); dc_m.Rows[g]["Group"] = dt8.Rows[j]["EQPGROUP"].ToString(); dc_m.Rows[g]["P1 WIP"] = Convert.ToInt64(dt2.Rows[h]["RP1_WIP"].ToString()); dc_m.Rows[g]["P2 WIP"] = Convert.ToInt64(dt2.Rows[h]["RP2_WIP"].ToString()); dc_m.Rows[g]["ALL WIP"] = Convert.ToInt64(dt2.Rows[h]["RP2_WIP"].ToString()) + Convert.ToInt64(dt2.Rows[h]["RP1_WIP"].ToString()); dc_m.Rows[g]["Daily WIP"] = Convert.ToInt64(dt_wip.Rows[h]["WIP"].ToString()); if (dt9.Rows[h]["WIP_TARGET"].ToString() == "") { dc_m.Rows[g]["TARGET"] = "0"; } else { dc_m.Rows[g]["TARGET"] = Convert.ToInt64(dt9.Rows[h]["WIP_TARGET"].ToString()); } dc_m.Rows[g]["ROWRANK"] = Convert.ToInt64(dt8.Rows[j]["ROWRANK"].ToString()); } } } } } Int64 sum1 = 0; Int64 sum2 = 0; Int64 sum3 = 0; Int64 sum4 = 0; Int64 sum5 = 0; Int64 sum6 = 0; for (int i = 0; i <= dc_m.Rows.Count - 1; i++) { sum1 = sum1 + Convert.ToInt64(dc_m.Rows[i]["P1 WIP"].ToString()); sum2 = sum2 + Convert.ToInt64(dc_m.Rows[i]["P2 WIP"].ToString()); sum3 = sum3 + Convert.ToInt64(dc_m.Rows[i]["ALL WIP"].ToString()); sum4 = sum4 + Convert.ToInt64(dc_m.Rows[i]["TARGET"].ToString()); sum5 = sum5 + Convert.ToInt64(dc_m.Rows[i]["ROWRANK"].ToString()); sum6 = sum6 + Convert.ToInt64(dc_m.Rows[i]["Daily WIP"].ToString()); } dc_m.Rows.Add("Total", "-",sum1, sum2, sum3, sum4, sum5,sum6); gridControl3.DataSource = dc; 这是一个winform程序 主窗口打开就可以在gridControl3里面加载数据。dc 的数据来源于其他 datatable ,而 其他的datatable 还来源与其他的datatable,现在我的需求是:通过主窗体的load事件帮我追根溯源,找出dc中 group和对应的daily move的来源
最新发布
12-13
namespace MQTT { public partial class Form1 : Form { private IMqttClient mqttClient; private IMqttClient mqttClient1; public Form1() { InitializeComponent(); var mqttFactory = new MqttFactory(); mqttClient = mqttFactory.CreateMqttClient(); var mqttFactory1 = new MqttFactory(); mqttClient1 = mqttFactory1.CreateMqttClient(); } TcpListener listener = new TcpListener(IPAddress.Any, 18888); private async void ConnectToMqttServer() { var mqttClientOptions = new MqttClientOptionsBuilder() .WithClientId($"WinForm_{Guid.NewGuid()}") .WithTcpServer("123.232.107.150", 1883) .WithCredentials("test", "qE.8qygD?'i;G?k")// 替换为你的MQTT服务器地址和端口 .WithCleanSession(false) .WithKeepAlivePeriod(TimeSpan.FromSeconds(60)) .Build(); await mqttClient.ConnectAsync(mqttClientOptions, CancellationToken.None); } private async void ConnectToMqttServer1() { var mqttClientOptions = new MqttClientOptionsBuilder() .WithClientId($"WinForm_{Guid.NewGuid()}") .WithTcpServer("hddff06f.ala.cn-hangzhou.emqxsl.cn", 8883) .WithCredentials("test", "test")// 替换为你的MQTT服务器地址和端口 .WithCleanSession(false) .WithKeepAlivePeriod(TimeSpan.FromSeconds(60)) .WithTlsOptions(new MqttClientTlsOptions { UseTls = true, SslProtocol = System.Security.Authentication.SslProtocols.Tls12, // 指定协议版本 CertificateValidationHandler = (certContext) => { // 自定义证书验证逻辑(生产环境需严格验证) //return true; // 测试时可跳过验证 return certContext.Chain.Build((X509Certificate2)certContext.Certificate); } }) .Build(); await mqttClient1.ConnectAsync(mqttClientOptions, CancellationToken.None); } private async void SendMessage() { //ConnectToMqttServer(); //Thread.Sleep(5000); if (mqttClient.IsConnected) { using (SqlConnection con = new SqlConnection("server=10.104.229.10;user=nmjxxzx;pwd=NMJ[xxzx5902768];database=shuiqin;")) { try { con.Open(); DataTable dataTable = new DataTable(); SqlCommand sqlCommand = new SqlCommand("select sbno,dt,shuiwei from czshuiwei where dt>'" + DateTime.Now.AddMinutes(-30).ToString("yyyy-MM-dd HH:mm:0") + "' and dt<='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:0") + "' order by dt asc", con); SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand); sqlDataAdapter.Fill(dataTable); for (int i = 0; i < dataTable.Rows.Count; i++) { string mess = JsonConvert.SerializeObject(new { STCD = dataTable.Rows[i][0], DMBH = dataTable.Rows[i][0] + "0", DMMC = dataTable.Rows[i][0] + "0", TM = dataTable.Rows[i][1], Z = dataTable.Rows[i][2] }); var message = new MqttApplicationMessageBuilder() .WithTopic("hydro/nm/z") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); await mqttClient.PublishAsync(message, CancellationToken.None); } dataTable = new DataTable(); SqlCommand sqlCommand1 = new SqlCommand("select STCD,SNDT,WAT,FlUX,WV,WS,V1 from ST_FDATA_B where SNDT>'" + DateTime.Now.AddMinutes(-30).ToString("yyyy-MM-dd HH:mm:0") + "' and SNDT<='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:0") + "' and stcd='40102100' order by SNDT asc", con); SqlDataAdapter sqlDataAdapter1 = new SqlDataAdapter(sqlCommand1); sqlDataAdapter1.Fill(dataTable); for (int i = 0; i < dataTable.Rows.Count; i++) { string v2 = null, v3 = null, v4 = null, v5 = null, v6 = null, v7 = null, v8 = null, v9 = null, v10 = null, di1 = null, di2 = null, di3 = null, di4 = null, di5 = null, di6 = null, di7 = null, di8 = null, di9 = null, di10 = null; string mess = JsonConvert.SerializeObject(new { STCD = dataTable.Rows[i][0], STNM = "青铜峡", TM = dataTable.Rows[i][1], XSNM = dataTable.Rows[i][0] + "0", Z = dataTable.Rows[i][2], Q = dataTable.Rows[i][3], xsavv = dataTable.Rows[i][4], xstta = dataTable.Rows[i][5], v1 = dataTable.Rows[i][6], v2, v3, v4, v5, v6, v7, v8, v9, v10, di1, di2, di3, di4, di5, di6, di7, di8, di9, di10 }); var message = new MqttApplicationMessageBuilder() .WithTopic("hydro/nm/q") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); await mqttClient.PublishAsync(message, CancellationToken.None); } dataTable = new DataTable(); SqlCommand sqlCommand2 = new SqlCommand("select stcd,tm,ed from st_ed_r where tm>'" + DateTime.Now.AddMinutes(-30).ToString("yyyy-MM-dd HH:mm:0") + "' and tm<='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:0") + "' order by tm asc", con); SqlDataAdapter sqlDataAdapter2 = new SqlDataAdapter(sqlCommand2); sqlDataAdapter2.Fill(dataTable); if (dataTable.Rows.Count > 0) { for (int i = 0; i < dataTable.Rows.Count; i++) { if (dataTable.Rows[i][0].ToString() == "40102102") { string mess = JsonConvert.SerializeObject(new { STCD = "40102100", TM = dataTable.Rows[i][1], STNM = "青铜峡水文站", evas = dataTable.Rows[i][2], bj = "E601" }); var message = new MqttApplicationMessageBuilder() .WithTopic("hydro/nm/e") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); await mqttClient.PublishAsync(message, CancellationToken.None); } else if (dataTable.Rows[i][0].ToString() == "40102650") { string mess = JsonConvert.SerializeObject(new { STCD = "40102650", TM = dataTable.Rows[i][1], STNM = "巴彦高勒水文站", evas = dataTable.Rows[i][2], bj = "E601" }); var message = new MqttApplicationMessageBuilder() .WithTopic("hydro/nm/e") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); await mqttClient.PublishAsync(message, CancellationToken.None); } else if (dataTable.Rows[i][0].ToString() == "40544700") { string mess = JsonConvert.SerializeObject(new { STCD = "40103050", TM = dataTable.Rows[i][1], STNM = "三湖河口水文站", evas = dataTable.Rows[i][2], bj = "E601" }); var message = new MqttApplicationMessageBuilder() .WithTopic("hydro/nm/e") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); await mqttClient.PublishAsync(message, CancellationToken.None); } else if (dataTable.Rows[i][0].ToString() == "40549700") { string mess = JsonConvert.SerializeObject(new { STCD = "40103400", TM = dataTable.Rows[i][1], STNM = "头道拐水文站", evas = dataTable.Rows[i][2], bj = "E601" }); var message = new MqttApplicationMessageBuilder() .WithTopic("hydro/nm/e") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); await mqttClient.PublishAsync(message, CancellationToken.None); } else if (dataTable.Rows[i][0].ToString() == "40539600") { string mess = JsonConvert.SerializeObject(new { STCD = "40102500", TM = dataTable.Rows[i][1], STNM = "头道拐水文站", evas = dataTable.Rows[i][2], bj = "E601" }); var message = new MqttApplicationMessageBuilder() .WithTopic("hydro/nm/e") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); await mqttClient.PublishAsync(message, CancellationToken.None); } } } dataTable = new DataTable(); SqlCommand sqlCommand3 = new SqlCommand("select stcd,tm,uc,us,atmp,mst,fl from ST_TMP_R where (tm>'" + DateTime.Now.AddMinutes(-30).ToString("yyyy-MM-dd HH:mm:0") + "' and tm<='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:0") + "') and (stcd='40102650' or stcd='40544700' or stcd='40549700' or stcd='40102102' or stcd='40520500'or stcd='40539600') order by tm asc", con); SqlDataAdapter sqlDataAdapter3 = new SqlDataAdapter(sqlCommand3); sqlDataAdapter3.Fill(dataTable); //MessageBox.Show(dataTable.Rows[0][6].ToString()); for (int i = 0; i < dataTable.Rows.Count; i++) { if (dataTable.Rows[i][0].ToString() == "40102650") { string RAIN = null, MAXTEM = null, MINTEM = null, DEWTEM = null; string mess = JsonConvert.SerializeObject(new { STCD = "40102650", STNM = "巴彦高勒水文站", TM = dataTable.Rows[i][1], WINDIR = dataTable.Rows[i][2], WINSPE = dataTable.Rows[i][3], RAIN, AMBTEM = dataTable.Rows[i][4], MAXTEM, MINTEM, AMBHUM = dataTable.Rows[i][5], DEWTEM, AIRPRE = dataTable.Rows[i][6] }); var message = new MqttApplicationMessageBuilder() .WithTopic("hydro/nm/phe") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); await mqttClient.PublishAsync(message, CancellationToken.None); } else if (dataTable.Rows[i][0].ToString() == "40544700") { string RAIN = null, MAXTEM = null, MINTEM = null, DEWTEM = null; string mess = JsonConvert.SerializeObject(new { STCD = "40103050", STNM = "三湖河口水文站", TM = dataTable.Rows[i][1], WINDIR = dataTable.Rows[i][2], WINSPE = dataTable.Rows[i][3], RAIN, AMBTEM = dataTable.Rows[i][4], MAXTEM, MINTEM, AMBHUM = dataTable.Rows[i][5], DEWTEM, AIRPRE = dataTable.Rows[i][6] }); var message = new MqttApplicationMessageBuilder() .WithTopic("hydro/nm/phe") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); await mqttClient.PublishAsync(message, CancellationToken.None); } else if (dataTable.Rows[i][0].ToString() == "40549700") { string RAIN = null, MAXTEM = null, MINTEM = null, DEWTEM = null; string mess = JsonConvert.SerializeObject(new { STCD = "40103400", STNM = "头道拐水文站", TM = dataTable.Rows[i][1], WINDIR = dataTable.Rows[i][2], WINSPE = dataTable.Rows[i][3], RAIN, AMBTEM = dataTable.Rows[i][4], MAXTEM, MINTEM, AMBHUM = dataTable.Rows[i][5], DEWTEM, AIRPRE = dataTable.Rows[i][6] }); var message = new MqttApplicationMessageBuilder() .WithTopic("hydro/nm/phe") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); await mqttClient.PublishAsync(message, CancellationToken.None); } else if (dataTable.Rows[i][0].ToString() == "40102102") { string RAIN = null, MAXTEM = null, MINTEM = null, DEWTEM = null; string mess = JsonConvert.SerializeObject(new { STCD = "40102100", STNM = "青铜峡水文站", TM = dataTable.Rows[i][1], WINDIR = dataTable.Rows[i][2], WINSPE = dataTable.Rows[i][3], RAIN, AMBTEM = dataTable.Rows[i][4], MAXTEM, MINTEM, AMBHUM = dataTable.Rows[i][5], DEWTEM, AIRPRE = dataTable.Rows[i][6] }); var message = new MqttApplicationMessageBuilder() .WithTopic("hydro/nm/phe") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); await mqttClient.PublishAsync(message, CancellationToken.None); } else if (dataTable.Rows[i][0].ToString() == "40520500") { string RAIN = null, MAXTEM = null, MINTEM = null, DEWTEM = null; string mess = JsonConvert.SerializeObject(new { STCD = "40101750", STNM = "下河沿水文站", TM = dataTable.Rows[i][1], WINDIR = dataTable.Rows[i][2], WINSPE = dataTable.Rows[i][3], RAIN, AMBTEM = dataTable.Rows[i][4], MAXTEM, MINTEM, AMBHUM = dataTable.Rows[i][5], DEWTEM, AIRPRE = dataTable.Rows[i][6] }); var message = new MqttApplicationMessageBuilder() .WithTopic("hydro/nm/phe") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); await mqttClient.PublishAsync(message, CancellationToken.None); } else if (dataTable.Rows[i][0].ToString() == "40539600") { string RAIN = null, MAXTEM = null, MINTEM = null, DEWTEM = null; string mess = JsonConvert.SerializeObject(new { STCD = "40102500", STNM = "石嘴山水文站", TM = dataTable.Rows[i][1], WINDIR = dataTable.Rows[i][2], WINSPE = dataTable.Rows[i][3], RAIN, AMBTEM = dataTable.Rows[i][4], MAXTEM, MINTEM, AMBHUM = dataTable.Rows[i][5], DEWTEM, AIRPRE = dataTable.Rows[i][6] }); var message = new MqttApplicationMessageBuilder() .WithTopic("hydro/nm/phe") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); await mqttClient.PublishAsync(message, CancellationToken.None); } } dataTable.Clear(); dataTable.Dispose(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } finally { con.Close(); } } using (SqlConnection con = new SqlConnection("server=10.104.229.16;user=sw;pwd=Swj159753!;database=CSea;")) { try { con.Open(); SqlCommand sqlCommand = new SqlCommand("select MSGCONTENT from SQ_RECE_S where MSGCONTENT like '%PN30%' and tm>'" + DateTime.Now.AddMinutes(-30).ToString("yyyy-MM-dd HH:mm:0") + "' and tm<='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:0") + "' order by tm asc", con); SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand); DataTable dataTable = new DataTable(); sqlDataAdapter.Fill(dataTable); Regex rg1 = new Regex("(?<=(PN30 ))[.\\s\\S]*?(?=(\\s))", RegexOptions.Multiline | RegexOptions.Singleline); Regex rg = new Regex("(?<=(PD ))[.\\s\\S]*?(?=(\\s))", RegexOptions.Multiline | RegexOptions.Singleline); Regex rg2 = new Regex("(?<=(H ))[.\\s\\S]*?(?=(\\s))", RegexOptions.Multiline | RegexOptions.Singleline); if (dataTable.Rows.Count > 0) { for (int i = 0; i < dataTable.Rows.Count; i++) { string zhanhao = rg2.Match(dataTable.Rows[i][0].ToString()).Value; string sanshi = rg1.Match(dataTable.Rows[i][0].ToString()).Value; if (DateTime.Now.Hour == 8 && DateTime.Now.Minute < 10) { string ryl = rg.Match(dataTable.Rows[i][0].ToString()).Value; string DRP = null; string mess = JsonConvert.SerializeObject(new { STCD = zhanhao, TM = DateTime.Now.ToString("yyyy-MM-dd HH:0:0"), DRP, PN30 = sanshi, INTV = "30", DYP = ryl }); var message = new MqttApplicationMessageBuilder() .WithTopic("hydro/nm/pp") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); await mqttClient.PublishAsync(message, CancellationToken.None); } else { string DRP = null, DYP = null; string mess = JsonConvert.SerializeObject(new { STCD = zhanhao, TM = DateTime.Now.ToString("yyyy-MM-dd HH:0:0"), DRP, PN30 = sanshi, INTV = "30", DYP }); var message = new MqttApplicationMessageBuilder() .WithTopic("hydro/nm/pp") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); await mqttClient.PublishAsync(message, CancellationToken.None); } } } else { string[] zh = { "40102100", "40101750", "40102500", "40102650", "40103050", "40103180", "40103400" }; for (int i = 0; i < zh.Length; i++) { string DRP = null, DYP = null; string mess = JsonConvert.SerializeObject(new { STCD = zh[i], TM = DateTime.Now.ToString("yyyy-MM-dd HH:0:0"), DRP, PN30 = "0.0", INTV = "30", DYP }); var message = new MqttApplicationMessageBuilder() .WithTopic("hydro/nm/pp") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); await mqttClient.PublishAsync(message, CancellationToken.None); } } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } finally { con.Close(); } } label4.Invoke(new Action(() => { label4.Text =DateTime.Now + "已发送成功"; label4.Font = new Font("黑体", 12); label4.BackColor = Color.Green; })); } else { try { ConnectToMqttServer(); await Task.Delay(10000); SendMessage(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } //await mqttClient.DisconnectAsync(); // 发送 DISCONNECT //mqttClient.Dispose(); // 释放资源 // 置空对象 //MessageBox.Show("发送成功123"); } private void Form1_Load(object sender, EventArgs e) { ConnectToMqttServer(); ConnectToMqttServer1(); listener.Start(); label4.Text = "未发送"; label4.Font = new Font("黑体", 12); label5.Text = "未发送"; label5.Font = new Font("黑体", 12); label6.Text = "未发送"; label6.Font = new Font("黑体", 12); } private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { using (SqlConnection con = new SqlConnection("server=;database=shuiqin;Integrated Security=True")) { try { con.Open(); TcpClient client = listener.AcceptTcpClient(); using (NetworkStream stream = client.GetStream()) { byte[] buffer = new byte[1024]; int bytesRead; StringBuilder messageBuilder = new StringBuilder(); string jssj = ""; // 持续接收数据,直到客户端断开连接 while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0) { // 将接收到的字节转换为字符串 string receivedData = Encoding.UTF8.GetString(buffer, 0, bytesRead); jssj += receivedData; } string[] cr = Regex.Split(jssj, ","); for (int i = 0; i < cr.Length - 1; i += 3) { SqlCommand command = new SqlCommand("insert into czshuiwei(sbno,dt,shuiwei) values('" + cr[i] + "','" + cr[i + 1] + "','" + cr[i + 2] + "')", con); command.ExecuteNonQuery(); } } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } finally { con.Close(); } } } private void timer1_Tick(object sender, EventArgs e) { if ((DateTime.Now.Minute == 33 && DateTime.Now.Second == 0) || (DateTime.Now.Minute == 3 && DateTime.Now.Second == 0)) { SendMessage(); } if (DateTime.Now.Minute % 6 == 0 && DateTime.Now.Second == 0) { timer3.Enabled = true; //timer4.Enabled = true; } } private void button2_Click_1(object sender, EventArgs e) { SendMessage(); } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { } private void timer2_Tick(object sender, EventArgs e) { if (!backgroundWorker1.IsBusy) { backgroundWorker1.RunWorkerAsync(); } } private void backgroundWorker3_DoWork(object sender, DoWorkEventArgs e) { using (SqlConnection con = new SqlConnection("server=;database=shuiqin;Integrated Security=True")) { try { con.Open(); if (mqttClient1.IsConnected) { SqlCommand sqlCommand = new SqlCommand("select top 1 dt,shuiwei from shuiwei where sbno='1040510350' and dt>'" + DateTime.Now.AddMinutes(-6).ToString("yyyy-MM-dd HH:mm:0") + "' and dt <='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:0") + "' order by dt desc", con); DataTable dt = new DataTable(); SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand); sqlDataAdapter.Fill(dt); if (dt.Rows.Count > 0) { string mess = "H 40510350 T " + dt.Rows[0][0] +" Z " + dt.Rows[0][1] +" NN"; var message = new MqttApplicationMessageBuilder() .WithTopic("ToPlatform/waterLevel") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); mqttClient1.PublishAsync(message, CancellationToken.None); timer3.Enabled = false; label5.Invoke(new Action(() => { label5.Text = dt.Rows[0][0] + "已发送成功"; label5.Font = new Font("黑体", 12); label5.BackColor = Color.Green; })); } } else { ConnectToMqttServer1(); Thread.Sleep(10000); } } catch(Exception ex) { MessageBox.Show(ex.ToString()); }finally { con.Close(); } } } private void timer3_Tick(object sender, EventArgs e) { if (!backgroundWorker3.IsBusy) { backgroundWorker3.RunWorkerAsync(); } } private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e) { using (SqlConnection con = new SqlConnection("server=;database=shuiqin;Integrated Security=True")) { try { con.Open(); SqlCommand sqlCommand = new SqlCommand("select top 1 dt,shuiwei from shuiwei where sbno='1000100200' and dt>'" + DateTime.Now.AddMinutes(-6).ToString("yyyy-MM-dd HH:mm:0") + "' and dt <='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:0") + "' order by dt desc", con); DataTable dt = new DataTable(); SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand); sqlDataAdapter.Fill(dt); if (dt.Rows.Count > 0) { TcpClient client = new TcpClient("182.92.175.121", 8897); NetworkStream stream = client.GetStream(); byte[] soh = new byte[] { 0x01 }; // SOH (0x01) byte[] stx = new byte[] { 0x02 }; // STX (0x02) byte[] stx1 = new byte[] { 0x03 }; // STX (0x02) byte[] payload1 = Encoding.ASCII.GetBytes("FF00401031511A0A320040"); string xuhao = ""; if (Convert.ToDecimal(ConfigurationManager.AppSettings["geshu"]) < 10) { xuhao = "000" + ConfigurationManager.AppSettings["geshu"]; } else if (Convert.ToDecimal(ConfigurationManager.AppSettings["geshu"]) >= 10 && Convert.ToDecimal(ConfigurationManager.AppSettings["geshu"]) < 100) { xuhao = "00" + ConfigurationManager.AppSettings["geshu"]; } else if (Convert.ToDecimal(ConfigurationManager.AppSettings["geshu"]) >= 100 && Convert.ToDecimal(ConfigurationManager.AppSettings["geshu"]) < 1000) { xuhao = "0" + ConfigurationManager.AppSettings["geshu"]; } else if (Convert.ToDecimal(ConfigurationManager.AppSettings["geshu"]) >= 1000 && Convert.ToDecimal(ConfigurationManager.AppSettings["geshu"]) <= 9999) { xuhao = ConfigurationManager.AppSettings["geshu"]; } byte[] payload2 = Encoding.ASCII.GetBytes(xuhao+"" +DateTime.Now.ToString("yy")+ DateTime.Now.ToString("MM")+DateTime.Now.ToString("dd")+DateTime.Now.ToString("HH")+ DateTime.Now.ToString("mm")+ DateTime.Now.ToString("ss")+ "ST 0040103151 H TT " +Convert.ToDateTime( dt.Rows[0][0]).ToString("yy")+ Convert.ToDateTime(dt.Rows[0][0]).ToString("MM")+ Convert.ToDateTime(dt.Rows[0][0]).ToString("dd")+ Convert.ToDateTime(dt.Rows[0][0]).ToString("HH")+ Convert.ToDateTime(dt.Rows[0][0]).ToString("mm") + " Z " + dt.Rows[0][1] +" VT 13.96"); byte[] bytes = soh.Concat(payload1).Concat(stx).Concat(payload2).Concat(stx1).ToArray(); StringBuilder hexBuilder = new StringBuilder(); foreach (char c in bytes) { // 将字符转为字节,再转为两位十六进制 string hexByte = Convert.ToByte(c).ToString("X2"); hexBuilder.Append(hexByte); //hexBuilder.Append(" "); // 可选空格分隔 } byte[] data = new byte[hexBuilder.Length / 2]; for (int i = 0; i < data.Length; i++) { int startIndex = i * 2; string byteString = Convert.ToString(hexBuilder).Substring(startIndex, 2); if (!byte.TryParse(byteString, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out data[i])) { throw new FormatException($"无效的十六进制字符: {byteString}"); } } ushort crc = 0xFFFF; // 初始值 foreach (byte b in data) { crc ^= b; // 与当前字节异或 // 处理每个位 for (int i = 0; i < 8; i++) { if ((crc & 0x0001) != 0) // 最低位为1 { crc >>= 1; // 右移 crc ^= 0xA001; // 与多项式异或 (0x8005的反转) } else { crc >>= 1; // 直接右移 } } } byte[] fasong = bytes.Concat(Encoding.ASCII.GetBytes(crc.ToString("X4"))).ToArray(); //int gs = 5; //for (int i = 0; i < gs; i++) //{ // byte[] data = Encoding.UTF8.GetBytes(i + ""); // //byte[] lengthHeader = BitConverter.GetBytes(data.Length); // //stream.Write(lengthHeader, 0, 4); stream.Write(fasong, 0, fasong.Length); //} stream.Close(); string configPath = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None).FilePath; // 加载配置文件 XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(configPath); // 查找appSettings节点 XmlNode node = xmlDoc.SelectSingleNode("//appSettings"); // 查找对应的key XmlElement element = (XmlElement)node.SelectSingleNode($"add[@key='geshu']"); if (element != null) { // 存在则更新值 if (xuhao == "9999") { element.SetAttribute("value", "1"); } else { element.SetAttribute("value", Convert.ToString(Convert.ToDecimal(ConfigurationManager.AppSettings["geshu"]) + 1)); } } else { // 不存在则创建新节点 element = xmlDoc.CreateElement("add"); element.SetAttribute("key", "geshu"); element.SetAttribute("value", Convert.ToString(Convert.ToDecimal(ConfigurationManager.AppSettings["geshu"]) + 1)); node.AppendChild(element); } // 保存配置文件 xmlDoc.Save(configPath); // 刷新配置,使修改立即生效 ConfigurationManager.RefreshSection("appSettings"); label6.Invoke(new Action(() => { label6.Text = dt.Rows[0][0]+"已发送成功"; label6.Font = new Font("黑体", 12); label6.BackColor = Color.Green; })); //string path = @"D:\MQTT日志.txt"; //string AppendText = xuhao + "" + DateTime.Now.ToString("yy") + DateTime.Now.ToString("MM") + DateTime.Now.ToString("dd") + DateTime.Now.ToString("HH") + DateTime.Now.ToString("mm") + DateTime.Now.ToString("ss") + "ST 0040103151 H TT " + Convert.ToDateTime(dt.Rows[0][0]).ToString("yy") + Convert.ToDateTime(dt.Rows[0][0]).ToString("MM") + Convert.ToDateTime(dt.Rows[0][0]).ToString("dd") + Convert.ToDateTime(dt.Rows[0][0]).ToString("HH") + Convert.ToDateTime(dt.Rows[0][0]).ToString("mm") + " Z " + dt.Rows[0][1] + " VT 13.96" + Environment.NewLine; //File.AppendAllText(path, AppendText); timer4.Enabled = false; } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } finally { con.Close(); } } } private void timer4_Tick(object sender, EventArgs e) { //if (!backgroundWorker2.IsBusy) //{ // backgroundWorker2.RunWorkerAsync(); //} } } } 请解析以上代码
10-10
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值