Files
ramb_stacja/StacjaProb/pumpCatalogueDetails.cs
T
2026-09-03 10:50:01 +02:00

277 lines
13 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace StacjaProb
{
public partial class pumpCatalogueDetails : Form
{
public string pumpID;
public int manufID = 0;
public string selectedManufactures = "";
public pumpCatalogueDetails()
{
InitializeComponent();
}
private void loadPumpInfo()
{
// Dla RAMBu
buttonDelete.Visible = false;
buttonEdytuj.Visible = false;
mySqlFunctions.initConnection();
if (mySqlFunctions.OpenConnection())
{
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand("select * from seg_pumps left join seg_manufacturers on PUP_MCF_ID=MCF_ID where PUP_ID=" + pumpID, mySqlFunctions.connection);
MySql.Data.MySqlClient.MySqlDataReader dataReader = cmd.ExecuteReader();
while (dataReader.Read())
{
try
{
inQmin.Text = dataReader["PUP_Q_MIN"].ToString();
inQmax.Text = dataReader["PUP_Q_MAX"].ToString();
inHp.Text = dataReader["PUP_H_P"].ToString();
inHmin.Text = dataReader["PUP_H_MIN"].ToString();
inHmax.Text = dataReader["PUP_H_MAX"].ToString();
inETAmax.Text = dataReader["PUP_ETA_MAX"].ToString();
inDlugosc.Text = dataReader["PUP_PUMP_LENGTH"].ToString();
inSrednica.Text = dataReader["PUP_DIAMETER"].ToString();
inMasa.Text = dataReader["PUP_WEIGHT"].ToString();
manufID = Convert.ToInt32(dataReader["PUP_MCF_ID"].ToString());
selectedManufactures = dataReader["MCF_NAME"].ToString();
inManufacturers.Text = dataReader["MCF_NAME"].ToString();
//dataReader["PUP_NAME"], dataReader["PUP_Q_N"], dataReader["PUP_H_P"], dataReader["MCF_NAME"], dataReader["PUP_ID"]);
int pID = Convert.ToInt32(pumpID);
int q_nom = Convert.ToInt32(Math.Ceiling(Convert.ToDecimal(dataReader["PUP_Q_N"].ToString().Replace(".", ","))));
int q_max = Convert.ToInt32(Math.Ceiling(1.6 * q_nom));
int h_max = Convert.ToInt32(1.6 * Convert.ToInt32(Math.Ceiling(Convert.ToDecimal(dataReader["PUP_H_MAX"].ToString().Replace(".", ",")))));
setChartAreasAndScale(chartH, "H", q_max, "Q [m3/h]", h_max, "H [m]");
setBackgroundArea(chartH, "H", 25, q_max, h_max, q_nom);
setChartAreasAndScale(chartETA, "ETA", q_max, "Q [m3/h]", 1, "ƞ");
setBackgroundArea(chartETA, "ETA", 25, q_max, 1, q_nom);
drawCatalougeSplineForPump(pID, q_max);
}
catch { }
}
mySqlFunctions.CloseConnection();
}
}
private void pumpCatalogueDetails_Load(object sender, EventArgs e)
{
loadPumpInfo();
selectEnergeticParameters(pumpID);
loadPumpStockConnection();
}
private void selectEnergeticParameters(string pId)
{
dataGridViewPumpParam.Rows.Clear();
int i = 1;
dataGridViewPumpParam.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dataGridViewPumpParam.ColumnCount = 4;
dataGridViewPumpParam.Columns[0].Name = "";
dataGridViewPumpParam.Columns[1].Name = "Q [m3/h]";
dataGridViewPumpParam.Columns[2].Name = "H [m]";
dataGridViewPumpParam.Columns[3].Name = "η";
mySqlFunctions.initConnection();
if (mySqlFunctions.OpenConnection())
{
MySql.Data.MySqlClient.MySqlCommand cmd1 = new MySql.Data.MySqlClient.MySqlCommand("select tb1.PEP_X_PARAM X, tb1.PEP_Y_PARAM Y1, tb2.PEP_Y_PARAM Y2 from (select PEP_X_PARAM,PEP_Y_PARAM from seg_pump_eng_param where PEP_PUP_ID=" + pId + " and PEP_TYPE='H') tb1,(select PEP_X_PARAM,PEP_Y_PARAM from seg_pump_eng_param where PEP_PUP_ID="+pId+" and PEP_TYPE='ETA') tb2 where tb1.PEP_X_PARAM=tb2.PEP_X_PARAM order by X", mySqlFunctions.connection);
MySql.Data.MySqlClient.MySqlDataReader dataReader = cmd1.ExecuteReader();
while (dataReader.Read())
{
dataGridViewPumpParam.Rows.Add(i, dataReader["X"], dataReader["Y1"], dataReader["Y2"]);
i++;
}
dataGridViewPumpParam.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
dataGridViewPumpParam.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
dataGridViewPumpParam.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
dataGridViewPumpParam.Columns[3].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
mySqlFunctions.CloseConnection();
}
}
private void setChartAreasAndScale(System.Windows.Forms.DataVisualization.Charting.Chart chartType, string name, int x_scope, string x_name, int y_scope, string y_name)
{
chartType.ChartAreas.Clear();
chartType.ChartAreas.Add(name);
chartType.ChartAreas[name].AxisX.Minimum = 0;
chartType.ChartAreas[name].AxisX.Maximum = x_scope;
chartType.ChartAreas[name].AxisX.Interval = x_scope / 10;
chartType.ChartAreas[name].AxisY.Minimum = 0;
chartType.ChartAreas[name].AxisY.Maximum = y_scope;
chartType.ChartAreas[name].AxisY.Interval = y_scope / 5;
chartType.ChartAreas[name].AxisX.Title = x_name;
chartType.ChartAreas[name].AxisY.Title = y_name;
chartType.ChartAreas[name].AxisX.LabelStyle.Font = new Font("Tahoma", 7);
chartType.ChartAreas[name].AxisY.LabelStyle.Font = new Font("Tahoma", 7);
}
private void setBackgroundArea(System.Windows.Forms.DataVisualization.Charting.Chart chartType, string name, int alfa_color, int x_scope, int y_scope, double qn)
{
chartType.Series.Clear();
chartType.Series.Add(name + "_BG1");
chartType.Series[name + "_BG1"].Color = Color.FromArgb(alfa_color, 255, 0, 0);
chartType.Series[name + "_BG1"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Area;
chartType.Series[name + "_BG1"].Points.AddXY(0, y_scope);
chartType.Series[name + "_BG1"].Points.AddXY(0.55 * qn, y_scope);
chartType.Series.Add(name + "_BG2");
chartType.Series[name + "_BG2"].Color = Color.FromArgb(alfa_color, 255, 255, 0);
chartType.Series[name + "_BG2"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Area;
chartType.Series[name + "_BG2"].Points.AddXY(0.55 * qn, y_scope);
chartType.Series[name + "_BG2"].Points.AddXY(0.7 * qn, y_scope);
chartType.Series.Add(name + "_BG3");
chartType.Series[name + "_BG3"].Color = Color.FromArgb(alfa_color, 0, 255, 0);
chartType.Series[name + "_BG3"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Area;
chartType.Series[name + "_BG3"].Points.AddXY(0.7 * qn, y_scope);
chartType.Series[name + "_BG3"].Points.AddXY(1.22 * qn, y_scope);
chartType.Series.Add(name + "_BG4");
chartType.Series[name + "_BG4"].Color = Color.FromArgb(alfa_color, 255, 255, 0);
chartType.Series[name + "_BG4"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Area;
chartType.Series[name + "_BG4"].Points.AddXY(1.22 * qn, y_scope);
chartType.Series[name + "_BG4"].Points.AddXY(1.35 * qn, y_scope);
chartType.Series.Add(name + "_BG5");
chartType.Series[name + "_BG5"].Color = Color.FromArgb(alfa_color, 255, 0, 0);
chartType.Series[name + "_BG5"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Area;
chartType.Series[name + "_BG5"].Points.AddXY(1.35 * qn, y_scope);
chartType.Series[name + "_BG5"].Points.AddXY(x_scope, y_scope);
}
private void drawCatalougeSplineForPump(int pump_id, int q_max)
{
chartH.Series.Add("catalouge");
chartH.Series["catalouge"].Color = Color.FromArgb(255, 187, 0, 0);
chartH.Series["catalouge"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline;
chartETA.Series.Add("catalouge");
chartETA.Series["catalouge"].Color = Color.FromArgb(255, 187, 0, 0);
chartETA.Series["catalouge"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline;
string x3modelH = mySqlFunctions.getPolyRegresionModel(pump_id, 3);
string x3modelEta = mySqlFunctions.getPolyRegresionModel_ETA(pump_id, 3);
for (int i = 0; i <= q_max; i++)
{
chartH.Series["catalouge"].Points.AddXY(i, convertDataFromSerial.setYparamFor3(x3modelH, i));
chartETA.Series["catalouge"].Points.AddXY(i, convertDataFromSerial.setYparamFor3(x3modelEta, i));
}
}
private void buttonEdytuj_Click(object sender, EventArgs e)
{
try
{
pumpCatalogueAdd form = new pumpCatalogueAdd();
form.pumpID = Convert.ToInt32(pumpID);
form.textBoxTypPompy.Text = inPumpType.Text;
form.textBoxQn.Text = inQn.Text;
form.textBoxHp.Text = inHp.Text;
form.textBoxETAmax.Text = inETAmax.Text;
form.textBoxDlugosc.Text = inDlugosc.Text;
form.textBoxSrednica.Text = inSrednica.Text;
form.textBoxMasa.Text = inMasa.Text;
form.comboBoxProd.Text = inManufacturers.Text;
form.manufID = manufID;
form.selectedManufactures = selectedManufactures;
form.FormClosed += new FormClosedEventHandler(form_FormClosed);
form.ShowDialog();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
void form_FormClosed(object sender, FormClosedEventArgs e)
{
loadPumpInfo();
selectEnergeticParameters(pumpID);
}
private void buttonClose_Click(object sender, EventArgs e)
{
this.Close();
}
// sprawdzanie, czy nie ma powiązanej pompy w stanach
//
private void loadPumpStockConnection()
{
int ile = 0;
mySqlFunctions.initConnection();
if (mySqlFunctions.OpenConnection())
{
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand("select count(*) ILE from seg_dev_resources where DRS_DEV_TYPE=10 and DRS_DEV_ID=" + pumpID, mySqlFunctions.connection);
MySql.Data.MySqlClient.MySqlDataReader dataReader = cmd.ExecuteReader();
while (dataReader.Read())
{
try
{
ile = Convert.ToInt32(dataReader["ILE"].ToString());
}
catch { }
}
mySqlFunctions.CloseConnection();
}
if (ile > 0) buttonDelete.Enabled = false;
}
private void buttonDelete_Click(object sender, EventArgs e)
{
if (pumpID.Length <= 0) pumpID = "0";
if (MessageBox.Show("UWAGA!\nProces nieodwracalny.\nCzy na pewno chcesz usunąć pompę z katalogu?", "Potwierdzenie usunięcia z bazy", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
mySqlFunctions.initConnection();
if (mySqlFunctions.OpenConnection())
{
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand("DELETE FROM seg_pumps WHERE PUP_ID=" + pumpID, mySqlFunctions.connection);
cmd.ExecuteNonQuery();
MySql.Data.MySqlClient.MySqlCommand cmd1 = new MySql.Data.MySqlClient.MySqlCommand("DELETE FROM seg_pump_eng_param WHERE PEP_PUP_ID=" + pumpID, mySqlFunctions.connection);
cmd1.ExecuteNonQuery();
mySqlFunctions.CloseConnection();
}
this.Close();
}
}
}
}