public ElectricUserControl(ElectricConfig config, MysqlMethod mysql, List <AbsProtocol> electricAbsprocotols) { InitializeComponent(); MysqlMethod = mysql; ElectricConfig = config; ElectricAbsProtocols = electricAbsprocotols; ElectricgroupControl.Text = ElectricConfig.DeviceName; ThreePhaseElectricMeter_Logs = MysqlMethod.Search_ThreePhaseElectricMeter_Log($"{TTime:yyyyMMdd000000}", $"{TTime:yyyyMMdd235959}", ElectricConfig.GatewayIndex, ElectricConfig.DeviceIndex); LinechartControl.DataSource = ThreePhaseElectricMeter_Logs; Series series = new Series($"{config.DeviceName}", viewType: ViewType.Line); series.CrosshairLabelPattern = "{S}" + "\n" + "時間:{A:HH:mm:ss} " + "\n" + "瞬間用電:{V:0.00}kW"; series.LegendTextPattern = "{A}"; series.ArgumentDataMember = "ttimen"; series.ValueDataMembers.AddRange(new string[] { "kw" }); series.LabelsVisibility = DefaultBoolean.False; LinechartControl.Series.Add(series); XYDiagram diagram = (XYDiagram)LinechartControl.Diagram; if (diagram != null) { diagram.EnableAxisXZooming = true; //放大縮小 diagram.EnableAxisXScrolling = true; //拖曳 diagram.AxisX.DateTimeScaleOptions.MeasureUnit = DateTimeMeasureUnit.Minute; // 顯示設定 diagram.AxisX.DateTimeScaleOptions.GridAlignment = DateTimeGridAlignment.Minute; // 刻度設定 diagram.AxisX.Label.TextPattern = "{A:HH:mm}"; //X軸顯示 diagram.AxisX.WholeRange.SideMarginsValue = 0; //不需要邊寬 diagram.AxisY.WholeRange.AlwaysShowZeroLevel = false; } LinechartControl.CrosshairOptions.ShowArgumentLabels = false; //是否顯示Y軸垂直線 LinechartControl.CrosshairOptions.ShowArgumentLine = false; //是否顯示Y軸垂直線 LinechartControl.CrosshairOptions.ShowCrosshairLabels = true; //是否顯示Y軸垂直線 }
public ExportElectricSettingUserControl(ReportConfig reportConfig, ElectricConfig electricConfig, MysqlMethod mysql) { InitializeComponent(); MysqlMethod = mysql; ReportConfig = reportConfig; groupControl1.Text = electricConfig.DeviceName; ElectricNotextEdit.Text = ReportConfig.ElectricNo; ElectricitySalePeriodtextEdit.Text = ReportConfig.ElectricitySalePeriod.ToString(); StartingDatetimeEdit.EditValue = ReportConfig.StartingDate.ToString("yyyy/MM/dd"); OfficialPricingStartDatetimeEdit.EditValue = ReportConfig.OfficialPricingStartDate.ToString("yyyy/MM/dd"); PricStartTimetimeEdit.EditValue = ReportConfig.PricStartTime.ToString("yyyy/MM/dd"); PricEndTimetimeEdit.EditValue = ReportConfig.PricEndTime.ToString("yyyy/MM/dd"); ElectricityPurchaseRatetextEdit.Text = ReportConfig.ElectricityPurchaseRate.ToString("#.####"); DeviceCapacitytextEdit.Text = ReportConfig.DeviceCapacity.ToString("#.###"); PurchaseAndSaleCapacitytextEdit.Text = ReportConfig.PurchaseAndSaleCapacity.ToString("#.###"); RatetextEdit.Text = ReportConfig.Ratio.ToString(); }
public SubMeterUserControl(ElectricConfig electricConfig, SqlMethod sqlMethod, Form1 form1, List <GatewayConfig> gatewayConfigs) { InitializeComponent(); GatewayConfigs = gatewayConfigs; Form1 = form1; groupControl.CustomHeaderButtons[0].Properties.Image = imageCollection1.Images["aligncenter"]; ValueFont = NowkWlabelControl.Font;//即時用電、本日累積用電、昨日累積用電、總累積用電 字型大小一樣 if (electricConfig != null && Form1.ConnectionFlag) { groupControl.Text = $"{electricConfig.DeviceName}"; //電表名稱 var NowkWh = sqlMethod.Search_ElectricTotalPrice(0, electricConfig.GatewayIndex, electricConfig.DeviceIndex); //本日累積用電度 var AfterkWh = sqlMethod.Search_ElectricTotalPrice(1, electricConfig.GatewayIndex, electricConfig.DeviceIndex); //昨日累積用電度 var TotalkWh = sqlMethod.Search_ElectricTotalPrice(3, electricConfig.GatewayIndex, electricConfig.DeviceIndex); //總累積用電度 if (NowkWh.Count > 0) { NowkWhlabelControl.Text = NowkWh[0].KwhTotal.ToString("F1"); } if (AfterkWh.Count > 0) { AfterkWhlabelControl.Text = AfterkWh[0].KwhTotal.ToString("F1"); } if (TotalkWh.Count > 0) { TotalkWhlabelControl.Appearance.Font = CalculateFontSize(TotalkWh[0].KwhTotal.ToString("F1"), TotalkWhlabelControl); TotalkWhlabelControl.Text = TotalkWh[0].KwhTotal.ToString("F1"); } } else if (!Form1.ConnectionFlag) { groupControl.Text = $"{electricConfig.DeviceName}"; //電表名稱 var NowkWh = rnd.Next(100, 300); //本日累積用電度 var AfterkWh = rnd.Next(100, 300); //昨日累積用電度 var TotalkWh = rnd.Next(10000, 30000); //總累積用電度 NowkWhlabelControl.Text = NowkWh.ToString(); AfterkWhlabelControl.Text = AfterkWh.ToString(); TotalkWhlabelControl.Text = TotalkWh.ToString(); } groupControl.CustomHeaderButtons[0].Properties.Enabled = false; }
public MasterMeterUserControl(ElectricConfig electricConfig, SqlMethod sqlMethod, Form1 form1, List <GatewayConfig> gatewayConfigs) { InitializeComponent(); GatewayConfigs = gatewayConfigs; Form1 = form1; groupControl.CustomHeaderButtons[0].Properties.Image = imageCollection1.Images["aligncenter"]; ValueFont = DaykWhlabelControl.Font; //本日累積用電、本月累積用電 字型大小一樣 if (electricConfig != null && Form1.ConnectionFlag) //通訊 { groupControl.Text = $"總表 - {electricConfig.DeviceName}"; //電表名稱 var NowkWh = sqlMethod.Search_ElectricTotalPrice(0, electricConfig.GatewayIndex, electricConfig.DeviceIndex); //本日累積用電度 var MonthkWh = sqlMethod.Search_ElectricTotalPrice(2, electricConfig.GatewayIndex, electricConfig.DeviceIndex); //本月累積用電度 if (NowkWh.Count > 0) { DaykWhlabelControl.Appearance.Font = CalculateFontSize(NowkWh[0].KwhTotal.ToString("F1") + " kWh", DaykWhlabelControl); DaykWhlabelControl.Text = NowkWh[0].KwhTotal.ToString("F1") + " kWh"; } if (MonthkWh.Count > 0) { MonthkWhlabelControl.Appearance.Font = CalculateFontSize(MonthkWh[0].KwhTotal.ToString("F1") + " kWh", MonthkWhlabelControl); MonthkWhlabelControl.Text = MonthkWh[0].KwhTotal.ToString("F1") + " kWh"; } } else if (!Form1.ConnectionFlag) //Demo { groupControl.Text = $"總表 -{electricConfig.DeviceName}"; //電表名稱 var NowkWh = rnd.Next(100, 300); //本日累積用電度 var MonthkWh = rnd.Next(3000, 5000); //本月累積用電度 DaykWhlabelControl.Text = NowkWh.ToString() + " kWh"; MonthkWhlabelControl.Text = MonthkWh.ToString() + " kWh"; } #region 曲線圖 LinechartControl.Legend.Direction = LegendDirection.TopToBottom; //線條說明的排序 LinechartControl.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False; //線條說明顯示 LinechartControl.CrosshairOptions.CrosshairLabelMode = CrosshairLabelMode.ShowCommonForAllSeries; //顯示全部線條內容 LinechartControl.CrosshairOptions.LinesMode = CrosshairLinesMode.Auto; //自動獲取點上面的數值 LinechartControl.CrosshairOptions.GroupHeaderTextOptions.Font = new System.Drawing.Font("微軟正黑體", 12); LinechartControl.CrosshairOptions.ShowArgumentLabels = true; //是否顯示Y軸垂直線 LinechartControl.SideBySideEqualBarWidth = false; //線條是否需要相等寬度 TotalMeterSeries = new Series("總表累積量", ViewType.Line); if (sqlMethod != null && Form1.ConnectionFlag) { var SQLline = sqlMethod.Search_ThreePhaseElectricMeter_Log(DateTime.Now.ToString("yyyyMMdd"), DateTime.Now.ToString("yyyyMMdd"), electricConfig.GatewayIndex, electricConfig.DeviceIndex); TotalMeterSeries.DataSource = SQLline; TotalMeterSeries.ArgumentDataMember = "ttimen"; TotalMeterSeries.ValueDataMembers.AddRange(new string[] { "kw" }); } else { var SQLline = Create_Line(); TotalMeterSeries.DataSource = SQLline; TotalMeterSeries.ArgumentDataMember = "Argument"; TotalMeterSeries.ValueDataMembers.AddRange(new string[] { "Value" }); } TotalMeterSeries.CrosshairLabelPattern = "{S} \r時間 : {A:yyyy-MM-dd HH:mm}\r{V:0.##} kW"; //TotalMeterSeries.LabelsVisibility = DefaultBoolean.False; if (LinechartControl != null) { if (LinechartControl.Series.Count == 0) { LinechartControl.Series.Add(TotalMeterSeries); } } if (TotalMeterSeries.DataSource != null && LinechartControl.Series.Count > 0) { XYDiagram diagram = (XYDiagram)LinechartControl.Diagram; if (diagram != null) { diagram.EnableAxisXZooming = true; //放大縮小 diagram.EnableAxisXScrolling = true; //拖曳 diagram.AxisX.DateTimeScaleOptions.MeasureUnit = DateTimeMeasureUnit.Minute; // 顯示設定 diagram.AxisX.DateTimeScaleOptions.GridAlignment = DateTimeGridAlignment.Minute; // 刻度設定 diagram.AxisX.Label.Angle = 90; diagram.AxisX.Label.TextPattern = "{A:HH:mm}"; //X軸顯示 diagram.AxisX.WholeRange.SideMarginsValue = 0; //不需要邊寬 diagram.AxisY.WholeRange.AlwaysShowZeroLevel = false; } LinechartControl.CrosshairOptions.ShowArgumentLabels = false; //是否顯示Y軸垂直線 LinechartControl.CrosshairOptions.ShowArgumentLine = false; //是否顯示Y軸垂直線 //LinechartControl.CrosshairOptions.ShowCrosshairLabels = false;//是否顯示Y軸垂直線 } LineTime = DateTime.Now; groupControl.CustomHeaderButtons[0].Properties.Enabled = false; #endregion }
public Form1() { InitializeComponent(); Log.Logger = new LoggerConfiguration() .WriteTo.Console() .WriteTo.File($"{AppDomain.CurrentDomain.BaseDirectory}\\log\\log-.txt", rollingInterval: RollingInterval.Day, outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}") .CreateLogger(); //宣告Serilog初始化 UserbarButtonItem.ImageOptions.Image = imageCollection16x16.Images["UserDisconnected"]; SettingbarButtonItem.ImageOptions.Image = imageCollection16x16.Images["Setting"]; SettingbarButtonItem.Visibility = BarItemVisibility.Never; #region Json載入 ButtonSetting = InitialMethod.ButtonLoad(); LogoSetting = InitialMethod.LogoLoad(); SqlDBSetting = InitialMethod.SqlDBLoad(); BankAccountSetting = InitialMethod.BankAccountLoad(); DemoSetting = InitialMethod.DemoLoad(); #endregion ConnectionFlag = DemoSetting.ConnectionFlag; #region 入Logo圖片 if (LogoSetting != null) { if (File.Exists(LogoSetting.LogoPath)) { LogopictureEdit.Image = Image.FromFile(LogoSetting.LogoPath); } else { LogopictureEdit.Image = LogoimageCollection.Images["ewatch_logo"]; } } else { LogopictureEdit.Image = LogoimageCollection.Images["ewatch_logo"]; } #endregion #region 鈕載入 NavigationFrame = new NavigationFrame() { Dock = DockStyle.Fill }; NavigationFrame.Parent = DisplaypanelControl; ButtonControl = new ButtonControl() { Form1 = this, navigationFrame = NavigationFrame }; ButtonControl.AccordionLoad(accordionControl1, ButtonSetting); #endregion #region 資料庫方法載入 if (SqlDBSetting != null && ConnectionFlag) { SqlMethod = new SqlMethod() { setting = SqlDBSetting, BankAccountSetting = BankAccountSetting }; SqlMethod.SQLConnect(); if (SqlMethod.Search_DataBase()) { SQLDataBaseFlag = true; GatewayConfigs = SqlMethod.Search_GatewayConfig(); //通道資訊 ElectricConfigs = SqlMethod.Search_Electricconfig(); //電表設備資訊 SqlComponent = new SqlComponent() { SqlMethod = SqlMethod, BankAccountSetting = BankAccountSetting }; SqlComponent.MyWorkState = ConnectionFlag; } else { SQLDataBaseFlag = false; } } else if (!ConnectionFlag) { SQLDataBaseFlag = true; GatewayConfig gateway = new GatewayConfig() { GatewayIndex = 0, GatewayName = "通道1" }; GatewayConfigs.Add(gateway); for (int i = 0; i < 20; i++) { if (i == 0) { ElectricConfig electric = new ElectricConfig() { TotalMeterFlag = true, DeviceName = $"電表{i + 1}", GatewayIndex = 0, DeviceIndex = i, DeviceID = i + 1 }; ElectricConfigs.Add(electric); } else { ElectricConfig electric = new ElectricConfig() { TotalMeterFlag = false, DeviceName = $"電表{i + 1}", GatewayIndex = 0, DeviceIndex = i, DeviceID = i + 1 }; ElectricConfigs.Add(electric); } } } #endregion #region 通訊 if (ConnectionFlag && GatewayConfigs != null && ElectricConfigs != null) { foreach (var item in GatewayConfigs) { GatewayEnumType = (GatewayEnumType)item.GatewayEnumType; var electricconfigs = ElectricConfigs.Where(g => g.GatewayIndex == item.GatewayIndex).ToList(); switch (GatewayEnumType) { case GatewayEnumType.ModbusRTU: { SerialportComponent component = new SerialportComponent() { BankAccountSetting = BankAccountSetting, Gatewayconfig = item, ElectricConfigs = electricconfigs }; component.MyWorkState = ConnectionFlag; ModbusComponents.Add(component); } break; case GatewayEnumType.ModbusTCP: { TcpComponent component = new TcpComponent() { BankAccountSetting = BankAccountSetting, Gatewayconfig = item, ElectricConfigs = electricconfigs }; component.MyWorkState = ConnectionFlag; ModbusComponents.Add(component); } break; } } } #endregion #region 畫面 foreach (var item in ButtonSetting.ButtonGroupSettings) { foreach (var Buttonitem in item.ButtonItemSettings) { ButtonItemEnumType = (ButtonItemEnumType)Buttonitem.ButtonItemEnumType; switch (ButtonItemEnumType) { case ButtonItemEnumType.Home: { ChargingPileView chargingPileView = new ChargingPileView(ElectricConfigs, SqlMethod, this, GatewayConfigs) { SqlMethod = SqlMethod, Dock = DockStyle.Fill }; field4UserControls.Add(chargingPileView); NavigationFrame.AddPage(chargingPileView); } break; case ButtonItemEnumType.Report: { dataReportUserControl = new DataReportUserControl(ElectricConfigs) { SqlMethod = SqlMethod, Dock = DockStyle.Fill, Form1 = this }; NavigationFrame.AddPage(dataReportUserControl); } break; case ButtonItemEnumType.BillingSheet: { billingSheetUserControl = new BillingSheetUserControl(ElectricConfigs) { BankaccountSetting = BankAccountSetting, SqlMethod = SqlMethod, Dock = DockStyle.Fill, Form1 = this }; NavigationFrame.AddPage(billingSheetUserControl); } break; } } } User_ButtonItem_Visible(); #endregion timer1.Interval = 1000; timer1.Enabled = true; }
private void SearchsimpleButton_Click(object sender, EventArgs e) { string AfterStartTime; string AfterEndTime; string NowStartTime; string NowEndTime; int RoomCheck = 0; //勾選數量 bool OddEvenFlag = false; //奇偶數 List <string> RoomName = new List <string>(); //勾選住戶名 List <ElectricTotalPrice> NowbillData = new List <ElectricTotalPrice>(); List <ElectricTotalPrice> AfterbillData = new List <ElectricTotalPrice>(); if (Convert.ToDateTime(StartdateEdit.EditValue).Month == 1) { AfterStartTime = $"{Convert.ToDateTime(StartdateEdit.EditValue).AddYears(-1).Year}1201"; AfterEndTime = $"{Convert.ToDateTime(StartdateEdit.EditValue).AddYears(-1).Year}1231"; } else { AfterStartTime = $"{Convert.ToDateTime(StartdateEdit.EditValue).Year}{Convert.ToDateTime(StartdateEdit.EditValue).AddMonths(-1).Month}01"; AfterEndTime = $"{Convert.ToDateTime(StartdateEdit.EditValue).Year}{Convert.ToDateTime(StartdateEdit.EditValue).AddMonths(-1).Month}{DateTime.DaysInMonth(Convert.ToDateTime(StartdateEdit.EditValue).Year, Convert.ToDateTime(StartdateEdit.EditValue).AddMonths(-1).Month)}"; } NowStartTime = Convert.ToDateTime(StartdateEdit.EditValue).ToString("yyyyMM01"); NowEndTime = Convert.ToDateTime(StartdateEdit.EditValue).ToString("yyyyMM") + DateTime.DaysInMonth(Convert.ToDateTime(StartdateEdit.EditValue).Year, Convert.ToDateTime(StartdateEdit.EditValue).Month); #region 塞入勾選房間房號 foreach (var item in boxItems) { if (item.CheckState == CheckState.Checked) { ElectricConfig electric = (ElectricConfig)item.Tag; RoomName.Add(electric.DeviceName); if (Form1.ConnectionFlag) { var nowbilldata = SqlMethod.Search_ElectricTotalPrice_Billing(NowStartTime, NowEndTime, electric.GatewayIndex, electric.DeviceIndex); NowbillData.Add(nowbilldata); var afterbilldata = SqlMethod.Search_ElectricTotalPrice_Billing(AfterStartTime, AfterEndTime, electric.GatewayIndex, electric.DeviceIndex); AfterbillData.Add(afterbilldata); } else { var nowbilldata = new ElectricTotalPrice() { Price = rnd.Next(500, 1000), KwhTotal = rnd.Next(100, 200) }; NowbillData.Add(nowbilldata); var afterbilldata = new ElectricTotalPrice() { Price = rnd.Next(500, 1000), KwhTotal = rnd.Next(100, 200) }; AfterbillData.Add(afterbilldata); } RoomCheck++; } } #endregion #region 判斷奇數偶數 if (RoomCheck % 2 == 0) { OddEvenFlag = true;//偶數 } else { OddEvenFlag = false;//奇數 } #endregion BillingSheetXtraReport[] billingSheets = new BillingSheetXtraReport[RoomCheck / 2 + RoomCheck % 2]; //計費單數量 XtraReport xtraReport = new XtraReport(); if (OddEvenFlag) //偶數 { for (int i = 0; i < billingSheets.Length; i++) { billingSheets[i] = new BillingSheetXtraReport() { bankAccount = BankaccountSetting }; billingSheets[i].Create_BillingSheet(Convert.ToDateTime(StartdateEdit.EditValue), true, RoomName[i + i], NowbillData[i + i], AfterbillData[i + i], RoomName[i + i + 1], NowbillData[i + i + 1], AfterbillData[i + 1]); billingSheets[i].CreateDocument(); xtraReport.Pages.AddRange(billingSheets[i].Pages); } documentViewer1.DocumentSource = xtraReport; } else//奇數 { for (int i = 0; i < billingSheets.Length; i++) { billingSheets[i] = new BillingSheetXtraReport() { bankAccount = BankaccountSetting }; if (i != billingSheets.Length - 1) { billingSheets[i].Create_BillingSheet(Convert.ToDateTime(StartdateEdit.EditValue), true, RoomName[i + i], NowbillData[i + i], AfterbillData[i + i], RoomName[i + i + 1], NowbillData[i + i + 1], AfterbillData[i + 1]); } else { billingSheets[i].Create_BillingSheet(Convert.ToDateTime(StartdateEdit.EditValue), false, RoomName[i + i], NowbillData[i + i], AfterbillData[i + i]); } billingSheets[i].CreateDocument(); xtraReport.Pages.AddRange(billingSheets[i].Pages); } documentViewer1.DocumentSource = xtraReport; } }