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軸垂直線
        }
Exemplo n.º 2
0
 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();
 }
Exemplo n.º 3
0
 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;
 }
Exemplo n.º 4
0
 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
 }
Exemplo n.º 5
0
        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;
        }
Exemplo n.º 6
0
        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;
            }
        }