| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326 |
- 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功能
- }
- /// <summary>
- /// 重写基类方法
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="ToolbarKey"></param>
- 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;
- }
- /// <summary>
- /// 绑定接箍限制规格代码和描述
- /// </summary>
- private void BindCmbJg()
- {
- DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreStandardSpray.GetJG", null, this.ob);
- ComboBoxHelper.FillUlcmItemsAddEmpty(cmbJG, dt);
- }
- /// <summary>
- /// 绑定限制规格1,代码和描述
- /// </summary>
- 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);
- }
- /// <summary>
- /// 作废或恢复
- /// </summary>
- /// <param name="isDelete">true作废 false恢复</param>
- 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);
- }
- }
- }
- /// <summary>
- /// 验证主表数据。
- /// </summary>
- 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;
- }
- /// <summary>
- /// 保存,包含主表从表的新增和修改
- /// </summary>
- 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<Object> repeatHashSet = new HashSet<Object>();
- //直接遍历从表所有行,判定是否有选中项。
- for (int j = 0; j < SprayCTable.Rows.Count; j++)
- {
- DataRow minrow = SprayCTable.Rows[j];
- if (Convert.ToBoolean(minrow["CHKC"]))
- {
- if (minrow.RowState == DataRowState.Added)
- {
- ArrayList minParm = new ArrayList();
- //冶金规范码MSC,可以公用出来。
- minParm.Add(mscCode);
- //序号INDEX_SEQ,父类序列,如果成功建立关联关系,可以直接获取主表主键。
- string indexSeq = minrow["INDEX_SEQ"].ToString();
- minParm.Add(indexSeq);
- //喷标项目序号INDEX_SEQ_C,自身序号由数据库中序列生成。
- minParm.Add(minrow["INDEX_SEQ_C"].ToString());
- //喷标项目描述SIGN_ITEM,不允许为空。
- string signItem = minrow["SIGN_ITEM"].ToString();
- if ("".Equals(signItem))
- {
- MessageBox.Show("喷标项目描述不允许为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
- return;
- }
- //还要判断项目描述是否重复。。。。。。。。。。。
- //Object[] obj = new Object[] { signItem, indexSeq };
- //repeatList.Add(obj);
- //repeatHashSet.Add(obj);
- minParm.Add(signItem);
- //喷标项目内容来源(A:手工录入,B:动态配置)SIGN_SOURCE,cmbSignSource
- string signSource = minrow["SIGN_SOURCE"].ToString();
- if ("".Equals(signSource))
- {
- return;
- }
- minParm.Add(signSource);
- //手工录入内容(SIGN_SOURCE等于A)SIGN_NOTE
- minParm.Add(minrow["SIGN_NOTE"].ToString());
- //数据表名.字段名(SIGN_SOURCE等于B)SIGN_FIELD
- minParm.Add(minrow["SIGN_FIELD"].ToString());
- minParm.Add(this.UserInfo.GetUserName());
- minParm.Add(minrow["MEMO"].ToString());
- spbSupplementAddParams.Add(minParm);
- }
- else if (minrow.RowState == DataRowState.Modified)
- {
- ArrayList minParm = new ArrayList();
- //喷标项目序号INDEX_SEQ_C,自身序号由数据库中序列生成。
- //喷标项目描述SIGN_ITEM,不允许为空。
- string signItem = minrow["SIGN_ITEM"].ToString();
- if ("".Equals(signItem))
- {
- MessageBox.Show("喷标项目描述不允许为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
- return;
- }
- minParm.Add(signItem);
- //喷标项目内容来源(A:手工录入,B:动态配置)SIGN_SOURCE,cmbSignSource
- string signSource = minrow["SIGN_SOURCE"].ToString();
- if ("".Equals(signSource))
- {
- return;
- }
- minParm.Add(signSource);
- //手工录入内容(SIGN_SOURCE等于A)SIGN_NOTE
- minParm.Add(minrow["SIGN_NOTE"].ToString());
- //数据表名.字段名(SIGN_SOURCE等于B)SIGN_FIELD
- minParm.Add(minrow["SIGN_FIELD"].ToString());
- minParm.Add(this.UserInfo.GetUserName());
- minParm.Add(minrow["MEMO"].ToString());
- //冶金规范码MSC,可以公用出来。
- minParm.Add(mscCode);
- //序号INDEX_SEQ,父类序列,如果成功建立关联关系,可以直接获取主表主键。
- minParm.Add(minrow["INDEX_SEQ"].ToString());
- minParm.Add(minrow["INDEX_SEQ_C"].ToString());
- spbSupplementUpdateParams.Add(minParm);
- }
- }
- }
- //if (isRepeat(repeatHashSet,repeatList))
- //{
- // MessageBox.Show("喷标项目描述信息重复!", "提示");
- // return;
- //}
- //执行数据库相关操作
- CoreClientParam ccp = new CoreClientParam();
- //服务端的包名+类名
- ccp.ServerName = "com.steering.pss.qcm.CoreStandardSpray";
- //类里的方法名
- ccp.MethodName = "doSave";
- ccp.ServerParams = new object[] { spbAddParams, spbUpdateParams, spbSupplementAddParams, spbSupplementUpdateParams };
- ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
- if (ccp.ReturnCode == -1)
- {
- return;
- }
- else
- {
- MessageBox.Show("保存成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
- bindSpray();
- ExpandRow();
- MSCCodes.Clear();
- }
- }
- /// <summary>
- /// 验证描述信息是否重复。
- /// </summary>
- /// <param name="repeatHashSet"></param>
- /// <param name="repeatList"></param>
- /// <returns></returns>
- //private bool isRepeat(HashSet<Object> repeatHashSet, ArrayList repeatList)
- //{
- // repeatHashSet.Contains();
- // if (repeatHashSet.Count == repeatList.Count)
- // {
- // return true;
- // }
- // else
- // {
- // return false;
- // }
- //}
- /// <summary>
- /// 绑定冶金规范码
- /// </summary>
- private void InitMSC()
- {
- DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreStandardSpray.GetMSC", null, this.ob);
- GridHelper.CopyDataToDatatable(ref dt, ref this.MSCTable, true);
- //内容自适应
- GridHelper.RefreshAndAutoSizeExceptRows(ultraGrid1, new UltraGridColumn[] {
- //ultraGrid1.DisplayLayout.Bands[0].Columns["MEMO"]
- });
- }
- /// <summary>
- /// 将冶金规范码的记录查询出来
- /// </summary>
- private void doQuery()
- {
- InitMSC();
- }
- /// <summary>
- /// 根据冶金规范码将喷标数据显示出来
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void ultraGrid1_AfterRowActivate(object sender, EventArgs e)
- {
- bindSpray();
- maxIndexSeq = 0;
- maxIndexSeqC = 0;
- }
- /// <summary>
- /// 绑定主表从表数据。
- /// </summary>
- private void bindSpray()
- {
- SprayCTable.Clear();
- SprayTable.Clear();
- string pscCode = ultraGrid1.ActiveRow.Cells["MSC"].Value.ToString();
- //根据冶金规范码查询出喷标要求主表数据
- DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreStandardSpray.getLineList", new Object[] { pscCode }, this.ob);
- GridHelper.CopyDataToDatatable(ref dt, ref this.SprayTable, true);
- SprayTable.AcceptChanges();
- //根据冶金规范码查询出喷标要求从表数据
- DataTable dtC = ServerHelper.GetData("com.steering.pss.qcm.CoreStandardSpray.GetSprayC", new Object[] { pscCode }, this.ob);
- GridHelper.CopyDataToDatatable(ref dtC, ref this.SprayCTable, true);
- SprayCTable.AcceptChanges();
- //聚焦第一行
- //不同颜色区分是否有效数据
- Infragistics.Win.UltraWinGrid.UltraGridRow row = null;
- Infragistics.Win.UltraWinGrid.UltraGridRow minrow = null;
- for (int i = 0; i < ultraGrid2.Rows.Count; i++)
- {
- row = ultraGrid2.Rows[i];
- if (row.ChildBands[0].Rows.Count > 0)
- {
- for (int j = 0; j < row.ChildBands[0].Rows.Count; j++)
- {
- minrow = row.ChildBands[0].Rows[j];
- if (!minrow.Cells["VALIDFLAG"].Value.ToString().Equals("1"))
- {
- minrow.Appearance.ForeColor = Color.Red;
- }
- else
- {
- minrow.Appearance.ForeColor = Color.Black;
- }
- }
- }
- if (!row.Cells["VALIDFLAG"].Value.ToString().Equals("1"))
- {
- row.Appearance.ForeColor = Color.Red;
- }
- else
- {
- row.Appearance.ForeColor = Color.Black;
- }
- }
- //列自适应宽度
- GridHelper.RefreshAndAutoSizeExceptRows(ultraGrid2, new UltraGridColumn[] {
- ultraGrid2.DisplayLayout.Bands[0].Columns["CHK"],
- ultraGrid2.DisplayLayout.Bands[0].Columns["MEMO"]
- });
- //主表、从表没有勾选不允许编辑
- for (int i = 0; i < ultraGrid2.Rows.Count; i++)
- {
- for (int j = 1; j < ultraGrid2.Rows[i].Cells.Count; j++)
- {
- ultraGrid2.Rows[i].Cells[j].Activation = Infragistics.Win.UltraWinGrid.Activation.ActivateOnly;
- }
- if (ultraGrid2.Rows[i].ChildBands[0].Rows.Count > 0)
- {
- for (int k = 0; k < ultraGrid2.Rows[i].ChildBands[0].Rows.Count; k++)
- {
- for (int f = 1; f < ultraGrid2.Rows[i].ChildBands[0].Rows[k].Cells.Count; f++)
- {
- ultraGrid2.Rows[i].ChildBands[0].Rows[k].Cells[f].Activation = Infragistics.Win.UltraWinGrid.Activation.ActivateOnly;
- }
- }
- }
- }
- }
- private void ultraGrid2_AfterRowInsert(object sender, RowEventArgs e)
- {
- //给新增行chk赋值false。假设不这样做,他将为"",而空,在转换为Boolean时会报错。
- //获取该行记录,如果有父级则是从表。
- //不选中,就不让他编辑好吗?
- for (int j = 1; j < e.Row.Cells.Count; j++)
- {
- e.Row.Cells[j].Activation = Infragistics.Win.UltraWinGrid.Activation.ActivateOnly;
- }
- if (e.Row.HasParent())
- {
- ultraGrid2.ActiveRow.Cells["CHKC"].Value = false;
- //应该从数据库中获取最大序号,从1开始累加,不要用序列。
- int maxIndexSeqC = GetMaxIndexSeqC();
- ultraGrid2.ActiveRow.Cells["INDEX_SEQ_C"].Value = maxIndexSeqC;
- }
- else
- {
- ultraGrid2.ActiveRow.Cells["CHK"].Value = false;
- int maxIndexSeq = GetMaxIndexSeq();
- ultraGrid2.ActiveRow.Cells["INDEX_SEQ"].Value = maxIndexSeq;
- }
- }
- private static int maxIndexSeq = 0;
- /// <summary>
- /// 从数据库中获取主表最大序号值+1返回。
- /// </summary>
- /// <returns></returns>
- private int GetMaxIndexSeq()
- {
- DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreStandardSpray.GetMaxIndexSeq", null, this.ob);
- int maxCode = 1;
- if (dt.Rows.Count > 0)
- {
- if (!"".Equals(dt.Rows[0][0].ToString()))
- {
- maxCode = Convert.ToInt32(dt.Rows[0][0]) + 1;
- }
- }
- if (maxIndexSeq == 0)
- {
- maxIndexSeq = maxCode;
- }
- else
- {
- maxIndexSeq++;
- }
- return maxIndexSeq;
- //另外切换数据源的时候让maxIndexSeq等于0
- }
- private static int maxIndexSeqC = 0;
- /// <summary>
- /// 从数据库中获取从表最大序号值+1返回。
- /// </summary>
- /// <returns></returns>
- private int GetMaxIndexSeqC()
- {
- DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreStandardSpray.GetMaxIndexSeqC", null, this.ob);
- int maxCode = 1;
- if (dt.Rows.Count > 0)
- {
- if (!"".Equals(dt.Rows[0][0].ToString()))
- {
- maxCode = Convert.ToInt32(dt.Rows[0][0]) + 1;
- }
- }
- if (maxIndexSeqC == 0)
- {
- maxIndexSeqC = maxCode;
- }
- else
- {
- maxIndexSeqC++;
- }
- return maxIndexSeqC;
- //另外切换数据源的时候让maxIndexSeqC等于0
- }
- /// <summary>
- /// 用于扣型选择弹出对话框。
- /// </summary>
- public UltraGridRow rowparm;
- /// <summary>
- /// 触发扣型事件。
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void ultraGrid2_ClickCellButton(object sender, CellEventArgs e)
- {
- //单击表格按钮时间(有一列格子设为按钮)
- UltraGridRow ugr = this.ultraGrid2.ActiveRow;
- if (e.Cell.Column.Key.Equals("MODEL_DESC") && ugr.Cells["CHK"].Value.ToString() == "True")
- {//这一按钮列被点击,同时被点击的这一行被勾选了。
- this.rowparm = this.ultraGrid2.ActiveRow;
- FrmModel fms = new FrmModel();
- fms.FrmOb = this.ob; //ob对象传到扣型选择界面
- fms.Desc = rowparm.Cells["MODEL_DESC"].Value.ToString(); //激活行的扣型描述
- fms.ShowDialog();
- rowparm.Cells["MODEL_CODE"].Value = fms.Code; //选择的扣型集合代码
- rowparm.Cells["MODEL_DESC"].Value = fms.Desc; //选择的扣型集合描述 //返回到点击界面。
- }
- }
- private void ultraGrid2_CellChange(object sender, CellEventArgs e)
- {
- ultraGrid2.UpdateData();
- //从表
- if (e.Cell.Column.Key.Equals("CHKC"))
- {
- if (e.Cell.Value != null && !string.IsNullOrEmpty(e.Cell.Value.ToString()) && Convert.ToBoolean(e.Cell.Value))
- {
- for (int i = 1; i < e.Cell.Row.Cells.Count; i++)
- {
- //16 17 18 19 20 21 24
- if (i != 8 && i != 9 && i != 10 && i != 11 && i != 12 && i != 13 && i != 16)
- {
- e.Cell.Row.Cells[i].Activation = Infragistics.Win.UltraWinGrid.Activation.AllowEdit;
- }
- }
- }
- else
- {
- for (int i = 1; i < e.Cell.Row.Cells.Count; i++)
- {
- e.Cell.Row.Cells[i].Activation = Infragistics.Win.UltraWinGrid.Activation.ActivateOnly;
- }
- }
- }
- //主表
- if (e.Cell.Column.Key.Equals("CHK"))
- {
- //选中状态
- if (e.Cell.Value != null && !string.IsNullOrEmpty(e.Cell.Value.ToString()) && Convert.ToBoolean(e.Cell.Value))
- {
- for (int i = 1; i < e.Cell.Row.Cells.Count; i++)
- {
- if (i != 16 && i != 17 && i != 18 && i != 19 && i != 20 && i != 21 && i != 24)
- {
- e.Cell.Row.Cells[i].Activation = Infragistics.Win.UltraWinGrid.Activation.AllowEdit;
- }
- }
- }
- else
- {
- for (int i = 1; i < e.Cell.Row.Cells.Count; i++)
- {
- e.Cell.Row.Cells[i].Activation = Infragistics.Win.UltraWinGrid.Activation.ActivateOnly;
- }
- }
- }
- //当限制规格描述为空的时候,清空他后面的4列。25、26
- if (e.Cell.Column.Key.Equals("SIZE_NAME2"))
- {
- if ("".Equals(ultraGrid2.ActiveRow.Cells["SIZE_NAME2"].Value.ToString()))
- {
- ultraGrid2.ActiveRow.Cells["SIZE_MIN_SIGN2"].Value = "";
- ultraGrid2.ActiveRow.Cells["SIZE_MIN2"].Value = "";
- ultraGrid2.ActiveRow.Cells["SIZE_MAX_SIGN2"].Value = "";
- ultraGrid2.ActiveRow.Cells["SIZE_MAX2"].Value = "";
- }
- }
- if (e.Cell.Column.Key.Equals("SIZE_NAME"))
- {
- if ("".Equals(ultraGrid2.ActiveRow.Cells["SIZE_NAME"].Value.ToString()))
- {
- ultraGrid2.ActiveRow.Cells["SIZE_MIN_SIGN"].Value = "";
- ultraGrid2.ActiveRow.Cells["SIZE_MIN"].Value = "";
- ultraGrid2.ActiveRow.Cells["SIZE_MAX_SIGN"].Value = "";
- ultraGrid2.ActiveRow.Cells["SIZE_MAX"].Value = "";
- }
- }
- //复选框相关选中事件
- //勾选主表(或者取消勾选)
- //if (e.Cell.Column.Key.Equals("CHK") && !e.Cell.Row.HasParent())
- //{
- // foreach (UltraGridRow row in e.Cell.Row.ChildBands[0].Rows)
- // {
- // row.Cells["CHKC"].Value = e.Cell.Value; //从表值勾选为主表勾选值
- // }
- //}
- //else
- //{
- // //勾选从表(或者取消勾选),按理说点击其他位置,也会触发该段代码。
- // int flag = 0;
- // foreach (UltraGridRow row in e.Cell.Row.ParentRow.ChildBands[0].Rows)
- // {
- // if (Convert.ToBoolean(row.Cells["CHKC"].Value))
- // {
- // //从表勾选了 状态参数+1
- // flag += 1;
- // }
- // }
- // //状态参数小于从表的行数,说明未全勾选,主表未半选状态
- // if (flag < e.Cell.Row.ParentRow.ChildBands[0].Rows.Count && flag != 0)
- // {
- // e.Cell.Row.ParentRow.Cells["CHK"].Value = null;
- // }
- // else if (flag == 0)
- // {
- // //从表取消全部勾选,主表不勾选
- // e.Cell.Row.ParentRow.Cells["CHK"].Value = false;
- // }
- // else
- // {
- // //否则主表为全选状态
- // e.Cell.Row.ParentRow.Cells["CHK"].Value = true;
- // }
- //}
- SaveMSCCode(e);
- }
- private List<string> MSCCodes = new List<string>(); //做过操作的冶金规范码和序号
- /// <summary>
- /// 保存操作的冶金规范码+序号
- /// </summary>
- /// <param name="e"></param>
- private void SaveMSCCode(CellEventArgs e)
- {
- if (e.Cell.Row.HasParent())
- {
- if (Convert.ToBoolean(e.Cell.Row.Cells["CHKC"].Value)
- && !MSCCodes.Contains(e.Cell.Row.Cells["MSC"].Value.ToString() + "," + e.Cell.Row.Cells["INDEX_SEQ"].Value.ToString()))
- {
- MSCCodes.Add(e.Cell.Row.Cells["MSC"].Value.ToString() + "," + e.Cell.Row.Cells["INDEX_SEQ"].Value.ToString());
- }
- }
- else if (e.Cell.Row.ChildBands[0].Rows.Count > 0)
- {
- if (Convert.ToBoolean(e.Cell.Row.Cells["CHK"].Value)
- && !MSCCodes.Contains(e.Cell.Row.Cells["MSC"].Value.ToString() + "," + e.Cell.Row.Cells["INDEX_SEQ"].Value.ToString()))
- {
- MSCCodes.Add(e.Cell.Row.Cells["MSC"].Value.ToString() + "," + e.Cell.Row.Cells["INDEX_SEQ"].Value.ToString());
- }
- }
- }
- /// <summary>
- /// 展开某一行
- /// </summary>
- private void ExpandRow()
- {
- foreach (UltraGridRow row in ultraGrid2.Rows)
- {
- if (MSCCodes.Contains(row.Cells["MSC"].Value.ToString() + "," + row.Cells["INDEX_SEQ"].Value.ToString()))
- {
- row.ExpandAll();
- row.Activate();
- }
- }
- }
- }
- }
|