Packing_PackageCollection.cs 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526
  1. using LabelManager2;
  2. using System;
  3. using System.Data;
  4. using System.Windows.Forms;
  5. using UAS_MES_NEW.DataOperate;
  6. using UAS_MES_NEW.Entity;
  7. using UAS_MES_NEW.PublicMethod;
  8. using System.Drawing;
  9. using System.Threading;
  10. using UAS_MES_NEW.PublicForm;
  11. using System.Collections.Generic;
  12. using System.Diagnostics;
  13. using System.Runtime.InteropServices;
  14. using DevExpress.Printing.Core.PdfExport.Metafile;
  15. using System.Net.Sockets;
  16. using System.Text;
  17. using System.IO;
  18. using UAS_MES_NEW.Make;
  19. using FastReport;
  20. //using Seagull.BarTender.Print;
  21. namespace UAS_MES_NEW.Packing
  22. {
  23. public partial class Packing_PackageCollection : Form
  24. {
  25. DataHelper dh;
  26. DataTable dt;
  27. LogStringBuilder sql = new LogStringBuilder();
  28. AutoSizeFormClass asc = new AutoSizeFormClass();
  29. ApplicationClass lbl;
  30. BarTender.Application engine;
  31. Thread thread;
  32. DataTable Dbfind;
  33. string ErrorMessage = "";
  34. string oMakeCode = "";
  35. string oMsID = "";
  36. string oMsStatus = "";
  37. string oOutBoxCode = "";
  38. decimal StandardQTY = 0;
  39. string LastSncode;
  40. Document doc;
  41. string PR_CHECKCARTONW = "0";
  42. ModeBusTCPServer md;
  43. private TcpClient tcpClient1;
  44. private NetworkStream stream1;
  45. private Thread receiveThread1;
  46. private TcpClient tcpClient2;
  47. private NetworkStream stream2;
  48. private Thread receiveThread2;
  49. private TcpClient tcpClient3;
  50. private NetworkStream stream3;
  51. private Thread receiveThread3;
  52. public Packing_PackageCollection()
  53. {
  54. InitializeComponent();
  55. }
  56. //创建打印进程
  57. private void NewPrint()
  58. {
  59. try
  60. {
  61. //engine = new BarTender.Application();
  62. //lbl = new ApplicationClass();
  63. //BaseUtil.WriteLbl();
  64. }
  65. catch (Exception ex)
  66. {
  67. OperateResult.AppendText("未正确安装打印软件\n" + ex.Message, Color.Red);
  68. }
  69. }
  70. string chooseprintername;
  71. string label_type = "";
  72. string label_name = "";
  73. private void PackCollection_Load(object sender, EventArgs e)
  74. {
  75. // 杀死之前全部未关闭的进程
  76. Process[] processes = System.Diagnostics.Process.GetProcessesByName("lppa");
  77. Process[] processes1 = System.Diagnostics.Process.GetProcessesByName("bartend");
  78. for (int i = 0; i < processes1.Length; i++)
  79. {
  80. processes1[i].Kill();
  81. }
  82. for (int i = 0; i < processes.Length; i++)
  83. {
  84. processes[i].Kill();
  85. }
  86. pb_name.FormName = Name;
  87. pb_name.TableName = "ProductBrand";
  88. pb_name.SetValueField = new string[] { "pb_name" };
  89. pb_name.SelectField = "pb_name # 品牌";
  90. pb_name.DBTitle = "品牌";
  91. pb_name.Condition = "pr_keydepartment = '-1'";
  92. pb_name.DbChange += Cd_stepcode_DbChange;
  93. //设置DbFind的必须的数据
  94. asc.controllInitializeSize(this);
  95. thread = new Thread(NewPrint);
  96. thread.Start();
  97. md = new ModeBusTCPServer();
  98. dh = SystemInf.dh;
  99. button2_Click(sender,e);
  100. button3_Click(sender,e);
  101. button4_Click(sender,e);
  102. }
  103. private void Cd_stepcode_DbChange(object sender, EventArgs e)
  104. {
  105. Dbfind = pb_name.ReturnData;
  106. BaseUtil.SetFormValue(this.Controls, Dbfind);
  107. }
  108. private void PackCollection_SizeChanged(object sender, EventArgs e)
  109. {
  110. asc.controlAutoSize(this);
  111. }
  112. private void PackCollection_Activated(object sender, EventArgs e)
  113. {
  114. pi_inoutno.Focus();
  115. }
  116. //刷新表单的数据的数据
  117. private void LoadData()
  118. {
  119. LoadCollectedNum();
  120. }
  121. private void LoadGridData()
  122. {
  123. //加载Grid数据
  124. dt = (DataTable)dh.ExecuteSql(" select pd_piid,pd_prodcode,pr_detail,pr_spec||pr_orispeccode pr_spec,sum(pd_inqty)qty,NVL(PDAQTY,0)PDAQTY from prodiodetail left join SCM_BARCODEIO_IN_VIEW2 on pd_piid = bi_piid and pd_prodcode = bi_prodcode " +
  125. "left join product on pd_prodcode = pr_code where pd_inoutno ='"+pi_inoutno.Text+ "' group by pd_piid,pd_prodcode,pr_detail,pr_spec||pr_orispeccode,PDAQTY" +
  126. " ", "select");
  127. BaseUtil.FillDgvWithDataTable(PackageDetail, dt);
  128. }
  129. private void Print_Click(object sender, EventArgs e)
  130. {
  131. }
  132. //加载工单信息和装箱明细信息
  133. private void pa_code_KeyDown(object sender, KeyEventArgs e)
  134. {
  135. if (e.KeyCode == Keys.Enter)
  136. {
  137. if (!dh.CheckExist("prodinout left join DOCUMENTSETUP on pi_class = ds_name ", "pi_inoutno = '" + pi_inoutno.Text + "' and DS_INOROUT = 'IN' "))
  138. {
  139. OperateResult.AppendText(">>入库单" + pi_inoutno.Text + "不存在\n", Color.Red, pi_inoutno);
  140. return;
  141. }
  142. dt = (DataTable)dh.ExecuteSql(" select * from prodinout where pi_inoutno = '" + pi_inoutno.Text + "' ", "select");
  143. BaseUtil.SetFormValue(this.Controls, dt);
  144. LoadGridData();
  145. }
  146. }
  147. //输入序列号的回车事件
  148. private void barcode_KeyDown(object sender, KeyEventArgs e)
  149. {
  150. }
  151. private void Clean_Click(object sender, EventArgs e)
  152. {
  153. OperateResult.Clear();
  154. }
  155. DataTable _dt;
  156. private void pr_code_TextChanged(object sender, EventArgs e)
  157. {
  158. }
  159. private void PackCollection_FormClosing(object sender, FormClosingEventArgs e)
  160. {
  161. BaseUtil.ClosePrint(lbl);
  162. if (engine != null)
  163. engine.Quit(BarTender.BtSaveOptions.btDoNotSaveChanges);
  164. if (stream1 != null)
  165. {
  166. stream1.Close();
  167. }
  168. if (tcpClient1 != null)
  169. {
  170. tcpClient1.Close();
  171. }
  172. if (stream2 != null)
  173. {
  174. stream2.Close();
  175. }
  176. if (tcpClient2 != null)
  177. {
  178. tcpClient2.Close();
  179. }
  180. dh.Dispose();
  181. }
  182. private void Packing_Click(object sender, EventArgs e)
  183. {
  184. }
  185. bool AutoCut;
  186. private void PrintLabel_SelectedValueChanged(object sender, EventArgs e)
  187. {
  188. }
  189. private void DeleteAll_Click(object sender, EventArgs e)
  190. {
  191. }
  192. private void LoadCollectedNum()
  193. {
  194. }
  195. private void pa_remark_KeyDown(object sender, KeyEventArgs e)
  196. {
  197. }
  198. private void PreFix_KeyDown(object sender, KeyEventArgs e)
  199. {
  200. }
  201. private void BuildServer_Click(object sender, EventArgs e)
  202. {
  203. }
  204. private void CloseServer_Click(object sender, EventArgs e)
  205. {
  206. if (md.IsOpen)
  207. {
  208. md.Close();
  209. OperateResult.AppendText(">>服务关闭成功\n");
  210. }
  211. else
  212. OperateResult.AppendText(">>服务尚未开启\n");
  213. }
  214. private void Remark_PreFix_KeyDown(object sender, KeyEventArgs e)
  215. {
  216. }
  217. private void PackageDetail_CellContentClick(object sender, DataGridViewCellEventArgs e)
  218. {
  219. }
  220. private void button2_Click(object sender, EventArgs e)
  221. {
  222. if (tcpClient1==null)
  223. {
  224. tcpClient1 = new TcpClient("127.0.0.1", 8001);
  225. stream1 = tcpClient1.GetStream();
  226. // 启动接收数据的线程
  227. receiveThread1 = new Thread(new ThreadStart(ReceiveData1));
  228. receiveThread1.Start();
  229. }
  230. }
  231. private void button3_Click(object sender, EventArgs e)
  232. {
  233. if (tcpClient2 == null)
  234. {
  235. tcpClient2 = new TcpClient("127.0.0.1", 8002);
  236. stream2 = tcpClient2.GetStream();
  237. // 启动接收数据的线程
  238. receiveThread2 = new Thread(new ThreadStart(ReceiveData2));
  239. receiveThread2.Start();
  240. }
  241. }
  242. private void ReceiveData1()
  243. {
  244. byte[] buffer = new byte[1024];
  245. int bytesRead;
  246. Report Report = new Report();
  247. Report.Load(System.AppDomain.CurrentDomain.BaseDirectory + @"\成品3030.frx");
  248. while (tcpClient1.Connected)
  249. {
  250. try
  251. {
  252. bytesRead = stream1.Read(buffer, 0, buffer.Length);
  253. if (bytesRead == 0)
  254. {
  255. // 如果没有读取到数据,可能是连接已经关闭
  256. OperateResult.AppendText("8001端口未连接\n", Color.Red);
  257. break;
  258. }
  259. string receivedData = Encoding.Default.GetString(buffer, 0, bytesRead);
  260. OperateResult.AppendText("ReceiveData1" + receivedData + "\n", Color.Black);
  261. if (pi_inoutno.Text != "" && pb_name.Text != "")
  262. {
  263. string barcode = receivedData.Replace("A,ReadId1,", "").Replace("~","");
  264. string message = "";
  265. string prodcode = "";
  266. string qty = "";
  267. string lotno = "";
  268. string[] param = new string[] { barcode, pb_name.Text, message, prodcode , qty, lotno };
  269. dh.CallProcedure("SP_BARCODEIO_PARSE",ref param);
  270. message = param[2];
  271. if (message != "null")
  272. {
  273. OperateResult.AppendText(message+"\n", Color.Red);
  274. SendData1("A,ReadId1,1");
  275. }
  276. else
  277. {
  278. prodcode = param[3];
  279. qty = param[4];
  280. lotno = param[5];
  281. dt = (DataTable)dh.ExecuteSql("select * from ( select pd_piid,pd_prodcode,pr_detail,pr_spec,sum(pd_inqty)qty,NVL(PDAQTY,0)PDAQTY from prodiodetail left join SCM_BARCODEIO_IN_VIEW2 on pd_piid = bi_piid and pd_prodcode = bi_prodcode " +
  282. " left join product on pd_prodcode = pr_code where pd_inoutno ='"+pi_inoutno.Text+"' group by pd_piid,pd_prodcode,pr_detail,pr_spec,PDAQTY " +
  283. " ) where pd_prodcode = '"+prodcode+"' and qty-pdaqty >="+qty+" ", "select");
  284. if (dt.Rows.Count > 0)
  285. {
  286. string code = "";
  287. string[] param1 = new string[] { "","", code };
  288. dh.CallProcedure("SP_GETBARCODE", ref param1);
  289. code = param1[2].Replace("BARCODE:","");
  290. dh.ExecuteSql(" insert into barcodeio(bi_id,bi_barcode,bi_piid,bi_piclass,bi_inoutno,bi_prodcode,bi_whcode,bi_inqty,bi_madedate,bi_indate,bi_content)" +
  291. " values (barcodeio_seq.nextval,'"+code+"','"+pi_id.Text+"','"+pi_class.Text+"','"+pi_inoutno.Text+"','"+prodcode+"','"+pi_whcode.Text+"',"+qty+",sysdate,sysdate,'"+barcode+"') ", "insert");
  292. LoadGridData();
  293. OperateResult.AppendText("条码:"+barcode+"采集成功\n", Color.Green);
  294. DataTable dtbarcode = (DataTable)dh.ExecuteSql(" select '"+code+ "' BAN_BARCODE,'"+ dt.Rows[0]["pd_prodcode"].ToString() + "' BAN_PRODCODE" +
  295. " ,'"+ dt.Rows[0]["pr_spec"].ToString() + "' PR_DETAIL,'"+qty+ "' BAN_QTY from dual ", "select");
  296. Report.PrintSettings.ShowDialog = false;
  297. Report.PrintSettings.Printer = PrintList.Text;
  298. Report.RegisterData(dtbarcode, "VENDORBARCODE_VIEW");
  299. Report.GetDataSource("VENDORBARCODE_VIEW").Enabled = true;
  300. Report.Print();
  301. SendData1("A,ReadId1,0");
  302. }
  303. else
  304. {
  305. OperateResult.AppendText("料号:" +prodcode+"数量:"+qty+ "不满足入库需求,无法入库\n", Color.Red);
  306. SendData1("A,ReadId1,1");
  307. }
  308. }
  309. }
  310. else
  311. {
  312. OperateResult.AppendText("入库单与品牌不可为空\n", Color.Red);
  313. SendData1("A,ReadId1,1");
  314. }
  315. //Console.WriteLine("Received: {0}", receivedData);
  316. }
  317. catch (Exception ex)
  318. {
  319. Console.WriteLine("8001端口异常" + ex.Message + "\n", Color.Red);
  320. }
  321. }
  322. // 清理资源
  323. if (stream1 != null)
  324. {
  325. stream1.Close();
  326. }
  327. if (tcpClient1 != null)
  328. {
  329. tcpClient1.Close();
  330. }
  331. }
  332. private void ReceiveData2()
  333. {
  334. byte[] buffer = new byte[1024];
  335. int bytesRead;
  336. while (tcpClient2.Connected)
  337. {
  338. try
  339. {
  340. bytesRead = stream2.Read(buffer, 0, buffer.Length);
  341. if (bytesRead == 0)
  342. {
  343. // 如果没有读取到数据,可能是连接已经关闭
  344. OperateResult.AppendText("8002端口未连接\n", Color.Red);
  345. break;
  346. }
  347. string receivedData = Encoding.Default.GetString(buffer, 0, bytesRead);
  348. OperateResult.AppendText("ReceiveData2" + receivedData + "\n", Color.Black);
  349. //Console.WriteLine("Received: {0}", receivedData);
  350. string barcode = receivedData.Replace("A,ReadId3,", "").Split('~')[0];
  351. string code = receivedData.Replace("A,ReadId3,", "").Split('~')[1];
  352. if (dh.CheckExist("barcodeio", "bi_barcode = '" + code + "' and bi_content = '" + barcode + "'"))
  353. {
  354. OperateResult.AppendText("原厂条码:" + barcode + "与内部条码:" + code + "匹配成功\n", Color.Green);
  355. SendData2("A,ReadId3,0");
  356. }
  357. else
  358. {
  359. OperateResult.AppendText("原厂条码:"+barcode+"与内部条码:"+code+"匹配失败\n", Color.Red);
  360. SendData2("A,ReadId3,1");
  361. }
  362. }
  363. catch (Exception ex)
  364. {
  365. OperateResult.AppendText("8002端口异常" + ex.Message + "\n", Color.Red);
  366. }
  367. }
  368. // 清理资源
  369. if (stream2 != null)
  370. {
  371. stream2.Close();
  372. }
  373. if (tcpClient2 != null)
  374. {
  375. tcpClient2.Close();
  376. }
  377. }
  378. private void SendData1(String data)
  379. {
  380. OperateResult.AppendText("SendData1"+data +"\n", Color.Black);
  381. if (stream1 != null && stream1.CanWrite)
  382. {
  383. byte[] buffer = Encoding.Default.GetBytes(data);
  384. stream1.Write(buffer, 0, buffer.Length);
  385. }
  386. }
  387. private void SendData2(String data)
  388. {
  389. OperateResult.AppendText("SendData2"+data + "\n", Color.Black);
  390. if (stream2 != null && stream2.CanWrite)
  391. {
  392. byte[] buffer = Encoding.Default.GetBytes(data);
  393. stream2.Write(buffer, 0, buffer.Length);
  394. }
  395. }
  396. private void DataIn_KeyDown(object sender, KeyEventArgs e)
  397. {
  398. if (e.KeyCode == Keys.Enter)
  399. {
  400. }
  401. }
  402. private void button1_Click(object sender, EventArgs e)
  403. {
  404. Make_BarcodeDetail badcode = new Make_BarcodeDetail(pi_inoutno.Text);
  405. BaseUtil.SetFormCenter(badcode);
  406. badcode.ShowDialog();
  407. }
  408. private void pb_name_UserControlTextChanged(object sender, EventArgs e)
  409. {
  410. if (pb_name.Text != null)
  411. {
  412. SendData1("A,LoadTemplate,{" + pb_name.Text + "}");
  413. }
  414. }
  415. private void button4_Click(object sender, EventArgs e)
  416. {
  417. if (tcpClient3 == null)
  418. {
  419. tcpClient3 = new TcpClient("127.0.0.1", 8003);
  420. stream3 = tcpClient3.GetStream();
  421. // 启动接收数据的线程
  422. receiveThread3 = new Thread(new ThreadStart(ReceiveData3));
  423. receiveThread3.Start();
  424. }
  425. }
  426. private void ReceiveData3()
  427. {
  428. // throw new NotImplementedException();
  429. }
  430. }
  431. }