using Core.Mes.Client.Comm.Control;
using Core.Mes.Client.Comm.Server;
using Core.Mes.Client.Comm.Tool;
using CoreFS.CA06;
using Infragistics.Win.UltraWinGrid;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
namespace Core.StlMes.Client.Qcm
{
public partial class FrmStandardSpray : FrmBase
{
public FrmStandardSpray()
{
InitializeComponent();
this.IsLoadUserView = true; //平台F1功能
}
///
/// 重写基类方法
///
///
///
public override void ToolBar_Click(object sender, string ToolbarKey)
{
switch (ToolbarKey)
{
case "doQuery":
doQuery();
break;
case "doSave":
doSave();
break;
case "doDelete":
this.doDeleteOrResume(true);
break;
case "doResume":
this.doDeleteOrResume(false);
break;
case "Close":
this.Close();
break;
}
}
private void FrmStandardSpray_Load(object sender, EventArgs e)
{
cmbSignSource.SelectedIndex = 0;
//绑定限制规格1、2代码和描述。
BindCmbSizeCode();
//绑定接箍限制规格代码和描述
BindCmbJg();
//cmbSizeCode2.SelectedIndex = 0;
}
///
/// 绑定接箍限制规格代码和描述
///
private void BindCmbJg()
{
DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreStandardSpray.GetJG", null, this.ob);
ComboBoxHelper.FillUlcmItemsAddEmpty(cmbJG, dt);
}
///
/// 绑定限制规格1,代码和描述
///
private void BindCmbSizeCode()
{
DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreStandardSpray.GetSizeCode", null, this.ob);
ComboBoxHelper.FillUlcmItemsAddEmpty(cmbSizeCode2, dt);
//限制规格2,绑定的是同样的数据源。
ComboBoxHelper.FillUlcmItemsAddEmpty(cmbSizeCode, dt);
}
///
/// 作废或恢复
///
/// true作废 false恢复
private void doDeleteOrResume(bool isDelete)
{
ultraGrid2.UpdateData();
//验证是否有勾选项。
int chkCount = 0;
foreach (Infragistics.Win.UltraWinGrid.UltraGridRow row in ultraGrid2.Rows)
{
if (Convert.ToBoolean(row.Cells["CHK"].Value))
{
chkCount++;
}
if (row.ChildBands[0].Rows.Count > 0)
{
foreach (Infragistics.Win.UltraWinGrid.UltraGridRow minrow in row.ChildBands[0].Rows)
{
if (Convert.ToBoolean(minrow.Cells["CHKC"].Value))
{
chkCount++;
}
}
}
}
if (chkCount <= 0)
{
MessageBox.Show("请先勾选!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
//if (isDelete)
//{
// //无效数据不允许删除。
// //但是我选中数据中如果既有有效数据、又有无效数据呢?
//}
//else
//{
// //有效数据不允许恢复
//}
ArrayList param = new ArrayList();
ArrayList minParam = new ArrayList();
if (isDelete)
{
foreach (Infragistics.Win.UltraWinGrid.UltraGridRow row in ultraGrid2.Rows)
{
//主表勾选了,从表跟着作废。
if (Convert.ToBoolean(row.Cells["CHK"].Value))
{
param.Add(row.Cells["INDEX_SEQ"].Value.ToString());
foreach (Infragistics.Win.UltraWinGrid.UltraGridRow minrow in row.ChildBands[0].Rows)
{
minParam.Add(minrow.Cells["INDEX_SEQ_C"].Value.ToString());
}
}
else
{
//主表未勾选,从表勾选了,照样作废。PSC,PSC_DESC
foreach (Infragistics.Win.UltraWinGrid.UltraGridRow minrow in row.ChildBands[0].Rows)
{
if (Convert.ToBoolean(minrow.Cells["CHKC"].Value))
{
minParam.Add(minrow.Cells["INDEX_SEQ_C"].Value.ToString());
}
}
}
}
}
else
{
//恢复操作
foreach (Infragistics.Win.UltraWinGrid.UltraGridRow row in ultraGrid2.Rows)
{
//主表勾选了,只恢复主表,从表不需要恢复。
if (Convert.ToBoolean(row.Cells["CHK"].Value))
{
param.Add(row.Cells["INDEX_SEQ"].Value.ToString());
}
else
{
//主表未勾选,从表勾选了。主表跟着恢复。
foreach (Infragistics.Win.UltraWinGrid.UltraGridRow minrow in row.ChildBands[0].Rows)
{
if (Convert.ToBoolean(minrow.Cells["CHKC"].Value))
{
minParam.Add(minrow.Cells["INDEX_SEQ_C"].Value.ToString());
}
param.Add(row.Cells["INDEX_SEQ"].Value.ToString());
}
}
}
}
if (MessageBox.Show("是否确认" + (isDelete ? "作废" : "恢复") + "选中的数据!", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
try
{
int count = 0;
if (param.Count > 0)
{
count = ServerHelper.SetData("com.steering.pss.qcm.CoreStandardSpray.deleteLineInfo", new Object[] { param, UserInfo.GetUserName(), isDelete }, this.ob);
}
int minCount = 0;
if (minParam.Count > 0)
{
minCount = ServerHelper.SetData("com.steering.pss.qcm.CoreStandardSpray.deleteLineInfoC", new Object[] { minParam, UserInfo.GetUserName(), isDelete }, this.ob);
}
if (count > 0 || minCount > 0)
{
doQuery();
ExpandRow();
MSCCodes.Clear();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
///
/// 验证主表数据。
///
private bool yz()
{
double max1 = 0;
double min1 = 0;
double max = 0;
double min = 0;
this.ultraGrid2.UpdateData();
foreach (Infragistics.Win.UltraWinGrid.UltraGridRow row in ultraGrid2.Rows)
{
if (Convert.ToBoolean(row.Cells["CHK"].Value))
{
if (row.Cells["MODEL_DESC"].Value.ToString() == "")
{
MessageBox.Show("请选择扣型集合", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
row.Activate();
return false;
}
if (row.Cells["SIZE_NAME2"].Value.ToString() == "" && row.Cells["SIZE_NAME"].Value.ToString() == ""
&& row.Cells["SIZE_JG"].Value.ToString() == "")
{
MessageBox.Show("请在限制规格描述或接箍规格描述中选择一项数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
row.Activate();
return false;
}
//限制规格和接箍规格不能同时存在。
if (row.Cells["SIZE_NAME2"].Value.ToString() != "" || row.Cells["SIZE_NAME"].Value.ToString() != "")
{
if (row.Cells["SIZE_NAME2"].Value.ToString() == row.Cells["SIZE_NAME"].Value.ToString())
{
MessageBox.Show("限制规格1描述和限制规格2描述不能一样。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
row.Cells["SIZE_NAME"].Value = "";
row.Cells["SIZE_CODE"].Value = "";
row.Activate();
return false;
}
if (row.Cells["SIZE_NAME2"].Value.ToString() != "")
{
if (row.Cells["SIZE_MIN2"].Value.ToString() != "")
{
if (StringUtil.IsNumber(row.Cells["SIZE_MIN2"].Value.ToString()))
{
if (!StringUtil.Is_Below_zero(row.Cells["SIZE_MIN2"].Value.ToString()))
{
MessageBox.Show("限制规格1下限必须大于0", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
row.Activate();
return false;
}
else
{
if (row.Cells["SIZE_MIN_SIGN2"].Value.ToString() != "=" ||
StringUtil.IsNumber(row.Cells["SIZE_MIN2"].Value.ToString()))
{
min1 = Convert.ToDouble(row.Cells["SIZE_MIN2"].Value.ToString());
}
}
}
}
else if (row.Cells["SIZE_MIN_SIGN2"].Value.ToString() != "=")
{
MessageBox.Show("限制规格1下限请输入数字", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
row.Activate();
return false;
}
if (row.Cells["SIZE_MAX2"].Value.ToString() != "")
{
if (StringUtil.IsNumber(row.Cells["SIZE_MAX2"].Value.ToString()))
{
if (!StringUtil.Is_Below_zero(row.Cells["SIZE_MAX2"].Value.ToString()))
{
MessageBox.Show("限制规格1上限必须大于0。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
row.Activate();
return false;
}
else
{
max1 = Convert.ToDouble(row.Cells["SIZE_MAX2"].Value.ToString());
}
}
}
else
{
MessageBox.Show("限制规格1上限必须为数字", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
row.Activate();
return false;
}
}
if (min1 > max1)
{
MessageBox.Show("限制规格1上限值必须大于下限值。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
row.Activate();
return false;
}
if (row.Cells["SIZE_NAME"].Value.ToString() != "")
{
if (row.Cells["SIZE_MIN"].Value.ToString() != "")
{
if (StringUtil.IsNumber(row.Cells["SIZE_MIN"].Value.ToString()))
{
if (!StringUtil.Is_Below_zero(row.Cells["SIZE_MIN"].Value.ToString()))
{
MessageBox.Show("限制规格2下限必须大于0", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
row.Activate();
return false;
}
else
{
if (row.Cells["SIZE_MIN_SIGN"].Value.ToString() != "=" ||
StringUtil.IsNumber(row.Cells["SIZE_MIN"].Value.ToString()))
{
min = Convert.ToDouble(row.Cells["SIZE_MIN"].Value.ToString());
}
}
}
}
else if (row.Cells["SIZE_MIN_SIGN"].Value.ToString() != "=")
{
MessageBox.Show("限制规格2下限必须为数字。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return false;
}
if (row.Cells["SIZE_MAX"].Value.ToString() != "")
{
if (StringUtil.IsNumber(row.Cells["SIZE_MAX"].Value.ToString()))
{
if (!StringUtil.Is_Below_zero(row.Cells["SIZE_MAX"].Value.ToString()))
{
MessageBox.Show("限制规格2上限值必须大于0。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
row.Activate();
return false;
}
else
{
max = Convert.ToDouble(row.Cells["SIZE_MAX"].Value.ToString());
}
}
}
else
{
MessageBox.Show("限制规格2上限必须为数字", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
row.Activate();
return false;
}
if (max < min)
{
MessageBox.Show("限制规格2上限值必须大于下限值", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
row.Activate();
return false;
}
}
if (row.Cells["SIZE_JG"].Value.ToString() != "")
{
MessageBox.Show("限制规格和接箍规格不能同时存在", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
row.Cells["SIZE_JG"].Value = "";
row.Activate();
return false;
}
}
else
{
if ((row.Cells["SIZE_NAME2"].Value.ToString() == "" && (row.Cells["SIZE_MIN_SIGN2"].Value.ToString() != "" || row.Cells["SIZE_MAX_SIGN2"].Value.ToString() != ""))
|| (row.Cells["SIZE_NAME"].Value.ToString() == "" && (row.Cells["SIZE_MIN_SIGN"].Value.ToString() != "" || row.Cells["SIZE_MAX_SIGN"].Value.ToString() != "")))
{
MessageBox.Show("规格描述没有选择的情况下,不允许选择符号", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
row.Activate();
return false; //不允许未选规格描述,就有符号选择。
}
}
//验证,当描述信息为空的情况下,符号和值都必须清空。
if ("".Equals(row.Cells["SIZE_NAME2"].Value.ToString()))
{
row.Cells["SIZE_MIN_SIGN2"].Value = "";
row.Cells["SIZE_MIN2"].Value = "";
row.Cells["SIZE_MAX_SIGN2"].Value = "";
row.Cells["SIZE_MAX2"].Value = "";
}
else
{
//当描述信息不为空的情况下,符号和值,都不允许为空。
if ("".Equals(row.Cells["SIZE_MIN_SIGN2"].Value.ToString()))
{
MessageBox.Show("下限符号不允许为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
row.Activate();
return false;
}
if ("".Equals(row.Cells["SIZE_MIN2"].Value.ToString()))
{
MessageBox.Show("下限不允许为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
row.Activate();
return false;
}
if ("".Equals(row.Cells["SIZE_MAX_SIGN2"].Value.ToString()))
{
MessageBox.Show("上限符号不允许为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
row.Activate();
return false;
}
if ("".Equals(row.Cells["SIZE_MAX2"].Value.ToString()))
{
MessageBox.Show("上限不允许为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
row.Activate();
return false;
}
}
//验证,当描述信息为空的情况下,符号和值都必须清空。
if ("".Equals(row.Cells["SIZE_NAME"].Value.ToString()))
{
row.Cells["SIZE_MIN_SIGN"].Value = "";
row.Cells["SIZE_MIN"].Value = "";
row.Cells["SIZE_MAX_SIGN"].Value = "";
row.Cells["SIZE_MAX"].Value = "";
}
else
{
//当描述信息不为空的情况下,符号和值,都不允许为空。
if ("".Equals(row.Cells["SIZE_MIN_SIGN"].Value.ToString()))
{
MessageBox.Show("下限符号不允许为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
row.Activate();
return false;
}
if ("".Equals(row.Cells["SIZE_MIN"].Value.ToString()))
{
MessageBox.Show("下限不允许为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
row.Activate();
return false;
}
if ("".Equals(row.Cells["SIZE_MAX_SIGN"].Value.ToString()))
{
MessageBox.Show("上限符号不允许为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
row.Activate();
return false;
}
if ("".Equals(row.Cells["SIZE_MAX"].Value.ToString()))
{
MessageBox.Show("上限不允许为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
row.Activate();
return false;
}
}
}
}
return true;
}
///
/// 保存,包含主表从表的新增和修改
///
private void doSave()
{
if (!yz())
{
return;
}
//更新数据源。
ultraGrid2.UpdateData();
//判断是否有勾选项,没有则提示。
int chkbool = 0;
for (int i = 0; i < this.SprayTable.Rows.Count; i++)
{
DataRow dr = SprayTable.Rows[i];
if ("".Equals(dr.ToString()))
{
}
else if (Convert.ToBoolean(dr["CHK"]))
{
chkbool += 1;
}
}
for (int i = 0; i < this.SprayCTable.Rows.Count; i++)
{
DataRow dr = SprayCTable.Rows[i];
if ("".Equals(dr.ToString()))
{
}
else if (Convert.ToBoolean(dr["CHKC"]))
{
chkbool += 1;
}
}
if (chkbool <= 0)
{
MessageBox.Show("请先勾选!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
//确定保存吗?
if (MessageBox.Show("是否确认保存?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
{
return;
}
//主表新增组ArrayList
ArrayList spbAddParams = new ArrayList();
//主表修改组ArrayList
ArrayList spbUpdateParams = new ArrayList();
//从表新增组ArrayList
ArrayList spbSupplementAddParams = new ArrayList();
//从表修改组ArrayList
ArrayList spbSupplementUpdateParams = new ArrayList();
//冶金规范码
string mscCode = ultraGrid1.ActiveRow.Cells["MSC"].Value.ToString();
//遍历主表,判定是否有勾选项。
for (int i = 0; i < this.SprayTable.Rows.Count; i++)
{
//Infragistics.Win.UltraWinGrid.UltraGridRow row = ultraGrid2.Rows[i];
DataRow dr = SprayTable.Rows[i];
if (Convert.ToBoolean(dr["CHK"]))
{
//判定勾选项是新增行,还是修改行。
if (dr.RowState == DataRowState.Added)
{
//新增行
//MSC,INDEX_SEQ,MODEL_CODE,MODEL_DESC,SIZE_CODE2,SIZE_NAME2,
//SIZE_MIN_SIGN2 ,SIZE_MIN2,SIZE_MAX_SIGN2,SIZE_MAX2,SIZE_CODE,
//IZE_NAME ,SIZE_MIN_SIGN,SIZE_MIN ,IZE_MAX_SIGN,SIZE_MAX,SIZE_JG
//冶金规范码,序号,扣型代码(集合),扣型描述(集合),限制规格代码(外径、壁厚等),限制规格描述,
//限制规格下限符号,限制规格下限,限制规格上限符号,限制规格上限,限制规格代码(外径、壁厚等),
//限制规格描述,限制规格下限符号,限制规格下限,限制规格上限符号,限制规格上限,
//接箍限制规格(接箍专用,与外径壁厚只允许存在其一)
ArrayList parm = new ArrayList();
//冶金规范码
parm.Add(mscCode);
//序号,由服务端,数据库序列xl.nextval,自动生成
//因为考虑到批量新增,当你加第二条的时候,数据库中并没有第二条数据信息。
parm.Add(dr["INDEX_SEQ"].ToString());
//扣型代码(集合),这个功能有点复杂,因为有多条记录选择功能需要实现。暂时空着。
parm.Add(dr["MODEL_CODE"].ToString());
//扣型描述(集合)
parm.Add(dr["MODEL_DESC"].ToString());
//限制规格代码(外径、壁厚、径壁比,写死的)SIZE_CODE2
parm.Add(dr["SIZE_CODE2"].ToString());
//限制规格描述是冗余数据,因此只插入上面一个即可。
parm.Add(dr["SIZE_NAME2"].ToString());
//限制规格下限符号> >= =,写死的,直接插入数据库即可。SIZE_MIN_SIGN2
parm.Add(dr["SIZE_MIN_SIGN2"].ToString());
//限制规格下限,必须限制只允许输入数字。
parm.Add(dr["SIZE_MIN2"].ToString());
//限制规格上限符号< <= cmbSizeMaxSign2
parm.Add(dr["SIZE_MAX_SIGN2"].ToString());
//限制规格上限SIZE_MAX2
parm.Add(dr["SIZE_MAX2"].ToString());
//限制规格代码(外径、壁厚等)SIZE_CODE,如果之前选择的是外径,这里就不能再选外径了。cmbSizeCode
parm.Add(dr["SIZE_CODE"].ToString());
//限制规格描述SIZE_NAME
parm.Add(dr["SIZE_NAME"].ToString());
//限制规格下限符号SIZE_MIN_SIGN,cmbSizeMinSign
parm.Add(dr["SIZE_MIN_SIGN"].ToString());
//限制规格下限SIZE_MIN
parm.Add(dr["SIZE_MIN"].ToString());
//限制规格上限符号SIZE_MAX_SIGN
parm.Add(dr["SIZE_MAX_SIGN"].ToString());
//限制规格上限SIZE_MAX
parm.Add(dr["SIZE_MAX"].ToString());
//接箍限制规格(接箍专用,与外径壁厚只允许存在其一)SIZE_JG
parm.Add(dr["SIZE_JG"].ToString());
parm.Add(this.UserInfo.GetUserName());
parm.Add(dr["MEMO"].ToString());
spbAddParams.Add(parm);
}
else if (this.SprayTable.Rows[i].RowState == DataRowState.Modified)
{
//主表修改
ArrayList parm = new ArrayList();
//序号,由服务端,数据库序列xl.nextval,自动生成
string xl = dr["INDEX_SEQ"].ToString();
//扣型代码(集合),这个功能有点复杂,因为有多条记录选择功能需要实现。暂时空着。
parm.Add(dr["MODEL_CODE"].ToString());
//扣型描述(集合)
parm.Add(dr["MODEL_DESC"].ToString());
//限制规格代码(外径、壁厚、径壁比,写死的)SIZE_CODE2
parm.Add(dr["SIZE_CODE2"].ToString());
//限制规格描述是冗余数据,因此只插入上面一个即可。
parm.Add(dr["SIZE_NAME2"].ToString());
//限制规格下限符号> >= =,写死的,直接插入数据库即可。SIZE_MIN_SIGN2
parm.Add(dr["SIZE_MIN_SIGN2"].ToString());
//限制规格下限,必须限制只允许输入数字。
parm.Add(dr["SIZE_MIN2"].ToString());
//限制规格上限符号< <= cmbSizeMaxSign2
parm.Add(dr["SIZE_MAX_SIGN2"].ToString());
//限制规格上限SIZE_MAX2
parm.Add(dr["SIZE_MAX2"].ToString());
//限制规格代码(外径、壁厚等)SIZE_CODE,如果之前选择的是外径,这里就不能再选外径了。cmbSizeCode
parm.Add(dr["SIZE_CODE"].ToString());
//限制规格描述SIZE_NAME
parm.Add(dr["SIZE_NAME"].ToString());
//限制规格下限符号SIZE_MIN_SIGN,cmbSizeMinSign
parm.Add(dr["SIZE_MIN_SIGN"].ToString());
//限制规格下限SIZE_MIN
parm.Add(dr["SIZE_MIN"].ToString());
//限制规格上限符号SIZE_MAX_SIGN
parm.Add(dr["SIZE_MAX_SIGN"].ToString());
//限制规格上限SIZE_MAX
parm.Add(dr["SIZE_MAX"].ToString());
//接箍限制规格(接箍专用,与外径壁厚只允许存在其一)SIZE_JG
parm.Add(dr["SIZE_JG"].ToString());
parm.Add(this.UserInfo.GetUserName());
parm.Add(dr["MEMO"].ToString());
//冶金规范码是不能修改的where msc='' and xl=''
parm.Add(mscCode);
parm.Add(xl);
spbUpdateParams.Add(parm);
}
}
}
//ArrayList repeatList = new ArrayList();
//HashSet