| using System; | 
| using System.Collections.Generic; | 
| using System.Linq; | 
| using System.Text; | 
| using System.Threading; | 
| using DevComponents.DotNetBar.Controls; | 
| using System.Windows.Forms; | 
| using System.Drawing; | 
| //using com.force.json; | 
| using System.Data; | 
| using System.Data.SqlClient; | 
|   | 
| namespace WCS | 
| { | 
|     /// <summary> | 
|     /// 回报处理线程 | 
|     /// </summary> | 
|     class UpdateThread | 
|     { | 
|         #region 画面上同步显示控件 | 
|         public ListViewEx frmdata; | 
|         delegate void SetTextCallback(string seq, string Errif, string arg_string); | 
|         #endregion | 
|   | 
|         Thread trd = null; | 
|   | 
|         public UpdateThread() | 
|         { | 
|             try | 
|             { | 
|                 trd = new Thread(new ThreadStart(this.ThreadTask)); | 
|                 trd.IsBackground = true; | 
|                 trd.Start(); | 
|             } | 
|             catch (Exception em) | 
|             { | 
|                 Common.WriteLogFile("WcsError", "UpdateThread/UpdateThread--回报线程启动出错:" + em.Message); | 
|             } | 
|         } | 
|   | 
|         #region 通讯反馈同步显示 | 
|         /// <summary> | 
|         /// 显示处理信息 | 
|         /// </summary> | 
|         /// <param name="text"></param> | 
|         private void DisplayInfo(string seq, string Errif, string arg_string) | 
|         { | 
|             if (frmdata == null) | 
|             { | 
|                 return; | 
|             } | 
|             if (frmdata.InvokeRequired) | 
|             { | 
|                 try | 
|                 { | 
|                     SetTextCallback d = new SetTextCallback(DisplayInfo); | 
|                     frmdata.Invoke(d, new object[] { seq, Errif, arg_string }); | 
|                 } | 
|                 catch (Exception em) | 
|                 { | 
|                     Common.WriteLogFile("WcsError", "UpdateThread/DisplayInfo--同步回报信息失败:" + em.Message); | 
|                 } | 
|             } | 
|             else | 
|             { | 
|                 add_dw_log(seq, Errif, arg_string); | 
|                 if (frmdata.Items.Count > 200) | 
|                 { | 
|                     frmdata.Items.Clear(); ; | 
|                 } | 
|             } | 
|   | 
|         } | 
|   | 
|         /// <summary> | 
|         /// 添加ListView界面显示 | 
|         /// </summary> | 
|         /// <param name="le">listview</param> | 
|         /// <param name="seq">需要</param> | 
|         /// <param name="Errif">异常信息</param> | 
|         /// <param name="arg_string">显示内容</param> | 
|         public void add_dw_log(string seq, string Errif, string arg_string) | 
|         { | 
|             try | 
|             { | 
|                 ListViewItem lvi = new ListViewItem(); | 
|                 lvi.SubItems[0].Text = "【" + DateTime.Now.ToString() + "】" + seq + arg_string; | 
|                 if (Errif == "N") | 
|                 { | 
|                     lvi.ForeColor = Color.Black; | 
|                 } | 
|                 else if (Errif == "E") | 
|                 { | 
|                     lvi.ForeColor = Color.Red; | 
|                 } | 
|                 else if (Errif == "P") | 
|                 { | 
|                     lvi.ForeColor = Color.Blue; | 
|                 } | 
|                 frmdata.Items.Add(lvi); | 
|                 frmdata.EnsureVisible(frmdata.Items.Count - 1); | 
|             } | 
|             catch (Exception em) | 
|             { | 
|                 ListViewItem lvi = new ListViewItem(); | 
|                 lvi.SubItems[0].Text = "【" + DateTime.Now.ToString() + "】" + seq + arg_string + "异常:" + em.Message; | 
|                 frmdata.Items.Add(lvi); | 
|                 Common.WriteLogFile("WcsError", "UpdateThread/add_dw_log--回报添加界面显示出错:" + em.Message); | 
|             } | 
|         } | 
|         #endregion | 
|   | 
|         #region 业务处理 | 
|         /// <summary> | 
|         /// 生成出库工作档 | 
|         /// </summary> | 
|         public void ProcOutToWorkData(string seq) | 
|         { | 
|             string ls_locno = ""; | 
|             string ls_error_memo = "", sql = ""; | 
|             int li_wrkno = 0, li_io_type = 0, li_stnNo = 0, li_e_stnNo = 0; | 
|             DateTime ldt_date = System.DateTime.Now; | 
|             double d_outQty = 0, d_stkQty = 0; | 
|             int action = 0, prnstatus = 0; | 
|   | 
|             DisplayInfo(seq, "N", " --处理出库通知档,生成出库工作档......"); | 
|   | 
|             try | 
|             { | 
|                 //查找最早一条待出库库位 | 
|                 sql = "select top 1 vlpla from cust_wait_pakout where status<>'Y' and nltyp<>'A01' order by status,modi_time"; | 
|                 DataView dvLoc = Common.ExecAsrsSelect(sql); | 
|                 if (dvLoc.Count <= 0) | 
|                 { | 
|                     return; | 
|                 } | 
|                 foreach (DataRowView drow in dvLoc) | 
|                 { | 
|                     ls_locno = drow[0].ToString(); | 
|                 } | 
|                 if (ls_locno == "") | 
|                 { | 
|                     return; | 
|                 } | 
|   | 
|                 //查询库位号是否在库状态,并查询条码号 | 
|                 sql = "select loc_no,barcode from asr_loc_mast where loc_no='" + ls_locno + "' and loc_sts='F'"; | 
|                 string barcode = ""; | 
|                 DataView dv = Common.ExecAsrsSelect(sql); | 
|                 if (dv.Count <= 0) | 
|                 { | 
|                     ls_error_memo = "   " + seq + ".1 库位" + ls_locno + "不存在或非在库状态,请检查"; | 
|                     DisplayInfo("", "E", ls_error_memo); | 
|                     goto re; | 
|                 } | 
|                 else | 
|                 { | 
|                     foreach (DataRowView drow in dv) | 
|                     { | 
|                         barcode = drow[1].ToString(); | 
|                     } | 
|                 } | 
|   | 
|                 //根据库位号查找该库位所有出库资料 | 
|                 sql = "select lgnum,tanum,tapos,matnr,maktx,werks,vsolm,meins,bname "; | 
|                 sql += " from cust_wait_pakout where status<>'Y' and nltyp<>'A01' and vlpla='" + ls_locno + "' order by status,modi_time"; | 
|                 dv = Common.ExecAsrsSelect(sql); | 
|                 if (dv.Count <= 0) | 
|                 { | 
|                     return; | 
|                 } | 
|                 li_wrkno = Common.GetWrkno(0); | 
|                 string sqlDetl = "", sqlWaitIn = ""; | 
|                 foreach (DataRowView drow in dv) | 
|                 { | 
|                     string lgnum = drow[0].ToString(); | 
|                     string tanum = drow[1].ToString(); | 
|                     string tapos = drow[2].ToString(); | 
|                     string matnr = drow[3].ToString(); | 
|                     string maktx = drow[4].ToString(); | 
|                     string werks = drow[5].ToString(); | 
|                     string vsolm = drow[6].ToString(); | 
|                     string meins = drow[7].ToString(); | 
|                     string bname = drow[8].ToString(); | 
|                     sqlDetl += " insert into asr_wrk_detl(wrk_no,io_time,lgnum,tbnum,tbpos,matnr,maktx,werks,anfme,altme,bname,zpallet) "; | 
|                     sqlDetl += " values(" + li_wrkno + ",'" + ldt_date + "','" + lgnum + "'," + tanum + "," + tapos + ", "; | 
|                     sqlDetl += " '" + matnr + "','" + maktx + "','" + werks + "'," + vsolm + ",'" + meins + "','" + bname + "','" + barcode + "');"; | 
|                     sqlWaitIn += " update cust_wait_pakout set status='Y' where lgnum='" + lgnum + "' and tanum=" + tanum + " and tapos=" + tapos + " and vlpla=" + ls_locno + ";"; | 
|                     d_outQty += double.Parse(vsolm); | 
|                 } | 
|                 DisplayInfo("", "P", "   " + seq + ".2 正在处理待出库资料!库位:" + ls_locno); | 
|   | 
|                 //查询库位号对应库存明细总数量 | 
|                 sql = "select sum(anfme) from asr_loc_detl where loc_no='" + ls_locno + "' "; | 
|                 dv = Common.ExecAsrsSelect(sql); | 
|                 if (dv.Count <= 0) | 
|                 { | 
|                     ls_error_memo = "   " + seq + ".3 库位" + ls_locno + "没有库存明细,请检查"; | 
|                     DisplayInfo("", "E", ls_error_memo); | 
|                     goto re; | 
|                 } | 
|                 else | 
|                 { | 
|                     foreach (DataRowView drow in dv) | 
|                     { | 
|                         d_stkQty += double.Parse(drow[0].ToString()); | 
|                     } | 
|                 } | 
|   | 
|                 int li_crnrow = int.Parse(ls_locno.Substring(0, 2)); | 
|                 int li_crnno = (li_crnrow + 1) / 2; | 
|                 string new_loc_sts = ""; | 
|                 if (d_outQty < d_stkQty) | 
|                 { | 
|                     li_io_type = 103; | 
|                     new_loc_sts = "P"; | 
|                     li_e_stnNo = 4; | 
|                     li_stnNo = Common.getIoStaNo(li_io_type, li_crnno, li_e_stnNo); | 
|                     action = 2;         //单独打印 | 
|                     //prnstatus = 0;      //默认等待,拣料站更新 | 
|                 } | 
|                 else if (d_outQty == d_stkQty) | 
|                 { | 
|                     li_io_type = 101; | 
|                     new_loc_sts = "R"; | 
|                     li_e_stnNo = 13; | 
|                     li_stnNo = Common.getIoStaNo(li_io_type, li_crnno, li_e_stnNo); | 
|                     action = 3;         //既打印又确认 | 
|                     //prnstatus = 0;      //默认等待,拣料站更新 | 
|                 } | 
|                 else | 
|                 { | 
|                     ls_error_memo = "   " + seq + ".4 库位" + ls_locno + "通知出库数量超出库存数量,请检查"; | 
|                     DisplayInfo("", "E", ls_error_memo); | 
|                     goto re; | 
|                 } | 
|   | 
|                 sqlWaitIn = sqlWaitIn.Replace("update cust_wait_pakout set", "update cust_wait_pakout set action=" + action + ","); | 
|   | 
|                 sql = sqlDetl; | 
|                 sql += "insert into asr_wrk_mast(wrk_no,io_time,wrk_sts,io_type,crn_no,io_pri,source_loc_no,sta_no,source_sta_no,barcode) "; | 
|                 sql += " values(" + li_wrkno + ",'" + ldt_date + "',11," + li_io_type + "," + li_crnno + ",13,'" + ls_locno + "', "; | 
|                 sql += " " + li_e_stnNo + "," + li_stnNo + ",'" + barcode + "'); "; | 
|                 sql += " update asr_loc_mast set loc_sts='" + new_loc_sts + "' where loc_no='" + ls_locno + "'; "; | 
|                 sql += sqlWaitIn; | 
|                 SqlConnection sqlconn = new SqlConnection(Common.sqlcon); | 
|                 sqlconn.Open(); | 
|                 SqlTransaction sqltrans = sqlconn.BeginTransaction(); | 
|                 SqlCommand sqlcmd = new SqlCommand(sql, sqlconn); | 
|                 sqlcmd.Transaction = sqltrans; | 
|                 try | 
|                 { | 
|                     sqlcmd.ExecuteNonQuery(); | 
|                     sqltrans.Commit(); | 
|                 } | 
|                 catch (SqlException t) | 
|                 { | 
|                     sqltrans.Rollback(); | 
|                     //sqlcommon.Close(); | 
|                     ls_error_memo = "   " + seq + ".4 插入工作主档[asr_wrk_mast]错误 !库位:" + ls_locno + " 异常:" + t.Message; | 
|                     DisplayInfo("", "E", ls_error_memo); | 
|                     goto re; | 
|                 } | 
|                 finally | 
|                 { | 
|                     sqlcmd.Dispose(); | 
|                     sqlconn.Dispose(); | 
|                 } | 
|                 return; | 
|   | 
|             re: | 
|                 sql = "update cust_wait_pakout set status='X',action=" + action + ",modi_time='" + ldt_date + "' where vlpla='" + ls_locno + "'"; | 
|                 bool result = Common.ExecAsrsModify(sql); | 
|                 if (!result) | 
|                 { | 
|                     ls_error_memo = "   " + seq + ".5 更新出库档失败!库位:" + ls_locno; | 
|                     DisplayInfo("", "E", ls_error_memo); | 
|                 } | 
|             } | 
|             catch (Exception em) | 
|             { | 
|                 ls_error_memo = "   " + seq + ".6 处理待处理档生成出库工作档失败:" + em.Message; | 
|                 DisplayInfo("", "E", ls_error_memo); | 
|             } | 
|         } | 
|   | 
|         /// <summary> | 
|         /// 生成库位调整工作档 | 
|         /// </summary> | 
|         public void ProcLocToWorkData(string seq) | 
|         { | 
|             string ls_slocno = "", ls_dlocno = ""; | 
|             string ls_error_memo = "", sql = ""; | 
|             int li_wrkno = 0, li_io_type = 0, li_stnNo = 0, li_e_stnNo = 0; | 
|             DateTime ldt_date = System.DateTime.Now; | 
|             double d_outQty = 0, d_stkQty = 0; | 
|   | 
|             DisplayInfo(seq, "N", " --处理出库通知档,生成出库工作档......"); | 
|   | 
|             try | 
|             { | 
|                 //查找最早一条待出库库位 | 
|                 sql = "select top 1 vlpla,nlpla from cust_wait_pakout where status<>'Y' and nltyp='A01' order by status,modi_time"; | 
|                 DataView dvLoc = Common.ExecAsrsSelect(sql); | 
|                 if (dvLoc.Count <= 0) | 
|                 { | 
|                     return; | 
|                 } | 
|                 foreach (DataRowView drow in dvLoc) | 
|                 { | 
|                     ls_slocno = drow[0].ToString(); | 
|                     ls_dlocno = drow[1].ToString(); | 
|                 } | 
|                 if (ls_slocno == "" || ls_dlocno=="") | 
|                 { | 
|                     ls_error_memo = "   " + seq + ".1 出库通知档源库位为空[cust_wait_pakout]错误 !库位:" + ls_slocno; | 
|                     DisplayInfo("", "E", ls_error_memo); | 
|                     goto re; | 
|                 } | 
|   | 
|                 //查询目标库位状态,如果为空表示库位已转,如果在库表示源库位出库,目标库位并板,如果不在库,则报警停止执行 | 
|                 string loc_sts = "", barcoded = ""; | 
|                 sql = "select loc_sts,barcode from asr_loc_mast where loc_no='" + ls_dlocno + "' "; | 
|                 DataView dv = Common.ExecAsrsSelect(sql); | 
|                 if (dv.Count <= 0) | 
|                 { | 
|                     ls_error_memo = "   " + seq + ".2 目标库位" + ls_dlocno + "不存在,请检查"; | 
|                     DisplayInfo("", "E", ls_error_memo); | 
|                     goto re; | 
|                 } | 
|                 else | 
|                 { | 
|                     foreach (DataRowView drow in dv) | 
|                     { | 
|                         loc_sts = drow[0].ToString(); | 
|                         barcoded = drow[1].ToString(); | 
|                     } | 
|                 } | 
|   | 
|                 if (loc_sts == "O") | 
|                 { //库位移转 | 
|                     sql = "select lgnum,tbnum,tbpos,matnr,maktx,werks,anfme,altme,bname "; | 
|                     sql += " from asr_loc_detl where loc_no='" + ls_slocno + "' order by matnr,modi_time"; | 
|                     dv = Common.ExecAsrsSelect(sql); | 
|                     if (dv.Count <= 0) | 
|                     { | 
|                         return; | 
|                     } | 
|                     li_wrkno = Common.GetWrkno(0); | 
|                     string sqlDetl = "", sqlWaitIn = ""; | 
|                     foreach (DataRowView drow in dv) | 
|                     { | 
|                         string lgnum = drow[0].ToString(); | 
|                         string tanum = drow[1].ToString(); | 
|                         string tapos = drow[2].ToString(); | 
|                         string matnr = drow[3].ToString(); | 
|                         string maktx = drow[4].ToString(); | 
|                         string werks = drow[5].ToString(); | 
|                         string vsolm = drow[6].ToString(); | 
|                         string meins = drow[7].ToString(); | 
|                         string bname = drow[8].ToString(); | 
|                         sqlDetl += " insert into asr_wrk_detl(wrk_no,io_time,lgnum,tbnum,tbpos,matnr,maktx,werks,anfme,altme,bname) "; | 
|                         sqlDetl += " values(" + li_wrkno + ",'" + ldt_date + "','" + lgnum + "'," + tanum + "," + tapos + ", "; | 
|                         sqlDetl += " '" + matnr + "','" + maktx + "','" + werks + "'," + vsolm + ",'" + meins + "','" + bname + "');"; | 
|                         sqlWaitIn += " update cust_wait_pakout set status='Y' where nltyp='A01' and vlpla='" + ls_slocno + "' and nlpla='" + ls_dlocno + "';"; | 
|                     } | 
|                     DisplayInfo("", "P", "   " + seq + ".3 正在处理待出库资料!库位:" + ls_slocno); | 
|   | 
|                     //查询库位号是否在库状态,并查询条码号 | 
|                     sql = "select loc_no,barcode from asr_loc_mast where loc_no='" + ls_slocno + "' and loc_sts='F'"; | 
|                     string barcode = ""; | 
|                     dv = Common.ExecAsrsSelect(sql); | 
|                     if (dv.Count <= 0) | 
|                     { | 
|                         ls_error_memo = "   " + seq + ".4 源库位" + ls_slocno + "不存在或非在库状态,请检查"; | 
|                         DisplayInfo("", "E", ls_error_memo); | 
|                         goto re; | 
|                     } | 
|                     else | 
|                     { | 
|                         foreach (DataRowView drow in dv) | 
|                         { | 
|                             barcode = drow[1].ToString(); | 
|                         } | 
|                     } | 
|                     int li_crnrow = int.Parse(ls_slocno.Substring(0, 2)); | 
|                     int li_crnno = (li_crnrow + 1) / 2; | 
|                     li_io_type = 11; | 
|   | 
|                     sql = sqlDetl; | 
|                     sql += "insert into asr_wrk_mast(wrk_no,io_time,wrk_sts,io_type,crn_no,io_pri,source_loc_no,loc_no,barcode,empty_mk) "; | 
|                     sql += " values(" + li_wrkno + ",'" + ldt_date + "',11," + li_io_type + "," + li_crnno + ",13,'" + ls_slocno + "', "; | 
|                     sql += " '" + ls_dlocno + "','" + barcode + "','N'); "; | 
|                     sql += " update asr_loc_mast set loc_sts='R' where loc_no='" + ls_slocno + "'; "; | 
|                     sql += " update asr_loc_mast set loc_sts='S' where loc_no='" + ls_dlocno + "'; "; | 
|                     sql += sqlWaitIn; | 
|                     SqlConnection sqlconn = new SqlConnection(Common.sqlcon); | 
|                     sqlconn.Open(); | 
|                     SqlTransaction sqltrans = sqlconn.BeginTransaction(); | 
|                     SqlCommand sqlcmd = new SqlCommand(sql, sqlconn); | 
|                     sqlcmd.Transaction = sqltrans; | 
|                     try | 
|                     { | 
|                         sqlcmd.ExecuteNonQuery(); | 
|                         sqltrans.Commit(); | 
|                     } | 
|                     catch (SqlException t) | 
|                     { | 
|                         sqltrans.Rollback(); | 
|                         //sqlcommon.Close(); | 
|                         ls_error_memo = "   " + seq + ".5 插入工作主档[asr_wrk_mast]错误 !库位:" + ls_slocno + " 异常:" + t.Message; | 
|                         DisplayInfo("", "E", ls_error_memo); | 
|                         goto re; | 
|                     } | 
|                     finally | 
|                     { | 
|                         sqlcmd.Dispose(); | 
|                         sqlconn.Dispose(); | 
|                     } | 
|                 } | 
|                 else if (loc_sts == "F") | 
|                 {//目标库位并板 | 
|                     //源库位出库 | 
|                     string sqlDetld = ""; | 
|                     int li_wrknod = 0; | 
|                     int action = 0; | 
|                     sql = "select lgnum,tanum,tapos,matnr,maktx,werks,vsolm,meins,bname "; | 
|                     sql += " from cust_wait_pakout where status<>'Y' and nltyp='A01' and vlpla='" + ls_slocno + "' and nlpla='" + ls_dlocno + "' order by status,modi_time"; | 
|                     dv = Common.ExecAsrsSelect(sql); | 
|                     if (dv.Count <= 0) | 
|                     { | 
|                         return; | 
|                     } | 
|                     li_wrkno = Common.GetWrkno(0); | 
|                     li_wrknod = Common.GetWrkno(0); | 
|                     string sqlDetl = "", sqlWaitIn = ""; | 
|                     foreach (DataRowView drow in dv) | 
|                     { | 
|                         string lgnum = drow[0].ToString(); | 
|                         string tanum = drow[1].ToString(); | 
|                         string tapos = drow[2].ToString(); | 
|                         string matnr = drow[3].ToString(); | 
|                         string maktx = drow[4].ToString(); | 
|                         string werks = drow[5].ToString(); | 
|                         string vsolm = drow[6].ToString(); | 
|                         string meins = drow[7].ToString(); | 
|                         string bname = drow[8].ToString(); | 
|                         sqlDetl += " insert into asr_wrk_detl(wrk_no,io_time,lgnum,tbnum,tbpos,matnr,maktx,werks,anfme,altme,bname) "; | 
|                         sqlDetl += " values(" + li_wrkno + ",'" + ldt_date + "','" + lgnum + "'," + tanum + "," + tapos + ", "; | 
|                         sqlDetl += " '" + matnr + "','" + maktx + "','" + werks + "'," + vsolm + ",'" + meins + "','" + bname + "');"; | 
|   | 
|                         sqlDetld += " insert into asr_wrk_detl(wrk_no,io_time,lgnum,tbnum,tbpos,matnr,maktx,werks,anfme,altme,bname) "; | 
|                         sqlDetld += " values(" + li_wrknod + ",'" + ldt_date + "','" + lgnum + "'," + tanum + "," + tapos + ", "; | 
|                         sqlDetld += " '" + matnr + "','" + maktx + "','" + werks + "'," + vsolm + ",'" + meins + "','" + bname + "');"; | 
|   | 
|                         sqlWaitIn += " update cust_wait_pakout set status='Y' where lgnum='" + lgnum + "' and tanum=" + tanum + " and tapos=" + tapos + " and vlpla=" + ls_slocno + ";"; | 
|                         d_outQty += double.Parse(vsolm); | 
|                     } | 
|                     DisplayInfo("", "P", "   " + seq + ".6 正在处理待出库资料!库位:" + ls_slocno); | 
|   | 
|                     //查询库位号是否在库状态,并查询条码号 | 
|                     sql = "select loc_no,barcode from asr_loc_mast where loc_no='" + ls_slocno + "' and loc_sts='F'"; | 
|                     string barcode = ""; | 
|                     dv = Common.ExecAsrsSelect(sql); | 
|                     if (dv.Count <= 0) | 
|                     { | 
|                         ls_error_memo = "   " + seq + ".7 源库位" + ls_slocno + "不存在或非在库状态,请检查"; | 
|                         DisplayInfo("", "E", ls_error_memo); | 
|                         goto re; | 
|                     } | 
|                     else | 
|                     { | 
|                         foreach (DataRowView drow in dv) | 
|                         { | 
|                             barcode = drow[1].ToString(); | 
|                         } | 
|                     } | 
|   | 
|                     //查询库位号对应库存明细总数量 | 
|                     sql = "select sum(anfme) from asr_loc_detl where loc_no='" + ls_slocno + "' "; | 
|                     dv = Common.ExecAsrsSelect(sql); | 
|                     if (dv.Count <= 0) | 
|                     { | 
|                         ls_error_memo = "   " + seq + ".8 库位" + ls_slocno + "没有库存明细,请检查"; | 
|                         DisplayInfo("", "E", ls_error_memo); | 
|                         goto re; | 
|                     } | 
|                     else | 
|                     { | 
|                         foreach (DataRowView drow in dv) | 
|                         { | 
|                             d_stkQty += double.Parse(drow[0].ToString()); | 
|                         } | 
|                     } | 
|   | 
|                     int li_crnrow = int.Parse(ls_slocno.Substring(0, 2)); | 
|                     int li_crnno = (li_crnrow + 1) / 2; | 
|                     string new_loc_sts = ""; | 
|                     if (d_outQty < d_stkQty) | 
|                     { | 
|                         li_io_type = 103; | 
|                         new_loc_sts = "P"; | 
|                         li_e_stnNo = 4; | 
|                         li_stnNo = Common.getIoStaNo(li_io_type, li_crnno, li_e_stnNo); | 
|                         action = 2; | 
|                     } | 
|                     else if (d_outQty == d_stkQty) | 
|                     { | 
|                         li_io_type = 101; | 
|                         new_loc_sts = "R"; | 
|                         li_e_stnNo = 13; | 
|                         li_stnNo = Common.getIoStaNo(li_io_type, li_crnno, li_e_stnNo); | 
|                         action = 3; | 
|                     } | 
|                     else | 
|                     { | 
|                         ls_error_memo = "   " + seq + ".9 库位" + ls_slocno + "通知出库数量超出库存数量,请检查"; | 
|                         DisplayInfo("", "E", ls_error_memo); | 
|                         goto re; | 
|                     } | 
|   | 
|                     int li_crnrowd = int.Parse(ls_dlocno.Substring(0, 2)); | 
|                     int li_crnnod = (li_crnrowd + 1) / 2; | 
|                     int li_io_typed = 104; | 
|                     int li_e_stnNod = 4; | 
|                     int li_stnNod = Common.getIoStaNo(li_io_typed, li_crnnod, li_e_stnNod); | 
|   | 
|                     sqlWaitIn = sqlWaitIn.Replace("update cust_wait_pakout set", "update cust_wait_pakout set action=" + action + ","); | 
|   | 
|                     sql = sqlDetl; | 
|                     sql += "insert into asr_wrk_mast(wrk_no,io_time,wrk_sts,io_type,crn_no,io_pri,source_loc_no,sta_no,source_sta_no,barcode) "; | 
|                     sql += " values(" + li_wrkno + ",'" + ldt_date + "',11," + li_io_type + "," + li_crnno + ",13,'" + ls_slocno + "', "; | 
|                     sql += " " + li_e_stnNo + "," + li_stnNo + ",'" + barcode + "'); "; | 
|                     sql += sqlDetld; | 
|                     sql += "insert into asr_wrk_mast(wrk_no,io_time,wrk_sts,io_type,crn_no,io_pri,source_loc_no,sta_no,source_sta_no,barcode) "; | 
|                     sql += " values(" + li_wrknod + ",'" + ldt_date + "',11," + li_io_typed + "," + li_crnnod + ",13,'" + ls_dlocno + "', "; | 
|                     sql += " " + li_e_stnNod + "," + li_stnNod + ",'" + barcoded + "'); "; | 
|                     sql += " update asr_loc_mast set loc_sts='" + new_loc_sts + "' where loc_no='" + ls_slocno + "'; "; | 
|                     sql += " update asr_loc_mast set loc_sts='P' where loc_no='" + ls_dlocno + "'; "; | 
|                     sql += sqlWaitIn; | 
|                     SqlConnection sqlconn = new SqlConnection(Common.sqlcon); | 
|                     sqlconn.Open(); | 
|                     SqlTransaction sqltrans = sqlconn.BeginTransaction(); | 
|                     SqlCommand sqlcmd = new SqlCommand(sql, sqlconn); | 
|                     sqlcmd.Transaction = sqltrans; | 
|                     try | 
|                     { | 
|                         sqlcmd.ExecuteNonQuery(); | 
|                         sqltrans.Commit(); | 
|                     } | 
|                     catch (SqlException t) | 
|                     { | 
|                         sqltrans.Rollback(); | 
|                         //sqlcommon.Close(); | 
|                         ls_error_memo = "   " + seq + ".10 插入工作主档[asr_wrk_mast]错误 !库位:" + ls_slocno + " 异常:" + t.Message; | 
|                         DisplayInfo("", "E", ls_error_memo); | 
|                         goto re; | 
|                     } | 
|                     finally | 
|                     { | 
|                         sqlcmd.Dispose(); | 
|                         sqlconn.Dispose(); | 
|                     } | 
|                 } | 
|                 else | 
|                 { | 
|                     ls_error_memo = "   " + seq + ".11 目标库位" + ls_dlocno + "不是在库或空库位状态,请检查"; | 
|                     DisplayInfo("", "E", ls_error_memo); | 
|                     goto re; | 
|                 } | 
|                 return; | 
|   | 
|             re: | 
|                 sql = "update cust_wait_pakout set status='X',modi_time='" + ldt_date + "' where vlpla='" + ls_slocno + "'"; | 
|                 bool result = Common.ExecAsrsModify(sql); | 
|                 if (!result) | 
|                 { | 
|                     ls_error_memo = "   " + seq + ".12 更新出库档失败!库位:" + ls_slocno; | 
|                     DisplayInfo("", "E", ls_error_memo); | 
|                 } | 
|             } | 
|             catch (Exception em) | 
|             { | 
|                 ls_error_memo = "   " + seq + ".13 处理待处理档生成出库工作档失败:" + em.Message; | 
|                 DisplayInfo("", "E", ls_error_memo); | 
|             } | 
|         } | 
|   | 
|         /// <summary> | 
|         /// 生成盘点工作档 | 
|         /// </summary> | 
|         public void ProcCheckToWorkData(string seq) | 
|         { | 
|             string ls_locno = ""; | 
|             string ls_error_memo = "", sql = ""; | 
|             int li_wrkno = 0, li_io_type = 0, li_stnNo = 0, li_e_stnNo = 0; | 
|             DateTime ldt_date = System.DateTime.Now; | 
|             int type = 1; | 
|   | 
|             DisplayInfo(seq, "N", " --处理盘点通知档,生成盘点工作档......"); | 
|   | 
|             try | 
|             { | 
|                 //查找最早一条待出库库位 | 
|                 sql = "select top 1 lgpla from cust_wait_check where status<>'Y' order by status,modi_time"; | 
|                 DataView dvLoc = Common.ExecAsrsSelect(sql); | 
|                 if (dvLoc.Count <= 0) | 
|                 { | 
|                     return; | 
|                 } | 
|                 foreach (DataRowView drow in dvLoc) | 
|                 { | 
|                     ls_locno = drow[0].ToString(); | 
|                 } | 
|                 if (ls_locno == "") | 
|                 { | 
|                     return; | 
|                 } | 
|   | 
|                 //查询库位号是否在库状态,并查询条码号 | 
|                 sql = "select loc_no,barcode from asr_loc_mast where loc_no='" + ls_locno + "' and loc_sts='F'"; | 
|                 string barcode = ""; | 
|                 DataView dv = Common.ExecAsrsSelect(sql); | 
|                 if (dv.Count <= 0) | 
|                 { | 
|                     ls_error_memo = "   " + seq + ".2 库位" + ls_locno + "不存在或非在库状态,请检查"; | 
|                     DisplayInfo("", "E", ls_error_memo); | 
|                     goto re; | 
|                 } | 
|                 else | 
|                 { | 
|                     foreach (DataRowView drow in dv) | 
|                     { | 
|                         barcode = drow[1].ToString(); | 
|                     } | 
|                 } | 
|   | 
|                 //根据库位号查找该库位所有出库资料 | 
|                 sql = "select a.lgnum,a.ivnum,a.ivpos,b.matnr,b.maktx,b.altme,b.werks "; | 
|                 sql += " from cust_wait_check a, asr_loc_detl b "; | 
|                 sql += " where a.status<>'Y' and a.lgpla='" + ls_locno + "' and a.matnr=b.matnr and lgpla=b.loc_no and io_status='N'"; | 
|                 sql += " order by a.status,a.modi_time"; | 
|                 dv = Common.ExecAsrsSelect(sql); | 
|                 if (dv == null || dv.Count <= 0) | 
|                 { | 
|                     sql = "select b.lgnum,b.tbnum,b.tbpos,b.matnr,b.maktx,b.altme,b.werks "; | 
|                     sql += " from cust_wait_check a, asr_loc_detl b "; | 
|                     sql += " where a.status<>'Y' and a.lgpla='" + ls_locno + "' and a.lgpla=b.loc_no and io_status='N'"; | 
|                     sql += " order by a.status,a.modi_time"; | 
|                     dv = Common.ExecAsrsSelect(sql); | 
|                     if (dv == null || dv.Count <= 0) | 
|                     { | 
|                         ls_error_memo = "   " + seq + ".3 查询库存明细[asr_loc_detl]没有 !库位:" + ls_locno; | 
|                         DisplayInfo("", "E", ls_error_memo); | 
|                         goto re; | 
|                     } | 
|                     type = 2; | 
|                     //return; | 
|                 } | 
|                 li_wrkno = Common.GetWrkno(0); | 
|                 string sqlDetl = "", sqlWaitIn = ""; | 
|                 foreach (DataRowView drow in dv) | 
|                 { | 
|                     string lgnum = drow[0].ToString(); | 
|                     string tanum = drow[1].ToString(); | 
|                     string tapos = drow[2].ToString(); | 
|                     string matnr = drow[3].ToString(); | 
|                     string maktx = drow[4].ToString(); | 
|                     string altme = drow[5].ToString(); | 
|                     string werks = drow[6].ToString(); | 
|                     sqlDetl += " insert into asr_wrk_detl(wrk_no,io_time,lgnum,tbnum,tbpos,matnr,maktx,altme,werks,zpallet) "; | 
|                     sqlDetl += " values(" + li_wrkno + ",'" + ldt_date + "','" + lgnum + "'," + tanum + "," + tapos + ", "; | 
|                     sqlDetl += " '" + matnr + "','" + maktx + "','" + altme + "','" + werks + "','" + barcode + "');"; | 
|                     if (type == 1) | 
|                     { | 
|                         sqlWaitIn += " update cust_wait_check set status='Y' where lgnum='" + lgnum + "' and ivnum=" + tanum + " and ivpos=" + tapos + ";"; | 
|                     } | 
|                     else | 
|                     { | 
|                         sqlWaitIn += " update cust_wait_check set status='Y' where lgpla='" + ls_locno + "';"; | 
|                     } | 
|                 } | 
|                 DisplayInfo("", "P", "   " + seq + ".1 正在处理待盘点资料!库位:" + ls_locno); | 
|   | 
|                 int li_crnrow = int.Parse(ls_locno.Substring(0, 2)); | 
|                 int li_crnno = (li_crnrow + 1) / 2; | 
|                 li_io_type = 107; | 
|                 li_e_stnNo = 4; | 
|                 li_stnNo = Common.getIoStaNo(li_io_type, li_crnno, li_e_stnNo); | 
|   | 
|                 sql = sqlDetl; | 
|                 sql += "insert into asr_wrk_mast(wrk_no,io_time,wrk_sts,io_type,crn_no,io_pri,source_loc_no,sta_no,source_sta_no,barcode) "; | 
|                 sql += " values(" + li_wrkno + ",'" + ldt_date + "',11," + li_io_type + "," + li_crnno + ",13,'" + ls_locno + "', "; | 
|                 sql += " " + li_e_stnNo + "," + li_stnNo + ",'" + barcode + "'); "; | 
|                 sql += " update asr_loc_mast set loc_sts='P' where loc_no='" + ls_locno + "'; "; | 
|                 sql += sqlWaitIn; | 
|                 SqlConnection sqlconn = new SqlConnection(Common.sqlcon); | 
|                 sqlconn.Open(); | 
|                 SqlTransaction sqltrans = sqlconn.BeginTransaction(); | 
|                 SqlCommand sqlcmd = new SqlCommand(sql, sqlconn); | 
|                 sqlcmd.Transaction = sqltrans; | 
|                 try | 
|                 { | 
|                     sqlcmd.ExecuteNonQuery(); | 
|                     sqltrans.Commit(); | 
|                 } | 
|                 catch (SqlException t) | 
|                 { | 
|                     sqltrans.Rollback(); | 
|                     //sqlcommon.Close(); | 
|                     ls_error_memo = "   " + seq + ".3 插入工作主档[asr_wrk_mast]错误 !库位:" + ls_locno + " 异常:" + t.Message; | 
|                     DisplayInfo("", "E", ls_error_memo); | 
|                     goto re; | 
|                 } | 
|                 finally | 
|                 { | 
|                     sqlcmd.Dispose(); | 
|                     sqlconn.Dispose(); | 
|                 } | 
|                 return; | 
|   | 
|             re: | 
|                 sql = "update cust_wait_check set status='X',modi_time='" + ldt_date + "' where lgpla='" + ls_locno + "'"; | 
|                 bool result = Common.ExecAsrsModify(sql); | 
|                 if (!result) | 
|                 { | 
|                     ls_error_memo = "   " + seq + ".4 更新盘点档失败!库位:" + ls_locno; | 
|                     DisplayInfo("", "E", ls_error_memo); | 
|                 } | 
|             } | 
|             catch (Exception em) | 
|             { | 
|                 ls_error_memo = "   " + seq + ".5 处理盘点通知档生成盘点工作档失败:" + em.Message; | 
|                 DisplayInfo("", "E", ls_error_memo); | 
|             } | 
|         } | 
|   | 
|         /// <summary> | 
|         /// 处理工作档中工作状态为4和14、6的资料,更新库存档、待处理档 | 
|         /// </summary> | 
|         public void ProcWorkMast(string seq) | 
|         { | 
|             string ls_error_memo = "", sql = "", ls_barcode = ""; | 
|             int li_wrk_no = 0, li_wrk_sts = 0, li_io_type = 0, li_sta_no = 0, li_source_sta_no = 0;//, li_wrk_model = 1; | 
|             string ls_loc_no = "", ls_source_loc_no = "";//, ls_wmsId = "", ls_boxId = ""; | 
|             DateTime ldt_date = System.DateTime.Now, ldt_io_time; | 
|             string ls_sheet_no = "", ls_empty_mk = "", ls_full_mk = "", ls_online_yn = ""; | 
|             int li_io_pri = 0, li_whs_type; | 
|             DisplayInfo(seq, "N", "--处理工作档 (status=4,14)......"); | 
|             try | 
|             { | 
|                 try | 
|                 { | 
|                     DataView dv = Common.ExecAsrsSelect("select getdate() from sys_dual"); | 
|                     foreach (System.Data.DataRowView drow in dv) | 
|                     { | 
|                         ldt_date = Convert.ToDateTime(drow[0]); | 
|                     } | 
|                 } | 
|                 catch (SqlException) | 
|                 { | 
|                     return; | 
|                 } | 
|                 sql = "select wrk_no,sheet_no,wrk_sts,io_type,io_pri,empty_mk," + | 
|                       " io_time,loc_no,sta_no,source_sta_no,source_loc_no,whs_type,online_yn,barcode" + | 
|                       " from dbo.asr_wrk_mast where ((wrk_sts = 4 Or wrk_sts = 14 ) and io_type <> 103 and io_type <> 104 and io_type <> 107 ) or (wrk_sts = 2 and io_type=6)" + | 
|                       " order by upd_mk,io_time,wrk_no"; | 
|                 DataView dv_wrkmast = Common.ExecAsrsSelect(sql); | 
|                 if (dv_wrkmast == null || dv_wrkmast.Count < 1) | 
|                 { | 
|                     DisplayInfo("", "N", "   " + seq + ".1 工作档 [asr_wrk_mast] 没有资料!"); | 
|                     return; | 
|                 } | 
|                 foreach (DataRowView drow_wrkmast in dv_wrkmast) | 
|                 { | 
|                     li_wrk_no = Convert.ToInt32(drow_wrkmast[0]); | 
|                     ls_sheet_no = drow_wrkmast[1].ToString(); | 
|                     li_wrk_sts = Convert.ToInt32(drow_wrkmast[2]); | 
|                     li_io_type = Convert.ToInt32(drow_wrkmast[3]); | 
|                     li_io_pri = Convert.ToInt32(drow_wrkmast[4]); | 
|                     ls_empty_mk = drow_wrkmast[5].ToString(); | 
|                     ldt_io_time = Convert.ToDateTime(drow_wrkmast[6]); | 
|                     ls_loc_no = drow_wrkmast[7].ToString(); | 
|                     li_sta_no = Convert.ToInt32(drow_wrkmast[8]); | 
|                     li_source_sta_no = Convert.ToInt32(drow_wrkmast[9]); | 
|                     ls_source_loc_no = drow_wrkmast[10].ToString(); | 
|                     //li_whs_type = Convert.ToInt32(drow_wrkmast[11]); | 
|                     //ls_full_mk = drow_wrkmast[12].ToString(); | 
|                     ls_online_yn = drow_wrkmast[12].ToString(); | 
|                     ls_barcode = drow_wrkmast[13].ToString(); | 
|   | 
|                     DisplayInfo("", "P", "   " + seq + ".2 处理工作档:" + li_wrk_no.ToString()); | 
|                     SqlConnection sqlconn = new SqlConnection(Common.sqlcon); | 
|                     sqlconn.Open(); | 
|                     SqlTransaction sqltrans = sqlconn.BeginTransaction(); | 
|                     if (li_wrk_sts == 4) | 
|                     { | 
|                         switch (li_io_type) | 
|                         { | 
|                             #region 空货架入库 | 
|                             case 10: | 
|                                 sql = "update asr_loc_mast set loc_sts='D',io_time='" + ldt_date + "',modi_time='" + ldt_date + "'"; | 
|                                 sql += " where loc_no='" + ls_loc_no + "' and (loc_sts = 'S' Or loc_sts = 'Q')"; | 
|                                 SqlCommand cmd_10 = new SqlCommand(sql, sqlconn); | 
|                                 cmd_10.Transaction = sqltrans; | 
|                                 try | 
|                                 { | 
|                                     cmd_10.ExecuteNonQuery(); | 
|                                 } | 
|                                 catch (SqlException t) | 
|                                 { | 
|                                     sqltrans.Rollback(); | 
|                                     cmd_10.Dispose(); | 
|                                     sqlconn.Dispose(); | 
|                                     ls_error_memo = "   " + seq + ".3 入库-更新库位状态异常 [asr_loc_mast] !工作号:" + li_wrk_no.ToString() + "  库位号:" + ls_loc_no + " 异常:" + t.Message; | 
|                                     DisplayInfo("", "E", ls_error_memo); | 
|                                     goto re; | 
|                                 } | 
|                                 break; | 
|                             #endregion | 
|                             #region 全板入库 | 
|                             case 1: | 
|                                 ///检查库存明细档是否已存在数据 | 
|                                 int li_count1 = 0; | 
|                                 sql = ""; | 
|                                 try | 
|                                 { | 
|                                     li_count1 = Common.ExecAsrsSelect1("select count(*) from asr_loc_detl where loc_no ='" + ls_loc_no + "'"); | 
|   | 
|                                 } | 
|                                 catch (Exception em) | 
|                                 { | 
|                                     ls_error_memo = "   " + seq + ".4 查询库存明细[asr_loc_detl]出错!工作号:" + li_wrk_no.ToString() + "!" + em.Message; | 
|                                     DisplayInfo("", "E", ls_error_memo); | 
|                                     goto re; | 
|                                 } | 
|   | 
|                                 ///根据工作号,查询工作明细档商品编号 | 
|                                 string sqlDetl = ""; | 
|                                 string sqlWaitIn = ""; | 
|                                 sql = "select lgnum,tbnum,tbpos,zmatid,matnr,maktx,werks,anfme,altme,zpallet,bname from asr_wrk_detl where wrk_no=" + li_wrk_no; | 
|                                 DataView dv_wrkdetl = Common.ExecAsrsSelect(sql); | 
|                                 if (dv_wrkdetl == null || dv_wrkdetl.Count < 1) | 
|                                 { | 
|                                     DisplayInfo("", "E", "   " + seq + ".5 工作明细档 [asr_wrk_detl] 没有资料!"); | 
|                                     return; | 
|                                 } | 
|                                 foreach (DataRowView drow in dv_wrkdetl) | 
|                                 { | 
|                                     string lgnum = "", tbnum = "", tbpos = "", zmatid = "", matnr = "", maktx = "", werks = "", anfme = "", altme = "", zpallet = "", bname = ""; | 
|                                     lgnum = drow[0].ToString(); | 
|                                     tbnum = drow[1].ToString(); | 
|                                     tbpos = drow[2].ToString(); | 
|                                     zmatid = drow[3].ToString(); | 
|                                     matnr = drow[4].ToString(); | 
|                                     maktx = drow[5].ToString(); | 
|                                     werks = drow[6].ToString(); | 
|                                     anfme = drow[7].ToString(); | 
|                                     altme = drow[8].ToString(); | 
|                                     zpallet = drow[9].ToString(); | 
|                                     bname = drow[10].ToString(); | 
|   | 
|                                     string sqlLocDetl = "select anfme from asr_loc_detl where loc_no='" + ls_loc_no + "' and matnr='" + matnr + "'"; | 
|                                     DataView dvLocDetl = Common.ExecAsrsSelect(sqlLocDetl); | 
|                                     if (dvLocDetl != null) | 
|                                     { | 
|                                         if (dvLocDetl.Count > 0) | 
|                                         {//库存已有,更新数量 | 
|                                             sqlDetl = " update asr_loc_detl set anfme=anfme+" + anfme + " where loc_no='" + ls_loc_no + "' and matnr='" + matnr + "'; "; | 
|                                             Common.ExecAsrsModify(sqlDetl); | 
|                                         } | 
|                                         else | 
|                                         {//库存没有,插入 | 
|                                             sqlDetl = " insert into asr_loc_detl(loc_no,lgnum,tbnum,tbpos,zmatid,matnr,maktx,werks,anfme,altme,zpallet,bname) "; | 
|                                             sqlDetl += " values('" + ls_loc_no + "','" + lgnum + "'," + tbnum + "," + tbpos + ",'" + zmatid + "', "; | 
|                                             sqlDetl += " '" + matnr + "','" + maktx + "','" + werks + "'," + anfme + ",'" + altme + "','" + ls_barcode + "','" + bname + "');"; | 
|                                             Common.ExecAsrsModify(sqlDetl); | 
|                                         } | 
|                                     } | 
|                                     sqlWaitIn += " update cust_wait_pakin set io_status='Y' where lgnum='" + lgnum + "' and tbnum=" + tbnum + " and tbpos=" + tbpos + " and zmatid='" + zmatid + "';"; | 
|                                 } | 
|   | 
|                                 ///更新库存信息,插入库存明细档,并更新库存主档 | 
|                                 sql = ""; | 
|                                 if (li_count1 > 0) | 
|                                 { | 
|                                     sql += "delete from asr_loc_detl where loc_no ='" + ls_loc_no + "';"; | 
|                                 } | 
|                                 sql += " update asr_loc_mast set loc_sts='F',io_time='" + ldt_date + "',modi_time='" + ldt_date + "',barcode='" + ls_barcode + "'"; | 
|                                 sql += " where loc_no='" + ls_loc_no + "' and loc_sts = 'S';"; | 
|                                 //sql += sqlDetl; | 
|                                 sql += sqlWaitIn; | 
|   | 
|                                 SqlCommand cmd_1 = new SqlCommand(sql, sqlconn); | 
|                                 cmd_1.Transaction = sqltrans; | 
|                                 try | 
|                                 { | 
|                                     cmd_1.ExecuteNonQuery(); | 
|                                 } | 
|                                 catch (SqlException t) | 
|                                 { | 
|                                     sqltrans.Rollback(); | 
|                                     cmd_1.Dispose(); | 
|                                     sqlconn.Dispose(); | 
|                                     ls_error_memo = "   " + seq + ".6 入库-更新库存异常 [asr_loc_mast] !工作号:" + li_wrk_no.ToString() + "  库位号:" + ls_loc_no + " !" + t.Message; | 
|                                     DisplayInfo("", "E", ls_error_memo); | 
|                                     goto re; | 
|                                 } | 
|                                 break; | 
|                             #endregion | 
|                             #region 拣料再入库 | 
|                             case 53: | 
|                                 ///根据工作号,查询工作明细档商品编号 | 
|                                 sqlDetl = ""; | 
|                                 sqlWaitIn = ""; | 
|                                 sql = "select lgnum,tbnum,tbpos,zmatid,matnr,maktx,werks,anfme,altme,zpallet,bname from asr_wrk_detl where wrk_no=" + li_wrk_no; | 
|                                 DataView dv_wrkdetl53 = Common.ExecAsrsSelect(sql); | 
|                                 if (dv_wrkdetl53 == null || dv_wrkdetl53.Count < 1) | 
|                                 { | 
|                                     DisplayInfo("", "E", "   " + seq + ".6 工作明细档 [asr_wrk_detl] 没有资料!"); | 
|                                     return; | 
|                                 } | 
|                                 foreach (DataRowView drow in dv_wrkdetl53) | 
|                                 { | 
|                                     string lgnum = "", tbnum = "", tbpos = "", zmatid = "", matnr = "", maktx = "", werks = "", anfme = "", altme = "", zpallet = "", bname = ""; | 
|                                     lgnum = drow[0].ToString(); | 
|                                     tbnum = drow[1].ToString(); | 
|                                     tbpos = drow[2].ToString(); | 
|                                     zmatid = drow[3].ToString(); | 
|                                     matnr = drow[4].ToString(); | 
|                                     maktx = drow[5].ToString(); | 
|                                     werks = drow[6].ToString(); | 
|                                     anfme = drow[7].ToString(); | 
|                                     altme = drow[8].ToString(); | 
|                                     zpallet = drow[9].ToString(); | 
|                                     bname = drow[10].ToString(); | 
|                                     sqlDetl += " update asr_loc_detl set anfme=anfme-" + anfme + " where loc_no='" + ls_loc_no + "' and matnr='" + matnr + "'"; | 
|                                     sqlWaitIn += " update cust_wait_pakout set io_status='Y' where lgnum='" + lgnum + "' and tanum=" + tbnum + " and tapos=" + tbpos + " and matnr=" + matnr + ";"; | 
|                                 } | 
|   | 
|                                 ///更新库存信息,插入库存明细档,并更新库存主档 | 
|                                 sql = " update asr_loc_mast set loc_sts='F',io_time='" + ldt_date + "',modi_time='" + ldt_date + "',barcode='" + ls_barcode + "'"; | 
|                                 sql += " where loc_no='" + ls_loc_no + "' and loc_sts = 'Q';"; | 
|                                 sql += sqlDetl; | 
|                                 sql += sqlWaitIn; | 
|   | 
|                                  | 
|                                 SqlCommand cmd_53 = new SqlCommand(sql, sqlconn); | 
|                                 cmd_53.Transaction = sqltrans; | 
|                                 try | 
|                                 { | 
|                                     cmd_53.ExecuteNonQuery(); | 
|                                 } | 
|                                 catch (SqlException t) | 
|                                 { | 
|                                     sqltrans.Rollback(); | 
|                                     cmd_53.Dispose(); | 
|                                     sqlconn.Dispose(); | 
|                                     ls_error_memo = "   " + seq + ".7 拣料-更新库存异常 [asr_loc_mast] !工作号:" + li_wrk_no.ToString() + "  库位号:" + ls_loc_no + " !" + t.Message; | 
|                                     DisplayInfo("", "E", ls_error_memo); | 
|                                     goto re; | 
|                                 } | 
|                                 break; | 
|                             #endregion | 
|                             #region 并板再入库 | 
|                             case 54: | 
|                                 ///根据工作号,查询工作明细档商品编号 | 
|                                 sqlDetl = ""; | 
|                                 sqlWaitIn = ""; | 
|                                 sql = "select lgnum,tbnum,tbpos,zmatid,matnr,maktx,werks,anfme,altme,zpallet,bname from asr_wrk_detl where wrk_no=" + li_wrk_no; | 
|                                 DataView dv_wrkdetl54 = Common.ExecAsrsSelect(sql); | 
|                                 if (dv_wrkdetl54 == null || dv_wrkdetl54.Count < 1) | 
|                                 { | 
|                                     DisplayInfo("", "E", "   " + seq + ".8 工作明细档 [asr_wrk_detl] 没有资料!"); | 
|                                     return; | 
|                                 } | 
|                                 foreach (DataRowView drow in dv_wrkdetl54) | 
|                                 { | 
|                                     string lgnum = "", tbnum = "", tbpos = "", zmatid = "", matnr = "", maktx = "", werks = "", anfme = "", altme = "", zpallet = "", bname = ""; | 
|                                     lgnum = drow[0].ToString(); | 
|                                     tbnum = drow[1].ToString(); | 
|                                     tbpos = drow[2].ToString(); | 
|                                     zmatid = drow[3].ToString(); | 
|                                     matnr = drow[4].ToString(); | 
|                                     maktx = drow[5].ToString(); | 
|                                     werks = drow[6].ToString(); | 
|                                     anfme = drow[7].ToString(); | 
|                                     altme = drow[8].ToString(); | 
|                                     zpallet = drow[9].ToString(); | 
|                                     bname = drow[10].ToString(); | 
|                                     string sql1 = "select anfme from asr_loc_detl where loc_no='" + ls_loc_no + "' and matnr='" + matnr + "'"; | 
|                                     DataView dv_locdetl54 = Common.ExecAsrsSelect(sql1); | 
|                                     if (dv_locdetl54 != null && dv_locdetl54.Count > 0) | 
|                                     { | 
|                                         sqlDetl += " update asr_loc_detl set anfme=anfme+" + anfme + " where loc_no='" + ls_loc_no + "' and matnr='" + matnr + "'"; | 
|                                         //sqlWaitIn += " update cust_wait_pakin set io_status='Y' where matnr=" + matnr + ";"; | 
|                                     } | 
|                                     else | 
|                                     { | 
|                                         sqlDetl += " insert into asr_loc_detl(loc_no,lgnum,tbnum,tbpos,zmatid,matnr,maktx,werks,anfme,altme,zpallet,bname) "; | 
|                                         sqlDetl += " values('" + ls_loc_no + "','" + lgnum + "'," + tbnum + "," + tbpos + ",'" + zmatid + "', "; | 
|                                         sqlDetl += " '" + matnr + "','" + maktx + "','" + werks + "'," + anfme + ",'" + altme + "','" + ls_barcode + "','" + bname + "');"; | 
|                                     } | 
|                                     sqlWaitIn += " update cust_wait_pakout set io_status='Y' where lgnum='" + lgnum + "' and tanum=" + tbnum + " and tapos=" + tbpos + ";"; | 
|                                 } | 
|   | 
|                                 ///更新库存信息,插入库存明细档,并更新库存主档 | 
|                                 //sql = " update asr_loc_mast set loc_sts='F',io_time='" + ldt_date + "',modi_time='" + ldt_date + "',barcode='" + ls_barcode + "'"; | 
|                                 sql = " update asr_loc_mast set loc_sts='F',io_time='" + ldt_date + "',modi_time='" + ldt_date + "' "; | 
|                                 sql += " where loc_no='" + ls_loc_no + "' and loc_sts = 'Q';"; | 
|                                 sql += sqlDetl; | 
|                                 sql += sqlWaitIn; | 
|   | 
|                                 SqlCommand cmd_54 = new SqlCommand(sql, sqlconn); | 
|                                 cmd_54.Transaction = sqltrans; | 
|                                 try | 
|                                 { | 
|                                     cmd_54.ExecuteNonQuery(); | 
|                                 } | 
|                                 catch (SqlException t) | 
|                                 { | 
|                                     sqltrans.Rollback(); | 
|                                     cmd_54.Dispose(); | 
|                                     sqlconn.Dispose(); | 
|                                     ls_error_memo = "   " + seq + ".9 并板再入库-更新库存异常 [asr_loc_mast] !工作号:" + li_wrk_no.ToString() + "  库位号:" + ls_loc_no + " !" + t.Message; | 
|                                     DisplayInfo("", "E", ls_error_memo); | 
|                                     goto re; | 
|                                 } | 
|                                 break; | 
|                             #endregion | 
|                             #region 盘点再入库 | 
|                             case 57: | 
|                                 ///根据工作号,查询工作明细档商品编号 | 
|                                 sqlDetl = ""; | 
|                                 sqlWaitIn = ""; | 
|                                 sql = "select lgnum,tbnum,tbpos,matnr from asr_wrk_detl where wrk_no=" + li_wrk_no; | 
|                                 DataView dv_wrkdetl57 = Common.ExecAsrsSelect(sql); | 
|                                 if (dv_wrkdetl57 == null || dv_wrkdetl57.Count < 1) | 
|                                 { | 
|                                     DisplayInfo("", "E", "   " + seq + ".10 工作明细档 [asr_wrk_detl] 没有资料!"); | 
|                                     return; | 
|                                 } | 
|                                 foreach (DataRowView drow in dv_wrkdetl57) | 
|                                 { | 
|                                     string lgnum = "", tbnum = "", tbpos = "", matnr = ""; | 
|                                     lgnum = drow[0].ToString(); | 
|                                     tbnum = drow[1].ToString(); | 
|                                     tbpos = drow[2].ToString(); | 
|                                     matnr = drow[3].ToString(); | 
|                                     //sqlWaitIn += " update cust_wait_check set io_status='Y' where lgnum='" + lgnum + "' and ivnum=" + tbnum + " and ivpos=" + tbpos + ";"; | 
|                                 } | 
|                                 sqlWaitIn += " update cust_wait_check set io_status='Y' where lgpla='" + ls_loc_no + "';"; | 
|                                 ///更新库存信息,插入库存明细档,并更新库存主档 | 
|                                 sql = " update asr_loc_mast set loc_sts='F',io_time='" + ldt_date + "',modi_time='" + ldt_date + "',barcode='" + ls_barcode + "'"; | 
|                                 sql += " where loc_no='" + ls_loc_no + "' and loc_sts = 'Q';"; | 
|                                 sql += sqlDetl; | 
|                                 sql += sqlWaitIn; | 
|   | 
|                                 SqlCommand cmd_57 = new SqlCommand(sql, sqlconn); | 
|                                 cmd_57.Transaction = sqltrans; | 
|                                 try | 
|                                 { | 
|                                     cmd_57.ExecuteNonQuery(); | 
|                                 } | 
|                                 catch (SqlException t) | 
|                                 { | 
|                                     sqltrans.Rollback(); | 
|                                     cmd_57.Dispose(); | 
|                                     sqlconn.Dispose(); | 
|                                     ls_error_memo = "   " + seq + ".11 盘点再入库-更新库存异常 [asr_loc_mast] !工作号:" + li_wrk_no.ToString() + "  库位号:" + ls_loc_no + " !" + t.Message; | 
|                                     DisplayInfo("", "E", ls_error_memo); | 
|                                     goto re; | 
|                                 } | 
|                                 break; | 
|                             #endregion | 
|                             #region 库位移转 | 
|                             case 11: | 
|                                 sql = ""; | 
|                                 string ls_loc_sts = ""; | 
|                                 if (ls_empty_mk == "N") | 
|                                 { | 
|                                     ls_loc_sts = "F"; | 
|                                     sql += "Update dbo.asr_loc_detl set loc_no='" + ls_loc_no + "',modi_time='" + ldt_date + "' where loc_no='" + ls_source_loc_no + "';"; | 
|                                 } | 
|                                 else | 
|                                 { | 
|                                     ls_loc_sts = "D"; | 
|                                 } | 
|   | 
|                                 sql += " Update dbo.asr_loc_mast set loc_sts='O',barcode='',io_time='" + ldt_date + "'  where loc_no='" + ls_source_loc_no + "'; "; | 
|                                 sql += " Update dbo.asr_loc_mast set loc_sts='" + ls_loc_sts + "',barcode='" + ls_barcode + "',io_time='" + ldt_date + "' where loc_no='" + ls_loc_no + "';"; | 
|                                 sql += " update cust_wait_pakout set io_status='Y' where vlpla='" + ls_source_loc_no + "' and nlpla='" + ls_loc_no + "'"; | 
|                                 SqlCommand cmd_11 = new SqlCommand(sql, sqlconn); | 
|                                 cmd_11.Transaction = sqltrans; | 
|                                 try | 
|                                 { | 
|                                     cmd_11.ExecuteNonQuery(); | 
|                                 } | 
|                                 catch (SqlException t) | 
|                                 { | 
|                                     sqltrans.Rollback(); | 
|                                     cmd_11.Dispose(); | 
|                                     sqlconn.Dispose(); | 
|                                     ls_error_memo = "   " + seq + ".12 库位移转-更新库存异常 [asr_loc_mast] !工作号:" + li_wrk_no.ToString() + "  库位号:" + ls_loc_no + " !" + t.Message; | 
|                                     DisplayInfo("", "E", ls_error_memo); | 
|                                     goto re; | 
|                                 } | 
|   | 
|                                 break; | 
|                             #endregion | 
|                         } | 
|   | 
|                         sql = "update asr_wrk_mast set wrk_sts=5,modi_time='" + ldt_date + "' where wrk_no=" + li_wrk_no + "; "; | 
|                         SqlCommand cmd_wrk = new SqlCommand(sql, sqlconn); | 
|                         cmd_wrk.Transaction = sqltrans; | 
|                         try | 
|                         { | 
|                             cmd_wrk.ExecuteNonQuery(); | 
|                         } | 
|                         catch (SqlException t) | 
|                         { | 
|                             sqltrans.Rollback(); | 
|                             cmd_wrk.Dispose(); | 
|                             sqlconn.Dispose(); | 
|                             ls_error_memo = "   " + seq + ".13 更新工作状态异常 [asr_wrk_mast] !工作号:" + li_wrk_no.ToString() + " 时间:" + ldt_date.ToString() + " 异常:" + t.Message; | 
|                             DisplayInfo("", "E", ls_error_memo); | 
|                             goto re; | 
|                         } | 
|                     } | 
|                     else if (li_wrk_sts == 14) | 
|                     { | 
|                         switch (li_io_type) | 
|                         { | 
|                             #region 全板出库 | 
|                             case 101: | 
|                                 ///根据工作号,查询工作明细档商品编号 | 
|                                 string sqlWaitIn = ""; | 
|                                 sql = "select lgnum,tbnum,tbpos,matnr from asr_wrk_detl where wrk_no=" + li_wrk_no; | 
|                                 DataView dv_wrkdetl = Common.ExecAsrsSelect(sql); | 
|                                 if (dv_wrkdetl == null || dv_wrkdetl.Count < 1) | 
|                                 { | 
|                                     DisplayInfo("", "E", "   " + seq + ".14 工作明细档 [asr_wrk_detl] 没有资料!"); | 
|                                     goto re; | 
|                                 } | 
|                                 foreach (DataRowView drow in dv_wrkdetl) | 
|                                 { | 
|                                     string lgnum = drow[0].ToString(); | 
|                                     string tbnum = drow[1].ToString(); | 
|                                     string tbpos = drow[2].ToString(); | 
|                                     string matnr = drow[3].ToString(); | 
|                                     sqlWaitIn += " update cust_wait_pakout set io_status='Y' where lgnum='" + lgnum + "' and tanum=" + tbnum + " and tapos=" + tbpos + " and vlpla=" + ls_source_loc_no + ";"; | 
|                                 } | 
|   | 
|                                 sql = "delete from asr_loc_detl where loc_no ='" + ls_source_loc_no + "';"; | 
|                                 sql += " update asr_loc_mast set loc_sts='O',io_time='" + ldt_date + "',barcode=null"; | 
|                                 sql += " where loc_no='" + ls_source_loc_no + "' and loc_sts = 'R';"; | 
|                                 sql += sqlWaitIn; | 
|                                 SqlCommand cmd_101 = new SqlCommand(sql, sqlconn); | 
|                                 cmd_101.Transaction = sqltrans; | 
|                                 try | 
|                                 { | 
|                                     cmd_101.ExecuteNonQuery(); | 
|                                 } | 
|                                 catch (SqlException t) | 
|                                 { | 
|                                     sqltrans.Rollback(); | 
|                                     cmd_101.Dispose(); | 
|                                     sqlconn.Dispose(); | 
|                                     ls_error_memo = "   " + seq + ".15 出库-更新库位状态异常[asr_loc_mast] !库位号:" + ls_source_loc_no + " 异常:" + t.Message; | 
|                                     DisplayInfo("", "E", ls_error_memo); | 
|                                     goto re; | 
|                                 } | 
|                                 break; | 
|                             #endregion | 
|                             #region 空板出库 | 
|                             case 110: | 
|                                 sql = "update asr_loc_mast set loc_sts='O',io_time='" + ldt_date + "'"; | 
|                                 sql += " where loc_no='" + ls_source_loc_no + "' and loc_sts = 'R'"; | 
|                                 SqlCommand cmd_110 = new SqlCommand(sql, sqlconn); | 
|                                 cmd_110.Transaction = sqltrans; | 
|                                 try | 
|                                 { | 
|                                     cmd_110.ExecuteNonQuery(); | 
|                                 } | 
|                                 catch (SqlException t) | 
|                                 { | 
|                                     sqltrans.Rollback(); | 
|                                     cmd_110.Dispose(); | 
|                                     sqlconn.Dispose(); | 
|                                     ls_error_memo = "   " + seq + ".16 出库-更新库位状态异常[asr_loc_mast] !库位号:" + ls_source_loc_no + " 异常:" + t.Message; | 
|                                     DisplayInfo("", "E", ls_error_memo); | 
|                                     goto re; | 
|                                 } | 
|                                 break; | 
|                             #endregion | 
|                         } | 
|   | 
|                         sql = "update asr_wrk_mast set wrk_sts=15,modi_time='" + ldt_date + "' where wrk_no=" + li_wrk_no + "; "; | 
|                         SqlCommand cmd_wrk1 = new SqlCommand(sql, sqlconn); | 
|                         cmd_wrk1.Transaction = sqltrans; | 
|                         try | 
|                         { | 
|                             cmd_wrk1.ExecuteNonQuery(); | 
|                         } | 
|                         catch (SqlException t) | 
|                         { | 
|                             sqltrans.Rollback(); | 
|                             cmd_wrk1.Dispose(); | 
|                             sqltrans.Dispose(); | 
|                             ls_error_memo = "   " + seq + ".17 更新工作状态异常 [asr_wrk_mast] !工作号:" + li_wrk_no.ToString() + " 异常:" + t.Message; | 
|                             DisplayInfo("", "E", ls_error_memo); | 
|                             goto re; | 
|                         } | 
|                     } | 
|                     sqltrans.Commit(); | 
|                     sqlconn.Dispose(); | 
|                 } | 
|             } | 
|             catch (SqlException t) | 
|             { | 
|                 ls_error_memo = "   " + seq + ".18 处理工作档数据失败! 异常:" + t.Message; | 
|                 DisplayInfo("", "E", ls_error_memo); | 
|             } | 
|   | 
|         re: | 
|             if (ls_error_memo != "") | 
|             { | 
|                 try | 
|                 { | 
|                     bool bl = Common.ExecAsrsModify("update dbo.asr_wrk_mast set upd_mk ='X',error_time='" + ldt_date + "',error_memo='" + ls_error_memo + "'  where wrk_no =" + li_wrk_no + ""); | 
|                 } | 
|                 catch (SqlException t) | 
|                 { | 
|                     ls_error_memo = "   " + seq + ".19 更新工作主档状态 [asr_wrk_mast] 异常! 工作号:" + li_wrk_no.ToString() + " 时间:" + ldt_date.ToString(); | 
|                     DisplayInfo("", "E", ls_error_memo); | 
|                     return; | 
|                 } | 
|   | 
|             } | 
|         } | 
|   | 
|         /// <summary> | 
|         /// 处理工作档中工作状态为5和15的资料,转历史档 | 
|         /// </summary> | 
|         public void ProcWorkToLog(string seq) | 
|         { | 
|             string ls_error_memo = ""; | 
|             DisplayInfo(seq, "N", "--处理工作档转历史档......"); | 
|             int wrkno = 0; | 
|             try | 
|             { | 
|                 string sql = "select top 1 wrk_no from asr_wrk_mast where wrk_sts=5 ";// or wrk_sts=15 or (wrk_sts=15 and io_type=110) "; | 
|                 sql += " or (wrk_sts=15 and ove_mk='Y' and wrk_no not in (select wrk_no from asr_bas_devp))"; | 
|                 sql += " or (wrk_sts=15 and dateadd(mi,15,crn_end_time) <= getdate() and wrk_no not in (select wrk_no from asr_bas_devp))"; | 
|                 sql += " or (wrk_sts=15 and crn_end_time is null and wrk_no not in (select wrk_no from asr_bas_devp)) "; | 
|                 //sql += " or (wrk_sts=15 and dateadd(day,1,io_time) <= getdate() and crn_end_time is null) "; | 
|                 //sql += " or (wrk_sts=15 and dateadd(hh,1,crn_end_time) <= getdate()) "; | 
|                 //sql += " or (wrk_sts=15 and wrk_no not in (select wrk_no from asr_bas_devp))"; | 
|                 sql += " order by io_time,wrk_no asc"; | 
|                 DataView dv = Common.ExecAsrsSelect(sql); | 
|                 if (dv.Count <= 0) | 
|                 { | 
|                     DisplayInfo("", "N", "   " + seq + ".1 工作档 [asr_wrk_mast] 没有资料处理!"); | 
|                     return; | 
|                 } | 
|                 foreach (DataRowView drow in dv) | 
|                 { | 
|                     wrkno = int.Parse(drow[0].ToString()); | 
|                 } | 
|                 DisplayInfo("", "P", "   " + seq + ".2 正在处理转历史档" + wrkno); | 
|   | 
|                 sql = "insert into asr_wrk_mast_log select * from asr_wrk_mast where wrk_no=" + wrkno + "; "; | 
|                 //sql += " and wrk_no not in (select wrk_no from dbo.asr_bas_devp) "; | 
|                 //sql += " and wrk_no not in (select wrk_no from dbo.asr_bas_crnp);"; | 
|                 sql += " delete from asr_wrk_mast where wrk_no=" + wrkno + "; "; | 
|                 sql += " insert into asr_wrk_detl_log select * from asr_wrk_detl where wrk_no=" + wrkno + "; "; | 
|                 sql += " delete from asr_wrk_detl where wrk_no=" + wrkno + "; "; | 
|                 //sql += " update asr_wrk_mast set wrk_sts=16 where wrk_sts=15 and dateadd(day,1,io_time) <= getdate();"; | 
|                 //sql += " and wrk_no not in (select wrk_no from dbo.asr_bas_devp) "; | 
|                 //sql += " and wrk_no not in (select wrk_no from dbo.asr_bas_crnp);"; | 
|   | 
|                 SqlConnection sqlconn = new SqlConnection(Common.sqlcon); | 
|                 sqlconn.Open(); | 
|                 SqlTransaction sqltrans = sqlconn.BeginTransaction(); | 
|                 SqlCommand sqlcmd = new SqlCommand(); | 
|                 sqlcmd.Transaction = sqltrans; | 
|                 string[] arraySql = sql.Split(';'); | 
|                 try | 
|                 { | 
|                     for (int i = 0; i < arraySql.Length; i++) | 
|                     { | 
|                         if (arraySql[i] != "") | 
|                         { | 
|                             sqlcmd.CommandText = arraySql[i]; | 
|                             sqlcmd.Connection = sqlconn; | 
|                             sqlcmd.Transaction = sqltrans; | 
|                             int result = sqlcmd.ExecuteNonQuery(); | 
|                         } | 
|                     } | 
|                     sqltrans.Commit(); | 
|                 } | 
|                 catch (SqlException t) | 
|                 { | 
|                     sqltrans.Rollback(); | 
|                     ls_error_memo = "   " + seq + ".3 工作档[asr_wrk_mast]转历史档错误 ! 异常:" + t.Message; | 
|                     DisplayInfo("", "E", ls_error_memo); | 
|                 } | 
|                 finally | 
|                 { | 
|                     sqlcmd.Dispose(); | 
|                     sqltrans.Dispose(); | 
|                     sqlconn.Dispose(); | 
|                 } | 
|                 return; | 
|             } | 
|             catch (Exception t) | 
|             { | 
|                 ls_error_memo = "   " + seq + ".4 处理工作档转历史档失败! 异常:" + t.Message; | 
|                 DisplayInfo("", "E", ls_error_memo); | 
|             } | 
|         } | 
|   | 
|         /// <summary> | 
|         /// 处理堆垛机、输送机命令,转历史档 | 
|         /// </summary> | 
|         public void ProcDevCommandToLog(string seq) | 
|         { | 
|             string ls_error_memo = ""; | 
|             DisplayInfo(seq, "N", "--处理堆垛机&PLC命令转历史档......"); | 
|             try | 
|             { | 
|                 string sql = "insert into asr_stk_hplc "; | 
|                 sql += " select * from asr_stk_plcm where dateadd(day,7,appe_time) <= getdate();"; | 
|                 sql += " delete from asr_stk_plcm where dateadd(day,7,appe_time) <= getdate();"; | 
|                 SqlConnection sqlconn = new SqlConnection(Common.sqlcon); | 
|                 sqlconn.Open(); | 
|                 SqlTransaction sqltrans = sqlconn.BeginTransaction(); | 
|                 SqlCommand sqlcmd = new SqlCommand(); | 
|                 sqlcmd.Transaction = sqltrans; | 
|                 string[] arraySql = sql.Split(';'); | 
|                 try | 
|                 { | 
|                     for (int i = 0; i < arraySql.Length; i++) | 
|                     { | 
|                         if (arraySql[i] != "") | 
|                         { | 
|                             sqlcmd.CommandText = arraySql[i]; | 
|                             sqlcmd.Connection = sqlconn; | 
|                             sqlcmd.Transaction = sqltrans; | 
|                             int result = sqlcmd.ExecuteNonQuery(); | 
|                         } | 
|                     } | 
|                     sqltrans.Commit(); | 
|                 } | 
|                 catch (SqlException t) | 
|                 { | 
|                     sqltrans.Rollback(); | 
|                     //sqlcommon.Close(); | 
|                     ls_error_memo = "   " + seq + ".1 堆垛机&PLC命令转历史档错误 ! 异常:" + t.Message; | 
|                     DisplayInfo("", "E", ls_error_memo); | 
|                 } | 
|                 finally | 
|                 { | 
|                     sqlcmd.Dispose(); | 
|                     sqltrans.Dispose(); | 
|                     sqlconn.Dispose(); | 
|                 } | 
|                 return; | 
|             } | 
|             catch (Exception t) | 
|             { | 
|                 ls_error_memo = "   " + seq + ".2 堆垛机&PLC命令转历史档失败! 异常:" + t.Message; | 
|                 DisplayInfo("", "E", ls_error_memo); | 
|             } | 
|         } | 
|   | 
|         /// <summary> | 
|         /// 转已完成物料信息到历史档 | 
|         /// </summary> | 
|         public void ProcMatCodeToLog(string seq) | 
|         { | 
|             string ls_error_memo = "", mat_no = ""; | 
|             DisplayInfo(seq, "N", "--处理已完成物料数据转历史档......"); | 
|             try | 
|             { | 
|                 string condition = " and mat_no not in (select mat_no from asr_loc_detl) and mat_no not in (select mat_no from asr_wrk_detl) "; | 
|                 //condition += " and mat_no not in (select mat_no from cust_wait_pakout) "; | 
|                 string sql0 = " select top 1 mat_no from bas_mat_code where status>1 " + condition + " ;"; | 
|                 DataView dv = Common.ExecAsrsSelect(sql0); | 
|                 if (dv.Count <= 0) | 
|                 { | 
|                     DisplayInfo("", "N", "   " + seq + ".1 物料档 [bas_mat_code] 没有资料处理!"); | 
|                     return; | 
|                 } | 
|   | 
|                 foreach (DataRowView drow in dv) | 
|                 { | 
|                     mat_no = drow[0].ToString(); | 
|                 } | 
|   | 
|                 string sql = "delete from bas_mat_code_log where mat_no='" + mat_no + "';"; | 
|                 sql += " insert into bas_mat_code_log "; | 
|                 sql += " select * from bas_mat_code where status>1 " + condition + " ;"; | 
|                 sql += " delete from bas_mat_code where status>1 " + condition + " ;"; | 
|                 sql += " delete from bas_mat_code where status=0 and dateadd(hh,2,modi_time) <= getdate() " + condition + " ;"; | 
|   | 
|                 SqlConnection sqlconn = new SqlConnection(Common.sqlcon); | 
|                 sqlconn.Open(); | 
|                 SqlTransaction sqltrans = sqlconn.BeginTransaction(); | 
|                 SqlCommand sqlcmd = new SqlCommand(); | 
|                 sqlcmd.Transaction = sqltrans; | 
|                 string[] arraySql = sql.Split(';'); | 
|                 try | 
|                 { | 
|                     for (int i = 0; i < arraySql.Length; i++) | 
|                     { | 
|                         if (arraySql[i] != "") | 
|                         { | 
|                             sqlcmd.CommandText = arraySql[i]; | 
|                             sqlcmd.Connection = sqlconn; | 
|                             sqlcmd.Transaction = sqltrans; | 
|                             int result = sqlcmd.ExecuteNonQuery(); | 
|                         } | 
|                     } | 
|                     sqltrans.Commit(); | 
|                 } | 
|                 catch (SqlException t) | 
|                 { | 
|                     sqltrans.Rollback(); | 
|                     //sqlcommon.Close(); | 
|                     ls_error_memo = "   " + seq + ".1 已完成物料数据转历史档错误 ! 异常:" + t.Message; | 
|                     DisplayInfo("", "E", ls_error_memo); | 
|                 } | 
|                 finally | 
|                 { | 
|                     sqlcmd.Dispose(); | 
|                     sqlconn.Dispose(); | 
|                 } | 
|                 return; | 
|             } | 
|             catch (Exception t) | 
|             { | 
|                 ls_error_memo = "   " + seq + ".2 已完成物料数据转历史档失败! 异常:" + t.Message; | 
|                 DisplayInfo("", "E", ls_error_memo); | 
|             } | 
|         } | 
|   | 
|         /// <summary> | 
|         /// 转已完成待出库档信息到历史档 | 
|         /// </summary> | 
|         public void ProcWaitOutToLog(string seq) | 
|         { | 
|             string ls_error_memo = "", sql = ""; | 
|             DisplayInfo(seq, "N", "--处理已完成入/出库档数据转历史档......"); | 
|             try | 
|             { | 
|                 string sql0 = " select lgnum,tbnum,tbpos from cust_wait_pakin where io_status='F';"; | 
|                 DataView dv = Common.ExecAsrsSelect(sql0); | 
|                 if (dv == null || dv.Count <= 0) | 
|                 { | 
|                     DisplayInfo("", "N", "   " + seq + ".1 入库档 [cust_wait_pakin] 没有资料处理!"); | 
|                 } | 
|                 else | 
|                 { | 
|                     foreach (DataRowView drow in dv) | 
|                     { | 
|                         string lgnum = drow[0].ToString(); | 
|                         string tanum = drow[1].ToString(); | 
|                         string tapos = drow[2].ToString(); | 
|                         sql = "insert into cust_wait_pakin_log "; | 
|                         sql += " select * from cust_wait_pakin where lgnum='" + lgnum + "' and tbnum=" + tanum + " and tbpos=" + tapos + "; "; | 
|                         sql += " delete from cust_wait_pakin where lgnum='" + lgnum + "' and tbnum=" + tanum + " and tbpos=" + tapos + "; "; | 
|                     } | 
|                 } | 
|   | 
|                 sql0 = " select lgnum,tanum,tapos from cust_wait_pakout where io_status='F';"; | 
|                 dv = Common.ExecAsrsSelect(sql0); | 
|                 if (dv == null || dv.Count <= 0) | 
|                 { | 
|                     DisplayInfo("", "N", "   " + seq + ".2 出库档 [cust_wait_pakout] 没有资料处理!"); | 
|                 } | 
|                 else | 
|                 { | 
|                     foreach (DataRowView drow in dv) | 
|                     { | 
|                         string lgnum = drow[0].ToString(); | 
|                         string tanum = drow[1].ToString(); | 
|                         string tapos = drow[2].ToString(); | 
|                         sql = "insert into cust_wait_pakout_log "; | 
|                         sql += " select * from cust_wait_pakout where lgnum='" + lgnum + "' and tanum=" + tanum + " and tapos=" + tapos + "; "; | 
|                         sql += " delete from cust_wait_pakout where lgnum='" + lgnum + "' and tanum=" + tanum + " and tapos=" + tapos + "; "; | 
|                     } | 
|                 } | 
|   | 
|                 sql0 = " select lgnum,ivnum,ivpos from cust_wait_check where io_status='Y';"; | 
|                 dv = Common.ExecAsrsSelect(sql0); | 
|                 if (dv == null || dv.Count <= 0) | 
|                 { | 
|                     DisplayInfo("", "N", "   " + seq + ".3 盘点档 [cust_wait_check] 没有资料处理!"); | 
|                 } | 
|                 else | 
|                 { | 
|                     foreach (DataRowView drow in dv) | 
|                     { | 
|                         string lgnum = drow[0].ToString(); | 
|                         string tanum = drow[1].ToString(); | 
|                         string tapos = drow[2].ToString(); | 
|                         sql = "insert into cust_wait_check_log "; | 
|                         sql += " select * from cust_wait_check where lgnum='" + lgnum + "' and ivnum=" + tanum + " and ivpos=" + tapos + "; "; | 
|                         sql += " delete from cust_wait_check where lgnum='" + lgnum + "' and ivnum=" + tanum + " and ivpos=" + tapos + "; "; | 
|                     } | 
|                 } | 
|   | 
|                 if (sql == "") | 
|                 { | 
|                     return; | 
|                 } | 
|                 SqlConnection sqlconn1 = new SqlConnection(Common.sqlcon); | 
|                 sqlconn1.Open(); | 
|                 SqlTransaction sqltrans1 = sqlconn1.BeginTransaction(); | 
|                 SqlCommand sqlcmd1 = new SqlCommand(); | 
|                 sqlcmd1.Transaction = sqltrans1; | 
|                 string[] arraySql1 = sql.Split(';'); | 
|                 try | 
|                 { | 
|                     for (int i = 0; i < arraySql1.Length; i++) | 
|                     { | 
|                         if (arraySql1[i] != "") | 
|                         { | 
|                             sqlcmd1.CommandText = arraySql1[i]; | 
|                             sqlcmd1.Connection = sqlconn1; | 
|                             sqlcmd1.Transaction = sqltrans1; | 
|                             int result = sqlcmd1.ExecuteNonQuery(); | 
|                         } | 
|                     } | 
|                     sqltrans1.Commit(); | 
|                 } | 
|                 catch (SqlException t) | 
|                 { | 
|                     sqltrans1.Rollback(); | 
|                     //sqlcommon.Close(); | 
|                     ls_error_memo = "   " + seq + ".1 已完成物料数据转历史档错误 ! 异常:" + t.Message; | 
|                     DisplayInfo("", "E", ls_error_memo); | 
|                 } | 
|                 finally | 
|                 { | 
|                     sqlcmd1.Dispose(); | 
|                     sqlconn1.Dispose(); | 
|                 } | 
|   | 
|                 return; | 
|             } | 
|             catch (Exception t) | 
|             { | 
|                 ls_error_memo = "   " + seq + ".2 已完成出库数据转历史档失败! 异常:" + t.Message; | 
|                 DisplayInfo("", "E", ls_error_memo); | 
|             } | 
|         } | 
|   | 
|         /// <summary> | 
|         /// 删除超过半年的历史档信息 | 
|         /// </summary> | 
|         public void ProcOverYearLog(string seq) | 
|         { | 
|             string ls_error_memo = ""; | 
|             DisplayInfo(seq, "N", "--处理超过半年历史档信息......"); | 
|             try | 
|             { | 
|                 string sql = "delete from asr_stk_hplc where dateadd(day,180,appe_time) <= getdate(); "; | 
|                 sql += " delete from sys_tts_mast where dateadd(day,180,modi_time) <= getdate();"; | 
|                 sql += " delete from asr_wrk_detl_log where dateadd(day,360,appe_time) <= getdate();"; | 
|                 sql += " delete from asr_wrk_mast_log where dateadd(day,360,appe_time) <= getdate();"; | 
|                 sql += " delete from cust_wait_pakout_log where dateadd(day,360,appe_time) <= getdate();"; | 
|                 sql += " delete from bas_mat_code_log where dateadd(day,360,appe_time) <= getdate();"; | 
|                 SqlConnection sqlconn = new SqlConnection(Common.sqlcon); | 
|                 sqlconn.Open(); | 
|                 SqlTransaction sqltrans = sqlconn.BeginTransaction(); | 
|                 SqlCommand sqlcmd = new SqlCommand(); | 
|                 sqlcmd.Transaction = sqltrans; | 
|                 string[] arraySql = sql.Split(';'); | 
|                 try | 
|                 { | 
|                     for (int i = 0; i < arraySql.Length; i++) | 
|                     { | 
|                         if (arraySql[i] != "") | 
|                         { | 
|                             sqlcmd.CommandText = arraySql[i]; | 
|                             sqlcmd.Connection = sqlconn; | 
|                             sqlcmd.Transaction = sqltrans; | 
|                             int result = sqlcmd.ExecuteNonQuery(); | 
|                         } | 
|                     } | 
|                     sqltrans.Commit(); | 
|                 } | 
|                 catch (SqlException t) | 
|                 { | 
|                     sqltrans.Rollback(); | 
|                     //sqlcommon.Close(); | 
|                     ls_error_memo = "   " + seq + ".1 堆垛机&PLC命令转历史档错误 ! 异常:" + t.Message; | 
|                     DisplayInfo("", "E", ls_error_memo); | 
|                 } | 
|                 finally | 
|                 { | 
|                     sqlcmd.Dispose(); | 
|                     sqltrans.Dispose(); | 
|                     sqlconn.Dispose(); | 
|                 } | 
|                 return; | 
|             } | 
|             catch (Exception t) | 
|             { | 
|                 ls_error_memo = "   " + seq + ".2 堆垛机&PLC命令转历史档失败! 异常:" + t.Message; | 
|                 DisplayInfo("", "E", ls_error_memo); | 
|             } | 
|         } | 
|   | 
|         /// <summary> | 
|         /// 处理库存档中库位状态为D O但是有明细的数据,清空明细 | 
|         /// </summary> | 
|         private void ProcErrorStockData(string seq) | 
|         { | 
|             string ls_error_memo = ""; | 
|             string loc_no = "", mat_no = ""; | 
|             DisplayInfo(seq, "N", "--处理库存档中异常库存信息......"); | 
|             try | 
|             { | 
|                 string sqlDetl = "delete from asr_loc_detl where anfme <= 0;"; | 
|                 Common.ExecAsrsModify(sqlDetl); | 
|   | 
|                 string sql = "SELECT a.loc_no,b.matnr FROM asr_loc_mast a,asr_loc_detl b where a.loc_no=b.loc_no "; | 
|                 sql += " and (a.loc_sts='O' or a.loc_sts='D') "; | 
|   | 
|                 DataView dv_stkDetl = Common.ExecAsrsSelect(sql); | 
|                 if (dv_stkDetl == null || dv_stkDetl.Count < 1) | 
|                 { | 
|                     return; | 
|                 } | 
|                 foreach (DataRowView drow_stkDetl in dv_stkDetl) | 
|                 { | 
|                     loc_no = drow_stkDetl[0].ToString(); | 
|                     mat_no = drow_stkDetl[1].ToString(); | 
|                     string sql0 = " delete from asr_loc_detl where loc_no='" + loc_no + "'; "; | 
|                     SqlConnection sqlconn = new SqlConnection(Common.sqlcon); | 
|                     sqlconn.Open(); | 
|                     SqlTransaction sqltrans = sqlconn.BeginTransaction(); | 
|                     SqlCommand sqlcmd = new SqlCommand(); | 
|                     sqlcmd.Transaction = sqltrans; | 
|                     string[] arraySql = sql0.Split(';'); | 
|                     try | 
|                     { | 
|                         for (int i = 0; i < arraySql.Length; i++) | 
|                         { | 
|                             if (arraySql[i] != "") | 
|                             { | 
|                                 sqlcmd.CommandText = arraySql[i]; | 
|                                 sqlcmd.Connection = sqlconn; | 
|                                 sqlcmd.Transaction = sqltrans; | 
|                                 int result = sqlcmd.ExecuteNonQuery(); | 
|                             } | 
|                         } | 
|                         sqltrans.Commit(); | 
|                     } | 
|                     catch (SqlException t) | 
|                     { | 
|                         sqltrans.Rollback(); | 
|                         //sqlcommon.Close(); | 
|                         ls_error_memo = "   " + seq + ".1 处理库存档中异常库存信息错误 ! 异常:" + t.Message; | 
|                         DisplayInfo("", "E", ls_error_memo); | 
|                     } | 
|                     finally | 
|                     { | 
|                         sqlcmd.Dispose(); | 
|                         sqltrans.Dispose(); | 
|                         sqlconn.Dispose(); | 
|                     } | 
|                 } | 
|                 return; | 
|             } | 
|             catch (Exception t) | 
|             { | 
|                 ls_error_memo = "   " + seq + ".2 处理库存档中异常库存信息失败! 异常:" + t.Message; | 
|                 DisplayInfo("", "E", ls_error_memo); | 
|             } | 
|         } | 
|         #endregion | 
|   | 
|         /// <summary> | 
|         /// 回报主线程 | 
|         /// </summary> | 
|         private void ThreadTask() | 
|         { | 
|             DisplayInfo("", "N", "---------------系统运行中-------------"); | 
|             while (true) | 
|             { | 
|                 try | 
|                 { | 
|                     //生成出库工作档 | 
|                     ProcOutToWorkData("1"); | 
|                     ProcLocToWorkData("11"); | 
|   | 
|                     //处理工作档状态4、14、6的资料 | 
|                     ProcWorkMast("2"); // done | 
|   | 
|                     //工作档转历史档 // done | 
|                     ProcWorkToLog("3"); | 
|   | 
|                     //堆垛机&PLC命令转历史档 | 
|                     ProcDevCommandToLog("4"); // done | 
|   | 
|                     //转已完成物料信息到历史档 | 
|                     //ProcMatCodeToLog("5"); | 
|                     //转出库完成待出库档数据到历史档 | 
|                     ProcCheckToWorkData("5"); | 
|   | 
|                     //转出库完成待出库档数据到历史档 | 
|                     ProcWaitOutToLog("6"); // done | 
|   | 
|                     //删除超过半年历史档 | 
|                     ProcOverYearLog("7"); // done | 
|   | 
|                     ProcErrorStockData("8"); // done | 
|   | 
|                     Thread.Sleep(3000); | 
|                 } | 
|                 catch (Exception em) | 
|                 { | 
|                     Common.WriteLogFile("WcsError", "UpdateThread/ThreadTask--回报主线程循环出错:" + em.Message); | 
|                 } | 
|             } | 
|         } | 
|     } | 
| } |