Packing_CartonTransfer.cs 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using UAS_MES.DataOperate;
  10. using UAS_MES.Entity;
  11. using UAS_MES.PublicMethod;
  12. namespace UAS_MES.Packing
  13. {
  14. public partial class Packing_CartonTransfer : Form
  15. {
  16. AutoSizeFormClass asc = new AutoSizeFormClass();
  17. DataTable dt;
  18. DataTable dt1;
  19. DataTable dtbar;
  20. DataTable dtst;
  21. LogStringBuilder sql = new LogStringBuilder();
  22. DataHelper dh;
  23. //目标箱号相关变量
  24. string new_pa_downstatus;
  25. string new_pa_currentqty;
  26. string new_pa_standardqty;
  27. string new_pa_packtype;
  28. string new_pa_prodcode;
  29. string new_pa_salecode;
  30. string new_pa_checkno;
  31. string new_ob_result;
  32. public Packing_CartonTransfer()
  33. {
  34. InitializeComponent();
  35. }
  36. private void 卡通箱转移_Load(object sender, EventArgs e)
  37. {
  38. asc.controllInitializeSize(this);
  39. dh = new DataHelper();
  40. movepack.Focus();
  41. OperateResult.AppendText(">>请输入目标箱号\n", Color.Black);
  42. }
  43. private void 卡通箱转移_SizeChanged(object sender, EventArgs e)
  44. {
  45. asc.controlAutoSize(this);
  46. }
  47. private void movepack_Click(object sender, EventArgs e)
  48. {
  49. if (((RadioButton)sender).Checked == true)
  50. {
  51. if (((RadioButton)sender).Name == "movepack")
  52. {
  53. pa_standardqty.Enabled = false;
  54. pa_outboxcode.Focus();
  55. }
  56. else if (((RadioButton)sender).Name == "newpack")
  57. {
  58. pa_standardqty.Enabled = true;
  59. pa_outboxcode.Focus();
  60. }
  61. }
  62. }
  63. private void pa_outboxcode_KeyDown(object sender, KeyEventArgs e)
  64. {
  65. if (e.KeyCode == Keys.Enter)
  66. {
  67. if (newpack.Checked)
  68. {
  69. if (dh.CheckExist("package", "pa_outboxcode = '" + pa_outboxcode.Text + "'"))
  70. {
  71. OperateResult.AppendText(">>该箱号" + pa_outboxcode.Text + "已经存在,如需转移至已经存在的箱号,请选择移箱\n", Color.Red, pa_outboxcode);
  72. pa_outboxcode.Focus();
  73. return;
  74. }
  75. }
  76. else if (movepack.Checked)
  77. {
  78. CheckBoxCode();
  79. }
  80. }
  81. }
  82. private void sn_code_KeyDown(object sender, KeyEventArgs e)
  83. {
  84. if (e.KeyCode == Keys.Enter)
  85. {
  86. string ms_id = dh.getFieldDataByCondition("makeserial", "max(ms_id) ms_id", "ms_sncode = '" + sn_code.Text + "'").ToString();
  87. if (ms_id != "")
  88. {
  89. OperateResult.AppendText(">>序列号:" + sn_code.Text + "\n", Color.Black);
  90. sql.Clear();
  91. sql.Append("select ms_id,ms_prodcode,ms_outboxcode,ms_makecode ms_msmakecode, ms_sccode,");
  92. sql.Append("nvl(ms_currentstepcode,ms_stepcode ) laststepcode, ms_sccode lastsccode,");
  93. sql.Append("ms_checkno from makeserial where ms_id='" + ms_id + "'");
  94. dt1 = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  95. string ms_outboxcode = dt1.Rows[0]["ms_outboxcode"].ToString();
  96. string msprodcode = dt1.Rows[0]["ms_prodcode"].ToString();
  97. string ms_makecode = dt1.Rows[0]["ms_msmakecode"].ToString();
  98. if (ms_outboxcode != "")
  99. {
  100. sql.Clear();
  101. sql.Append("select pa_id,pa_checkno,PA_CURRENTQTY pa_qty,PA_PACKTYPE,nvl(PA_DOWNSTATUS,0) PA_DOWNSTATUS,pa_prodcode pa_macode,pa_salecode,pa_level,pa_custcode,pa_type,pa_packtype from package where pa_outboxcode='" + ms_outboxcode + "'");
  102. dtbar = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  103. if (dtbar.Rows.Count > 0)
  104. {
  105. string PA_PACKTYPE = dtbar.Rows[0]["PA_PACKTYPE"].ToString();
  106. string pa_checkno = dtbar.Rows[0]["pa_checkno"].ToString();
  107. string PA_DOWNSTATUS = dtbar.Rows[0]["PA_DOWNSTATUS"].ToString();
  108. string old_pa_id = dtbar.Rows[0]["pa_id"].ToString();
  109. string ob_result = dh.getFieldDataByCondition("oqcbatch", "ob_result", "ob_checkno = '" + pa_checkno + "'").ToString();
  110. if (PA_DOWNSTATUS == "0")
  111. {
  112. BaseUtil.SetFormValue(this.Controls, dtbar);
  113. BaseUtil.SetFormValue(this.Controls, dt1);
  114. if (PA_PACKTYPE == "MIX")
  115. {
  116. ms_prodcode.Text = "混包";
  117. }
  118. else if (PA_PACKTYPE == "SALE")
  119. {
  120. ms_msmakecode.Text = pa_salecode.Text;
  121. }
  122. if (newpack.Checked)
  123. {
  124. if (ob_result == "")
  125. {
  126. if (pa_standardqty.Text != "")
  127. {
  128. if (pa_outboxcode.Text != "")
  129. {
  130. if (dh.CheckExist("package", "pa_outboxcode = '" + pa_outboxcode.Text + "'"))
  131. {
  132. OperateResult.AppendText(">>该箱号" + pa_outboxcode.Text + "已经存在,如需转移至已经存在的箱号,请选择移箱\n", Color.Red, pa_outboxcode);
  133. pa_outboxcode.Focus();
  134. return;
  135. }
  136. else
  137. {
  138. string pa_id = dh.GetSEQ("package_seq");
  139. //新增箱
  140. sql.Clear();
  141. sql.Append("insert into package (PA_ID, PA_OUTBOXCODE,PA_PRODCODE, PA_PACKDATE,");
  142. sql.Append("PA_LEVEL,PA_PACKAGEQTY,PA_TOTALQTY,PA_MAKECODE,PA_STATUS,PA_INDATE,");
  143. sql.Append("PA_SALECODE,PA_CUSTCODE,PA_TYPE,PA_CURRENTQTY,PA_PACKTYPE,PA_STANDARDQTY)");
  144. sql.Append("values ('" + pa_id + "','" + pa_outboxcode.Text + "','" + msprodcode + "',sysdate,'" + pa_level.Text + "','0','0'");
  145. sql.Append(",'" + ms_makecode + "','0',sysdate,'" + pa_salecode.Text + "','" + pa_custcode.Text + "','" + pa_type.Text + "','0','" + pa_packtype.Text + "','" + pa_standardqty.Text + "')");
  146. dh.ExecuteSql(sql.GetString(), "insert");
  147. //删除原明细
  148. dh.ExecuteSql("delete from packagedetail where pd_paid='" + old_pa_id + "'", "delete");
  149. sql.Clear();
  150. sql.Append("insert into packagedetail (PD_ID,PD_PAID,PD_OUTBOXCODE,PD_BARCODE,PD_INNERQTY,PD_PRODCODE,PD_MAKECODE,PD_BUILDDATE,PD_YMD)");
  151. sql.Append("values (packagedetail_seq.nextval,'" + pa_id + "','" + pa_outboxcode.Text + "','" + sn_code.Text + "','1','" + msprodcode + "','" + ms_makecode + "',sysdate,to_char(sysdate,'yyyymmdd'))");
  152. dh.ExecuteSql(sql.GetString(), "insert");
  153. //更新原箱数量
  154. dh.UpdateByCondition("package", "pa_currentqty=pa_currentqty-1", "pa_outboxcode = '" + ms_outboxcode + "'");
  155. //更新目标箱数量
  156. dh.UpdateByCondition("package", "pa_currentqty=1, pa_totalqty=1,pa_packageqty=1", "pa_outboxcode = '" + pa_outboxcode.Text + "'");
  157. dh.UpdateByCondition("makeserial", "ms_outboxcode = '" + pa_outboxcode.Text + "'", "ms_id = '" + ms_id + "'");
  158. LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, ms_makecode, User.UserLineCode, User.UserSourceCode, "卡通箱转移", "卡通箱转移,生成目标箱号" + pa_outboxcode.Text + "", sn_code.Text, "");
  159. LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, ms_makecode, User.UserLineCode, User.UserSourceCode, "卡通箱转移", "序列号:" + sn_code.Text + ",从原箱号:" + ms_outboxcode + "转移至目标箱号:" + pa_outboxcode.Text + "", sn_code.Text, "");
  160. OperateResult.AppendText(">>序列号:" + sn_code.Text + ",从原箱号:" + ms_outboxcode + "转移至目标箱号:" + pa_outboxcode.Text + "\n", Color.Green);
  161. movepack.Focus();
  162. pa_outboxcode_KeyDown(sender, e);
  163. }
  164. }
  165. else
  166. {
  167. OperateResult.AppendText(">>必须填写新增目标箱号\n", Color.Red);
  168. return;
  169. }
  170. }
  171. else
  172. {
  173. OperateResult.AppendText(">>新增目标箱号必须填写标准容量\n", Color.Red);
  174. return;
  175. }
  176. }
  177. else
  178. {
  179. OperateResult.AppendText(">>原箱" + ms_outboxcode + "处于送检状态,不允许转移\n", Color.Red, sn_code);
  180. return;
  181. }
  182. }
  183. else if (movepack.Checked)
  184. {
  185. if (CheckBoxCode())
  186. {
  187. if (PA_PACKTYPE != new_pa_packtype)
  188. {
  189. OperateResult.AppendText(">>原箱" + ms_outboxcode + "和目标箱号" + pa_outboxcode.Text + "的包装方式不一致,不允许转移\n", Color.Red, sn_code);
  190. return;
  191. }
  192. if (PA_PACKTYPE != "MIX")
  193. {
  194. if (ms_prodcode.Text != new_pa_prodcode)
  195. {
  196. OperateResult.AppendText(">>原箱号和目标箱号(目标箱产品编号" + new_pa_prodcode + ")的产品编号不一致,不允许转移\n", Color.Red, sn_code);
  197. return;
  198. }
  199. if (PA_PACKTYPE != "SALE")
  200. {
  201. if (pa_salecode.Text != new_pa_salecode)
  202. {
  203. OperateResult.AppendText(">>原箱号和目标箱号的合同号不一致,不允许转移\n", Color.Red, sn_code);
  204. return;
  205. }
  206. }
  207. }
  208. if (pa_checkno != new_pa_checkno)
  209. {
  210. if ((pa_checkno == "" && new_pa_checkno != "") || (pa_checkno != "" && new_pa_checkno == ""))
  211. {
  212. if (pa_checkno != "" && ob_result == "")
  213. {
  214. OperateResult.AppendText(">>原箱号处于送检状态,不允许转移\n", Color.Red, sn_code);
  215. return;
  216. }
  217. if (new_pa_checkno != "" && new_pa_checkno == "")
  218. {
  219. OperateResult.AppendText(">>目标箱号处于送检状态,不允许转移\n", Color.Red, sn_code);
  220. return;
  221. }
  222. }
  223. if (pa_checkno != "" && new_pa_checkno != "")
  224. {
  225. string a_ob_result = dh.getFieldDataByCondition("oqcbatch", "ob_status", "ob_checkno = '" + pa_checkno + "'").ToString();
  226. string b_ob_result = dh.getFieldDataByCondition("oqcbatch", "ob_status", "ob_checkno = '" + new_pa_checkno + "'").ToString();
  227. if (!((a_ob_result == b_ob_result) && (b_ob_result == "OK" || b_ob_result == "NG")))
  228. {
  229. OperateResult.AppendText(">>原箱号和目标箱号必须抽检完成,并且结果一致才可以转移\n", Color.Red, sn_code);
  230. return;
  231. }
  232. }
  233. }
  234. string new_laststepcode = dh.getFieldDataByCondition("packagedetail inner join makeserial on ms_outboxcode=pd_outboxcode and ms_sncode=pd_barcode and ms_prodcode = pd_prodcode", "max(nvl(ms_currentstepcode,ms_stepcode))", "pd_outboxcode='" + pa_outboxcode.Text + "'").ToString();
  235. if (new_laststepcode != laststepcode.Text)
  236. {
  237. OperateResult.AppendText(">>目标箱号中的序列号最后所在工序与所录入序列号最后所在工序不一致\n", Color.Red, sn_code);
  238. return;
  239. }
  240. //删除原明细
  241. dh.ExecuteSql("delete from packagedetail where pd_paid='" + old_pa_id + "'", "delete");
  242. //更新操作
  243. sql.Clear();
  244. sql.Append("insert into packagedetail (PD_ID,PD_PAID,PD_OUTBOXCODE,PD_BARCODE,PD_INNERQTY,PD_PRODCODE,PD_MAKECODE,PD_BUILDDATE,PD_YMD)");
  245. sql.Append("values (packagedetail_seq.nextval,'" + old_pa_id + "','" + pa_outboxcode.Text + "','" + sn_code.Text + "','1','" + msprodcode + "','" + ms_makecode + "',sysdate,to_char(sysdate,'yyyymmdd'))");
  246. dh.ExecuteSql(sql.GetString(), "insert");
  247. //更新原箱数量
  248. dh.UpdateByCondition("package", "pa_currentqty=pa_currentqty-1", "pa_outboxcode = '" + ms_outboxcode + "'");
  249. //更新目标箱数量
  250. dh.UpdateByCondition("package", "pa_currentqty=nvl(pa_currentqty,0)+ 1,pa_totalqty=nvl(pa_totalqty,0)+1,pa_packageqty=nvl(pa_packageqty ,0)+1", "pa_outboxcode = '" + pa_outboxcode.Text + "'");
  251. dh.UpdateByCondition("makeserial", "ms_outboxcode = '" + pa_outboxcode.Text + "'", "ms_id = '" + ms_id + "'");
  252. LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, ms_makecode, User.UserLineCode, User.UserSourceCode, "卡通箱转移", "序列号:" + sn_code.Text + ",从原箱号:" + ms_outboxcode + "转移至目标箱号:" + pa_outboxcode.Text + "", sn_code.Text, "");
  253. OperateResult.AppendText(">>序列号:" + sn_code.Text + ",从原箱号:" + ms_outboxcode + "转移至目标箱号:" + pa_outboxcode.Text + "\n", Color.Green);
  254. movepack.Focus();
  255. pa_outboxcode_KeyDown(sender, e);
  256. }
  257. }
  258. }
  259. else
  260. {
  261. OperateResult.AppendText(">>原箱" + ms_outboxcode + "已经下地\n", Color.Red, sn_code);
  262. return;
  263. }
  264. }
  265. else
  266. {
  267. OperateResult.AppendText(">>序列号" + sn_code.Text + "未装箱\n", Color.Red, sn_code);
  268. return;
  269. }
  270. }
  271. else
  272. {
  273. OperateResult.AppendText(">>序列号" + sn_code.Text + "未装箱\n", Color.Red, sn_code);
  274. return;
  275. }
  276. }
  277. else
  278. {
  279. OperateResult.AppendText(">>序列号" + sn_code.Text + "不存在\n", Color.Red, sn_code);
  280. return;
  281. }
  282. }
  283. }
  284. private Boolean CheckBoxCode()
  285. {
  286. sql.Clear();
  287. sql.Append("select pa_id,pa_outboxcode,pa_checkno,pa_standardqty,nvl(pa_currentqty,0) pa_currentqty,pa_packtype,pa_prodcode,nvl(pa_downstatus,0) pa_downstatus,pa_salecode from package where pa_outboxcode='" + pa_outboxcode.Text + "'");
  288. dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  289. if (dt.Rows.Count > 0)
  290. {
  291. new_pa_downstatus = dt.Rows[0]["pa_downstatus"].ToString();
  292. new_pa_currentqty = dt.Rows[0]["pa_currentqty"].ToString();
  293. new_pa_standardqty = dt.Rows[0]["pa_standardqty"].ToString();
  294. new_pa_packtype = dt.Rows[0]["pa_packtype"].ToString();
  295. new_pa_prodcode = dt.Rows[0]["pa_prodcode"].ToString();
  296. new_pa_salecode = dt.Rows[0]["pa_salecode"].ToString();
  297. new_pa_checkno = dt.Rows[0]["pa_checkno"].ToString();
  298. new_ob_result = dh.getFieldDataByCondition("oqcbatch", "ob_result", "ob_checkno = '" + new_pa_checkno + "'").ToString();
  299. if (new_pa_downstatus != "0")
  300. {
  301. OperateResult.AppendText(">>该目标箱号" + pa_outboxcode.Text + "处于下地状态,不允许操作\n", Color.Red, pa_outboxcode);
  302. OperateResult.AppendText(">>请输入目标箱号\n", Color.Black);
  303. pa_outboxcode.Focus();
  304. return false;
  305. }
  306. else if (new_pa_currentqty == new_pa_standardqty)
  307. {
  308. OperateResult.AppendText(">>目标箱号" + pa_outboxcode.Text + "已装满\n", Color.Red, pa_outboxcode);
  309. OperateResult.AppendText(">>请输入目标箱号\n", Color.Black);
  310. pa_outboxcode.Focus();
  311. return false;
  312. }
  313. BaseUtil.SetFormValue(this.Controls, dt);
  314. return true;
  315. }
  316. else
  317. {
  318. OperateResult.AppendText(">>该目标箱号" + pa_outboxcode.Text + "不存在\n", Color.Red, pa_outboxcode);
  319. OperateResult.AppendText(">>请输入目标箱号\n", Color.Black);
  320. pa_outboxcode.Focus();
  321. return false;
  322. }
  323. }
  324. private void button1_Click(object sender, EventArgs e)
  325. {
  326. BaseUtil.CleanControls(this.Controls);
  327. }
  328. }
  329. }