| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432 |
- using System;
- using System.Collections.Generic;
- using System.Data;
- using System.Drawing;
- using System.Text;
- using System.Windows.Forms;
- using UAS_MES.DataOperate;
- using UAS_MES.Entity;
- using UAS_MES.PublicMethod;
- namespace UAS_MES.Make
- {
- public partial class Make_Repair : Form
- {
- string caller = "Make!Repair";
- //记录维修结果的代码值
- string Repair_Result;
- //记录不良状态码
- string badcode;
- //记录不良组别
- string groupcode;
- //判断是否获取了下拉框的值
- string mb_id1;
- //记录插入操作日志表的sql
- string cm_makecode;
- //执行插入日志的SQL
- string insert_makeprocess = "insert into makeprocess(mp_id,mp_makecode,mp_maid, mp_mscode,mp_sncode,mp_stepcode,mp_stepname,mp_craftcode,mp_craftname,mp_kind,mp_result,mp_indate,mp_inman,mp_wccode,mp_linecode,mp_sourcecode) select MakeProcess_seq.nextval, ma_code,ma_id,ms_code,ms_sncode,mcd_stepcode,mcd_stepname,ma_craftcode,'','维修作业','#',sysdate,'" + User.UserName + "',ma_wccode,ma_linecode,'' from make left join makecraftdetail on mcd_macode=ma_code left join makeserial on ms_makecode=ma_code where ms_sncode=:ms_sncode and ma_code=:ma_code";
- //是否获取过下拉框数据
- bool GetSelectData = false;
- DataHelper dh = null;
- LogStringBuilder sql = new LogStringBuilder();
- List<string> sqls = new List<string>();
- DataTable dt = null;
- AutoSizeFormClass asc = new AutoSizeFormClass();
- public Make_Repair()
- {
- InitializeComponent();
- //为DBFind配置Call和Form的名称
- cr_code.FormName = Name;
- cr_code.TableName = "craft";
- cr_code.SelectField = "cr_name # 工艺名称 ,cr_code # 工艺编号,cr_prodcode # 物料编号";
- cr_code.SetValueField = new string[] { "cr_code" };
- cd_stepcode.FormName = Name;
- cd_stepcode.TableName = "craftdetail left join step on st_code=cd_stepcode left join craft on cd_crid=cr_id";
- cd_stepcode.SetValueField = new string[] { "cd_stepcode" };
- cd_stepcode.SelectField = "cd_stepname # 工序名称 ,cd_stepcode # 工序编号,cd_stepno # 执行顺序";
- cd_stepcode.Condition = "ST_STATUSCODE='AUDITED' and cr_code='" + cr_code.Text + "'";
- RepairResult.Text = "待维修";
- ms_nextstepcode.Text = User.CurrentStepCode;
- st_name.Text = User.CurrentStepName;
- }
- private void 维修作业_Load(object sender, EventArgs e)
- {
- //添加不良信息的静态数据
- ItemObject[] io = new ItemObject[4];
- io[0] = new ItemObject("待维修", "0");
- io[1] = new ItemObject("已维修", "1");
- io[2] = new ItemObject("不可维修", "2");
- io[3] = new ItemObject("无不良", "-1");
- RepairResult.Items.AddRange(io);
- dh = new DataHelper();
- asc.controllInitializeSize(this);
- }
- private void GetSNCode_KeyDown(object sender, KeyEventArgs e)
- {
- if (e.KeyCode == Keys.Enter)
- {
- //如果勾选了换料
- if (Refueling.Checked)
- {
- dt = (DataTable)dh.ExecuteSql("select bar_status,bar_code,bar_prodcode from barcode where bar_code ='" + GetSNCode.Text + "'", "select");
- if (dt.Rows.Count == 0)
- {
- OperatResult.AppendText(">>条码" + GetSNCode.Text + "不存在\n", Color.Red);
- }
- else
- {
- //获取条码对应的产品code
- string bar_prodcode = dt.Rows[0]["bar_prodcode"].ToString();
- string bar_code = dt.Rows[0]["bar_code"].ToString();
- dt = (DataTable)dh.ExecuteSql("select cm_makecode from craftmaterial where cm_sncode='" + ms_sncode.Text + "' and cm_soncode='" + bar_prodcode + "'", "select");
- if (dt.Rows.Count == 0)
- {
- OperatResult.AppendText(">>该条码对应的物料" + bar_prodcode + "不是该工单所需物料\n", Color.Red);
- }
- else
- {
- dt = (DataTable)dh.ExecuteSql("select cm_sncode from craftmaterial where cm_makecode='" + ma_code.Text + "' and cm_barcode='" + bar_code + "' and nvl(cm_statuscode,'')<>'D'", "select");
- if (dt.Rows.Count != 0)
- {
- OperatResult.AppendText(">>该条码已经上料,绑定SN号" + ms_sncode.Text + ",不允许重复上料\n", Color.Red);
- }
- else
- {
- //进行一个下料再上料操作 //报废一个单位用量
- sqls.Add("update craftmaterial set cm_status='下料',cm_statuscode='D',cm_barcode='" + GetSNCode.Text + "' where cm_makecode='" + ma_code.Text + "' and cm_soncode='" + bar_prodcode + "' and cm_mscode='" + ms_sncode.Text + "'");
- //记录日志makeprocess 维修作业,下料
- dh.ExecuteSql(insert_makeprocess.Replace("#", "下料"), "insert", ms_sncode.Text, ma_code.Text);
- //将原条码对应的数据写入到craftmaterial 表中
- sql.Clear();
- sql.Append("insert into Craftmaterial (cm_id,cm_makecode,cm_maid,cm_maprodcode,cm_soncode,");
- sql.Append("cm_mscode,cm_sncode,cm_stepcode,cm_stepname,cm_craftcode,cm_craftname,cm_barcode,cm_inqty,");
- sql.Append("cm_indate,cm_inman,cm_linecode,cm_wccode,cm_sourcecode,cm_spid)");
- sql.Append("select Craftmaterial_seq.nextval,ma_code,ma_id,ma_prodcode,msl_prodcode,ms_code,ms_sncode,");
- sql.Append("ms_stepcode,ms_stepname,ma_craftcode, ma_craftname,msl_barcode, msl_baseqty, sysdate,'" + User.UserName + "',");
- sql.Append("ma_linecode,ma_wccode,ms_sourcecode,sp_id from make left join makeserial on ms_makecode = ma_code ");
- sql.Append("left join makesmtlocation on msl_makecode=ma_code left join stepProduct on sp_mothercode=ma_prodcode and ");
- sql.Append("sp_stepcode=ms_nextstepcode where ms_sncode='" + ms_sncode.Text + "' and nvl(msl_status,0)=0");
- sqls.Add(sql.GetString());
- //记录日志makeprocess维修作业,上料
- dh.ExecuteSql(insert_makeprocess.Replace("#", "上料"), "insert", ms_sncode.Text, ma_code.Text);
- dh.ExecuteSQLTran(sqls.ToArray());
- sqls.Clear();
- OperatResult.AppendText(">>换料成功\n", Color.Green);
- }
- }
- }
- }
- //未勾选换料的时候
- else
- {
- //验证序列号是否存在
- dt = (DataTable)dh.ExecuteSql("select ms_status,ms_makecode from makeserial where ms_sncode ='" + GetSNCode.Text + "'", "select");
- if (dt.Rows.Count == 0)
- {
- OperatResult.AppendText(">>序号" + GetSNCode.Text + "不存在\n", Color.Red);
- }
- else
- {
- if (dt.Rows[0]["ms_status"].ToString() != "3")
- {
- switch (dt.Rows[0]["ms_status"].ToString())
- {
- case "0":
- OperatResult.AppendText(">>当前序号" + GetSNCode.Text + "的状态为未上线\n", Color.Red);
- break;
- case "1":
- OperatResult.AppendText(">>当前序号" + GetSNCode.Text + "的状态为已上线 \n", Color.Red);
- break;
- case "2":
- OperatResult.AppendText(">>当前序号" + GetSNCode.Text + "的状态为已完成\n", Color.Red);
- break;
- case "4":
- OperatResult.AppendText(">>当前序号" + GetSNCode.Text + "的状态为已报废\n", Color.Red);
- break;
- }
- }
- else
- {
- //获取工单信息
- sql.Clear();
- sql.Append("select ms_sncode,ma_code,pr_detail,ma_prodcode,ma_craftcode,st_rstepcode from makeserial ");
- sql.Append("left join make on ma_code=ms_makecode left join step on st_code=ms_nextstepcode left join product ");
- sql.Append("on pr_code=ma_prodcode where ms_sncode='" + GetSNCode.Text + "'");
- dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
- BaseUtil.SetFormValue(this.Controls, dt);
- //获取不良信息
- GetBadCodeInfo();
- AddRow.PerformClick();
- OperatResult.AppendText(">>获取序列号" + GetSNCode.Text + "成功\n", Color.Green);
- }
- }
- }
- //GetSNCode.Clear();
- }
- }
- private void RepairComplete_Click(object sender, EventArgs e)
- {
- int RejectNum = int.Parse(dh.getFieldDataByCondition("makebad", "count(0) cn", "mb_sncode='" + ms_sncode.Text + "' and mb_status not in (1,-1)").ToString());
- if (RejectNum > 0)
- OperatResult.AppendText(">>维修结果必须为已维修或无不良\n", Color.Red);
- else
- {
- dt = (DataTable)dh.ExecuteSql("select cr_id from craft where cr_statuscode='AUDITED' and cr_code='" + cr_code.Text + "'", "select");
- if (dt.Rows.Count == 0)
- OperatResult.AppendText(">>回流工序不存在\n", Color.Red);
- else
- {
- string cr_id = dt.Rows[0]["cr_id"].ToString();
- dt = (DataTable)dh.ExecuteSql("select cd_ifinput from craftdetail left join step on st_code=cd_stepcode where cd_crid='" + cr_id + "' and cd_stepcode='" + cd_stepcode.Text + "' and st_statuscode='AUDITED'", "select");
- if (dt.Rows.Count == 0)
- OperatResult.AppendText(">>回流工序不在回流工艺中\n", Color.Red);
- else
- {
- dh.UpdateByCondition("makeserial", "ms_nextstepcode='" + cd_stepcode.Text + "',ms_craftcode='" + cr_code.Text + "',ms_stepcode='" + User.CurrentStepCode + "',ms_status=1", "ms_sncode='" + ms_sncode.Text + "'");
- dh.ExecuteSql(insert_makeprocess.Replace("#", "完成维修"), "insert", ms_sncode.Text, st_name.Text);
- OperatResult.AppendText(">>序列号" + ms_sncode.Text + "回流成功\n", Color.Green);
- GetBadCodeInfo();
- GetSNCode.Clear();
- }
- }
- }
- }
- //报废按钮点击
- private void Scrap_Click(object sender, EventArgs e)
- {
- //判断是否有无法维修的记录
- int ScrapNum = int.Parse(dh.getFieldDataByCondition("makebad", "count(0) cn", "mb_sncode='" + ms_sncode.Text + "' and mb_status=2").ToString());
- if (ScrapNum == 0)
- {
- OperatResult.AppendText(">>存在无法维修的记录才允许报废\n", Color.Red);
- }
- else
- {
- string confirm = MessageBox.Show(this.ParentForm, "此操作不可撤销,是否确认报废", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk).ToString();
- if (confirm == "Yes")
- {
- dh.UpdateByCondition("makeserial", "ms_status=4,ms_nextstepcode='',ms_stepcode='" + ms_nextstepcode.Text + "'", "ms_sncode='" + ms_sncode.Text + "' and ms_makecode='" + ma_code.Text + "'");
- dh.UpdateByCondition("make", "MA_NGMADEQTY=nvl(MA_NGMADEQTY,0)+1", "ma_code='" + ma_code.Text + "'");
- OperatResult.AppendText(">>报废成功\n", Color.Green);
- GetBadCodeInfo();
- GetSNCode.Clear();
- }
- }
- }
- //保存按钮点击
- private void Save_Click(object sender, EventArgs e)
- {
- if (bc_reason.Text != "")
- {
- //判断是修改还是新增的
- if (mb_id1 != null)
- {
- ItemObject coSelected = (ItemObject)RepairResult.SelectedItem;
- Repair_Result = coSelected.Value;
- dh.UpdateByCondition("makebad", " mb_makecode='" + st_name.Text + "',mb_badcode='" + badcode + "',mb_badremark='" + bc_remark.Text + "',mb_status='" + Repair_Result + "',mb_sncode='" + GetSNCode.Text + "'", "mb_id=" + mb_id1 + "");
- //刷新不良信息表
- GetBadCodeInfo();
- }
- else
- {
- int rowcount = dh.getRowCount("makebad", " mb_badcode='" + badcode + "' and mb_sncode='" + ms_sncode.Text + "'");
- if (rowcount == 0)
- {
- //插入不良信息
- sql.Clear();
- sql.Append("insert into makebad (mb_id,mb_makecode, mb_badcode,mb_badremark,mb_status,mb_sncode) values(makebad_seq.nextval,'" + st_name.Text + "','" + badcode + "','" + bc_remark.Text + "','" + Repair_Result + "','" + GetSNCode.Text + "')");
- dh.ExecuteSql(sql.GetString(), "insert");
- bc_groupcode1.Text = "";
- bc_reason.Text = "";
- bc_remark.Text = "";
- //刷新不良信息表
- GetBadCodeInfo();
- }
- else
- OperatResult.AppendText(">>已经存在不良原因码为" + badcode + "的维修记录\n", Color.Red);
- }
- }
- else
- OperatResult.AppendText(">>不良原因不能为空\n", Color.Red);
- }
- private void AddRow_Click(object sender, EventArgs e)
- {
- bc_groupcode1.Text = "";
- bc_reason.Text = "";
- bc_remark.Text = "";
- RepairResult.Text = "";
- mb_id1 = null;
- if (!GetSelectData)
- {
- //往不良原因添加数据
- sql.Clear();
- sql.Append("select bc_groupcode,bc_groupname,bc_code,bc_name from make left join product on pr_code=ma_prodcode left join productkind on pk_name=pr_kind left join ");
- sql.Append("productbadgroup on pk_code=pb_kindcode left join badcode on pb_badgroup=bc_groupname where ma_code='" + ma_code.Text + "'");
- dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
- ItemObject[] reason = new ItemObject[dt.Rows.Count];
- ItemObject[] groupcode = new ItemObject[dt.Rows.Count];
- for (int i = 0; i < dt.Rows.Count; i++)
- {
- reason[i] = new ItemObject(dt.Rows[i]["bc_code"] + "#" + dt.Rows[i]["bc_name"], dt.Rows[i]["bc_code"].ToString());
- groupcode[i] = new ItemObject(dt.Rows[i]["bc_groupname"].ToString(), dt.Rows[i]["bc_groupcode"].ToString());
- }
- bc_groupcode1.Items.AddRange(groupcode);
- bc_reason.Items.AddRange(reason);
- GetSelectData = true;
- }
- }
- private void Refueling_CheckedChanged(object sender, EventArgs e)
- {
- //如何序列号字段没有赋值设置勾选框为false
- if (ms_sncode.Text == "")
- Refueling.Checked = false;
- else
- {
- if (Refueling.Checked)
- GetSNCode_Label.Text = "采集新料条码";
- else
- {
- GetSNCode_Label.Text = "";
- GetSNCode.Text = "";
- }
- }
- }
- //
- private void 维修作业_Activated(object sender, EventArgs e)
- {
- GetSNCode.Focus();
- }
- //判断绑定的数据源不为空的时候可以点击
- private void BadCodeGrid_DataSourceChanged(object sender, EventArgs e)
- {
- string ms_status = dh.getFieldDataByCondition("makeserial", "ms_status", "ms_sncode='" + GetSNCode.Text + "'").ToString();
- if (BadCodeGrid.DataSource == null || ms_status == "1" || ms_status == "4")
- {
- Save.Enabled = false;
- Scrap.Enabled = false;
- AddRow.Enabled = false;
- RepairComplete.Enabled = false;
- }
- else
- {
- Save.Enabled = true;
- Scrap.Enabled = true;
- AddRow.Enabled = true;
- RepairComplete.Enabled = true;
- }
- }
- private void BadCodeGrid_CellClick(object sender, DataGridViewCellEventArgs e)
- {
- //设置界面右边三个变量的值
- if (e.ColumnIndex >= 0 && e.RowIndex >= 0)
- {
- object a = BadCodeGrid.Rows[e.RowIndex].Cells["mb_badcode"].Value;
- object b = BadCodeGrid.Rows[e.RowIndex].Cells["mb_badremark"].Value;
- object c = BadCodeGrid.Rows[e.RowIndex].Cells["bc_groupcode"].Value;
- object d = BadCodeGrid.Rows[e.RowIndex].Cells["mb_status"].Value;
- bc_reason.Text = a.Equals(null) ? "" : a.ToString();
- bc_remark.Text = b.Equals(null) ? "" : b.ToString();
- bc_groupcode1.Text = c.Equals(null) ? "" : c.ToString();
- Repair_Result = d.Equals(null) ? "" : d.ToString();
- mb_id1 = BadCodeGrid.Rows[e.RowIndex].Cells["mb_id"].Value.ToString();
- badcode = a.Equals(null) ? "" : a.ToString();
- groupcode = c.Equals(null) ? "" : c.ToString();
- RepairResult.Text = d.Equals(null) ? "" : d.ToString();
- switch (RepairResult.Text)
- {
- case "0":
- RepairResult.Text = "待维修";
- break;
- case "1":
- RepairResult.Text = "已维修";
- break;
- case "2":
- RepairResult.Text = "待维修";
- break;
- case "-1":
- RepairResult.Text = "待维修";
- break;
- }
- }
- }
- private void RepairResult_SelectedIndexChanged(object sender, EventArgs e)
- {
- ItemObject coSelected = (ItemObject)RepairResult.SelectedItem;
- Repair_Result = coSelected.Value;
- }
- private void bc_reason_SelectedIndexChanged(object sender, EventArgs e)
- {
- ItemObject coSelected = (ItemObject)bc_reason.SelectedItem;
- badcode = coSelected.Value;
- }
- private void bc_groupcode1_SelectedIndexChanged(object sender, EventArgs e)
- {
- ItemObject coSelected = (ItemObject)bc_groupcode1.SelectedItem;
- groupcode = coSelected.Value;
- }
- //获取不良信息
- private void GetBadCodeInfo()
- {
- sql.Clear();
- sql.Append("Select mb_id,mb_sncode,bc_name,mb_badcode,mb_badremark,bc_groupcode,bc_note,bc_dutyman,case mb_status when 0 then '待维修' when 1 then '已维修' when 2 then '不可维修' when -1 then '无不良' end mb_status ");
- sql.Append("from Makebad left join badcode on mb_badcode=bc_code where mb_sncode='" + ms_sncode.Text + "' order by mb_id");
- dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
- BaseUtil.FillDgvWithDataTable(BadCodeGrid, dt);
- }
- private void 维修作业_SizeChanged(object sender, EventArgs e)
- {
- asc.controlAutoSize(this);
- }
- private void Clean_Click(object sender, EventArgs e)
- {
- OperatResult.Clear();
- }
- private void RepairResult_TextChanged(object sender, EventArgs e)
- {
- ItemObject coSelected = (ItemObject)RepairResult.SelectedItem;
- if (coSelected != null)
- Repair_Result = coSelected.Value;
- }
- private void bc_reason_TextChanged(object sender, EventArgs e)
- {
- badcode = bc_reason.Text;
- }
- private void cr_code_UserControlTextChanged(object sender, EventArgs e)
- {
- cd_stepcode.Condition = "ST_STATUSCODE='AUDITED' and cr_code='" + cr_code.Text + "'";
- }
- private void ma_code_TextChanged(object sender, EventArgs e)
- {
- cr_code.Condition = "cr_statuscode='AUDITED' and cr_code=(select ma_craftcode from make where ma_code='" + ma_code.Text + "')";
- }
- }
- }
|