You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

421 lines
18 KiB

using Module.Plc.ModbusTcp.Tool;
using RS.BLL;
using RS.Common;
using RS.Model;
using RS.Module.Common;
using Sunny.UI;
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 MorClient.UserFrmFrame
{
public partial class FrmFlushingFormula : Form
{
/// <summary>
/// 鼠标所在行数
/// </summary>
int rowLocate = -1;
/// <summary>
/// 能否新增
/// </summary>
bool canAdd = true;
/// <summary>
/// 能否修改
/// </summary>
bool isUpdate = false;
/// <summary>
/// SCR1-4
/// </summary>
int state = 0;
/// <summary>
/// 获取数据
/// </summary>
DataTable dtResult = new DataTable();
DataGridViewHandle gridHdl = new DataGridViewHandle();
BRecipeWoekManage bRecipeWoekManage = new BRecipeWoekManage();
public FrmFlushingFormula(int STATE)
{
InitializeComponent();
CreateNewRecipe();
state = STATE;
}
/// <summary>
/// 取消
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void uiButton3_Click(object sender, EventArgs e)
{
this.Close();
}
/// <summary>
/// 新增
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void uiButton1_Click(object sender, EventArgs e)
{
if (canAdd)
{
canAdd = false;
isUpdate = true;
FlushRecipeArm flushRecipeArm = new FlushRecipeArm();
flushRecipeArm.flush_recipe_name = "";
flushRecipeArm.flush_location_one = Common.commonClass_scr2_flush.F_Position_M8;
flushRecipeArm.flush_location_two = Common.commonClass_scr2_flush.F_Position_M8;
flushRecipeArm.flush_speed = 0;
flushRecipeArm.flush_type = state.ToString();
if (dtResult.Rows.Count > 0)
dtResult.Rows.Add(flushRecipeArm.flush_recipe_name, flushRecipeArm.flush_location_one, flushRecipeArm.flush_location_two, flushRecipeArm.flush_speed);
else
dtResult.Rows.Add(flushRecipeArm.flush_location_one, flushRecipeArm.flush_location_two, flushRecipeArm.flush_speed, flushRecipeArm.flush_recipe_name,flushRecipeArm.flush_type);
dataGridView.DataSource = dtResult;
gridHdl._dbgrid = dataGridView;
gridHdl.GenerateBaseDataGridView();
dataGridView.ReadOnly = false;
rowLocate = dataGridView.Rows.Count;
}
else
{
MessageBox.Show("请先保存再新增");
dataGridView.ReadOnly = true;
}
}
/// <summary>
/// 删除
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void uiButton2_Click(object sender, EventArgs e)
{
if (dataGridView.DataSource != null && dataGridView.Rows.Count > 0)
{
DialogResult dgRst = MessageBox.Show(this, "您确认删除配方吗?", "警告", MessageBoxButtons.OKCancel);
if (dgRst == DialogResult.OK)
{
try
{
// 获取第一个选定单元格
DataGridViewCell selectedCell = dataGridView.SelectedCells[0];
// 获取包含该单元格的行
DataGridViewRow selectedRow = selectedCell.OwningRow;
// 获取行索引
int rowIndex = selectedRow.Index;
if (rowIndex >= 0 && rowIndex < dataGridView.RowCount)
{
if (!canAdd && rowLocate == dataGridView.RowCount)
{
dataGridView.Rows.RemoveAt(rowIndex);
rowLocate = 0;
}
else
{
DataTable data = bRecipeWoekManage.GetFluRecipeScr(state);
string oldRecipeName = data.Rows[rowIndex][0].ToString();
if (!bRecipeWoekManage.whetherDelete("SCR" + state, "flushing_arm", oldRecipeName))
{
//数据库删除
DataGridViewRow dataGridViewRow = dataGridView.Rows[rowIndex] as DataGridViewRow;
//string recipeName = dataGridViewRow.Cells[0].Value.ToString();
bool result = bRecipeWoekManage.DeleteFlushRecipeArmInfo(oldRecipeName);
//页面删除
dataGridView.Rows.RemoveAt(rowIndex);
if (result)
{
//MessageBox.Show("删除成功");
GetDataSource();
}
else
{
MessageBox.Show("删除失败");
}
}
else
{
MessageBox.Show("当前配方已选择,禁止删除");
}
}
}
else
{
MessageBox.Show("请选择要删除的行");
}
}
catch
{
MessageBox.Show("请选择配方");
}
}
}
else
{
MessageBox.Show("表中无数据,请先添加数据");
}
}
/// <summary>
/// 修改
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void uiButton4_Click(object sender, EventArgs e)
{
dataGridView.ReadOnly = false;
if (dataGridView.DataSource != null && dataGridView.Rows.Count > 0)
{
DialogResult dgRst = MessageBox.Show(this, "您确认修改配方吗?", "警告", MessageBoxButtons.OKCancel);
if (dgRst == DialogResult.OK)
{
isUpdate = true;
}
}
else
{
MessageBox.Show("表中无数据,请先添加数据");
}
}
/// <summary>
/// 保存
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void uiButton5_Click(object sender, EventArgs e)
{
if (isUpdate)
{
// 假设你的DataGridView控件名为dataGridView1
if (dataGridView.SelectedCells.Count > 0)
{
try
{
// 获取第一个选定单元格
DataGridViewCell selectedCell = dataGridView.SelectedCells[0];
// 获取包含该单元格的行
DataGridViewRow selectedRow = selectedCell.OwningRow;
// 获取行索引
int rowIndex = selectedRow.Index;
if (rowIndex >= 0 && rowIndex < dataGridView.RowCount)
{
List<string> strings = new List<string>();
//判断有没有重复的
for (int i = 0; i < dataGridView.Rows.Count; i++)
{
string flush_recipe_name = dataGridView.Rows[i].Cells[0].Value.ToString();
if (!string.IsNullOrEmpty(flush_recipe_name))
{
if (!strings.Contains(flush_recipe_name))
{
strings.Add(flush_recipe_name);
}
else
{
MessageBox.Show("配方名重复");
return;
}
}
else
{
MessageBox.Show("配方名不能为空");
return;
}
}
DataGridViewRow dataGridViewRow = dataGridView.Rows[rowIndex] as DataGridViewRow;
FlushRecipeArm flushRecipeArm = new FlushRecipeArm();
flushRecipeArm.flush_recipe_name = dataGridViewRow.Cells[0].Value.ToString().Replace(" ", "");
flushRecipeArm.flush_location_one = Convert.ToSingle(dataGridViewRow.Cells[1].Value.ToString());
flushRecipeArm.flush_location_two = Convert.ToSingle(dataGridViewRow.Cells[2].Value.ToString());
flushRecipeArm.flush_speed = Convert.ToSingle(dataGridViewRow.Cells[3].Value.ToString());
flushRecipeArm.flush_type = state.ToString();
if (float.TryParse(dataGridViewRow.Cells[1].Value.ToString(), out float scrub_position_one) && float.TryParse(dataGridViewRow.Cells[2].Value.ToString(), out float scrub_position_two))
{
if (!canAdd && rowLocate == dataGridView.RowCount)
{
//这里是编辑新增的
if (!bRecipeWoekManage.whetherRepeat(flushRecipeArm.flush_recipe_name, flushRecipeArm.flush_type))//不重复
{
bool result = bRecipeWoekManage.SaveFlushRecipeArmInfo(flushRecipeArm);
if (result)
{
canAdd = true;
MessageBox.Show("保存成功");
GetDataSource();
}
else
{
MessageBox.Show("保存失败");
}
}
else
{
MessageBox.Show("配方名重复");
}
}
else
{
//不用dtresult是因为不知道什么原因这个数据和控件中数据源一样了
DataTable dataTable = bRecipeWoekManage.GetFluRecipeScr(state);
string old_flush_recipe_name = dataTable.Rows[rowIndex]["flush_recipe_name"].ToString();
if (!bRecipeWoekManage.whetherDelete("SCR" + state, "flushing_arm", old_flush_recipe_name))
{
bool result = bRecipeWoekManage.UpdateFlushRecipeArm(flushRecipeArm, old_flush_recipe_name);
if (result)
{
canAdd = true;
MessageBox.Show("保存成功");
GetDataSource();
}
else
{
MessageBox.Show("保存失败");
}
}
else
{
string msg = "保存成功";
if (flushRecipeArm.flush_recipe_name != old_flush_recipe_name)
msg = "名字已还原,数据保存成功";
flushRecipeArm.flush_recipe_name = old_flush_recipe_name;
bool result = bRecipeWoekManage.UpdateFlushRecipeArm(flushRecipeArm, old_flush_recipe_name);
if (result)
{
canAdd = true;
MessageBox.Show(msg);
GetDataSource();
}
else
{
MessageBox.Show("保存失败");
}
}
}
}
else
{
MessageBox.Show("位置1或位置2数据无效");
}
}
else
{
MessageBox.Show("请选择要修改的行");
}
}
catch
{
MessageBox.Show("请选择单元格");
}
}
else
{
// 如果没有选定任何单元格,则显示消息
MessageBox.Show("没有选定任何单元格。");
}
}
else
{
MessageBox.Show("请先点击修改");
}
dataGridView.ReadOnly = true;
}
#region DataGridView
/// <summary>
/// 加载数据
/// </summary>
/// <param name="recipeName">配方名</param>
public void CreateNewRecipe()
{
#region
DataGridViewTextBoxColumn textBoxColumn1 = new DataGridViewTextBoxColumn();
DataGridViewTextBoxColumn textBoxColumn2 = new DataGridViewTextBoxColumn();
DataGridViewTextBoxColumn textBoxColumn3 = new DataGridViewTextBoxColumn();
DataGridViewTextBoxColumn textBoxColumn4 = new DataGridViewTextBoxColumn();
// 如果需要绑定到数据源的属性,请设置此属性
textBoxColumn1.DataPropertyName = "flush_recipe_name";
textBoxColumn2.DataPropertyName = "flush_location_one";
textBoxColumn3.DataPropertyName = "flush_location_two";
textBoxColumn4.DataPropertyName = "flush_speed";
// 显示为带有一位位小数的浮点数
textBoxColumn2.DefaultCellStyle.Format = "N2";
textBoxColumn3.DefaultCellStyle.Format = "N2";
textBoxColumn4.DefaultCellStyle.Format = "N2";
// 将列添加到 DataGridView 的 Columns 集合中
dataGridView.Columns.Add(textBoxColumn1);
dataGridView.Columns.Add(textBoxColumn2);
dataGridView.Columns.Add(textBoxColumn3);
dataGridView.Columns.Add(textBoxColumn4);
//设置显示列名称
dataGridView.Columns[0].HeaderText = "配方名称";
dataGridView.Columns[1].HeaderText = "位置1";
dataGridView.Columns[2].HeaderText = "位置2";
dataGridView.Columns[3].HeaderText = "速度";
#endregion
gridHdl._dbgrid = dataGridView;
gridHdl.GenerateBaseDataGridView();
foreach (DataGridViewColumn column in dataGridView.Columns)
{
column.SortMode = DataGridViewColumnSortMode.NotSortable;
}
}
/// <summary>
/// 数据源 根据配方名 查询所有步骤
/// </summary>
/// <param name="recipeName"></param>
public void GetDataSource()
{
dtResult = bRecipeWoekManage.GetFluRecipeScr(state);
if (dtResult == null || dtResult.Rows.Count <= 0)
{
dtResult=new DataTable();
dtResult.Columns.Add("flush_location_one", typeof(double));
dtResult.Columns.Add("flush_location_two", typeof(double));
dtResult.Columns.Add("flush_speed", typeof(double));
dtResult.Columns.Add("flush_recipe_name", typeof(string));
dtResult.Columns.Add("flush_type", typeof(string));
}
dataGridView.DataSource = dtResult;
}
#endregion DataGridView
private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
{
}
private void FrmFlushingFormula_Load(object sender, EventArgs e)
{
if (PublicParams.currUserInfo.userGroup == "Operator")
{
this.Enabled = false;
}
else
{
this.Enabled = true;
}
}
}
}