2019-02-17 16:56:42 +00:00
///
2020-02-18 08:27:37 +00:00
/// Copyright (c) 2016-2020 Sensus Slovensko a.s.
2019-02-17 16:56:42 +00:00
///
using System ;
2016-06-01 10:09:03 +00:00
using System.Collections.Generic ;
2018-03-19 01:41:20 +00:00
using System.IO ;
2016-06-01 10:09:03 +00:00
using System.Windows.Forms ;
2016-06-02 22:19:23 +00:00
using NHibernate ;
using Results.Entities ;
2018-03-19 01:41:20 +00:00
using TBF.BenchControl ;
using TBF.BenchControl.Generic ;
2018-03-20 03:49:11 +00:00
using TBF.BenchControl.GenericDevices ;
2016-06-01 10:09:03 +00:00
using ResultsBrowser.Filters ;
using ResultsBrowser.Resources ;
2020-02-18 08:27:37 +00:00
using Oracle ;
using Oracle.DataAccess.Client ;
2016-06-01 10:09:03 +00:00
namespace ResultsBrowser
{
public partial class ResultsBrowserWnd : Form
{
2016-08-16 14:39:55 +00:00
const string OpenFileDlg_SaveFileDlg_Filter = "{0} (*.qry)|*.qry|{1} (*.*)|*.*" ;
2018-03-19 01:41:20 +00:00
string [ ] args ; /// Comand line argument
2016-08-16 14:39:55 +00:00
2016-06-06 13:33:22 +00:00
IList < Filters . IFilter > filters ; /// Filters and the UI of filters
FiltersConfig filtersConfig ; /// Serializable configuration of filters and displayed results
2016-06-01 10:09:03 +00:00
2016-06-03 06:51:47 +00:00
IList < WaterMeter > waterMeters ;
2020-06-18 08:50:44 +00:00
DateTime timePeriodStart ;
DateTime timePeriodEnd ;
2016-11-18 14:18:21 +00:00
2018-03-20 03:49:11 +00:00
static IList < IComponent > tbfComponents ;
static IList < IDevice > tbfDevices ;
2020-02-18 08:27:37 +00:00
OracleConnection oracleConnection ; /// Oracle database connection
2016-11-16 14:57:23 +00:00
public ResultsBrowserWnd ( string [ ] args )
2016-06-01 10:09:03 +00:00
{
InitializeComponent ( ) ;
2018-03-19 01:41:20 +00:00
2016-06-02 22:19:23 +00:00
filters = new List < Filters . IFilter > ( ) ;
2016-06-06 13:33:22 +00:00
filtersConfig = new FiltersConfig ( ) ;
2016-11-16 14:57:23 +00:00
this . args = args ;
2016-11-18 14:18:21 +00:00
2018-03-20 03:49:11 +00:00
tbfComponents = new List < TBF . BenchControl . Generic . IComponent > ( ) ;
tbfDevices = new List < IDevice > ( ) ;
2020-06-18 08:50:44 +00:00
timePeriodStart = new DateTime ( 0 ) ;
timePeriodEnd = new DateTime ( 0 ) ;
}
2016-06-01 10:09:03 +00:00
private void ResultsBrowserWnd_Load ( object sender , EventArgs e )
{
2016-08-16 14:39:55 +00:00
ResultsBrowser . LocalSettings ls = Program . LocalSettings ;
Width = ( ls . MainWndWidth > 0 ) ? ls . MainWndWidth : 1000 ;
Height = ( ls . MainWndHeight > 0 ) ? ls . MainWndHeight : 750 ;
Left = ( ls . MainWndLeft ! = 0 ) ? ls . MainWndLeft : 50 ;
Top = ( ls . MainWndTop ! = 0 ) ? ls . MainWndTop : 50 ;
hSplitContainer . SplitterDistance = ( ls . SplitterDistance ! = 0 ) ? ls . SplitterDistance : 280 ;
2016-06-01 10:09:03 +00:00
Localize ( ) ;
2016-08-16 14:39:55 +00:00
2016-06-02 18:35:04 +00:00
RedrawTestBenches ( ) ;
2016-06-02 22:19:23 +00:00
2016-06-03 12:03:12 +00:00
checkBox1 . Checked = Program . LocalSettings . Bench1Selected ;
checkBox2 . Checked = Program . LocalSettings . Bench2Selected ;
checkBox3 . Checked = Program . LocalSettings . Bench3Selected ;
2017-06-07 14:22:18 +00:00
checkBox4 . Checked = Program . LocalSettings . Bench4Selected ;
checkBox5 . Checked = Program . LocalSettings . Bench5Selected ;
2019-01-11 12:25:39 +00:00
checkBox6 . Checked = Program . LocalSettings . Bench6Selected ;
2016-11-16 14:57:23 +00:00
if ( args . Length = = 1 & & args [ 0 ] . IndexOf ( ".qry" ) = = args [ 0 ] . Length - 4 )
{
LoadConfigFromFile ( args [ 0 ] ) ;
}
else if ( ! string . IsNullOrEmpty ( Program . LocalSettings . LastConfigFileName ) )
{
LoadConfigFromFile ( Program . LocalSettings . LastConfigFileName ) ;
}
else
{
Text = string . Format ( "{0} ver.{1}" , Strings . Results_Browser , Program . Version ) ;
}
2016-06-02 18:35:04 +00:00
}
void RedrawTestBenches ( )
{
checkBox1 . Text = Program . LocalSettings . Bench1 ;
checkBox2 . Text = Program . LocalSettings . Bench2 ;
checkBox3 . Text = Program . LocalSettings . Bench3 ;
2017-06-07 14:22:18 +00:00
checkBox4 . Text = Program . LocalSettings . Bench4 ;
checkBox5 . Text = Program . LocalSettings . Bench5 ;
2019-01-11 12:25:39 +00:00
checkBox6 . Text = Program . LocalSettings . Bench6 ;
2016-06-02 18:35:04 +00:00
checkBox1 . Visible = ! string . IsNullOrEmpty ( checkBox1 . Text ) ;
checkBox2 . Visible = ! string . IsNullOrEmpty ( checkBox2 . Text ) ;
checkBox3 . Visible = ! string . IsNullOrEmpty ( checkBox3 . Text ) ;
2017-06-07 14:22:18 +00:00
checkBox4 . Visible = ! string . IsNullOrEmpty ( checkBox4 . Text ) ;
checkBox5 . Visible = ! string . IsNullOrEmpty ( checkBox5 . Text ) ;
2019-01-11 12:25:39 +00:00
checkBox6 . Visible = ! string . IsNullOrEmpty ( checkBox6 . Text ) ;
2016-06-01 10:09:03 +00:00
}
2020-06-18 08:50:44 +00:00
string BenchName ( )
{
return checkBox1 . Checked ? Program . LocalSettings . Bench1
: checkBox2 . Checked ? Program . LocalSettings . Bench2
: checkBox3 . Checked ? Program . LocalSettings . Bench3
: checkBox4 . Checked ? Program . LocalSettings . Bench4
2019-01-11 12:25:39 +00:00
: checkBox5 . Checked ? Program . LocalSettings . Bench5
: Program . LocalSettings . Bench6 ;
2020-06-18 08:50:44 +00:00
}
2017-03-08 06:26:03 +00:00
2016-06-01 10:09:03 +00:00
void Localize ( )
{
2016-06-03 06:51:47 +00:00
filtersGroupBox . Text = Strings . Filters ;
resultsGroupBox . Text = Strings . Query_results ;
settingsBtn . Text = Strings . Settings ;
testBenchesGroupBox . Text = Strings . Test_benches ;
2020-06-18 08:50:44 +00:00
clearFiltersBtn . Text = Strings . Clear_filters ;
2016-06-03 06:51:47 +00:00
addFilterBtn . Text = Strings . Add_filter ;
2020-06-18 08:50:44 +00:00
formatOfResultsBtn . Text = Strings . Format_of_results ;
printerConfigBtn . Text = Strings . Configure_printer ;
loadConfigBtn . Text = Strings . Load_filters ;
2016-08-16 14:39:55 +00:00
saveConfigBtn . Text = Strings . Save_filters ;
2020-06-18 08:50:44 +00:00
executeQueryBtn . Text = Strings . Execute_query ;
2016-06-03 06:51:47 +00:00
exportQueryResultsBtn . Text = Strings . Export_query_results ;
printQueryResultsBtn . Text = Strings . Print_query_results ;
2020-06-18 08:50:44 +00:00
statisticsBtn . Text = Strings . Statistics ;
2016-06-01 10:09:03 +00:00
}
private void settingsBtn_Click ( object sender , EventArgs e )
{
2016-06-02 18:35:04 +00:00
if ( new Forms . DatabaseSettingsDlg ( ) . ShowDialog ( ) = = DialogResult . OK )
{
RedrawTestBenches ( ) ;
}
2016-06-01 10:09:03 +00:00
}
2016-06-03 12:03:12 +00:00
private void checkBox1_CheckedChanged ( object sender , EventArgs e ) { SaveCheckBoxes ( ) ; }
private void checkBox2_CheckedChanged ( object sender , EventArgs e ) { SaveCheckBoxes ( ) ; }
private void checkBox3_CheckedChanged ( object sender , EventArgs e ) { SaveCheckBoxes ( ) ; }
2017-06-07 14:22:18 +00:00
private void checkBox4_CheckedChanged ( object sender , EventArgs e ) { SaveCheckBoxes ( ) ; }
private void checkBox5_CheckedChanged ( object sender , EventArgs e ) { SaveCheckBoxes ( ) ; }
2019-01-11 12:25:39 +00:00
private void checkBox6_CheckedChanged ( object sender , EventArgs e ) { SaveCheckBoxes ( ) ; }
2016-06-03 12:03:12 +00:00
void SaveCheckBoxes ( )
{
Program . LocalSettings . Bench1Selected = checkBox1 . Checked ;
Program . LocalSettings . Bench2Selected = checkBox2 . Checked ;
Program . LocalSettings . Bench3Selected = checkBox3 . Checked ;
2017-06-07 14:22:18 +00:00
Program . LocalSettings . Bench4Selected = checkBox4 . Checked ;
Program . LocalSettings . Bench5Selected = checkBox5 . Checked ;
2019-01-11 12:25:39 +00:00
Program . LocalSettings . Bench6Selected = checkBox6 . Checked ;
2016-06-03 12:03:12 +00:00
Program . LocalSettings . Save ( ) ;
}
private void clearFiltersBtn_Click ( object sender , EventArgs e )
{
filters . Clear ( ) ;
filtersFlowLayoutPanel . Controls . Clear ( ) ;
}
2016-06-01 10:09:03 +00:00
private void addFilterBtn_Click ( object sender , EventArgs e )
{
Forms . AddFilterDlg dlg = new Forms . AddFilterDlg ( ) ;
2016-06-03 06:51:47 +00:00
if ( dlg . ShowDialog ( ) = = DialogResult . OK & & dlg . SelectedFilterID ! = null )
2016-06-01 10:09:03 +00:00
{
2016-06-03 06:51:47 +00:00
Filters . IFilter filter = Factory . GetFilter ( dlg . SelectedFilterID ) ;
2016-06-02 18:35:04 +00:00
filters . Add ( filter ) ;
filtersFlowLayoutPanel . Controls . Add ( filter . GetFilterUI ( ) ) ;
2016-06-01 10:09:03 +00:00
}
}
2020-06-18 08:50:44 +00:00
private void formatOfResultsBtn_Click ( object sender , EventArgs e )
{
Results . Forms . ResultsConfigDlg dlg = new Results . Forms . ResultsConfigDlg ( ) ;
dlg . MetersKind = Config . Entities . MetersKind . Single ;
dlg . SelectedItems = Results . WMeterRsltItemSpec . FromStrArray ( filtersConfig . ResultItems ) ;
2018-03-19 01:41:20 +00:00
2020-06-18 08:50:44 +00:00
if ( dlg . ShowDialog ( ) = = DialogResult . OK )
{
filtersConfig . ResultItems = Results . WMeterRsltItemSpec . ToStrArray ( dlg . SelectedItems ) ;
RedrawResults ( ) ;
}
}
2018-03-19 01:41:20 +00:00
2020-06-18 08:50:44 +00:00
private void printerConfigBtn_Click ( object sender , EventArgs e )
{
Forms . PrinterConfigDlg dlg = new Forms . PrinterConfigDlg
{
PrinterClass = filtersConfig . PrinterClass ,
PrinterCfg = filtersConfig . PrinterCfg
} ;
2018-03-19 01:41:20 +00:00
2020-06-18 08:50:44 +00:00
if ( dlg . ShowDialog ( ) = = DialogResult . OK )
{
filtersConfig . PrinterClass = dlg . PrinterClass ;
filtersConfig . PrinterCfg = dlg . PrinterCfg ;
}
}
2018-03-19 01:41:20 +00:00
2016-08-16 14:39:55 +00:00
private void loadConfigBtn_Click ( object sender , EventArgs e )
2016-06-01 10:09:03 +00:00
{
2020-06-18 08:50:44 +00:00
OpenFileDialog dlg = new OpenFileDialog ( ) ;
dlg . Filter = string . Format ( "{0} (*.qry)|*.qry|{1} (*.*)|*.*" , Strings . Query_files , Strings . All_files ) ;
if ( dlg . ShowDialog ( ) = = DialogResult . OK )
{
2016-11-16 14:57:23 +00:00
LoadConfigFromFile ( dlg . FileName ) ;
}
}
2016-06-06 13:33:22 +00:00
2016-11-16 14:57:23 +00:00
void LoadConfigFromFile ( string fileName )
{
FiltersConfig localFiltersConfig = FiltersConfig . Load ( fileName ) ;
if ( localFiltersConfig ! = null )
{
filtersConfig = localFiltersConfig ;
filters . Clear ( ) ;
filtersFlowLayoutPanel . Controls . Clear ( ) ;
///
for ( int i = 0 ; i < filtersConfig . FiltersCount ; i + + )
{
Filters . IFilter filter = Factory . LoadFilter ( filtersConfig . FilterID [ i ] , filtersConfig . FilterData [ i ] ) ;
filters . Add ( filter ) ;
filtersFlowLayoutPanel . Controls . Add ( filter . GetFilterUI ( ) ) ;
2016-06-06 13:33:22 +00:00
}
2016-11-16 14:57:23 +00:00
}
Program . LocalSettings . LastConfigFileName = fileName ;
Program . LocalSettings . Save ( ) ;
Text = string . Format ( "{0} ver.{1} ({2})" , Strings . Results_Browser , Program . Version , Program . LocalSettings . LastConfigFileName ) ;
2016-06-01 10:09:03 +00:00
}
2016-08-16 14:39:55 +00:00
private void saveConfigBtn_Click ( object sender , EventArgs e )
2016-06-01 10:09:03 +00:00
{
2016-06-06 13:33:22 +00:00
if ( filtersConfig . UpdateFromFilters ( filters ) ) /// filtersConfig members related to filters
{
/// Save column widths of the ListView into filtersConfig members
if ( resultsListView . Columns . Count > 0 )
{
filtersConfig . ResultsClmnWidths = new int [ resultsListView . Columns . Count ] ;
for ( int i = 0 ; i < resultsListView . Columns . Count ; i + + )
{
filtersConfig . ResultsClmnWidths [ i ] = resultsListView . Columns [ i ] . Width ;
}
}
2016-06-01 10:09:03 +00:00
2016-06-06 13:33:22 +00:00
/// Save the file
SaveFileDialog dlg = new SaveFileDialog ( ) ;
2016-08-16 14:39:55 +00:00
dlg . Filter = string . Format ( OpenFileDlg_SaveFileDlg_Filter , Strings . Query_files , Strings . All_files ) ;
2016-06-06 13:33:22 +00:00
if ( dlg . ShowDialog ( ) = = DialogResult . OK )
{
filtersConfig . Save ( dlg . FileName ) ;
2016-11-16 14:57:23 +00:00
Program . LocalSettings . LastConfigFileName = dlg . FileName ;
Program . LocalSettings . Save ( ) ;
Text = string . Format ( "{0} ver.{1} ({2})" , Strings . Results_Browser , Program . Version , Program . LocalSettings . LastConfigFileName ) ;
2016-06-06 13:33:22 +00:00
}
}
2016-06-01 10:09:03 +00:00
}
2016-06-02 18:35:04 +00:00
private void executeQueryBtn_Click ( object sender , EventArgs e )
2016-06-01 10:09:03 +00:00
{
2020-06-18 08:50:44 +00:00
timePeriodStart = new DateTime ( 0 ) ;
timePeriodEnd = new DateTime ( 0 ) ;
2016-11-18 14:18:21 +00:00
2016-06-02 22:19:23 +00:00
try
{
foreach ( var filter in filters ) filter . UI2Data ( ) ; /// Update filter data
2016-06-03 06:51:47 +00:00
waterMeters = null ;
2016-06-02 22:19:23 +00:00
IList < WaterMeter > waterMeters2 ;
Results . DB . ConnectionString = checkBox1 . Checked ? Program . LocalSettings . ConnectionString1 :
( checkBox2 . Checked ? Program . LocalSettings . ConnectionString2 :
( checkBox3 . Checked ? Program . LocalSettings . ConnectionString3 :
2017-06-07 14:22:18 +00:00
( checkBox4 . Checked ? Program . LocalSettings . ConnectionString4 :
( checkBox5 . Checked ? Program . LocalSettings . ConnectionString5 :
2019-01-11 12:25:39 +00:00
( checkBox6 . Checked ? Program . LocalSettings . ConnectionString6 :
Program . LocalSettings . ConnectionString1 ) ) ) ) ) ;
2016-06-02 22:19:23 +00:00
ISession [ ] sessions = new ISession [ ] { Results . DB . CreateSession ( ) } ;
2016-06-01 10:09:03 +00:00
2016-06-02 22:19:23 +00:00
foreach ( var filter in filters )
{
2020-06-18 08:50:44 +00:00
if ( filter is DateFilter )
{
timePeriodStart = ( filter as DateFilter ) . From ;
timePeriodEnd = ( filter as DateFilter ) . To ;
}
2016-06-02 22:19:23 +00:00
waterMeters2 = filter . ExecuteQuery ( sessions , waterMeters ) ;
waterMeters = waterMeters2 ;
}
}
catch ( Exception exc )
{
2018-03-16 12:24:06 +00:00
string message = exc . Message ;
if ( exc . InnerException ! = null )
message + = string . Format ( "{0}Inner exception:{0}{1}" , Environment . NewLine , exc . InnerException . Message ) ;
MessageBox . Show ( message , Strings . Error , MessageBoxButtons . OK , MessageBoxIcon . Exclamation ) ;
2016-06-02 22:19:23 +00:00
return ;
}
2016-06-06 13:33:22 +00:00
RedrawResults ( ) ;
}
/// <summary>
/// Displays obtained results as configured by result items in the ListView
/// </summary>
void RedrawResults ( )
{
IList < Results . WMeterRsltItemSpec > items = Results . WMeterRsltItemSpec . FromStrArray ( filtersConfig . ResultItems ) ;
resultsListView . Clear ( ) ;
if ( waterMeters = = null | | waterMeters . Count = = 0 | | items . Count = = 0 ) return ;
try
{
for ( int i = 0 ; i < items . Count ; i + + )
{
resultsListView . Columns . Add ( items [ i ] . Caption , ( filtersConfig . ResultsClmnCount > i ) ? filtersConfig . ResultsClmnWidths [ i ] : 70 ) ;
}
foreach ( var wm in waterMeters )
{
ListViewItem lvi = null ;
foreach ( var item in items )
{
2017-05-16 15:16:55 +00:00
/// Get text and strip color information
string itemText = item . Print ( wm ) ;
string [ ] texts = itemText . Split ( new char [ ] { '|' } ) ;
if ( texts . Length = = 2 ) { itemText = texts [ 0 ] ; }
if ( lvi = = null )
lvi = new ListViewItem ( itemText ) ;
else
lvi . SubItems . Add ( itemText ) ;
2016-06-06 13:33:22 +00:00
}
if ( lvi ! = null ) resultsListView . Items . Add ( lvi ) ;
}
}
catch ( Exception exc )
{
MessageBox . Show ( exc . Message , Strings . Error_displaying_results , MessageBoxButtons . OK , MessageBoxIcon . Exclamation ) ;
}
2016-06-01 10:09:03 +00:00
}
2016-06-03 06:51:47 +00:00
private void exportQueryResultsBtn_Click ( object sender , EventArgs e )
{
2017-05-16 15:16:55 +00:00
IList < Results . WMeterRsltItemSpec > items = Results . WMeterRsltItemSpec . FromStrArray ( filtersConfig . ResultItems ) ;
if ( waterMeters = = null | | waterMeters . Count = = 0 | | items . Count = = 0 ) return ;
SaveFileDialog dlg = new SaveFileDialog ( ) ;
2018-03-25 19:55:18 +00:00
dlg . Filter = "CSV files (*.csv)|*.csv|All files (*.*)|*.*" ;
2016-06-03 06:51:47 +00:00
2017-05-16 15:16:55 +00:00
if ( dlg . ShowDialog ( ) = = DialogResult . OK )
{
2020-06-18 08:50:44 +00:00
try
{
using ( TextWriter writer = new StreamWriter ( dlg . FileName , false , System . Text . Encoding . UTF8 ) )
{
2017-05-16 15:16:55 +00:00
for ( int i = 0 ; i < items . Count ; i + + )
{
writer . Write ( items [ i ] . Caption ) ;
if ( i = = items . Count - 1 )
writer . WriteLine ( ) ; /// New line after the last item
else
writer . Write ( ";" ) ; /// Semicolon between two items
}
foreach ( var wm in waterMeters )
{
for ( int i = 0 ; i < items . Count ; i + + )
{
/// Get text and strip color information
string itemText = items [ i ] . Print ( wm ) ;
string [ ] texts = itemText . Split ( new char [ ] { '|' } ) ;
if ( texts . Length = = 2 ) { itemText = texts [ 0 ] ; }
writer . Write ( itemText ) ;
if ( i = = items . Count - 1 )
writer . WriteLine ( ) ; /// New line after the last item
else
writer . Write ( ";" ) ; /// Semicolon between two items
}
}
}
}
2020-06-18 08:50:44 +00:00
catch ( Exception exc )
{
2018-03-25 19:55:18 +00:00
MessageBox . Show ( exc . Message , Strings . Error_exporting_results , MessageBoxButtons . OK , MessageBoxIcon . Exclamation ) ;
2020-06-18 08:50:44 +00:00
}
2017-05-16 15:16:55 +00:00
}
2016-06-03 06:51:47 +00:00
}
2018-03-25 19:55:18 +00:00
2016-06-03 06:51:47 +00:00
private void printQueryResultsBtn_Click ( object sender , EventArgs e )
{
if ( waterMeters = = null | | waterMeters . Count = = 0 ) return ;
2016-11-16 14:57:23 +00:00
#if MUNICH
2016-06-03 06:51:47 +00:00
foreach ( var wm in waterMeters )
{
2017-03-08 06:26:03 +00:00
new Results . Output . Printers . Munich . MunichPrintDocument ( string . Format ( "4/13 - {0}" , BenchName ( ) ) , wm , Config . Entities . PageOrientation . Portrait ) . Print ( ) ;
2016-06-03 06:51:47 +00:00
}
2018-09-13 11:05:15 +00:00
#elif CEVAK_40
2016-11-16 14:57:23 +00:00
IList < Results . Entities . Batch > batches = new List < Results . Entities . Batch > ( ) ;
foreach ( var wm in waterMeters )
{
if ( ! batches . Contains ( wm . Batch ) ) batches . Add ( wm . Batch ) ;
}
2018-09-13 14:36:34 +00:00
//foreach (var batch in batches)
//{
// new Results.Output.Printers.Cevak.PrintDocumentCevak(batch,
// Config.Entities.PageOrientation.Portrait,
// 60, 60, 60,
// "PT40 Z/E-35-A",
// "0111-OOP-C035-13").Print();
//}
2018-03-19 01:41:20 +00:00
#else
2018-03-20 03:49:11 +00:00
if ( string . IsNullOrEmpty ( filtersConfig . PrinterClass ) )
{
MessageBox . Show ( Strings . No_printer_defined ) ;
return ;
}
try
{
Config . Entities . Component cmpnt = new Config . Entities . Component ( ) ;
cmpnt . Name = "printer" ;
cmpnt . ClassName = filtersConfig . PrinterClass ;
cmpnt . Parameters = filtersConfig . PrinterCfg ;
IComponentFactory printerFactory = GetFactory ( filtersConfig . PrinterClass ) ;
IComponentCfg printerCfg = printerFactory . CmpntCfgFromCmpntEntity ( cmpnt ) ;
IComponent component = printerFactory . GetComponent ( printerCfg , tbfComponents ) ;
IResultsPrinter printer = component as IResultsPrinter ;
2020-06-18 08:50:44 +00:00
if ( printer = = null )
2018-03-20 03:49:11 +00:00
{
MessageBox . Show ( Strings . No_printer_defined ) ;
return ;
2020-06-18 08:50:44 +00:00
}
2018-03-20 03:49:11 +00:00
tbfComponents . Clear ( ) ;
tbfDevices . Clear ( ) ;
tbfComponents . Add ( component ) ;
IDevice dev = component as IDevice ;
if ( dev ! = null )
{
dev . Initialize ( ) ;
tbfDevices . Add ( dev ) ;
}
/// Find batches
IList < Results . Entities . Batch > batches = new List < Results . Entities . Batch > ( ) ;
foreach ( var wm in waterMeters )
{
if ( ! batches . Contains ( wm . Batch ) ) batches . Add ( wm . Batch ) ;
}
foreach ( var batch in batches )
{
2020-03-05 12:59:43 +00:00
IOperation printOp = printer . ProcessResultsOp ( batch ) ;
2018-03-20 03:49:11 +00:00
printOp . Start ( ) ;
while ( printOp . Run ( ) ! = Event . ResultsPrinted ) { }
printOp . Stop ( ) ;
}
MessageBox . Show ( Strings . Printing_completed ) ;
}
catch ( Exception )
{
MessageBox . Show ( Strings . Printing_failed ) ;
}
2016-11-16 14:57:23 +00:00
#endif
2018-03-20 03:49:11 +00:00
}
2016-06-03 12:03:12 +00:00
2018-03-25 19:55:18 +00:00
2016-06-03 12:03:12 +00:00
private void statisticsBtn_Click ( object sender , EventArgs e )
{
if ( waterMeters = = null | | waterMeters . Count = = 0 ) return ;
2020-06-18 08:50:44 +00:00
IList < Results . WMeterRsltItemSpec > items = Results . WMeterRsltItemSpec . FromStrArray ( filtersConfig . ResultItems ) ;
2016-11-18 10:39:07 +00:00
2016-06-03 12:03:12 +00:00
///
2019-02-17 16:56:42 +00:00
/// Statistics options
2016-06-03 12:03:12 +00:00
///
2016-11-18 10:39:07 +00:00
Forms . StatisticsOptionsDlg optionsDlg = new Forms . StatisticsOptionsDlg ( items ) ;
if ( optionsDlg . ShowDialog ( ) ! = DialogResult . OK ) return ;
2016-06-03 12:03:12 +00:00
///
/// Calculate statistics
///
2019-02-17 16:56:42 +00:00
Forms . StatisticsDlg statisticsDlg = new Forms . StatisticsDlg ( waterMeters , optionsDlg , timePeriodStart , timePeriodEnd ) ;
2016-06-03 12:03:12 +00:00
statisticsDlg . ShowDialog ( ) ;
}
2018-03-19 01:41:20 +00:00
2018-03-25 19:55:18 +00:00
2019-02-17 16:56:42 +00:00
private void histogramBtn_Click ( object sender , EventArgs e )
{
if ( waterMeters = = null | | waterMeters . Count = = 0 ) return ;
IList < Results . WMeterRsltItemSpec > items = Results . WMeterRsltItemSpec . FromStrArray ( filtersConfig . ResultItems ) ;
///
/// Histogram options
///
Forms . HistogramOptionsDlg optionsDlg = new Forms . HistogramOptionsDlg ( items ) ;
if ( optionsDlg . ShowDialog ( ) ! = DialogResult . OK ) return ;
///
/// Calculate and display histograms
///
Forms . HistogramDlg histogramDlg = new Forms . HistogramDlg ( waterMeters , optionsDlg , "Histogramy" ) ;
histogramDlg . ShowDialog ( ) ;
}
2020-06-18 08:50:44 +00:00
/// <summary>
/// Updates component factory
/// </summary>
/// <param name="className">Component class name</param>
/// <param name="factory">Reference to a factory</param>
/// <returns>true when factory changed</returns>
IComponentFactory GetFactory ( string className )
{
if ( ! string . IsNullOrEmpty ( className ) )
{
foreach ( var fac in TbfComponents . Factories )
{
if ( fac . ClassName = = className ) return fac ;
}
}
2018-03-19 01:41:20 +00:00
2020-06-18 08:50:44 +00:00
return null ;
}
2020-02-18 08:27:37 +00:00
private void customQueryButton_Click ( object sender , EventArgs e )
{
#if IPERL
2020-03-26 17:37:19 +00:00
Forms . CustomQuerySpecificationForm dlg = new Forms . CustomQuerySpecificationForm ( ) ;
if ( dlg . ShowDialog ( ) ! = DialogResult . OK ) return ;
/// dlg contains custom query specification now
resultsListView . Visible = false ;
consoleTextBox . Visible = true ;
2020-02-18 08:27:37 +00:00
try
{
2020-03-26 17:37:19 +00:00
int counter ;
2020-02-18 08:27:37 +00:00
IList < OraData > oraDatas = new List < OraData > ( ) ; /// List of water meters
IList < int > testBenches = new List < int > ( ) ; /// List of test benches used to produce water meters
2020-03-26 17:37:19 +00:00
if ( dlg . CQCriteria = = CQCriteria . ListOfOrders | | dlg . CQCriteria = = CQCriteria . ListOfPcbNumbers | | dlg . CQCriteria = = CQCriteria . ProducedWithinTimePeriod )
2020-02-18 08:27:37 +00:00
{
2020-03-26 17:37:19 +00:00
string [ ] queryStrings = dlg . InputList . Split ( new char [ ] { ',' } ) ;
2020-02-18 08:27:37 +00:00
2020-03-26 17:37:19 +00:00
//string[] queryStrings = new string[] { "3137300", "3137301", "3137302", "3137303" }; /// 14.2.2020 queryOrders=true 2500 meters
//string[] queryStrings = new string[] { "505494150362", "505494151325", "505494150008", "505494150955", "505494152128" }; /// 18.2.2020 queryOrders=false
//string[] queryStrings = new string[] { "3129109", "3129111", "3129113", "3129108", "3129110", "3129112", "3129114", "3129115", "3129107" }; /// 24.2.2020 queryOrders=true
//string[] queryStrings = new string[] { "332491531667", "332491751060", "332491640866" };
2020-02-18 08:27:37 +00:00
2020-03-26 17:37:19 +00:00
///
/// Get list of water meters satisfying (custom) criteria
///
consoleTextBox . Text + = "Collecting water meters\r\n" ;
foreach ( var queryParam in queryStrings )
2020-02-18 08:27:37 +00:00
{
2020-03-26 17:37:19 +00:00
oracleConnection = new OracleConnection ( "Data Source=STARA01.WORLD;User Id=deltachef;Password=deltachef;" ) ;
oracleConnection . Open ( ) ;
OracleCommand cmd ;
if ( dlg . CQCriteria = = CQCriteria . ListOfOrders )
{
cmd = new OracleCommand ( "select VT_FERNUM, MAX_PRUEFINDEX, PREFIX, ZAEHLERNUMMER from VT_ZAEHLER_PD where AUFTRAGSNUMMER = :1 AND ANBID = 4 order by ZAEHLERNUMMER" , oracleConnection ) ;
cmd . Parameters . Add ( new OracleParameter { ParameterName = "1" , OracleDbType = OracleDbType . Varchar2 , Value = queryParam } ) ;
}
else if ( dlg . CQCriteria = = CQCriteria . ListOfPcbNumbers )
{
cmd = new OracleCommand ( "select AUFTRAGSNUMMER, MAX_PRUEFINDEX, PREFIX, ZAEHLERNUMMER from VT_ZAEHLER_PD where VT_FERNUM = :1 AND ANBID = 4 order by ZAEHLERNUMMER" , oracleConnection ) ;
cmd . Parameters . Add ( new OracleParameter { ParameterName = "1" , OracleDbType = OracleDbType . Varchar2 , Value = queryParam } ) ;
}
else if ( dlg . CQCriteria = = CQCriteria . ProducedWithinTimePeriod )
{
cmd = new OracleCommand ( "select VT_FERNUM, MAX_PRUEFINDEX, PREFIX, ZAEHLERNUMMER, AUFTRAGSNUMMER from VT_ZAEHLER_PD where ANBID = 4 and MARK_DATE >= :1 and MARK_DATE <= :2" , oracleConnection ) ;
cmd . Parameters . Add ( new OracleParameter { ParameterName = "1" , OracleDbType = OracleDbType . TimeStamp , Value = dlg . From } ) ;
cmd . Parameters . Add ( new OracleParameter { ParameterName = "2" , OracleDbType = OracleDbType . TimeStamp , Value = dlg . To } ) ;
2020-02-18 08:27:37 +00:00
}
else
2020-03-26 17:37:19 +00:00
{
return ;
2020-02-18 08:27:37 +00:00
}
2020-03-26 17:37:19 +00:00
OracleDataReader dr = cmd . ExecuteReader ( ) ;
while ( dr . Read ( ) )
{
int i = 0 ;
string queryResult = dr . GetString ( i + + ) ;
int maxPruefIx = dr . GetInt32 ( i + + ) ;
int testBenchId = maxPruefIx / 100 ;
maxPruefIx = maxPruefIx % 100 ;
string prefix = dr . GetString ( i + + ) ;
int sn = dr . GetInt32 ( i + + ) ;
if ( sn = = - 1 ) continue ;
/// Create 'OraData' object and add it to 'oraDatas' list
if ( dlg . CQCriteria = = CQCriteria . ListOfOrders )
{ /// query param. query result
oraDatas . Add ( new OraData ( ) { PO = queryParam , PcbNr = queryResult , TestBenchId = testBenchId , MaxPruefIx = maxPruefIx , Prefix = prefix , SN = sn } ) ;
}
else if ( dlg . CQCriteria = = CQCriteria . ListOfPcbNumbers )
{ /// query result query param.
oraDatas . Add ( new OraData ( ) { PO = queryResult , PcbNr = queryParam , TestBenchId = testBenchId , MaxPruefIx = maxPruefIx , Prefix = prefix , SN = sn } ) ;
}
else if ( dlg . CQCriteria = = CQCriteria . ProducedWithinTimePeriod )
{
string purchaseOrder2 = dr . GetString ( i + + ) ;
oraDatas . Add ( new OraData ( ) { PO = purchaseOrder2 , PcbNr = queryResult , TestBenchId = testBenchId , MaxPruefIx = maxPruefIx , Prefix = prefix , SN = sn } ) ;
}
else
{
/// This should never happen
MessageBox . Show ( "Uppps" ) ;
return ;
}
2020-02-18 08:27:37 +00:00
2020-03-26 17:37:19 +00:00
/// Add this test bench to the list of test benches if it was still missing
if ( ! testBenches . Contains ( testBenchId ) ) testBenches . Add ( testBenchId ) ;
}
dr . Close ( ) ;
2020-02-18 08:27:37 +00:00
}
2020-03-26 17:37:19 +00:00
consoleTextBox . Text + = "End collecting water meters\r\n" ;
2020-02-18 08:27:37 +00:00
///
2020-03-26 17:37:19 +00:00
/// Get required information about each water meter
2020-02-18 08:27:37 +00:00
///
2020-03-26 17:37:19 +00:00
consoleTextBox . Text + = "Reading additional data from Oracle\r\n" ;
counter = 0 ;
foreach ( var oraD in oraDatas )
2020-02-18 08:27:37 +00:00
{
2020-03-26 17:37:19 +00:00
consoleTextBox . Text + = string . Format ( "{0} " , + + counter ) ;
if ( counter % 25 = = 0 ) consoleTextBox . Text + = Environment . NewLine ;
///
/// Read from VT_ZAEHLER_PINDEX_PD: TestId(ID_WZPRUEFREIHE))
///
OracleCommand cmd = new OracleCommand ( "select ID_WZPRUEFREIHE, WT_PLATZ_NR, HYDR_PRUEFUNG from VT_ZAEHLER_PINDEX_PD where VT_FERNUM = :1 AND PRUEFINDEX = :2 AND ANBID = 4 AND WZGUT = 1" , oracleConnection ) ;
cmd . Parameters . Add ( new OracleParameter { ParameterName = "1" , OracleDbType = OracleDbType . Varchar2 , Value = oraD . PcbNr } ) ;
cmd . Parameters . Add ( new OracleParameter { ParameterName = "2" , OracleDbType = OracleDbType . Int32 , Value = oraD . MaxPruefIx + 100 * oraD . TestBenchId } ) ;
OracleDataReader dr = cmd . ExecuteReader ( ) ;
while ( dr . Read ( ) )
2020-02-18 08:27:37 +00:00
{
2020-03-26 17:37:19 +00:00
int i = 0 ;
oraD . BatchNr = dr . GetInt32 ( i + + ) ;
oraD . WMPosition = dr . GetInt32 ( i + + ) ;
oraD . HydrPruefung = dr . GetInt32 ( i + + ) ;
2020-02-18 08:27:37 +00:00
}
2020-03-26 17:37:19 +00:00
dr . Close ( ) ;
///
/// Read from VT_IP_ZAEHLER_PINDEX_PD: Q2CorrectionRl, Q2CorrectionLr
///
cmd = new OracleCommand ( "select PRUEFINDEX, WITHQ2CORRECTION, ERRQ2, Q2CORRECTIONLEFT, Q2CORRECTIONRIGHT from VT_IP_ZAEHLER_PINDEX_PD where VT_FERNUM = :1 AND ANBID = 4" , oracleConnection ) ;
/// pruefindex, Q2_correction_RL, Q2_correction_LR, Q2_error_before_correction
cmd . Parameters . Add ( new OracleParameter { OracleDbType = OracleDbType . Varchar2 , Value = oraD . PcbNr } ) ;
dr = cmd . ExecuteReader ( ) ;
while ( dr . Read ( ) )
{
int i = 0 ;
int pruefindex = ( dr . GetInt32 ( i + + ) % 100 ) ;
if ( pruefindex = = oraD . MaxPruefIx )
{
oraD . Q2CorrectionDone = ( dr . GetInt32 ( i + + ) ! = 0 ) ;
oraD . Q2ErrBeforeCorrection = dr . GetDouble ( i + + ) ;
oraD . Q2CorrectionRl = dr . GetInt32 ( i + + ) ;
oraD . Q2CorrectionLr = dr . GetInt32 ( i + + ) ;
}
}
dr . Close ( ) ;
2020-02-18 08:27:37 +00:00
2020-03-26 17:37:19 +00:00
///
/// Read data from VT_PRUEFREIHE_PD
///
cmd = new OracleCommand ( "select ID_WZTYP, REV_WZTYP, STARTDATUMZEIT, ENDDATUMZEIT, PROGRAMMVERSION from VT_PRUEFREIHE_PD where ID_PRUEFSTAND = :1 AND ID_WzPruefreihe = :2 AND ANBID = 4" , oracleConnection ) ;
cmd . Parameters . Add ( new OracleParameter { OracleDbType = OracleDbType . Int32 , Value = 18000 + oraD . TestBenchId } ) ;
cmd . Parameters . Add ( new OracleParameter { OracleDbType = OracleDbType . Varchar2 , Value = oraD . BatchNr } ) ;
2020-02-18 08:27:37 +00:00
2020-03-26 17:37:19 +00:00
dr = cmd . ExecuteReader ( ) ;
while ( dr . Read ( ) )
{
int i = 0 ;
oraD . WMTypeId = dr . GetInt32 ( i + + ) ;
oraD . WMTypeRev = dr . GetInt32 ( i + + ) ;
oraD . Start = dr . GetDateTime ( i + + ) ;
oraD . End = dr . GetDateTime ( i + + ) ;
oraD . ProgramVer = dr . GetString ( i + + ) ;
}
dr . Close ( ) ;
2020-02-18 08:27:37 +00:00
2020-03-26 17:37:19 +00:00
///
/// Read data from VT_PRUEFREIHE_IST_PD
///
/// testID, flow, rel.err., passed
cmd = new OracleCommand ( "select PRUEFUNGSNR, Q_WZ, Q_FEHLER, Q_BEST from VT_PRUEFREIHE_IST_PD where VT_FERNUM = :1 AND PRUEFINDEX = :2 AND ANBID = 4" , oracleConnection ) ;
cmd . Parameters . Add ( new OracleParameter { OracleDbType = OracleDbType . Varchar2 , Value = oraD . PcbNr } ) ;
cmd . Parameters . Add ( new OracleParameter { OracleDbType = OracleDbType . Int32 , Value = 100 * oraD . TestBenchId + oraD . MaxPruefIx } ) ;
2020-02-18 08:27:37 +00:00
2020-03-26 17:37:19 +00:00
dr = cmd . ExecuteReader ( ) ;
while ( dr . Read ( ) )
2020-02-18 08:27:37 +00:00
{
2020-03-26 17:37:19 +00:00
int i = 0 ;
int testId = dr . GetInt32 ( i + + ) ; /// PRUEFUNGSNR
double flow = dr . GetDouble ( i + + ) ; /// Q_WZ
double error = dr . GetDouble ( i + + ) ; /// Q_FEHLER
bool testPassed = ( dr . GetInt32 ( i + + ) ! = 0 ) ;
/// SUEZ specific
switch ( testId )
{
2020-06-18 08:50:44 +00:00
case - 2 : oraD . AdjErrA4 = error ; break ;
case - 1 : oraD . AdjErr = error ; break ;
case 5 : oraD . Q3LrErr = error ; break ;
case 10 : oraD . Q3RlErr = error ; break ;
default : break ;
2020-03-26 17:37:19 +00:00
}
2020-02-18 08:27:37 +00:00
}
2020-03-26 17:37:19 +00:00
dr . Close ( ) ;
} /// end of foreach (var oraD in OraDatas)
consoleTextBox . Text + = "End reading additional data from Oracle\r\n" ;
2020-02-18 08:27:37 +00:00
2020-03-26 17:37:19 +00:00
oracleConnection . Close ( ) ;
}
2020-06-18 08:50:44 +00:00
else if ( dlg . CQCriteria = = CQCriteria . BenchAndBatchNr )
{
switch ( dlg . IntParameter )
{
case 10 : Results . DB . ConnectionString = "SERVER=10.42.130.69; DATABASE=st-wr10-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;" ; break ;
case 11 : Results . DB . ConnectionString = "SERVER=10.42.129.27; DATABASE=st-wr11-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;" ; break ;
case 13 : Results . DB . ConnectionString = "SERVER=10.42.130.52; DATABASE=st-wr13-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;" ; break ;
case 15 : Results . DB . ConnectionString = "SERVER=10.42.130.71; DATABASE=st-wr15-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;" ; break ;
case 14 : Results . DB . ConnectionString = "SERVER=10.42.130.72; DATABASE=st-wr14-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;" ; break ;
case 18 : Results . DB . ConnectionString = "SERVER=10.42.130.165; DATABASE=st-wr18-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;" ; break ;
case 19 : Results . DB . ConnectionString = "SERVER=10.42.128.159; DATABASE=st-wr19-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;" ; break ;
case 20 : Results . DB . ConnectionString = "SERVER=10.42.130.76; DATABASE=st-wr20-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;" ; break ;
case 21 : Results . DB . ConnectionString = "SERVER=10.42.128.201; DATABASE=st-wr21-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;" ; break ;
default : Results . DB . ConnectionString = string . Empty ; break ;
}
Results . DB . DbType = Users . Entities . DBType . MySql ;
string [ ] fields = dlg . InputList . Split ( new char [ ] { ',' } ) ;
int [ ] batchNrs = new int [ fields . Length ] ;
int batchNr ;
for ( int i = 0 ; i < batchNrs . Length ; i + + ) if ( int . TryParse ( fields [ i ] , out batchNr ) ) batchNrs [ i ] = batchNr ;
IList < WaterMeter > waterMeters = new List < WaterMeter > ( ) ;
if ( ! string . IsNullOrEmpty ( Results . DB . ConnectionString ) )
{
ISession session = Results . DB . CreateSession ( ) ;
for ( int i = 0 ; i < batchNrs . Length ; i + + )
{
var batches = session . QueryOver < Batch > ( )
. Where ( x = > ( x . BatchNr = = batchNrs [ i ] ) )
. List ( ) ;
if ( batches . Count = = 1 )
{
var wms = session . QueryOver < WaterMeter > ( )
. Where ( x = > ( x . Batch = = batches [ 0 ] ) )
. List ( ) ;
foreach ( var wm in wms ) waterMeters . Add ( wm ) ;
}
}
}
consoleTextBox . Text + = "Collecting water meters\r\n" ;
foreach ( var waterMeter in waterMeters )
{
oracleConnection = new OracleConnection ( "Data Source=STARA01.WORLD;User Id=deltachef;Password=deltachef;" ) ;
oracleConnection . Open ( ) ;
OracleCommand cmd = new OracleCommand ( "select AUFTRAGSNUMMER, MAX_PRUEFINDEX, PREFIX, ZAEHLERNUMMER from VT_ZAEHLER_PD where VT_FERNUM = :1 AND ANBID = 4 order by ZAEHLERNUMMER" , oracleConnection ) ;
cmd . Parameters . Add ( new OracleParameter { ParameterName = "1" , OracleDbType = OracleDbType . Varchar2 , Value = waterMeter . SerialNr } ) ;
OracleDataReader dr = cmd . ExecuteReader ( ) ;
while ( dr . Read ( ) )
{
int i = 0 ;
string queryResult = dr . GetString ( i + + ) ;
int maxPruefIx = dr . GetInt32 ( i + + ) ;
int testBenchId = maxPruefIx / 100 ;
maxPruefIx = maxPruefIx % 100 ;
string prefix = dr . GetString ( i + + ) ;
int sn = dr . GetInt32 ( i + + ) ;
if ( sn = = - 1 ) continue ;
/// Create 'OraData' object and add it to 'oraDatas' list
oraDatas . Add ( new OraData ( ) { PO = queryResult , PcbNr = waterMeter . SerialNr , TestBenchId = testBenchId , MaxPruefIx = maxPruefIx , Prefix = prefix , SN = sn } ) ;
/// Add this test bench to the list of test benches if it was still missing
if ( ! testBenches . Contains ( testBenchId ) ) testBenches . Add ( testBenchId ) ;
}
}
}
2020-03-26 17:37:19 +00:00
else if ( dlg . CQCriteria = = CQCriteria . WZTypeIdAndTimePeriod )
{
}
else
{
MessageBox . Show ( "Query is not supported yet" ) ;
return ;
}
2020-02-18 08:27:37 +00:00
2020-03-26 17:37:19 +00:00
consoleTextBox . Text + = "Reading additional data from MySQL\r\n" ;
2020-02-18 08:27:37 +00:00
counter = 0 ;
foreach ( var testBenchId in testBenches )
{
2020-03-26 17:37:19 +00:00
if ( testBenchId = = 4 )
{
/// Skip WR9
continue ;
}
2020-02-18 08:27:37 +00:00
2020-03-26 17:37:19 +00:00
consoleTextBox . Text + = string . Format ( "{0}\r\n" , GetBenchName ( testBenchId ) ) ;
#if false
/// Local database copies
switch ( testBenchId )
{
case 5 : Results . DB . ConnectionString = "SERVER=localhost; DATABASE=st-wr10-r; UID=root; PASSWORD=kraken; CharSet=utf8;" ; break ;
case 6 : Results . DB . ConnectionString = "SERVER=localhost; DATABASE=st-wr11-r; UID=root; PASSWORD=kraken; CharSet=utf8;" ; break ;
case 8 : Results . DB . ConnectionString = "SERVER=localhost; DATABASE=st-wr13-r; UID=root; PASSWORD=kraken; CharSet=utf8;" ; break ;
case 9 : Results . DB . ConnectionString = "SERVER=localhost; DATABASE=st-wr15-r; UID=root; PASSWORD=kraken; CharSet=utf8;" ; break ;
case 10 : Results . DB . ConnectionString = "SERVER=localhost; DATABASE=st-wr14-r; UID=root; PASSWORD=kraken; CharSet=utf8;" ; break ;
case 11 : Results . DB . ConnectionString = "SERVER=localhost; DATABASE=st-wr18-r; UID=root; PASSWORD=kraken; CharSet=utf8;" ; break ;
case 12 : Results . DB . ConnectionString = "SERVER=localhost; DATABASE=st-wr19-r; UID=root; PASSWORD=kraken; CharSet=utf8;" ; break ;
case 13 : Results . DB . ConnectionString = "SERVER=localhost; DATABASE=st-wr20-r; UID=root; PASSWORD=kraken; CharSet=utf8;" ; break ;
case 14 : Results . DB . ConnectionString = "SERVER=localhost; DATABASE=st-wr21-r; UID=root; PASSWORD=kraken; CharSet=utf8;" ; break ;
default : Results . DB . ConnectionString = string . Empty ; break ;
}
#else
/// Test bench databases
2020-02-18 08:27:37 +00:00
switch ( testBenchId )
{
2020-06-18 08:50:44 +00:00
case 5 : Results . DB . ConnectionString = "SERVER=10.42.130.69; DATABASE=st-wr10-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;" ; break ;
case 6 : Results . DB . ConnectionString = "SERVER=10.42.129.27; DATABASE=st-wr11-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;" ; break ;
case 8 : Results . DB . ConnectionString = "SERVER=10.42.130.52; DATABASE=st-wr13-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;" ; break ;
case 9 : Results . DB . ConnectionString = "SERVER=10.42.130.71; DATABASE=st-wr15-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;" ; break ;
case 10 : Results . DB . ConnectionString = "SERVER=10.42.130.72; DATABASE=st-wr14-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;" ; break ;
2020-03-26 17:37:19 +00:00
case 11 : Results . DB . ConnectionString = "SERVER=10.42.130.165; DATABASE=st-wr18-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;" ; break ;
case 12 : Results . DB . ConnectionString = "SERVER=10.42.128.159; DATABASE=st-wr19-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;" ; break ;
2020-06-18 08:50:44 +00:00
case 13 : Results . DB . ConnectionString = "SERVER=10.42.130.76; DATABASE=st-wr20-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;" ; break ;
2020-03-26 17:37:19 +00:00
case 14 : Results . DB . ConnectionString = "SERVER=10.42.128.201; DATABASE=st-wr21-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CharSet=utf8;" ; break ;
default : Results . DB . ConnectionString = string . Empty ; break ;
2020-02-18 08:27:37 +00:00
}
2020-03-26 17:37:19 +00:00
#endif
2020-06-18 08:50:44 +00:00
Results . DB . DbType = Users . Entities . DBType . MySql ;
2020-02-18 08:27:37 +00:00
if ( ! string . IsNullOrEmpty ( Results . DB . ConnectionString ) )
{
2020-03-26 17:37:19 +00:00
ISession session = null ;
2020-02-18 08:27:37 +00:00
foreach ( var oraD in oraDatas )
{
if ( oraD . TestBenchId = = testBenchId )
{
2020-03-26 17:37:19 +00:00
if ( session = = null )
{
/// The first water meter produced on this test bench => create a database session
session = Results . DB . CreateSession ( ) ;
}
consoleTextBox . Text + = string . Format ( "{0} " , + + counter ) ;
if ( counter % 25 = = 0 ) consoleTextBox . Text + = "\r\n" ;
2020-02-18 08:27:37 +00:00
IList < WaterMeter > wms = session . QueryOver < WaterMeter > ( )
. Where ( x = > x . SerialNr = = oraD . PcbNr )
. And ( x = > x . Passed )
. List ( ) ;
if ( wms . Count = = 1 )
{
oraD . CalibFactor = ( int ) Math . Round ( wms [ 0 ] . CalibFactor ) ;
oraD . CalibFactorLNA = ( int ) Math . Round ( wms [ 0 ] . CalibFactorLNA ) ;
}
else
{
foreach ( var wm in wms )
{
if ( wm . Batch . BatchNr = = oraD . BatchNr )
{
oraD . CalibFactor = ( int ) Math . Round ( wm . CalibFactor ) ;
oraD . CalibFactorLNA = ( int ) Math . Round ( wm . CalibFactorLNA ) ;
break ;
}
}
}
}
}
2020-03-26 17:37:19 +00:00
consoleTextBox . Text + = Environment . NewLine ;
2020-02-18 08:27:37 +00:00
2020-03-26 17:37:19 +00:00
if ( session ! = null ) session . Close ( ) ;
2020-06-18 08:50:44 +00:00
}
2020-02-18 08:27:37 +00:00
}
2020-03-26 17:37:19 +00:00
consoleTextBox . Text + = "End reading additional data from MySQL\r\n" ;
2020-02-18 08:27:37 +00:00
2020-03-26 17:37:19 +00:00
consoleTextBox . Text + = "CSV data begin\r\n" ;
using ( TextWriter writer = new StreamWriter ( dlg . DestinationFile ) )
2020-02-18 08:27:37 +00:00
{
2020-03-26 17:37:19 +00:00
writer . WriteLine ( string . Format ( "PO; prefix; S/N; PcbNr; Bench; Batch; Start; Start; End; End; Pos; AdjA0; AdjA4; Q3RL; Q3LR; CalF; CAlF_LNA; HP; Q2cRL; Q2cLR" ) ) ;
//Console.WriteLine(string.Format("s/n;PCB nr.;bench;batch;position;Err. at 640 l/h;Err. LNA at 640 l/h;Err. Q3 RL;Err. Q3 LR;Cal.f.;Cal.f.LNA;Q2 corr.f. RL;Q2 corr.f. LR"));
foreach ( var oraD in oraDatas )
{
writer . WriteLine ( string . Format ( "{0}; {1}; {2}; =(\"{3}\"); {4}; {5}; {7}; {8}; {9}; {10};{11};{12};{13};{14};{15};{16};{17};{18};{19};{20}" ,
//Console.WriteLine(string.Format("{2};=(\"{3}\"); {4};{5};{11};{12};{13};{14};{15};{16};{17};{19};{20}",
/* 0 */ oraD . PO ,
/* 1 */ oraD . Prefix ,
/* 2 */ oraD . SN ,
/* 3 */ oraD . PcbNr ,
/* 4 */ GetBenchName ( oraD . TestBenchId ) ,
/* 5 */ oraD . BatchNr ,
/* 6 */ oraD . ProgramVer ,
/* 7 */ oraD . Start . ToShortDateString ( ) ,
/* 8 */ oraD . Start . ToShortTimeString ( ) ,
/* 9 */ oraD . End . ToShortDateString ( ) ,
/* 10 */ oraD . End . ToShortTimeString ( ) ,
/* 11 */ oraD . WMPosition ,
/* 12 */ oraD . AdjErr . ToString ( "F2" ) ,
/* 13 */ oraD . AdjErrA4 . ToString ( "F2" ) ,
/* 14 */ oraD . Q3RlErr . ToString ( "F2" ) ,
/* 15 */ oraD . Q3LrErr . ToString ( "F2" ) ,
/* 16 */ oraD . CalibFactor ,
/* 17 */ oraD . CalibFactorLNA ,
/* 18 */ oraD . HydrPruefung ,
/* 19 */ oraD . Q2CorrectionRl ,
/* 20 */ oraD . Q2CorrectionLr ,
/* 21 */ oraD . WMTypeId ,
/* 22 */ oraD . WMTypeRev ) ) ;
}
2020-02-18 08:27:37 +00:00
}
2020-03-26 17:37:19 +00:00
consoleTextBox . Text + = "CSV data end\r\n" ;
MessageBox . Show ( string . Format ( "Výsledky boli zapísané do súboru\r\n{0}" , dlg . DestinationFile ) ) ;
2020-02-18 08:27:37 +00:00
}
catch ( Exception exc )
{
MessageBox . Show ( exc . Message ) ;
}
2020-03-26 17:37:19 +00:00
#else
MessageBox . Show ( "Not implemented" ) ;
2020-02-18 08:27:37 +00:00
#endif
}
2020-03-26 17:37:19 +00:00
string GetBenchName ( int testBenchId )
{
switch ( testBenchId )
{
case 4 : return "WR9" ;
case 5 : return "WR10" ;
case 6 : return "WR11" ;
case 8 : return "WR13" ;
case 9 : return "WR15" ;
case 10 : return "WR14" ;
case 11 : return "WR18" ;
case 12 : return "WR19" ;
case 13 : return "WR20" ;
case 14 : return "WR21" ;
default : return string . Empty ;
}
}
}
2016-06-01 10:09:03 +00:00
}