Make_TestCollection.cs 49 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990
  1. using System;
  2. using System.Data;
  3. using System.Text;
  4. using System.Threading;
  5. using System.Drawing;
  6. using System.Windows.Forms;
  7. using UAS_MES_NEW.DataOperate;
  8. using UAS_MES_NEW.Entity;
  9. using UAS_MES_NEW.PublicMethod;
  10. using System.Collections.Generic;
  11. using UAS_MES_NEW.CustomControl.PowerControlForm;
  12. using UAS_MES_NEW.Properties;
  13. namespace UAS_MES_NEW.Make
  14. {
  15. public partial class Make_TestCollection : Form
  16. {
  17. DataHelper dh = null;
  18. DataTable dt = null;
  19. //当前工序的名称
  20. string ErrorMessage = "";
  21. //用于保存是否之前输入的ms_sncode
  22. string LastSncode;
  23. string oMakeCode = "";
  24. string oMSID = "";
  25. string ifrework = "";
  26. string reworkstatus = "";
  27. LogStringBuilder sql = new LogStringBuilder();
  28. AutoSizeFormClass asc = new AutoSizeFormClass();
  29. /// <summary>
  30. /// 已选的不良
  31. /// </summary>
  32. List<string> ChoosedList = new List<string>();
  33. /// <summary>
  34. /// 待选的不良
  35. /// </summary>
  36. List<string> WaitList = new List<string>();
  37. bool AutoCut = false;
  38. bool LockSn = false;
  39. DataTable Dbfind;
  40. public Make_TestCollection()
  41. {
  42. InitializeComponent();
  43. }
  44. private void TestCollection_Load(object sender, EventArgs e)
  45. {
  46. GoodProduct.Checked = true;
  47. asc.controllInitializeSize(this);
  48. ms_sncode.GotFocus += text_getfocus;
  49. ms_sncode.Focus();
  50. //设置锁定工单
  51. LockMakeCode.GetMakeCodeCtl(ma_code);
  52. ma_code.SetLockCheckBox(LockMakeCode);
  53. ControlLockTimer.Tick += ControlLockTimer_Tick;
  54. ControlLockTimer.Interval = 100;
  55. SMTBind.Checked = Settings.Default.SMTBIND;
  56. //工单号放大镜配置
  57. ma_code.TableName = "make left join product on ma_prodcode=pr_code";
  58. ma_code.SelectField = "ma_code # 工单号,ma_prodcode # 产品编号,ma_qty # 工单数量,pr_spec # 产品规格,ma_softversion # 软件版本,ma_salecode # 销售单号,pr_sendchecktype # 产品送检方式";
  59. ma_code.FormName = Name;
  60. ma_code.SetValueField = new string[] { "ma_code", "ma_prodcode", "ma_qty", "pr_spec", "ma_softversion", "ma_salecode", "nvl(pr_sendchecktype,'LineCode')pr_sendchecktype" };
  61. ma_code.Condition = "ma_statuscode='STARTED'";
  62. ma_code.DbChange += Ma_code_DbChange;
  63. dh = SystemInf.dh;
  64. StepCount.StepCode = User.CurrentStepCode;
  65. StepCount.Source = User.UserSourceCode;
  66. StepCount.LineCode = User.UserLineCode;
  67. StepCount.Dh = dh;
  68. StepCount.Start();
  69. }
  70. private void text_getfocus(object sender, EventArgs e)
  71. {
  72. ms_sncode.ImeMode = ImeMode.Close;
  73. }
  74. private void ControlLockTimer_Tick(object sender, EventArgs e)
  75. {
  76. this.Activate();
  77. ms_sncode.Focus();
  78. }
  79. private void Ma_code_DbChange(object sender, EventArgs e)
  80. {
  81. Dbfind = ma_code.ReturnData;
  82. BaseUtil.SetFormValue(this.Controls, Dbfind);
  83. LoadBadGroupData();
  84. LoadCollectedNum();
  85. LoadCheckQTY();
  86. }
  87. /// <summary>
  88. /// 将已选不良移动到待选不良
  89. /// </summary>
  90. /// <param name="sender"></param>
  91. /// <param name="e"></param>
  92. private void WaitReject_Click(object sender, EventArgs e)
  93. {
  94. int CheckedNum = 0;
  95. //已存在在ListView中的Item是不能添加到其他ListView中的,需要调用其克隆的方法
  96. for (int i = ChoosedRejectList.Items.Count - 1; i >= 0; i--)
  97. {
  98. if (ChoosedRejectList.Items[i].Checked)
  99. {
  100. ChoosedRejectList.Items[i].Checked = false;
  101. WaitRejectList.Items.Add((ListViewItem)ChoosedRejectList.Items[i].Clone());
  102. ChoosedRejectList.Items[i].Remove();
  103. CheckedNum++;
  104. }
  105. }
  106. if (CheckedNum == 0)
  107. {
  108. for (int i = ChoosedRejectList.Items.Count - 1; i >= 0; i--)
  109. {
  110. WaitRejectList.Items.Add((ListViewItem)ChoosedRejectList.Items[i].Clone());
  111. ChoosedRejectList.Items[i].Remove();
  112. }
  113. }
  114. }
  115. /// <summary>
  116. /// 将不良信息移动到已选不良
  117. /// </summary>
  118. /// <param name="sender"></param>
  119. /// <param name="e"></param>
  120. private void ChooseedReject_Click(object sender, EventArgs e)
  121. {
  122. if (ms_sncode.Text == "")
  123. {
  124. OperateResult.AppendText(">>序列号不能为空\n", Color.Red);
  125. ms_sncode.Focus();
  126. return;
  127. }
  128. int CheckedNum = 0;
  129. //是否已经添加到不良
  130. bool AddToReject = false;
  131. for (int i = WaitRejectList.Items.Count - 1; i >= 0; i--)
  132. {
  133. if (WaitRejectList.Items[i].Checked)
  134. {
  135. AddToReject = false;
  136. for (int j = 0; j < ChoosedRejectList.Items.Count; j++)
  137. {
  138. if ((ChoosedRejectList.Items[j].SubItems[2].Text == WaitRejectList.Items[i].SubItems[2].Text))
  139. {
  140. AddToReject = true;
  141. OperateResult.AppendText(">>已存在" + ChoosedRejectList.Items[j].SubItems[2].Text + "不良\n", Color.Red);
  142. break;
  143. }
  144. }
  145. //未添加则进行添加
  146. if (!AddToReject)
  147. {
  148. WaitRejectList.Items[i].Checked = false;
  149. ChoosedRejectList.Items.Add((ListViewItem)WaitRejectList.Items[i].Clone());
  150. WaitRejectList.Items[i].Remove();
  151. CheckedNum++;
  152. }
  153. }
  154. }
  155. if (CheckedNum == 0)
  156. {
  157. OperateResult.AppendText(">>请勾选不良代码\n", Color.Red);
  158. }
  159. }
  160. private void CleanInfo_Click(object sender, EventArgs e)
  161. {
  162. OperateResult.Clear();
  163. }
  164. private void ms_code_KeyDown(object sender, KeyEventArgs e)
  165. {
  166. if (e.KeyCode == Keys.Enter)
  167. {
  168. ChoosedRejectList.Items.Clear();
  169. WaitList.Clear();
  170. ChoosedList.Clear();
  171. if (LogicHandler.CheckStepAttribute(Tag.ToString(), User.UserSourceCode, out ErrorMessage))
  172. {
  173. bool NoteAlready = LogicHandler.CheckDiffMakeCodeBeforeStepCheck(ms_sncode.Text, ma_code.Text, NoteForChange.Checked, out oMakeCode, out ErrorMessage);
  174. if (!NoteAlready)
  175. {
  176. OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, ms_sncode);
  177. return;
  178. }
  179. if (LogicHandler.CheckStepSNAndMacode(oMakeCode, User.UserSourceCode, ms_sncode.Text, User.UserCode, out oMakeCode, out oMSID, out ErrorMessage))
  180. {
  181. //是否提示过工单切换框,检测前后执行
  182. if (!LogicHandler.CheckDiffMakeCodeAfterStepCheck(ms_sncode.Text, oMakeCode, NoteForChange.Checked, NoteAlready, ma_code, out ErrorMessage))
  183. {
  184. OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, ms_sncode);
  185. return;
  186. }
  187. if (ma_code.Text != oMakeCode && oMakeCode != null)
  188. {
  189. dt = (DataTable)dh.ExecuteSql("select ma_code,ma_prodcode,ma_softversion,ma_salecode,pr_spec,nvl(pr_sendchecktype,'LineCode')pr_sendchecktype,ma_qty from make left join product on ma_prodcode=pr_code where ma_code='" + oMakeCode + "'", "select");
  190. if (dt.Rows.Count > 0)
  191. {
  192. BaseUtil.SetFormValue(this.Controls, dt);
  193. LockMakeCode.Checked = true;
  194. }
  195. }
  196. dt = (DataTable)dh.ExecuteSql("select ms_nextstepcode,ms_sncode,ms_reworkstatus,nvl(ms_ifrework,0)ms_ifrework,ms_stepcode,ms_status,nvl(st_ifrepair,0) st_ifrepair from makeserial left join step on ms_stepcode=st_code where ms_id='" + oMSID + "'", "select");
  197. string status = dt.Rows[0]["ms_status"].ToString();
  198. reworkstatus = dt.Rows[0]["ms_reworkstatus"].ToString();
  199. string stepcode = dt.Rows[0]["ms_stepcode"].ToString();
  200. string ifrepair = dt.Rows[0]["st_ifrepair"].ToString();
  201. string sncode = dt.Rows[0]["ms_sncode"].ToString();
  202. if (sncode != ms_sncode.Text)
  203. {
  204. OperateResult.AppendText(">>" + ms_sncode.Text + " 序列号已执行过转号,不允许使用TSN采集\n", Color.Red, ms_sncode);
  205. return;
  206. }
  207. ifrework = dt.Rows[0]["ms_ifrework"].ToString();
  208. if (GoodProduct.Checked)
  209. {
  210. if (ifrework != "0")
  211. {
  212. if (stepcode == User.CurrentStepCode && (reworkstatus == "1" || reworkstatus == "2") && ifrepair == "0")
  213. {
  214. OperateResult.AppendText(">>" + ms_sncode.Text + " 序列号已执行过" + User.CurrentStepCode + "工序,采集结果为良品\n", Color.Red, ms_sncode);
  215. return;
  216. }
  217. }
  218. else
  219. {
  220. if (stepcode == User.CurrentStepCode && (status == "1" || status == "2") && ifrepair == "0")
  221. {
  222. OperateResult.AppendText(">>" + ms_sncode.Text + " 序列号已执行过" + User.CurrentStepCode + "工序,采集结果为良品\n", Color.Red, ms_sncode);
  223. return;
  224. }
  225. }
  226. }
  227. SetCollectResult();
  228. }
  229. else OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, ms_sncode);
  230. }
  231. else OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, ms_sncode);
  232. }
  233. }
  234. private void bc_groupcode_SelectedIndexChanged(object sender, EventArgs e)
  235. {
  236. LoadBadCodeListView();
  237. }
  238. /// <summary>
  239. /// 填充不良组别信息
  240. /// </summary>
  241. private void LoadBadGroupData()
  242. {
  243. //如果ms_makecode的值修改过再去查询
  244. sql.Clear();
  245. sql.Append("select bg_code||':'||bg_name bg_name,bg_code from badgroup left join (select pb_badgroup,pr_kind ");
  246. sql.Append("from product left join productkind on pk_name=pr_kind ");
  247. sql.Append("left join productbadgroup on pk_code=PB_KINDCODE where pr_code='" + ma_prodcode.Text + "')");
  248. sql.Append("on pb_badgroup=bg_code where bg_statuscode='AUDITED' order by case when bg_code='" + User.DefaultBadGroup + "' then 0 else 1 end");
  249. DataTable dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  250. bc_groupcode.DisplayMember = "bg_name";
  251. bc_groupcode.ValueMember = "bg_code";
  252. bc_groupcode.DataSource = dt;
  253. }
  254. /// <summary>
  255. /// 加载不良代码的ListView的信息
  256. /// </summary>
  257. private void LoadBadCodeListView()
  258. {
  259. object bg_code = bc_groupcode.SelectedValue;
  260. sql.Clear();
  261. sql.Append("select bg_code||':'||bg_name bg_code,bc_code,bc_name,'' bc_remark from badgroupdetail ");
  262. sql.Append("left join badgroup on bg_id=bgd_bgid left join badcode on bgd_badcode=bc_code where ");
  263. sql.Append("bg_code='" + (bg_code != null ? bg_code.ToString() : "") + "' and bg_code is not null order by bgd_detno");
  264. DataTable dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  265. BadInfSource.DataSource = dt;
  266. //往listview中添加数据
  267. WaitRejectList.Items.Clear();
  268. WaitRejectList.BeginUpdate();
  269. for (int i = 0; i < dt.Rows.Count; i++)
  270. {
  271. if (!ChoosedList.Contains(dt.Rows[i]["bc_code"].ToString()))
  272. {
  273. ListViewItem lvi = new ListViewItem();
  274. //第一列是勾选列,设置列头文本为空
  275. lvi.Text = "";
  276. WaitList.Add(dt.Rows[i]["bc_code"].ToString());
  277. for (int j = 0; j < dt.Columns.Count; j++)
  278. lvi.SubItems.Add(dt.Rows[i][j].ToString());
  279. WaitRejectList.Items.Add(lvi);
  280. }
  281. }
  282. WaitRejectList.EndUpdate();
  283. }
  284. /// <summary>
  285. /// 加载已选不良的ListView
  286. /// </summary>
  287. private void LoadChoosedBadListView()
  288. {
  289. sql.Clear();
  290. sql.Append("select nvl(bg_code,mb_bgcode)||':'||nvl(bg_name,mb_badcode) bg_code,nvl(mb_badcode,bc_code) bc_code,bc_name,mb_badremark from makebad ");
  291. sql.Append("left join badgroup on mb_bgcode=bg_code left join badcode on mb_badcode=bc_code ");
  292. sql.Append(" where mb_sncode='" + ms_sncode.Text + "' and mb_makecode='" + ma_code.Text + "' and mb_status=0");
  293. dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  294. ChoosedRejectList.Items.Clear();
  295. ChoosedRejectList.BeginUpdate();
  296. for (int i = 0; i < dt.Rows.Count; i++)
  297. {
  298. ListViewItem lvi = new ListViewItem();
  299. //第一列是勾选列,设置列头文本为空
  300. lvi.Text = "";
  301. ChoosedList.Add(dt.Rows[i]["bc_code"].ToString());
  302. for (int j = 0; j < dt.Columns.Count; j++)
  303. lvi.SubItems.Add(dt.Rows[i][j].ToString());
  304. ChoosedRejectList.Items.Add(lvi);
  305. }
  306. ChoosedRejectList.EndUpdate();
  307. }
  308. /// <summary>
  309. /// 设置良品或者不良品的采集结果
  310. /// </summary>
  311. private void SetCollectResult()
  312. {
  313. string ErrorMessage = "";
  314. //如果勾选的是不良品
  315. if (Reject.Checked)
  316. {
  317. LoadBadCodeListView();
  318. LoadChoosedBadListView();
  319. //OperateResult.AppendText(">>请采集不良代码\n", Color.Green);
  320. //bc_code.Focus();
  321. ////勾选了自动产生代码
  322. //if (AutoBadCode.Checked)
  323. // Save_Click(new object(), new EventArgs());
  324. if (ms_sncode.Text == "")
  325. {
  326. OperateResult.AppendText(">>序列号不允许为空\n", Color.Red);
  327. return;
  328. }
  329. if (GoodProduct.Checked)
  330. ms_code_KeyDown_one(this, new KeyEventArgs(Keys.Enter));
  331. else if (Reject.Checked)
  332. {
  333. if (LogicHandler.CheckStepAttribute(Tag.ToString(), User.UserSourceCode, out ErrorMessage))
  334. {
  335. //判断界面工单是否为空时的序列号是否自动归属工单
  336. string oStatus = "";
  337. if (!LogicHandler.GetMakeInfo(ms_sncode.Text, out oMakeCode, out oStatus, out ErrorMessage))
  338. {
  339. if (ma_code.Text == "")
  340. {
  341. OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, ms_sncode);
  342. return;
  343. }
  344. }
  345. if (LogicHandler.CheckStepSNAndMacode(ma_code.Text == "" ? oMakeCode : ma_code.Text, User.UserSourceCode, ms_sncode.Text, User.UserCode, out oMakeCode, out oMSID, out ErrorMessage))
  346. {
  347. dt = (DataTable)dh.ExecuteSql("select ma_code,ma_prodcode,ma_softversion,pr_spec,ma_qty from make left join product on ma_prodcode=pr_code where ma_code='" + oMakeCode + "'", "select");
  348. if (dt.Rows.Count > 0)
  349. {
  350. BaseUtil.SetFormValue(this.Controls, dt);
  351. LockMakeCode.Checked = true;
  352. }
  353. }
  354. else
  355. {
  356. OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, ms_sncode);
  357. return;
  358. }
  359. }
  360. else
  361. {
  362. OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, ms_sncode);
  363. return;
  364. }
  365. //int RejectCount = ChoosedRejectList.Items.Count;
  366. //string[] bccode = new string[RejectCount];
  367. //string[] bcremark = new string[RejectCount];
  368. //string[] bgcode = new string[RejectCount];
  369. //string[] bgname = new string[RejectCount];
  370. //string[] bcname = new string[RejectCount];
  371. //if (AutoBadCode.Checked)
  372. //{
  373. // string defaultvalue = Properties.Settings.Default.DefaultCollectionValue;
  374. // bccode = new string[] { defaultvalue };
  375. // bcremark = new string[] { defaultvalue };
  376. // bgcode = new string[] { defaultvalue };
  377. // bgname = new string[] { defaultvalue };
  378. // bcname = new string[] { defaultvalue };
  379. //}
  380. //else
  381. //{
  382. // if (ChoosedRejectList.Items.Count == 0)
  383. // {
  384. // OperateResult.AppendText(">>不良品必须选择不良原因和不良代码!\n", Color.Red);
  385. // return;
  386. // }
  387. // else
  388. // {
  389. // for (int i = 0; i < RejectCount; i++)
  390. // {
  391. // //获取不良代码组
  392. // bgcode[i] = ChoosedRejectList.Items[i].SubItems[1].Text.Split(':')[0];
  393. // //获取不良代码组名称
  394. // bgname[i] = ChoosedRejectList.Items[i].SubItems[1].Text.Split(':')[1];
  395. // //获取所有的不良代码
  396. // bccode[i] = ChoosedRejectList.Items[i].SubItems[2].Text;
  397. // //获取不良名称
  398. // bcname[i] = ChoosedRejectList.Items[i].SubItems[3].Text;
  399. // //获取所有的不良备注
  400. // bcremark[i] = bc_remark.Text;
  401. // }
  402. // }
  403. //}
  404. //如果之前是良品的
  405. dt = dh.getFieldsDataByCondition("makeserial", new string[] { "ms_status", "ms_checkno" }, "ms_id='" + oMSID + "' and ms_stepcode='" + User.CurrentStepCode + "'");
  406. if (dt.Rows.Count > 0)
  407. {
  408. string status = dt.Rows[0]["ms_status"].ToString();
  409. if (status == "1" || status == "2")
  410. {
  411. dh.UpdateByCondition("steppassed", "sp_result='不良品',sp_ifng=-1,sp_ymd=to_char(sysdate,'yyyymmdd'),sp_hm=to_char(sysdate,'hh24miss')", "sp_id=(select max(sp_id) from steppassed where sp_sncode='" + ms_sncode.Text + "')");
  412. dh.UpdateByCondition("makecraftdetail", "mcd_okqty=mcd_okqty-1", "mcd_macode='" + ma_code.Text + "' and mcd_stepcode='" + User.CurrentStepCode + "'");
  413. dh.UpdateByCondition("makeserial", "ms_nextstepcode='',ms_badtimes=nvl(ms_badtimes,0)+1", "ms_id='" + oMSID + "'");
  414. LogicHandler.InsertMakeProcess(ms_sncode.Text, ma_code.Text, User.UserSourceCode, "良品采集成不良", "测试不良", User.UserCode);
  415. LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, ma_code.Text, User.UserLineCode, User.UserSourceCode, "测试不良", "良品采集成不良", ms_sncode.Text, ob_checkno.Text);
  416. }
  417. string checkno = dt.Rows[0]["ms_checkno"].ToString();
  418. //存在抽检批次更新为空
  419. if (checkno != "")
  420. dh.UpdateByCondition("makeserial", "ms_checkno=''", "ms_id='" + oMSID + "'");
  421. }
  422. else
  423. {
  424. LogicHandler.InsertMakeProcess(ms_sncode.Text, ma_code.Text, User.UserSourceCode, "采集成不良", "测试不良", User.UserCode);
  425. LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, ma_code.Text, User.UserLineCode, User.UserSourceCode, "采集成不良", "测试不良", ms_sncode.Text, ob_checkno.Text);
  426. }
  427. //不良信息采集,mb_status<>0的是之前维修保存的,不能删除
  428. dh.ExecuteSql("delete from makebad where mb_sncode='" + ms_sncode.Text + "' and mb_makecode='" + ma_code.Text + "' and nvl(mb_status,0)=0", "delete");
  429. if (LogicHandler.SetTestNGDetail(ms_sncode.Text, ma_code.Text, User.UserCode, User.UserSourceCode, "检查未通过", out ErrorMessage))
  430. {
  431. ////存在的不良代码和
  432. //dt = (DataTable)dh.ExecuteSql("select sr_badcode from STEPRETURN where sr_stepcode='" + User.CurrentStepCode + "'", "select");
  433. //if (dt.Rows.Count > 0)
  434. //{
  435. // int BadCodeInStep = 0;
  436. // string badname = "";
  437. // for (int i = 0; i < dt.Rows.Count; i++)
  438. // {
  439. // for (int j = 0; j < bccode.Length; j++)
  440. // {
  441. // if (dt.Rows[i]["sr_badcode"].ToString() == bccode[j])
  442. // {
  443. // badname += "[" + bcname[j] + "]";
  444. // BadCodeInStep += 1;
  445. // }
  446. // }
  447. // }
  448. // //选中的不良代码必须全在工序默认的不良代码中才通过判断
  449. // if (BadCodeInStep == bccode.Length)
  450. // {
  451. // dh.UpdateByCondition("makebad", "mb_status=-1", "mb_sncode='" + ms_sncode.Text + "' and mb_makecode='" + ma_code.Text + "' and mb_stepcode='" + User.CurrentStepCode + "'");
  452. // dh.UpdateByCondition("makeserial", "ms_stepcode='',ms_status=1,ms_nextstepcode='" + User.CurrentStepCode + "'", "ms_id='" + oMSID + "'");
  453. // LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, ma_code.Text, User.UserLineCode, User.UserSourceCode, "快速维修成功", "快速维修", "", ob_checkno.Text);
  454. // OperateResult.AppendText(">>本次采集不良代码" + badname + "存在于本工序" + User.CurrentStepCode + "中,请解除故障后重新测试本站\n", Color.Black);
  455. // }
  456. // else OperateResult.AppendText(">>" + ms_sncode.Text + "成功采集为不良\n", Color.Green);
  457. //}
  458. //else
  459. OperateResult.AppendText(">>" + ms_sncode.Text + "成功采集为不良\n", Color.Green);
  460. LastSncode = ms_sncode.Text;
  461. //采集完不良,聚焦序列号
  462. ms_sncode.Focus();
  463. //记录操作日志
  464. ms_sncode.Text = "";
  465. //清除不良信息
  466. bc_code.Text = "";
  467. ChoosedRejectList.Items.Clear();
  468. LoadCollectedNum();
  469. WaitList.Clear();
  470. ChoosedList.Clear();
  471. }
  472. else OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red);
  473. }
  474. }
  475. else if (GoodProduct.Checked)
  476. {
  477. //如果不是返修的
  478. if (ifrework == "0")
  479. {
  480. dt = (DataTable)dh.ExecuteSql("select mb_id,bc_name,mbr_mbid from makebad left join makebadreason on mbr_mbid=mb_id left join badcode on mb_badcode=bc_code where mb_sncode='" + ms_sncode.Text + "' and mb_makecode='" + ma_code.Text + "' and mb_status=0", "select");
  481. for (int i = 0; i < dt.Rows.Count; i++)
  482. {
  483. if (dt.Rows[i]["mb_id"].ToString() != dt.Rows[i]["mbr_mbid"].ToString())
  484. ErrorMessage += "【" + dt.Rows[i]["bc_name"].ToString() + "】";
  485. }
  486. //存在不良记录
  487. if (ErrorMessage != "")
  488. {
  489. OperateResult.AppendText(">>序列号:" + ms_sncode.Text + " 已经判为不良品,不允许修改!\n", Color.Red);
  490. return;
  491. }
  492. else
  493. {
  494. //良品信息采集
  495. if (LogicHandler.SetStepResult(ma_code.Text, User.UserSourceCode, ms_sncode.Text, "良品采集", "检测合格", User.UserCode, out ErrorMessage))
  496. {
  497. //提示正确返回时传递的信息
  498. if (ErrorMessage.Contains("AFTERSUCCESS"))
  499. OperateResult.AppendText(">>" + ErrorMessage + "\n");
  500. LastSncode = ms_sncode.Text;
  501. OperateResult.AppendText(">>" + ms_sncode.Text + "良品采集成功\n", Color.Green, ms_sncode);
  502. //记录操作日志
  503. LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, ma_code.Text, User.UserLineCode, User.UserSourceCode, "采集良品", "采集良品成功", LastSncode, ob_checkno.Text);
  504. }
  505. else OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, ms_sncode);
  506. }
  507. }
  508. else
  509. {
  510. if (reworkstatus != "3")
  511. {
  512. if (LogicHandler.SetStepResult(ma_code.Text, User.UserSourceCode, ms_sncode.Text, "良品采集", "检测合格", User.UserCode, out ErrorMessage))
  513. {
  514. //提示正确返回时传递的信息
  515. if (ErrorMessage.Contains("AFTERSUCCESS"))
  516. OperateResult.AppendText(">>" + ErrorMessage + "\n");
  517. LastSncode = ms_sncode.Text;
  518. OperateResult.AppendText(">>" + ms_sncode.Text + "成功采集为良品\n", Color.Green, ms_sncode);
  519. //记录操作日志
  520. LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, ma_code.Text, User.UserLineCode, User.UserSourceCode, "采集良品", "采集良品成功", LastSncode, ob_checkno.Text);
  521. }
  522. else OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, ms_sncode);
  523. }
  524. else
  525. {
  526. OperateResult.AppendText(">>返修的不良序列号必须先进行维修\n", Color.Red);
  527. }
  528. }
  529. }
  530. //加载页面信息
  531. LoadCollectedNum();
  532. LoadCheckQTY();
  533. }
  534. private void 测试采集_SizeChanged(object sender, EventArgs e)
  535. {
  536. asc.controlAutoSize(this);
  537. }
  538. private void LoadCollectedNum()
  539. {
  540. dt = (DataTable)dh.ExecuteSql("select mcd_detno,mcd_stepcode,mcd_stepname,nvl(count(distinct A.ms_sncode),0) n,nvl(count(distinct B.ms_sncode),0) bn,(select nvl(count(distinct sp_sncode),0) from STEPPASSED where SP_MAKECODE = mcd_macode AND SP_STEPCODE = mcd_stepcode) mcd_inqty,(select nvl(count(distinct sp_sncode),0) from STEPPASSED where SP_MAKECODE = mcd_macode AND SP_STEPCODE = mcd_stepcode)-nvl(count(distinct B.ms_sncode),0) mcd_remainqty from MAKECRAFTdetail left join makeserial A on mcd_macode = A.ms_makecode and mcd_stepcode = A.ms_nextstepcode AND A.MS_STATUS = 1 LEFT JOIN MAKESERIAL B ON mcd_macode = B.ms_makecode AND MCD_STEPCODE = B.MS_STEPCODE AND B.MS_STATUS = 3 where mcd_macode = '"+ ma_code.Text + "' and mcd_stepcode = '"+ User.CurrentStepCode + "' group by mcd_macode,mcd_detno, mcd_stepcode, mcd_stepname order by mcd_detno asc", "select");
  541. BaseUtil.SetFormValue(Controls, dt);
  542. }
  543. private void Save_Click(object sender, EventArgs e)
  544. {
  545. if (ms_sncode.Text == "")
  546. {
  547. OperateResult.AppendText(">>序列号不允许为空\n", Color.Red);
  548. return;
  549. }
  550. if (GoodProduct.Checked)
  551. ms_code_KeyDown_one(sender, new KeyEventArgs(Keys.Enter));
  552. else if (Reject.Checked)
  553. {
  554. if (LogicHandler.CheckStepAttribute(Tag.ToString(), User.UserSourceCode, out ErrorMessage))
  555. {
  556. //判断界面工单是否为空时的序列号是否自动归属工单
  557. string oStatus = "";
  558. if (!LogicHandler.GetMakeInfo(ms_sncode.Text, out oMakeCode, out oStatus, out ErrorMessage))
  559. {
  560. if (ma_code.Text == "")
  561. {
  562. OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, ms_sncode);
  563. return;
  564. }
  565. }
  566. if (LogicHandler.CheckStepSNAndMacode(ma_code.Text == "" ? oMakeCode : ma_code.Text, User.UserSourceCode, ms_sncode.Text, User.UserCode, out oMakeCode, out oMSID, out ErrorMessage))
  567. {
  568. dt = (DataTable)dh.ExecuteSql("select ma_code,ma_prodcode,ma_softversion,pr_spec,ma_qty from make left join product on ma_prodcode=pr_code where ma_code='" + oMakeCode + "'", "select");
  569. if (dt.Rows.Count > 0)
  570. {
  571. BaseUtil.SetFormValue(this.Controls, dt);
  572. LockMakeCode.Checked = true;
  573. }
  574. }
  575. else
  576. {
  577. OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, ms_sncode);
  578. return;
  579. }
  580. }
  581. else
  582. {
  583. OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, ms_sncode);
  584. return;
  585. }
  586. int RejectCount = ChoosedRejectList.Items.Count;
  587. string[] bccode = new string[RejectCount];
  588. string[] bcremark = new string[RejectCount];
  589. string[] bgcode = new string[RejectCount];
  590. string[] bgname = new string[RejectCount];
  591. string[] bcname = new string[RejectCount];
  592. if (AutoBadCode.Checked)
  593. {
  594. string defaultvalue = Properties.Settings.Default.DefaultCollectionValue;
  595. bccode = new string[] { defaultvalue };
  596. bcremark = new string[] { defaultvalue };
  597. bgcode = new string[] { defaultvalue };
  598. bgname = new string[] { defaultvalue };
  599. bcname = new string[] { defaultvalue };
  600. }
  601. else
  602. {
  603. if (ChoosedRejectList.Items.Count == 0)
  604. {
  605. OperateResult.AppendText(">>不良品必须选择不良原因和不良代码!\n", Color.Red);
  606. return;
  607. }
  608. else
  609. {
  610. for (int i = 0; i < RejectCount; i++)
  611. {
  612. //获取不良代码组
  613. bgcode[i] = ChoosedRejectList.Items[i].SubItems[1].Text.Split(':')[0];
  614. //获取不良代码组名称
  615. bgname[i] = ChoosedRejectList.Items[i].SubItems[1].Text.Split(':')[1];
  616. //获取所有的不良代码
  617. bccode[i] = ChoosedRejectList.Items[i].SubItems[2].Text;
  618. //获取不良名称
  619. bcname[i] = ChoosedRejectList.Items[i].SubItems[3].Text;
  620. //获取所有的不良备注
  621. bcremark[i] = bc_remark.Text;
  622. }
  623. }
  624. }
  625. //如果之前是良品的
  626. dt = dh.getFieldsDataByCondition("makeserial", new string[] { "ms_status", "ms_checkno" }, "ms_id='" + oMSID + "' and ms_stepcode='" + User.CurrentStepCode + "'");
  627. if (dt.Rows.Count > 0)
  628. {
  629. string status = dt.Rows[0]["ms_status"].ToString();
  630. if (status == "1" || status == "2")
  631. {
  632. dh.UpdateByCondition("steppassed", "sp_result='不良品',sp_ifng=-1,sp_ymd=to_char(sysdate,'yyyymmdd'),sp_hm=to_char(sysdate,'hh24miss')", "sp_id=(select max(sp_id) from steppassed where sp_sncode='" + ms_sncode.Text + "')");
  633. dh.UpdateByCondition("makecraftdetail", "mcd_okqty=mcd_okqty-1", "mcd_macode='" + ma_code.Text + "' and mcd_stepcode='" + User.CurrentStepCode + "'");
  634. dh.UpdateByCondition("makeserial", "ms_nextstepcode='',ms_badtimes=nvl(ms_badtimes,0)+1", "ms_id='" + oMSID + "'");
  635. LogicHandler.InsertMakeProcess(ms_sncode.Text, ma_code.Text, User.UserSourceCode, "良品采集成不良", "测试不良", User.UserCode);
  636. LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, ma_code.Text, User.UserLineCode, User.UserSourceCode, "测试不良", "良品采集成不良", ms_sncode.Text, ob_checkno.Text);
  637. }
  638. string checkno = dt.Rows[0]["ms_checkno"].ToString();
  639. //存在抽检批次更新为空
  640. if (checkno != "")
  641. dh.UpdateByCondition("makeserial", "ms_checkno=''", "ms_id='" + oMSID + "'");
  642. }
  643. else
  644. {
  645. LogicHandler.InsertMakeProcess(ms_sncode.Text, ma_code.Text, User.UserSourceCode, "采集成不良", "测试不良", User.UserCode);
  646. LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, ma_code.Text, User.UserLineCode, User.UserSourceCode, "采集成不良", "测试不良", ms_sncode.Text, ob_checkno.Text);
  647. }
  648. //不良信息采集,mb_status<>0的是之前维修保存的,不能删除
  649. dh.ExecuteSql("delete from makebad where mb_sncode='" + ms_sncode.Text + "' and mb_makecode='" + ma_code.Text + "' and nvl(mb_status,0)=0", "delete");
  650. if (LogicHandler.SetTestNGDetail(ms_sncode.Text, ma_code.Text, User.UserCode, User.UserSourceCode, "检查未通过", bgcode, bccode, bgname, bcname, bcremark, out ErrorMessage))
  651. {
  652. //存在的不良代码和
  653. dt = (DataTable)dh.ExecuteSql("select sr_badcode from STEPRETURN where sr_stepcode='" + User.CurrentStepCode + "'", "select");
  654. if (dt.Rows.Count > 0)
  655. {
  656. int BadCodeInStep = 0;
  657. string badname = "";
  658. for (int i = 0; i < dt.Rows.Count; i++)
  659. {
  660. for (int j = 0; j < bccode.Length; j++)
  661. {
  662. if (dt.Rows[i]["sr_badcode"].ToString() == bccode[j])
  663. {
  664. badname += "[" + bcname[j] + "]";
  665. BadCodeInStep += 1;
  666. }
  667. }
  668. }
  669. //选中的不良代码必须全在工序默认的不良代码中才通过判断
  670. if (BadCodeInStep == bccode.Length)
  671. {
  672. dh.UpdateByCondition("makebad", "mb_status=-1", "mb_sncode='" + ms_sncode.Text + "' and mb_makecode='" + ma_code.Text + "' and mb_stepcode='" + User.CurrentStepCode + "'");
  673. dh.UpdateByCondition("makeserial", "ms_stepcode='',ms_status=1,ms_nextstepcode='" + User.CurrentStepCode + "'", "ms_id='" + oMSID + "'");
  674. LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, ma_code.Text, User.UserLineCode, User.UserSourceCode, "快速维修成功", "快速维修", "", ob_checkno.Text);
  675. OperateResult.AppendText(">>本次采集不良代码" + badname + "存在于本工序" + User.CurrentStepCode + "中,请解除故障后重新测试本站\n", Color.Black);
  676. }
  677. else OperateResult.AppendText(">>" + ms_sncode.Text + "成功采集为不良\n", Color.Green);
  678. }
  679. else OperateResult.AppendText(">>" + ms_sncode.Text + "成功采集为不良\n", Color.Green);
  680. LastSncode = ms_sncode.Text;
  681. //采集完不良,聚焦序列号
  682. ms_sncode.Focus();
  683. //记录操作日志
  684. ms_sncode.Text = "";
  685. //清除不良信息
  686. bc_code.Text = "";
  687. ChoosedRejectList.Items.Clear();
  688. LoadCollectedNum();
  689. WaitList.Clear();
  690. ChoosedList.Clear();
  691. }
  692. else OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red);
  693. }
  694. }
  695. private void bc_code_KeyDown(object sender, KeyEventArgs e)
  696. {
  697. if (e.KeyCode == Keys.Enter)
  698. {
  699. sql.Clear();
  700. sql.Append("select bg_code||':'||bg_name bg_code,bc_code,bc_name,'' bc_remark from badgroupdetail left join ");
  701. sql.Append("badgroup on bg_id=bgd_bgid left join badcode on bgd_badcode = bc_code where bc_code='" + bc_code.Text + "' and rownum=1 ");
  702. DataTable dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  703. if (dt.Rows.Count > 0)
  704. {
  705. for (int i = 0; i < ChoosedRejectList.Items.Count; i++)
  706. {
  707. if (ChoosedRejectList.Items[i].ListView.Items[i].SubItems[2].Text == bc_code.Text)
  708. {
  709. OperateResult.AppendText(">>已添加过不良代码" + bc_code.Text + "\n", Color.Red, bc_code);
  710. return;
  711. }
  712. }
  713. ListViewItem lvi = new ListViewItem();
  714. lvi.Text = "";
  715. for (int j = 0; j < dt.Columns.Count; j++)
  716. lvi.SubItems.Add(dt.Rows[0][j].ToString());
  717. ChoosedRejectList.Items.Add(lvi);
  718. bc_code.Clear();
  719. }
  720. else OperateResult.AppendText(">>" + bc_code.Text + "不良代码不存在\n", Color.Red, bc_code);
  721. }
  722. }
  723. private void LoadCheckQTY()
  724. {
  725. sql.Clear();
  726. string condition = "";
  727. int nowcheckqty = int.Parse(ob_nowcheckqty.Text == "" ? "0" : ob_nowcheckqty.Text);
  728. int batchqty = int.Parse(ob_batchqty.Text == "" ? "0" : ob_batchqty.Text);
  729. if (nowcheckqty + 1 == batchqty && AutoCut)
  730. {
  731. condition = "and ob_status='UNCHECK' and ob_checkno='" + ob_checkno.Text + "'";
  732. }
  733. else
  734. {
  735. condition = "and ob_status='ENTERING' ";
  736. }
  737. if (pr_sendchecktype.Text == "SaleCode")
  738. {
  739. condition += " and ob_salecode='" + ma_salecode.Text + "'";
  740. }
  741. sql.Append("select ob_batchqty,ob_nowcheckqty,ob_checkno from oqcbatch where ");
  742. sql.Append("ob_linecode='" + User.UserLineCode + "' and ob_prodcode='" + ma_prodcode.Text + "' and ");
  743. sql.Append("ob_stepcode='" + User.CurrentStepCode + "' " + condition);
  744. DataTable dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  745. if (dt.Rows.Count > 0)
  746. {
  747. ob_sendqty.Text = dh.getFieldDataByCondition("oqcbatch", "sum(ob_nowcheckqty)", "ob_makecode='" + ma_code.Text + "' and ob_status<>'ENTERING'").ToString();
  748. ob_batchqty.Text = dt.Rows[0]["ob_batchqty"].ToString();
  749. ob_nowcheckqty.Text = dt.Rows[0]["ob_nowcheckqty"].ToString();
  750. ob_checkno.Text = dt.Rows[0]["ob_checkno"].ToString();
  751. nowcheckqty = int.Parse(ob_nowcheckqty.Text == "" ? "0" : ob_nowcheckqty.Text);
  752. batchqty = int.Parse(ob_batchqty.Text == "" ? "0" : ob_batchqty.Text);
  753. if (nowcheckqty == batchqty)
  754. {
  755. ob_nowcheckqty.ForeColor = Color.Red;
  756. OperateResult.AppendText(">>当前采集数量已达到送检数量\n", Color.Red);
  757. if (AutoCut)
  758. {
  759. OperateResult.AppendText(">>批次" + ob_checkno.Text + "自动断批\n", Color.Blue);
  760. }
  761. }
  762. }
  763. else
  764. {
  765. BaseUtil.CleanControlsText(ob_batchqty, ob_nowcheckqty, ob_checkno);
  766. SendCheck.Enabled = false;
  767. }
  768. if (ob_batchqty.Text != "")
  769. {
  770. SendCheck.Enabled = true;
  771. }
  772. else
  773. {
  774. SendCheck.Enabled = false;
  775. }
  776. }
  777. private void GoodProduct_CheckedChanged(object sender, EventArgs e)
  778. {
  779. if (GoodProduct.Checked)
  780. {
  781. bc_code.Enabled = false;
  782. WaitReject.Enabled = false;
  783. ChooseedReject.Enabled = false;
  784. Save.Visible = false;
  785. }
  786. else
  787. {
  788. bc_code.Enabled = true;
  789. WaitReject.Enabled = true;
  790. ChooseedReject.Enabled = true;
  791. Save.Visible = true;
  792. }
  793. if (ms_sncode.Text == "")
  794. {
  795. ms_sncode.Focus();
  796. }
  797. }
  798. private void SendCheck_Click(object sender, EventArgs e)
  799. {
  800. sql.Clear();
  801. sql.Append("update oqcbatch set ob_status='UNCHECK' where ob_checkno ='" + ob_checkno.Text + "'");
  802. dh.ExecuteSql(sql.GetString(), "select");
  803. ob_sendqty.Text = dh.getFieldDataByCondition("oqcbatch", "sum(ob_nowcheckqty)", "ob_makecode='" + ma_code.Text + "' and ob_status<>'ENTERING'").ToString();
  804. ob_nowcheckqty.Text = "";
  805. ob_batchqty.Text = "";
  806. ob_nowcheckqty.ForeColor = Color.Black;
  807. SendCheck.Enabled = false;
  808. OperateResult.AppendText(">>批次" + ob_checkno.Text + "送检成功\n", Color.Blue);
  809. ms_sncode.Focus();
  810. LogicHandler.InsertMakeProcess(LastSncode, ma_code.Text, User.UserSourceCode, "手动送检", "手动送检成功", User.UserCode);
  811. //记录操作日志
  812. LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, ma_code.Text, User.UserLineCode, User.UserSourceCode, "手动送检", "手动送检成功", "", ob_checkno.Text);
  813. ob_checkno.Text = "";
  814. }
  815. private void ob_checkno_TextChanged(object sender, EventArgs e)
  816. {
  817. if (ob_checkno.Text != "")
  818. {
  819. string Cut = dh.getFieldDataByCondition("product left join oqcbatch on ob_prodcode=pr_code", "pr_ifautocutcheckno", "ob_checkno='" + ob_checkno.Text + "'").ToString();
  820. if (Cut == "" || Cut == "0")
  821. AutoCut = false;
  822. else
  823. AutoCut = true;
  824. SendCheck.Enabled = true;
  825. }
  826. }
  827. /// <summary>
  828. /// 工单变化修改数量
  829. /// </summary>
  830. /// <param name="sender"></param>
  831. /// <param name="e"></param>
  832. private void ma_code_UserControlTextChanged(object sender, EventArgs e)
  833. {
  834. if (ma_code.Text.Length > 4)
  835. {
  836. BaseUtil.CleanControlsText(mcd_inqty, mcd_remainqty, ob_batchqty, ob_nowcheckqty, ob_sendqty);
  837. LoadCollectedNum();
  838. LoadCheckQTY();
  839. }
  840. }
  841. private void Make_TestCollection_FormClosing(object sender, FormClosingEventArgs e)
  842. {
  843. dh.Dispose();
  844. }
  845. private void ma_prodcode_TextChanged(object sender, EventArgs e)
  846. {
  847. LoadBadGroupData();
  848. }
  849. private void Filter_UserControlTextChanged(object sender, EventArgs e)
  850. {
  851. try
  852. {
  853. DataRow[] dr = (BadInfSource.DataSource as DataTable).Select("bc_code like '%" + Filter.Text + "%' or bc_name like '%" + Filter.Text + "%'");
  854. DataTable dt = (BadInfSource.DataSource as DataTable).Clone();
  855. for (int i = 0; i < dr.Length; i++)
  856. {
  857. dt.Rows.Add(dr[i].ItemArray);
  858. }
  859. WaitRejectList.Items.Clear();
  860. WaitRejectList.BeginUpdate();
  861. for (int i = 0; i < dt.Rows.Count; i++)
  862. {
  863. if (!ChoosedList.Contains(dt.Rows[i]["bc_code"].ToString()))
  864. {
  865. ListViewItem lvi = new ListViewItem();
  866. //第一列是勾选列,设置列头文本为空
  867. lvi.Text = "";
  868. WaitList.Add(dt.Rows[i]["bc_code"].ToString());
  869. for (int j = 0; j < dt.Columns.Count; j++)
  870. lvi.SubItems.Add(dt.Rows[i][j].ToString());
  871. WaitRejectList.Items.Add(lvi);
  872. }
  873. }
  874. WaitRejectList.EndUpdate();
  875. }
  876. catch (Exception)
  877. {
  878. }
  879. }
  880. private void WaitRejectList_DoubleClick(object sender, EventArgs e)
  881. {
  882. for (int i = WaitRejectList.Items.Count - 1; i >= 0; i--)
  883. {
  884. if (WaitRejectList.Items[i].Checked)
  885. {
  886. //双击右移
  887. ChooseedReject.PerformClick();
  888. }
  889. }
  890. }
  891. private void Make_TestCollection_KeyDown(object sender, KeyEventArgs e)
  892. {
  893. if (e.Modifiers == Keys.Control && e.KeyCode == Keys.Q)
  894. {
  895. if (!LockSn)
  896. {
  897. ControlLockTimer.Start();
  898. LockSn = true;
  899. Lock_label.Visible = true;
  900. }
  901. else
  902. {
  903. ControlLockTimer.Stop();
  904. LockSn = false;
  905. Lock_label.Visible = false;
  906. }
  907. }
  908. }
  909. private void ms_code_KeyDown_one(object sender, KeyEventArgs e)
  910. {
  911. if (e.KeyCode == Keys.Enter)
  912. {
  913. if (SMTBind.Checked)
  914. {
  915. DataTable dt = (DataTable)dh.ExecuteSql("select A.SB_BARCODE from smtbind A LEFT JOIN SMTBIND B ON A.SB_MAINCODE = B.SB_MAINCODE WHERE B.SB_BARCODE = '" + ms_sncode.Text + "'", "select");
  916. if (dt.Rows.Count > 0)
  917. {
  918. for (int i = 0; i < dt.Rows.Count; i++)
  919. {
  920. ms_sncode.Text = dt.Rows[i]["sb_barcode"].ToString();
  921. ms_code_KeyDown(sender, new KeyEventArgs(Keys.Enter));
  922. }
  923. }
  924. else
  925. {
  926. OperateResult.AppendText(">>SN" + ms_sncode.Text + "未进行分板绑定\n", Color.Red, ms_sncode);
  927. }
  928. }
  929. else
  930. {
  931. ms_code_KeyDown(sender, new KeyEventArgs(Keys.Enter));
  932. }
  933. }
  934. }
  935. private void SMTBind_CheckedChanged(object sender, EventArgs e)
  936. {
  937. Settings.Default.SMTBIND = SMTBind.Checked;
  938. Settings.Default.Save();
  939. }
  940. }
  941. }