OQC_PlanMaintain_NEW.cs 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386
  1. using DevExpress.Charts.Native;
  2. using NPOI.SS.Formula.Functions;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using UAS_MES_NEW.DataOperate;
  10. using UAS_MES_NEW.Entity;
  11. using UAS_MES_NEW.PublicMethod;
  12. namespace UAS_MES_NEW.OQC
  13. {
  14. public partial class OQC_PlanMaintain_NEW : Form
  15. {
  16. AutoSizeFormClass asc = new AutoSizeFormClass();
  17. LogStringBuilder sql = new LogStringBuilder();
  18. DataTable dt;
  19. DataHelper dh;
  20. string ErrorMessage = "";
  21. DataTable Dbfind;
  22. public OQC_PlanMaintain_NEW()
  23. {
  24. InitializeComponent();
  25. }
  26. string pcd_okretuenstep = "";
  27. string pcd_ngretuenstep = "";
  28. private void 抽样计划维护_Load(object sender, EventArgs e)
  29. {
  30. asc.controllInitializeSize(this);
  31. dh = SystemInf.dh;
  32. pr_code.TableName = "QUA_Project";
  33. pr_code.SelectField = "pr_code # 方案编号,pr_name # 方案名称,pr_class # 检验单类型,pr_standard # 方案标准,pr_startdate # 生效日期,pr_enddate #失效日期 ,pr_status # 状态";
  34. pr_code.SetValueField = new string[] { "pr_code" };
  35. pr_code.FormName = Name;
  36. pr_code.DbChange += Pr_code_DbChange;
  37. GoodProduct.Checked = true;
  38. ChooseAll.ChooseAll(CheckTypeDGV);
  39. }
  40. private void Pr_code_DbChange(object sender, EventArgs e)
  41. {
  42. Dbfind = pr_code.ReturnData;
  43. BaseUtil.SetFormValue(this.Controls, Dbfind);
  44. }
  45. private void 抽样计划维护_SizeChanged(object sender, EventArgs e)
  46. {
  47. asc.controlAutoSize(this);
  48. }
  49. private void Clean_Click(object sender, EventArgs e)
  50. {
  51. OperateResult.Clear();
  52. }
  53. private void ob_projectcode_UserControlTextChanged(object sender, EventArgs e)
  54. {
  55. sql.Clear();
  56. sql.Append("select pd_itemname from QUA_PROJECT left join ");
  57. sql.Append(" QUA_ProjectDetail on pd_prid=pr_id left join QUA_CheckItem on pd_ciid=ci_id ");
  58. sql.Append(" where pr_code='" + pr_code.Text + "'");
  59. DataTable dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  60. BaseUtil.FillDgvWithDataTable(CheckTypeDGV, dt);
  61. }
  62. private void OQC_PlanMaintain_FormClosing(object sender, FormClosingEventArgs e)
  63. {
  64. dh.Dispose();
  65. }
  66. string oMakeCode = "";
  67. string oMSID = "";
  68. string ms_stepcode = "";
  69. string cd_steptype = "";
  70. private void ms_sncode_KeyDown(object sender, KeyEventArgs e)
  71. {
  72. if (Keys.Enter == e.KeyCode)
  73. {
  74. if (oMakeCode == "null")
  75. {
  76. oMakeCode = "";
  77. }
  78. if (LogicHandler.CheckStepSNAndMacode(oMakeCode, User.UserSourceCode, ms_sncode.Text, User.UserCode, out oMakeCode, out oMSID, out ErrorMessage))
  79. {
  80. DataTable dt = (DataTable)dh.ExecuteSql("select nvl(MS_IFQCCHECK,0)MS_IFQCCHECK,ms_stepcode,pr_detail,pr_spec,ms_prodcode,PR_QUALMETHOD,ms_craftcode,cd_steptype from makeserial "
  81. + " left join product on pr_code=ms_prodcode"
  82. + " left join craft on cr_code=ms_craftcode and cr_prodcode=ms_prodcode"
  83. + " left join craftdetail on cd_crid=cr_id and cd_stepcode=ms_stepcode"
  84. + " where ms_id='" + oMSID + "'", "select");
  85. if (dt.Rows.Count > 0)
  86. {
  87. ms_stepcode = dt.Rows[0]["ms_stepcode"].ToString();
  88. string ms_ifqccheck = dt.Rows[0]["MS_IFQCCHECK"].ToString();
  89. ms_prodcode.Text = dt.Rows[0]["ms_prodcode"].ToString();
  90. pr_detail.Text = dt.Rows[0]["pr_detail"].ToString();
  91. pr_code.Text = dt.Rows[0]["PR_QUALMETHOD"].ToString();
  92. //工序类型:按 产品编号+工艺路线编号+当前工序 到 craftdetail 取
  93. cd_steptype = dt.Rows[0]["cd_steptype"].ToString();
  94. if (ms_ifqccheck == "0")
  95. {
  96. OperateResult.AppendText(">>非QC抽检序列号,不允许采集\n", Color.Red);
  97. return;
  98. }
  99. }
  100. //取抽样计划明细:优先按工序类型匹配,匹配不到退回原逻辑
  101. GetProductCheckRate();
  102. }
  103. else
  104. {
  105. OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red);
  106. }
  107. ms_sncode.SelectAll();
  108. }
  109. }
  110. /// <summary>
  111. /// 取抽样计划明细(检验方案/OK回退工序/NG回退工序)
  112. /// 取值优先级:
  113. /// ① 先按「产品编号 + 当前工序 + 工序类型(pcd_steptype=cd_steptype)」匹配
  114. /// ② 匹配不到时去掉工序类型条件,退回按「产品编号 + 当前工序」匹配(即原有逻辑)
  115. /// 注意:若 cd_steptype 本身取不到(工艺未配置),第①步自动跳过,直接走原有逻辑;
  116. /// 调用前需保证 ms_prodcode.Text / ms_stepcode / cd_steptype 已赋值。
  117. /// </summary>
  118. private void GetProductCheckRate()
  119. {
  120. DataTable dtRate = null;
  121. //①优先按工序类型匹配
  122. if (cd_steptype != "")
  123. {
  124. dtRate = (DataTable)dh.ExecuteSql("select pcd_qualmethod,pcd_okretuenstep,pcd_ngretuenstep from productcheckrate left join PRODUCTCHECKRATEDETAIL on pcd_pcrid=pcr_id where pcr_prodcode='" + ms_prodcode.Text + "' and pcd_steptype='" + cd_steptype + "'", "select");
  125. }
  126. //②工序类型下没有数据,退回原有逻辑(不加 pcd_steptype 条件)
  127. if (dtRate == null || dtRate.Rows.Count == 0)
  128. {
  129. dtRate = (DataTable)dh.ExecuteSql("select pcd_qualmethod,pcd_okretuenstep,pcd_ngretuenstep from productcheckrate left join PRODUCTCHECKRATEDETAIL on pcd_pcrid=pcr_id where pcr_prodcode='" + ms_prodcode.Text + "' and pcd_stepcode='" + ms_stepcode + "'", "select");
  130. }
  131. if (dtRate.Rows.Count > 0)
  132. {
  133. pr_code.Text = dtRate.Rows[0]["pcd_qualmethod"].ToString();
  134. pcd_okretuenstep = dtRate.Rows[0]["pcd_okretuenstep"].ToString();
  135. pcd_ngretuenstep = dtRate.Rows[0]["pcd_ngretuenstep"].ToString();
  136. }
  137. }
  138. private void SaveData_Click(object sender, EventArgs e)
  139. {
  140. if (LogicHandler.CheckStepSNAndMacode(oMakeCode, User.UserSourceCode, ms_sncode.Text, User.UserCode, out oMakeCode, out oMSID, out ErrorMessage))
  141. {
  142. DataTable dt = (DataTable)dh.ExecuteSql("select nvl(MS_IFQCCHECK,0)MS_IFQCCHECK,pr_detail,pr_spec,ms_stepcode,ms_prodcode,PR_QUALMETHOD,ms_craftcode,cd_steptype from makeserial "
  143. + " left join product on pr_code=ms_prodcode"
  144. + " left join craft on cr_code=ms_craftcode and cr_prodcode=ms_prodcode"
  145. + " left join craftdetail on cd_crid=cr_id and cd_stepcode=ms_stepcode"
  146. + " where ms_id='" + oMSID + "'", "select");
  147. if (dt.Rows.Count > 0)
  148. {
  149. string ms_ifqccheck = dt.Rows[0]["MS_IFQCCHECK"].ToString();
  150. ms_stepcode = dt.Rows[0]["ms_stepcode"].ToString();
  151. ms_prodcode.Text = dt.Rows[0]["ms_prodcode"].ToString();
  152. pr_detail.Text = dt.Rows[0]["pr_detail"].ToString();
  153. //pr_code.Text = dt.Rows[0]["PR_QUALMETHOD"].ToString();
  154. //工序类型:按 产品编号+工艺路线编号+当前工序 到 craftdetail 取
  155. cd_steptype = dt.Rows[0]["cd_steptype"].ToString();
  156. if (ms_ifqccheck == "0")
  157. {
  158. OperateResult.AppendText(">>非QC抽检序列号,不允许采集\n", Color.Red);
  159. return;
  160. }
  161. }
  162. //取抽样计划明细:优先按工序类型匹配,匹配不到退回原逻辑
  163. GetProductCheckRate();
  164. }
  165. else
  166. {
  167. OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red);
  168. return;
  169. }
  170. List<string> oi_itemcode_insert = new List<string>();
  171. List<string> ois_ifng_insert = new List<string>();
  172. for (int i = 0; i < CheckTypeDGV.Rows.Count; i++)
  173. {
  174. Console.WriteLine(CheckTypeDGV.Rows[i].Cells["Choose"].FormattedValue);
  175. if (CheckTypeDGV.Rows[i].Cells["Choose"].FormattedValue.ToString() == "True")
  176. {
  177. oi_itemcode_insert.Add(CheckTypeDGV.Rows[i].Cells["pd_itemname"].Value.ToString());
  178. ois_ifng_insert.Add(CheckTypeDGV.Rows[i].Cells["CheckResult"].FormattedValue.ToString() == "True" ? "-1" : "0");
  179. }
  180. }
  181. if (oi_itemcode_insert.Count == 0)
  182. {
  183. OperateResult.AppendText(">>" + ms_sncode.Text + "必须勾选检验项目\n", Color.Green, ms_sncode);
  184. return;
  185. }
  186. if (GoodProduct.Checked)
  187. {
  188. sql.Clear();
  189. //when () then
  190. sql.Append("insert into OQCItemSamples (ois_id,ois_stepcode,ois_checkno,ois_makecode, ois_sncode,ois_projectcode,ois_itemcode,");
  191. sql.Append("ois_ifng,ois_defectlevel,ois_remark,ois_indate)select OQCItemSamples_seq.nextval,'" + ms_stepcode + "','','" + oMakeCode + "'");
  192. sql.Append(",'" + ms_sncode.Text + "','" + pr_code.Text + "',:ois_itemcode,:ois_ifng,'','',sysdate from dual ");
  193. //sql.Append("where not exists (select ois_id from OQCItemSamples where OIS_SNCODE='" + ms_sncode.Text + "' and ois_itemcode =:ois_itemcode)");
  194. dh.BatchInsert(sql.GetString(), new string[] { "ois_itemcode", "ois_ifng"/*, "ois_itemcode" */},
  195. oi_itemcode_insert.ToArray(), ois_ifng_insert.ToArray(), oi_itemcode_insert.ToArray());
  196. if (ReturnStep.Checked)
  197. {
  198. if (pcd_okretuenstep == "")
  199. {
  200. OperateResult.AppendText(">>回流工序为空,不允许回流\n", Color.Red, ms_sncode);
  201. return;
  202. }
  203. sql.Clear();
  204. sql.Append("select ms_craftcode,ms_outboxcode from makeserial left join craft on cr_prodcode=ms_prodcode and cr_code=ms_craftcode " +
  205. " left join craftdetail on cd_crid=cr_id where ms_id='" + oMSID + "' and cd_stepcode='" + pcd_okretuenstep + "'");
  206. dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  207. if (dt.Rows.Count > 0)
  208. {
  209. string ms_craftcode = dt.Rows[0]["ms_craftcode"].ToString();
  210. string ms_outboxcode = dt.Rows[0]["ms_outboxcode"].ToString();
  211. if (pcd_okretuenstep != "")
  212. {
  213. string stepno = dh.getFieldDataByCondition("craft left join craftdetail on cd_crid=cr_id", "cd_stepno", "cr_prodcode='" + ms_prodcode.Text + "' and cr_code='" + ms_craftcode + "' and cd_stepcode='" + pcd_okretuenstep + "'").ToString();
  214. if (stepno == "")
  215. {
  216. stepno = "100";
  217. }
  218. StringBuilder sql = new StringBuilder();
  219. sql.Append("update craftmaterial set cm_status=-1,CM_DROPMAN='" + User.UserName + "' where cm_stepcode in (select cd_stepcode from craft left join ");
  220. sql.Append("craftdetail on cd_crid = cr_id where cr_prodcode = '" + ms_prodcode.Text + "' and cd_detno >= " + stepno + ") ");
  221. sql.Append("and cm_sncode='" + ms_sncode.Text + "' and cm_makecode='" + oMakeCode + "'");
  222. dh.ExecuteSql(sql.ToString(), "update");
  223. dh.ExecuteSql("update makeserial set MS_IFQCCHECK=0,ms_outboxcode='',ms_nextstepcode='" + pcd_okretuenstep + "' where ms_id='" + oMSID + "'", "select");
  224. }
  225. else
  226. {
  227. dh.ExecuteSql("update makeserial set MS_IFQCCHECK=0,ms_outboxcode='' where ms_id='" + oMSID + "'", "select");
  228. }
  229. dh.ExecuteSql("delete from packagedetail where pd_outboxcode='" + ms_outboxcode + "' and pd_barcode='" + ms_sncode.Text + "'", "delete");
  230. //减少箱内容量
  231. dh.ExecuteSql("update package set pa_packageqty=pa_packageqty-1,pa_totalqty=pa_totalqty-1,pa_currentqty=pa_currentqty-1,pa_status=0 where pa_outboxcode='" + ms_outboxcode + "'", "update");
  232. }
  233. else
  234. {
  235. dh.ExecuteSql("delete from makeserial where ms_id='" + oMSID + "'", "delete");
  236. dh.ExecuteSql("update make set ma_inqty=ma_inqty-1 where ma_code='" + oMakeCode + "'", "update");
  237. dh.ExecuteSql("delete from steppassed where sp_sncode='" + ms_sncode.Text + "' and sp_makecode='" + oMakeCode + "'", "delete");
  238. dh.ExecuteSql("update craftmaterial set cm_status=-1 where cm_sncode='" + ms_sncode.Text + "' and cm_makecode='" + oMakeCode + "'", "update");
  239. dh.ExecuteSql("update makecraftdetail set mcd_inqty=mcd_inqty-1,mcd_outqty=mcd_outqty-1,mcd_okqty=mcd_okqty-1 where mcd_macode='" + oMakeCode + "' and instr((select ms_paststep from makeserial where ms_id='" + oMSID + "'),mcd_stepcode)>0 ", "update");
  240. //dh.ExecuteSql("update makeserial set ms_nextmacode='',ms_nextstepcode='" + pcd_ngretuenstep + "',ms_status=1 where ms_id='" + ms_id + "'", "update");
  241. dt = (DataTable)dh.ExecuteSql("select ms_id,ms_craftcode,ms_prodcode,ms_makecode from makeserial where ms_sncode='" + ms_sncode.Text + "' order by ms_id", "select");
  242. if (dt.Rows.Count > 0)
  243. {
  244. string ms_id = dt.Rows[0]["ms_id"].ToString();
  245. string ms_prodcode = dt.Rows[0]["ms_prodcode"].ToString();
  246. string ms_makecode = dt.Rows[0]["ms_makecode"].ToString();
  247. dh.ExecuteSql("update makeserial set ms_nextmacode='',ms_nextstepcode='" + pcd_okretuenstep + "',ms_status=1 where ms_id='" + ms_id + "'", "update");
  248. string stepno = dh.getFieldDataByCondition("makeserial left join craft on cr_code=ms_craftcode and ms_prodcode=cr_prodcode left join craftdetail on cd_crid=cr_id", "cd_stepno", "ms_id='" + ms_id + "' and cd_stepcode='" + pcd_okretuenstep + "'").ToString();
  249. if (stepno == "")
  250. {
  251. stepno = "100";
  252. }
  253. StringBuilder sql = new StringBuilder();
  254. sql.Append("update craftmaterial set cm_status=-1,CM_DROPMAN='" + User.UserName + "' where cm_stepcode in (select cd_stepcode from craft left join ");
  255. sql.Append("craftdetail on cd_crid = cr_id where cr_prodcode = '" + ms_prodcode + "' and cd_detno >= " + stepno + ") ");
  256. sql.Append("and cm_sncode='" + ms_sncode.Text + "' and cm_makecode='" + ms_makecode + "'");
  257. dh.ExecuteSql(sql.ToString(), "update");
  258. }
  259. }
  260. }
  261. dh.ExecuteSql("update makeserial set MS_IFQCCHECK=0 where ms_id='" + oMSID + "'", "select");
  262. //if (LogicHandler.SetStepResult(oMakeCode, User.UserSourceCode, ms_sncode.Text, "良品采集", "OK", User.UserCode, out ErrorMessage))
  263. //{
  264. LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, oMakeCode, User.UserLineCode, User.UserSourceCode, "采集良品", "采集良品成功", ms_sncode.Text, "");
  265. OperateResult.AppendText(">>" + ms_sncode.Text + "良品采集成功\n", Color.Green, ms_sncode);
  266. //}
  267. //else
  268. //{
  269. // OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, ms_sncode);
  270. //}
  271. }
  272. else
  273. {
  274. //if (LogicHandler.SetStepResult(oMakeCode, User.UserSourceCode, ms_sncode.Text, "不良品采集", "NG", User.UserCode, out ErrorMessage))
  275. //{
  276. sql.Clear();
  277. //when () then
  278. sql.Append("insert into OQCItemSamples (ois_id,ois_checkno,ois_makecode, ois_sncode,ois_projectcode,ois_itemcode,");
  279. sql.Append("ois_ifng,ois_defectlevel,ois_remark,ois_indate)select OQCItemSamples_seq.nextval,'','" + oMakeCode + "'");
  280. sql.Append(",'" + ms_sncode.Text + "','" + pr_code.Text + "',:ois_itemcode,:ois_ifng,'','',sysdate from dual ");
  281. //sql.Append("where not exists (select ois_id from OQCItemSamples where OIS_SNCODE='" + ms_sncode.Text + "' and ois_itemcode =:ois_itemcode)");
  282. dh.BatchInsert(sql.GetString(), new string[] { "ois_itemcode", "ois_ifng"/*, "ois_itemcode" */},
  283. oi_itemcode_insert.ToArray(), ois_ifng_insert.ToArray(), oi_itemcode_insert.ToArray());
  284. dh.ExecuteSql("update makeserial set MS_IFQCCHECK=0,ms_status=3,ms_nextstepcode='' where ms_id='" + oMSID + "'", "select");
  285. dh.ExecuteSql("insert into makebad(MB_ID, MB_MAKECODE, MB_MSCODE, MB_SNCODE, MB_INMAN, MB_INDATE, MB_STEPCODE, MB_SOURCECODE, MB_BADCODE, MB_BGCODE, " +
  286. "MB_BADNAME, MB_BGNAME, MB_YMD, MB_LINECODE, MB_TYPE, MB_RETURNSTEP)values(makebad_seq.nextval,'" + oMakeCode + "','" + ms_sncode.Text + "','" + ms_sncode.Text + "'," +
  287. "'" + User.UserCode + "',sysdate,'" + ms_stepcode + "','" + User.UserSourceCode + "','QCError','QCError','抽检不良','客户抽检不良'," +
  288. "to_char(sysdate,'yyyymmdd'),'" + User.UserLineCode + "','Client','" + pcd_ngretuenstep + "')", "insert");
  289. if (ReturnStep.Checked)
  290. {
  291. sql.Clear();
  292. sql.Append("select ms_craftcode,ms_outboxcode,ms_sncode from makeserial left join craft on cr_prodcode=ms_prodcode and cr_code=ms_craftcode " +
  293. " left join craftdetail on cd_crid=cr_id where ms_id='" + oMSID + "' and cd_stepcode='" + pcd_ngretuenstep + "'");
  294. dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  295. if (dt.Rows.Count > 0)
  296. {
  297. string ms_craftcode = dt.Rows[0]["ms_craftcode"].ToString();
  298. string ms_outboxcode = dt.Rows[0]["ms_outboxcode"].ToString();
  299. if (pcd_ngretuenstep == "")
  300. {
  301. OperateResult.AppendText(">>回流工序为空,不允许回流\n", Color.Red, ms_sncode);
  302. return;
  303. }
  304. if (pcd_ngretuenstep != "")
  305. {
  306. string stepno = dh.getFieldDataByCondition("craft left join craftdetail on cd_crid=cr_id", "cd_stepno", "cr_prodcode='" + ms_prodcode.Text + "' and cr_code='" + ms_craftcode + "' and cd_stepcode='" + pcd_ngretuenstep + "'").ToString();
  307. if (stepno == "")
  308. {
  309. stepno = "100";
  310. }
  311. StringBuilder sql = new StringBuilder();
  312. sql.Append("update craftmaterial set cm_status=-1,CM_DROPMAN='" + User.UserName + "' where cm_stepcode in (select cd_stepcode from craft left join ");
  313. sql.Append("craftdetail on cd_crid = cr_id where cr_prodcode = '" + ms_prodcode.Text + "' and cd_detno >= " + stepno + ") ");
  314. sql.Append("and cm_sncode='" + ms_sncode.Text + "' and cm_makecode='" + oMakeCode + "'");
  315. dh.ExecuteSql(sql.ToString(), "update");
  316. dh.ExecuteSql("update makeserial set MS_IFQCCHECK=0,ms_outboxcode='',ms_nextstepcode='" + pcd_ngretuenstep + "' where ms_id='" + oMSID + "'", "select");
  317. }
  318. else
  319. {
  320. dh.ExecuteSql("update makeserial set MS_IFQCCHECK=0,ms_outboxcode='' where ms_id='" + oMSID + "'", "select");
  321. }
  322. dh.ExecuteSql("delete from packagedetail where pd_outboxcode='" + ms_outboxcode + "' and pd_barcode='" + ms_sncode.Text + "'", "delete");
  323. //减少箱内容量
  324. dh.ExecuteSql("update package set pa_packageqty=pa_packageqty-1,pa_totalqty=pa_totalqty-1,pa_currentqty=pa_currentqty-1,pa_status=0 where pa_outboxcode='" + ms_outboxcode + "'", "update");
  325. }
  326. else
  327. {
  328. dh.ExecuteSql("delete from makeserial where ms_id='" + oMSID + "'", "delete");
  329. dh.ExecuteSql("update make set ma_inqty=ma_inqty-1 where ma_code='" + oMakeCode + "'", "update");
  330. dh.ExecuteSql("delete from steppassed where sp_sncode='" + ms_sncode.Text + "' and sp_makecode='" + oMakeCode + "'", "delete");
  331. dh.ExecuteSql("update craftmaterial set cm_status=-1 where cm_sncode='" + ms_sncode.Text + "' and cm_makecode='" + oMakeCode + "'", "update");
  332. dh.ExecuteSql("update makecraftdetail set mcd_inqty=mcd_inqty-1,mcd_outqty=mcd_outqty-1,mcd_okqty=mcd_okqty-1 where mcd_macode='" + oMakeCode + "' and instr((select ms_paststep from makeserial where ms_id='" + oMSID + "'),mcd_stepcode)>0 ", "update");
  333. dt = (DataTable)dh.ExecuteSql("select ms_id,ms_craftcode,ms_prodcode,ms_makecode from makeserial where ms_sncode='" + ms_sncode.Text + "' order by ms_id", "select");
  334. if (dt.Rows.Count > 0)
  335. {
  336. string ms_id = dt.Rows[0]["ms_id"].ToString();
  337. string ms_prodcode = dt.Rows[0]["ms_prodcode"].ToString();
  338. string ms_makecode = dt.Rows[0]["ms_makecode"].ToString();
  339. dh.ExecuteSql("update makeserial set ms_nextmacode='',ms_nextstepcode='',ms_status=3 where ms_id='" + ms_id + "'", "update");
  340. string stepno = dh.getFieldDataByCondition("makeserial left join craft on cr_code=ms_craftcode and ms_prodcode=cr_prodcode left join craftdetail on cd_crid=cr_id", "cd_stepno", "ms_id='" + ms_id + "' and cd_stepcode='" + pcd_okretuenstep + "'").ToString();
  341. if (stepno == "")
  342. {
  343. stepno = "100";
  344. }
  345. StringBuilder sql = new StringBuilder();
  346. sql.Append("update craftmaterial set cm_status=-1,CM_DROPMAN='" + User.UserName + "' where cm_stepcode in (select cd_stepcode from craft left join ");
  347. sql.Append("craftdetail on cd_crid = cr_id where cr_prodcode = '" + ms_prodcode + "' and cd_detno >= " + stepno + ") ");
  348. sql.Append("and cm_sncode='" + ms_sncode.Text + "' and cm_makecode='" + ms_makecode + "'");
  349. dh.ExecuteSql(sql.ToString(), "update");
  350. }
  351. }
  352. }
  353. LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, oMakeCode, User.UserLineCode, User.UserSourceCode, "采集不良品", "采集不良品成功", ms_sncode.Text, "");
  354. OperateResult.AppendText(">>" + ms_sncode.Text + "不良品采集成功\n", Color.Green, ms_sncode);
  355. //}
  356. //else
  357. //{
  358. // OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, ms_sncode);
  359. //}
  360. }
  361. BaseUtil.CleanDGVData(CheckTypeDGV);
  362. ms_prodcode.Clear();
  363. pr_detail.Clear();
  364. pr_code.Text = "";
  365. }
  366. }
  367. }