自动化立体仓库 - WMS系统
#
luxiaotao1123
2020-07-03 e2c30d013ff3949f000b94f6e0376afc886b301b
#
1个文件已添加
3个文件已修改
1742 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/TrayCodeController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/UpdateThread.cs 1732 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/trayCode/trayCode.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/trayCode/trayCode.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/TrayCodeController.java
@@ -132,7 +132,7 @@
    @ManagerAuth
    public R trayCodeLatest() {
        List<TrayCode> latest = trayCodeService.selectList(new EntityWrapper<TrayCode>().orderBy("id", false));
        return R.ok().add(latest.isEmpty()?"100001": Integer.parseInt(latest.get(0).getTrayNo())+1);
        return R.ok().add(latest.isEmpty()?"10000001": Integer.parseInt(latest.get(0).getTrayNo())+1);
    }
    @RequestMapping(value = "/trayCode/print/preview")
src/main/resources/UpdateThread.cs
New file
@@ -0,0 +1,1732 @@
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");
                    //工作档转历史档
                    ProcWorkToLog("3");
                    //堆垛机&PLC命令转历史档
                    ProcDevCommandToLog("4");
                    //转已完成物料信息到历史档
                    //ProcMatCodeToLog("5");
                    //转出库完成待出库档数据到历史档
                    ProcCheckToWorkData("5");
                    //转出库完成待出库档数据到历史档
                    ProcWaitOutToLog("6");
                    //删除超过半年历史档
                    ProcOverYearLog("7");
                    ProcErrorStockData("8");
                    Thread.Sleep(3000);
                }
                catch (Exception em)
                {
                    Common.WriteLogFile("WcsError", "UpdateThread/ThreadTask--回报主线程循环出错:" + em.Message);
                }
            }
        }
    }
}
src/main/webapp/static/js/trayCode/trayCode.js
@@ -309,10 +309,10 @@
                    for (let i=0;i<res.data.length;i++){
                        if (data.field.type === '1') {
                            res.data[i]["barcodeUrl"]=baseUrl+"/file/barcode/qrcode/auth?" +
                                "type="+data.field.type+"&param="+res.data[i].item+"&width="+200+"&height="+100;
                                "type="+data.field.type+"&param="+res.data[i].item+"&width="+200+"&height="+90;
                        } else {
                            res.data[i]["barcodeUrl"]=baseUrl+"/file/barcode/qrcode/auth?" +
                                "type="+data.field.type+"&param="+res.data[i].item+"&width="+400+"&height="+200;
                                "type="+data.field.type+"&param="+res.data[i].item+"&width="+400+"&height="+180;
                        }
                    }
                    var tpl = $('#trayCodeTemplate').html();
src/main/webapp/views/trayCode/trayCode.html
@@ -82,7 +82,7 @@
    <table class="layui-hide" id="trayCode" lay-filter="trayCode"></table>
</div>
<div id="printBox" style="display: block; height: 150px; width: 300px"></div>
<div id="printBox" style="display: block; height: 150px; width: 300px;padding-left: 0px"></div>
<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
@@ -137,7 +137,7 @@
</body>
<script type="text/template" id="trayCodeTemplate">
    {{#each data}}
    <img class="template-code" src="{{this.barcodeUrl}}" width="90%">
    <img class="template-code" src="{{this.barcodeUrl}}" width="100%">
    <div style="letter-spacing: 2px;margin-top: 1px; text-align: center">
        <span>{{this.item}}</span>
    </div>