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); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
} 
 |