Browse Source

修改接口

章政 9 years ago
parent
commit
0280b9260d
2 changed files with 400 additions and 436 deletions
  1. 330 370
      UAS_MesInterface/DataHelper.cs
  2. 70 66
      UAS_MesInterface/LogicHandler.cs

+ 330 - 370
UAS_MesInterface/DataHelper.cs

@@ -16,7 +16,7 @@ namespace UAS_MesInterface
         //用户选择的数据库的连接字符串
         public static OracleConnection connection = null;
         //用户选择的数据库的连接字符串
-        OracleCommand command = null;
+        OracleCommand command = new OracleCommand();
         /// <summary>
         /// 执行构造函数的时候打开数据库的链接
         /// </summary>
@@ -24,21 +24,55 @@ namespace UAS_MesInterface
         {
             try
             {
-                if (Environment.ToUpper() == "FORMAl")
+                //如果选择的是默认数据则直接用配置文件的信息连接,否则选择数据库的账套信息
+                if (Environment.ToUpper() == "MES")
                 {
-                    ConnectionStrings = "Password=select!#%*(;User ID=MES;Pooling=false;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=117.25.180.218)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)));";
+                    ConnectionStrings = "Password=select!#%*(;User ID=MES;Pooling=false;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.230.200)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)));";
                 }
-                else if (Environment.ToUpper() == "TEST")
+                else if (Environment.ToUpper() == "MES_TEST")
                 {
-                    ConnectionStrings = "Password=select!#%*(;User ID=MES_TEST;Pooling=false;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=117.25.180.218)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)));";
+                    ConnectionStrings = "Password=select!#%*(;User ID=MES_TEST;Pooling=false;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.230.200)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)));";
                 }
-                connection = new OracleConnection(ConnectionStrings);
-                connection.Open();
+                command.Connection = connection;
+                command.Connection.Open();
+                command.CommandTimeout = 0;
             }
             catch (Exception)
             {
+                if (Environment.ToUpper() == "MES")
+                {
+                    ConnectionStrings = "Password=select!#%*(;User ID=MES;Pooling=false;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.230.200)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)));";
+                }
+                else if (Environment.ToUpper() == "MES_TEST")
+                {
+                    ConnectionStrings = "Password=select!#%*(;User ID=MES_TEST;Pooling=false;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.230.200)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)));";
+                }
+                try
+                {
+                    command.Connection = connection;
+                    command.Connection.Open();
+                }
+                catch (Exception)
+                {
+                    return;
+                }
+                command.CommandTimeout = 0;
             }
         }
+        /// <summary>
+        /// 根据表名获取该表字段数据类型
+        /// </summary>
+        public DataTable GetColumnDataType(string TableName)
+        {
+            DataTable dt = new DataTable();
+            command.CommandText = "select Column_Name,Data_Type from cols where TABLE_name=upper('" + TableName + "')";
+            command.CommandType = CommandType.Text;
+            Reconnect(command);
+            OracleDataAdapter ad = new OracleDataAdapter(command);
+            ad.Fill(dt);
+            ad.Dispose();
+            return dt;
+        }
 
         /// <summary>
         /// 获取第一行第一列的信息
@@ -47,13 +81,26 @@ namespace UAS_MesInterface
         {
             DataTable dt = new DataTable();
             string sql = "select " + Field + " from " + TableName + " where " + Condition;
-            command = new OracleCommand(sql, connection);
+            command.CommandText = sql;
+            command.CommandType = CommandType.Text;
             Reconnect(command);
             OracleDataAdapter ad = new OracleDataAdapter();
             ad.SelectCommand = command;
-            ad.Fill(dt);
+            try
+            {
+                ad.Fill(dt);
+            }
+            catch (Exception)
+            {
+                connection = new OracleConnection(ConnectionStrings);
+                connection.Open();
+                command.Connection = connection;
+                ad = new OracleDataAdapter();
+                ad.SelectCommand = command;
+                ad.Fill(dt);
+            }
             ad.Dispose();
-            command.Dispose();
+
             if (dt.Rows.Count > 0)
             {
                 return dt.Rows[0][0];
@@ -64,6 +111,41 @@ namespace UAS_MesInterface
             }
         }
 
+        /// <summary>
+        /// 执行打印的SQL
+        /// </summary>
+        /// <param name="SQL">SQL语句</param>
+        /// <param name="Parameters">动态添加的参数,主要根据条码枪扫描获取</param>
+        /// <returns></returns>
+        public object ExecutePrintSQL(string SQL, params string[] Parameters)
+        {
+            command.Parameters.Clear();
+            //按照?拆分数据,然后以:Param替换问号,同时添加参数
+            string[] Param = SQL.Split('?');
+            int ParamNum = Param.Length - 1;
+            //条码打印必然存在需要维护的参数
+            if (ParamNum > 0)
+            {
+                StringBuilder sb = new StringBuilder();
+                for (int i = 0; i < ParamNum; i++)
+                {
+                    sb.Append(Param[i] + ":Param" + i);
+                }
+                command.CommandText = sb.ToString();
+                command.CommandType = CommandType.Text;
+                for (int i = 0; i < ParamNum; i++)
+                {
+                    command.Parameters.Add("Param" + i, OracleDbType.Varchar2, Parameters[i], ParameterDirection.Input);
+                }
+                OracleDataAdapter ad = new OracleDataAdapter(command);
+                DataTable dt = new DataTable();
+                ad.Fill(dt);
+                ad.Dispose();
+                return dt;
+            }
+            return "参数错误,请检查SQL语句";
+        }
+
         /// <summary>
         /// 获取指定表的记录的条数 ,带条件
         /// </summary>
@@ -72,12 +154,12 @@ namespace UAS_MesInterface
         {
             DataTable dt = new DataTable();
             string sql = "select count(1) from " + TableName + " where " + Condition;
-            command = new OracleCommand(sql, connection);
+            command.CommandText = sql;
+            command.CommandType = CommandType.Text;
             Reconnect(command);
             OracleDataAdapter ad = new OracleDataAdapter(command);
             ad.Fill(dt);
             ad.Dispose();
-            command.Dispose();
             return int.Parse(dt.Rows[0][0].ToString());
         }
 
@@ -90,12 +172,12 @@ namespace UAS_MesInterface
         {
             DataTable dt = new DataTable();
             string sql = "select count(1) from " + TableName;
-            command = new OracleCommand(sql, connection);
+            command.CommandText = sql;
+            command.CommandType = CommandType.Text;
             Reconnect(command);
             OracleDataAdapter ad = new OracleDataAdapter(command);
             ad.Fill(dt);
             ad.Dispose();
-            command.Dispose();
             return int.Parse(dt.Rows[0][0].ToString());
         }
 
@@ -108,12 +190,25 @@ namespace UAS_MesInterface
             string sql = "select ";
             sql += AddField(Fields);
             sql += " from " + TableName + " where " + Condition + " and rownum=1";
-            command = new OracleCommand(sql, connection);
+            command.CommandText = sql;
+            command.CommandType = CommandType.Text;
             Reconnect(command);
             OracleDataAdapter ad = new OracleDataAdapter(command);
-            ad.Fill(dt);
+            try
+            {
+                ad.Fill(dt);
+            }
+            catch (Exception)
+            {
+                connection = new OracleConnection(ConnectionStrings);
+                connection.Open();
+                command.Connection = connection;
+                ad = new OracleDataAdapter();
+                ad.SelectCommand = command;
+                ad.Fill(dt);
+            }
             ad.Dispose();
-            command.Dispose();
+
             return dt;
         }
 
@@ -145,12 +240,13 @@ namespace UAS_MesInterface
                 else
                     sql.Append(" from " + TableName + ") A where ROWNUM <= " + CurrentPage * PageSize + ") where RN> " + (CurrentPage - 1) * PageSize);
             }
-            command = new OracleCommand(sql.ToString(), connection);
+            command.CommandText = sql.ToString();
+            command.CommandType = CommandType.Text;
             Reconnect(command);
             OracleDataAdapter ad = new OracleDataAdapter(command);
             ad.Fill(dt);
             ad.Dispose();
-            command.Dispose();
+
             dt.Columns.RemoveAt(0);
             foreach (DataColumn dc in dt.Columns)
             {
@@ -169,12 +265,25 @@ namespace UAS_MesInterface
             string sql = "select ";
             sql += AddField(Fields);
             sql += " from " + TableName + " where " + Condition;
-            command = new OracleCommand(sql, connection);
+            command.CommandText = sql;
+            command.CommandType = CommandType.Text;
             Reconnect(command);
             OracleDataAdapter ad = new OracleDataAdapter(command);
-            ad.Fill(dt);
+            try
+            {
+                ad.Fill(dt);
+            }
+            catch (Exception)
+            {
+                connection = new OracleConnection(ConnectionStrings);
+                connection.Open();
+                command.Connection = connection;
+                ad = new OracleDataAdapter();
+                ad.SelectCommand = command;
+                ad.Fill(dt);
+            }
             ad.Dispose();
-            command.Dispose();
+
             return dt;
         }
 
@@ -187,301 +296,26 @@ namespace UAS_MesInterface
             string sql = "select ";
             sql += Fields;
             sql += " from " + TableName;
-            command = new OracleCommand(sql, connection);
+            command.CommandText = sql;
+            command.CommandType = CommandType.Text;
             Reconnect(command);
             OracleDataAdapter ad = new OracleDataAdapter(command);
             ad.SelectCommand = command;
-            ad.Fill(dt);
-            foreach (DataColumn dc in dt.Columns)
-            {
-                dc.Caption = "测试测试";
-            }
-            ad.Dispose();
-            command.Dispose();
-            return dt;
-        }
-
-        /// <summary>
-        /// 根据DataTable和指定的表名更新数据,如果需要保存新增的数据则需要传递一条Insert的SQL
-        /// </summary>
-        /// <param name="DataTable"></param>
-        /// <param name="TableName"></param>
-        /// <param name="Condition"></param>
-        public void UpDateTableByCondition(DataTable DataTable, string TableName, string PrimaryKey, params string[] sql)
-        {
-            if (DataTable == null)
-            {
-                return;
-            }
-            StringBuilder sb = new StringBuilder();
-            //预防插入的DataTable中存在不属于该表的列,在进行下一步操作之前全部剔除
-            DataTable data = (DataTable)ExecuteSql("select Column_Name,Data_Type from cols where TABLE_name=upper('" + TableName + "')", "select");
-            //将所有的字段拼接起来
-            for (int i = 0; i < data.Rows.Count; i++)
-            {
-                sb.Append("#" + data.Rows[i]["Column_Name"].ToString());
-            }
-            //移除掉所有不属于该表的列
-            for (int i = DataTable.Columns.Count - 1; i >= 0; i--)
-            {
-                if (!sb.ToString().Contains(DataTable.Columns[i].ColumnName.ToUpper()))
-                {
-                    DataTable.Columns.RemoveAt(i);
-                }
-            }
-            sb.Clear();
-            //计算有多少个是新加的行,根据主键为空来进行判断
-            int NewRowCount = 0;
-            for (int i = 0; i < DataTable.Rows.Count; i++)
-            {
-                if (DataTable.Rows[i][PrimaryKey] == null || DataTable.Rows[i][PrimaryKey].ToString() == "")
-                {
-                    NewRowCount = NewRowCount + 1;
-                }
-            }
-            if (sql.Length > 0)
-            {
-                if (NewRowCount > 0)
-                {
-                    //获取参数的个数
-                    int paramsNum = sql[0].Split(':').Length - 1;
-                    //解析参数的数据
-                    string[] param = GetParamFromSQL(sql[0]);
-                    //新建一个二维数组去
-                    string[][] param_array = new string[paramsNum][];
-                    //实例化每个一维数组
-                    for (int i = 0; i < paramsNum; i++)
-                    {
-                        param_array[i] = new string[NewRowCount];
-                    }
-                    //设置每列参数的索引
-                    int num = 0;
-                    //变量所有的行,如果有主键为空的则移除,不为空的进行参数的拼接
-                    for (int i = DataTable.Rows.Count - 1; i >= 0; i--)
-                    {
-                        if (DataTable.Rows[i][PrimaryKey] == null || DataTable.Rows[i][PrimaryKey].ToString() == "")
-                        {
-                            //当为新添加行的时候才去设置参数,设置过后索引+1
-                            for (int j = 0; j < paramsNum; j++)
-                            {
-                                param_array[j][num] = DataTable.Rows[i][param[j]].ToString();
-                            }
-                            DataTable.Rows.RemoveAt(i);
-                            num++;
-                        }
-                    }
-                    BatchInsertDataTable(sql[0], param, param_array);
-                }
-            }
-            //不是新增行的启用更新的方法
-            sb.Append("update " + TableName + " set ");
-            //拼接语句,特殊处理日期
-
-            foreach (DataColumn dc in DataTable.Columns)
-            {
-                if (!dc.DataType.ToString().Equals("System.DateTime"))
-                {
-                    sb.Append(dc.Caption + "=:" + dc.Caption + ",");
-                }
-                else
-                {
-                    sb.Append(dc.Caption + "=:" + dc.Caption + ",");
-                }
-            }
-            sb.Remove(sb.Length - 1, 1);
-            sb.Append(" where " + PrimaryKey + "=:" + PrimaryKey);
-            command = new OracleCommand(sb.ToString(), connection);
-            OracleDataAdapter ad = new OracleDataAdapter(command);
-            // 参数的长度是DataTable的行数决定的
-            command.ArrayBindCount = DataTable.Rows.Count;
-            //默认全部是Varchar2类型的
-            OracleDbType ob = OracleDbType.Varchar2;
-            for (int i = 0; i < DataTable.Columns.Count; i++)
-            {
-                object[] param = new object[DataTable.Rows.Count];
-                for (int j = 0; j < DataTable.Rows.Count; j++)
-                {
-                    DateTime dt = DateTime.Now;
-                    if (DateTime.TryParse(DataTable.Rows[j][i].ToString(), out dt))
-                    {
-                        param[j] = dt;
-                        ob = OracleDbType.Date;
-                    }
-                    else
-                    {
-                        ob = OracleDbType.Varchar2;
-                        param[j] = DataTable.Rows[j][i];
-                    }
-                }
-                //添加批量更新的参数
-                command.Parameters.Add(new OracleParameter(DataTable.Columns[i].Caption, ob, param, ParameterDirection.Input));
-            }
-            ad.UpdateCommand = command;
-            ad.Update(DataTable);
-            ad.Dispose();
-            command.Dispose();
-        }
-
-        /// <summary>
-        /// 获取DbFind的数据的DataTable的结构
-        /// </summary>
-        /// <param name="field"></param>
-        /// <param name="caller"></param>
-        /// <returns></returns>
-        public DataTable GetDbFindDataTable(string field, string caller)
-        {
-            string sql = "select * from dbfindsetui where ds_caller='" + caller + "' and ds_whichui='" + field + "'";
-            DataTable dt = (DataTable)ExecuteSql(sql, "select");
-            if (dt.Rows.Count != 0)
-            {
-                //通过#号分割字段
-                string[] dbfield = dt.Rows[0]["ds_findtoui"].ToString().Split('#');
-                string[] cnfield = dt.Rows[0]["ds_dbcaption"].ToString().Split('#');
-                //获取查询要查询的Table
-                string dbtable = dt.Rows[0]["ds_tables"].ToString();
-                //拼接查询的字段
-                for (int i = 0; i < dbfield.Length; i++)
-                {
-                    dbfield[i] = dbfield[i].Split(',')[0];
-                }
-                //新建一个空的DataTable
-                DataTable dt1 = new DataTable();
-                //往空的DataTable添加结构,ColumnName是中文,Caption是实际的字段名称
-                for (int i = 0; i < cnfield.Length; i++)
-                {
-                    dt1.Columns.Add(cnfield[i]);
-                    dt1.Columns[i].Caption = dbfield[i];
-                }
-                //返回一个带有结构的空的DataTable
-                //DbFind.BindTable1 = dbtable;
-                return dt1;
-            }
-            else
-            {
-                return null;
-            }
-        }
-
-        /// <summary>
-        ///  获取配置列表中的数据,支持DaatList,Form,DetailGrid
-        /// </summary>
-        /// <param name="Caller"></param>
-        /// <param name="Type"></param>
-        /// <param name="condition"></param>
-        /// <returns></returns>
-        public DataTable GetConfigureData(string Caller, string Type, string condition)
-        {
-            DataTable dt = new DataTable();
-            //用于拼接SQL语句
-            StringBuilder Sql = new StringBuilder();
-            //用于设置不同Type时设置对应表的字段
-            string getField = "";
-            string getCaption = "";
-            string getTable = "";
-            switch (Type.ToUpper())
-            {
-                case "DATALIST":
-                    getField = "dld_field"; getCaption = "dld_caption"; getTable = "dld_table";
-                    Sql.Append("select * from datalistdetail where dld_caller='" + Caller + "'");
-                    break;
-                case "FORM":
-                    getField = "fd_field"; getCaption = "fd_caption"; getTable = "fd_table";
-                    Sql.Append("select * from formdetail where fd_foid=( select fo_id from form where fo_caller='" + Caller + "')");
-                    break;
-                case "DETAILGRID":
-                    getField = "dg_field"; getCaption = "dg_caption"; getTable = "dg_table";
-                    Sql.Append("select * from detailgrid  where dg_caller='" + Caller + "'");
-                    break;
-            }
-            command = new OracleCommand(Sql.ToString(), connection);
-            OracleDataAdapter ad = new OracleDataAdapter(command);
-            ad.Fill(dt);
-            //清除掉之前的内容重新拼接
-            Sql.Clear();
-            Sql.Append("select ");
-            string[] field = new string[dt.Rows.Count];
-            string[] caption = new string[dt.Rows.Count];
-            DataTable dt1 = new DataTable();
-            //记录描述和字段名称
-            foreach (DataRow dr in dt.Rows)
-            {
-                field[dt.Rows.IndexOf(dr)] = dr[getCaption].ToString();
-                caption[dt.Rows.IndexOf(dr)] = dr[getField].ToString();
-                Sql.Append(dr[getField] + ",");
-            }
-            //调用substring是为了去除之前拼接多出来的一个逗号
-            string sql = Sql.Remove(Sql.Length - 1, 1).ToString() + " from " + dt.Rows[0][getTable] + " where " + condition;
-            //调用一个新的构造DataTable用来存放返回的数据
-            dt1 = (DataTable)ExecuteSql(sql, "select");
-            //给DataTable加上列名和描述,列名是中文字段,描述是数据库实际的字段名称
-            for (int i = 0; i < field.Length; i++)
-            {
-                dt1.Columns[i].ColumnName = field[i];
-                dt1.Columns[i].Caption = caption[i];
-            }
-            //返回的第一条数据是SQL,后面的是实际的列名
-            ad.Dispose();
-            command.Dispose();
-            return dt1;
-        }
-
-        /// <summary>
-        /// 查询配置的字段,Type是查询DataList,Form还是DetailGrid
-        /// </summary>
-        /// <param name="Caller"></param>
-        /// <param name="Type"></param>
-        /// <returns></returns>
-        public DataTable GetConfigureData(string Caller, string Type)
-        {
-            DataTable dt = new DataTable();
-            //用于拼接SQL语句
-            StringBuilder Sql = new StringBuilder();
-            //用于设置不同Type时设置对应表的字段
-            string getField = "";
-            string getCaption = "";
-            string getTable = "";
-            switch (Type.ToUpper())
-            {
-                case "DATALIST":
-                    getField = "dld_field"; getCaption = "dld_caption"; getTable = "dld_table";
-                    Sql.Append("select * from datalistdetail where dld_caller='" + Caller + "'");
-                    break;
-                case "FORM":
-                    getField = "fd_field"; getCaption = "fd_caption"; getTable = "fd_table";
-                    Sql.Append("select * from formdetail where fd_foid=( select fo_id from form where fo_caller='" + Caller + "')");
-                    break;
-                case "DETAILGRID":
-                    getField = "dg_field"; getCaption = "dg_caption"; getTable = "dg_table";
-                    Sql.Append("select * from detailgrid  where dg_caller='" + Caller + "'");
-                    break;
-            }
-            command = new OracleCommand(Sql.ToString(), connection);
-            OracleDataAdapter ad = new OracleDataAdapter(command);
-            ad.Fill(dt);
-            //清除掉之前的内容重新拼接
-            Sql.Clear();
-            Sql.Append("select ");
-            //用于记录实际的列名,+1的目的是为了存放SQL
-            string[] field = new string[dt.Rows.Count];
-            string[] caption = new string[dt.Rows.Count];
-            DataTable dt1 = new DataTable();
-            foreach (DataRow dr in dt.Rows)
+            try
             {
-                field[dt.Rows.IndexOf(dr)] = dr[getCaption].ToString();
-                caption[dt.Rows.IndexOf(dr)] = dr[getField].ToString();
-                Sql.Append(dr[getField] + ",");
+                ad.Fill(dt);
             }
-            string sql = Sql.Remove(Sql.Length - 1, 1).ToString() + " from " + dt.Rows[0][getTable];
-            dt1 = (DataTable)ExecuteSql(sql, "select");
-            //设置DataTable的列名和描述
-            for (int i = 0; i < field.Length; i++)
+            catch (Exception)
             {
-                dt1.Columns[i].ColumnName = field[i];
-                dt1.Columns[i].Caption = caption[i];
+                connection = new OracleConnection(ConnectionStrings);
+                connection.Open();
+                command.Connection = connection;
+                ad = new OracleDataAdapter();
+                ad.SelectCommand = command;
+                ad.Fill(dt);
             }
             ad.Dispose();
-            command.Dispose();
-            return dt1;
+            return dt;
         }
 
         /// <summary>
@@ -493,13 +327,13 @@ namespace UAS_MesInterface
         public bool CheckExist(string TableName, string Condition)
         {
             string sql = "select count(1) from " + TableName + " where " + Condition;
-            command = new OracleCommand(sql, connection);
+            command.CommandText = sql;
+            command.CommandType = CommandType.Text;
             Reconnect(command);
             OracleDataAdapter ad = new OracleDataAdapter(command);
             DataTable dt = new DataTable();
             ad.Fill(dt);
             ad.Dispose();
-            command.Dispose();
             return int.Parse(dt.Rows[0][0].ToString()) > 0;
         }
 
@@ -511,8 +345,10 @@ namespace UAS_MesInterface
         /// <returns></returns>
         public object ExecuteSql(string SQL, string Type, params object[] names)
         {
+            command.Parameters.Clear();
             object result = null;
-            command = new OracleCommand(SQL, connection);
+            command.CommandText = SQL;
+            command.CommandType = CommandType.Text;
             Reconnect(command);
             //用来拼接参数的
             if (names.Length > 0)
@@ -543,22 +379,59 @@ namespace UAS_MesInterface
             switch (Type.ToUpper())
             {
                 case "SELECT":
-                    result = new DataTable();
                     OracleDataAdapter ad = new OracleDataAdapter(command);
-                    ad.Fill((DataTable)result);
-                    ad.Dispose();
+                    result = new DataTable();
+                    try
+                    {
+                        ad.Fill((DataTable)result);
+                    }
+                    catch (Exception)
+                    {
+                        connection = new OracleConnection(ConnectionStrings);
+                        connection.Open();
+                        command.Connection = connection;
+                        ad = new OracleDataAdapter();
+                        ad.SelectCommand = command;
+                        ad.Fill((DataTable)result);
+                    }
                     break;
                 case "DELETE":
-                    result = command.ExecuteNonQuery();
+                    try
+                    {
+                        result = command.ExecuteNonQuery();
+                    }
+                    catch (Exception)
+                    {
+                        command.Connection = new OracleConnection(ConnectionStrings);
+                        command.Connection.Open();
+                        result = command.ExecuteNonQuery();
+                    }
                     break;
                 case "UPDATE":
-                    result = command.ExecuteNonQuery();
+                    try
+                    {
+                        result = command.ExecuteNonQuery();
+                    }
+                    catch (Exception)
+                    {
+                        command.Connection = new OracleConnection(ConnectionStrings);
+                        command.Connection.Open();
+                        result = command.ExecuteNonQuery();
+                    }
                     break;
                 case "INSERT":
-                    result = command.ExecuteNonQuery();
+                    try
+                    {
+                        result = command.ExecuteNonQuery();
+                    }
+                    catch (Exception)
+                    {
+                        command.Connection = new OracleConnection(ConnectionStrings);
+                        command.Connection.Open();
+                        result = command.ExecuteNonQuery();
+                    }
                     break;
             }
-            command.Dispose();
             return result;
         }
 
@@ -569,21 +442,33 @@ namespace UAS_MesInterface
         public void CheckSQL(string SQL)
         {
             SQL = SQL.Replace("?", ":Param");
-            command = new OracleCommand(SQL, connection);
+            command.CommandText = SQL;
+            command.CommandType = CommandType.Text;
             command.ExecuteNonQuery();
-            command.Dispose();
         }
 
         public int GetDistinctRowCount(string TableName, string Field)
         {
             DataTable dt = new DataTable();
             string sql = "select distinct count('" + Field + "') from " + TableName;
-            command = new OracleCommand(sql, connection);
+            command.CommandText = sql;
+            command.CommandType = CommandType.Text;
             Reconnect(command);
             OracleDataAdapter ad = new OracleDataAdapter(command);
-            ad.Fill(dt);
+            try
+            {
+                ad.Fill(dt);
+            }
+            catch (Exception)
+            {
+                connection = new OracleConnection(ConnectionStrings);
+                connection.Open();
+                command.Connection = connection;
+                ad = new OracleDataAdapter();
+                ad.SelectCommand = command;
+                ad.Fill(dt);
+            }
             ad.Dispose();
-            command.Dispose();
             return int.Parse(dt.Rows[0][0].ToString());
         }
 
@@ -607,13 +492,25 @@ namespace UAS_MesInterface
         /// <param name="DeleteID">需要删除主键ID的数组</param>
         public void DeleteDataByID(string TableName, string ID, string[] DeleteID)
         {
+            command.Parameters.Clear();
             string sql = "delete from " + TableName + " where " + ID + " =:DeleteID";
-            command = new OracleCommand(sql, connection);
+            command.CommandText = sql;
+            command.CommandType = CommandType.Text;
             Reconnect(command);
             command.ArrayBindCount = DeleteID.Length;
             command.Parameters.Add(new OracleParameter("DeleteID", OracleDbType.Long, DeleteID, ParameterDirection.Input));
-            command.ExecuteNonQuery();
-            command.Dispose();
+            try
+            {
+                command.ExecuteNonQuery();
+                command.ArrayBindCount = 0;
+            }
+            catch (Exception)
+            {
+                command.Connection = new OracleConnection(ConnectionStrings);
+                command.Connection.Open();
+                command.ExecuteNonQuery();
+                command.ArrayBindCount = 0;
+            }
         }
 
         /// <summary>
@@ -628,6 +525,23 @@ namespace UAS_MesInterface
             return dt.Rows[0][0].ToString();
         }
 
+        /// <summary>
+        /// 通过序列的名称获取序列
+        /// </summary>
+        /// <param name="SeqName"></param>
+        /// <returns></returns>
+        public string[] GetSEQ(string SeqName, int Num)
+        {
+            DataTable dt = new DataTable();
+            dt = (DataTable)ExecuteSql("select " + SeqName + ".nextval from (select 1 from OQCITEMSAMPLES where rownum<" + (Num + 1) + ")", "select");
+            string[] SerialNum = new string[dt.Rows.Count];
+            for (int i = 0; i < dt.Rows.Count; i++)
+            {
+                SerialNum[i] = dt.Rows[i][0].ToString();
+            }
+            return SerialNum;
+        }
+
         public void SaveDataTable(DataTable dt, string TableName, string ID, params string[] sql)
         {
             if (dt == null)
@@ -734,7 +648,8 @@ namespace UAS_MesInterface
         /// <param name="names"></param>
         public void BatchInsert(string sql, params object[][] names)
         {
-            command = new OracleCommand(sql, connection);
+            command.Parameters.Clear();
+            command.CommandText = sql;
             Reconnect(command);
             command.ArrayBindCount = names[1].Length;
             //因为第一个数组保存的是参数的名称,所以循环从1而不是0开始
@@ -743,13 +658,24 @@ namespace UAS_MesInterface
             {
                 command.Parameters.Add(new OracleParameter(names[0][i - 1].ToString(), OracleDbType.Varchar2, names[i], ParameterDirection.Input));
             }
-            command.ExecuteNonQuery();
-            command.Dispose();
+            try
+            {
+                command.ExecuteNonQuery();
+                command.ArrayBindCount = 0;
+            }
+            catch (Exception)
+            {
+                command.Connection = new OracleConnection(ConnectionStrings);
+                command.Connection.Open();
+                command.ExecuteNonQuery();
+                command.ArrayBindCount = 0;
+            }
         }
 
         public void BatchInsertDataTable(string sql, string[] param, params object[][] param1)
         {
-            command = new OracleCommand(sql, connection);
+            command.Parameters.Clear();
+            command.CommandText = sql;
             Reconnect(command);
             command.ArrayBindCount = param1[0].Length;
             //因为第一个数组保存的是参数的名称,所以循环从1而不是0开始
@@ -758,28 +684,18 @@ namespace UAS_MesInterface
             {
                 command.Parameters.Add(new OracleParameter(param[i].ToString(), OracleDbType.Varchar2, param1[i], ParameterDirection.Input));
             }
-            command.ExecuteNonQuery();
-            command.Dispose();
-        }
-
-
-        /// <summary>
-        /// 查询DataList配置的字段
-        /// </summary>
-        /// <param name="TableName"></param>
-        /// <param name="Caller"></param>
-        /// <returns></returns>
-        public string GetDataList(string TableName, string Caller)
-        {
-            DataTable dt = new DataTable();
-            string SQL = " select listagg(dld_field,',') within group (order by dld_id)  from datalistdetail where dld_caller='" + Caller + "'";
-            command = new OracleCommand(SQL, connection);
-            Reconnect(command);
-            OracleDataAdapter ad = new OracleDataAdapter(command);
-            ad.Fill(dt);
-            ad.Dispose();
-            command.Dispose();
-            return dt.Rows[0][0].ToString();
+            try
+            {
+                command.ExecuteNonQuery();
+                command.ArrayBindCount = 0;
+            }
+            catch (Exception)
+            {
+                command.Connection = new OracleConnection(ConnectionStrings);
+                command.Connection.Open();
+                command.ExecuteNonQuery();
+                command.ArrayBindCount = 0;
+            }
         }
 
         /// <summary>
@@ -837,7 +753,6 @@ namespace UAS_MesInterface
             return dt1;
         }
 
-
         /// <summary>
         /// 通过条件更新
         /// </summary>
@@ -847,10 +762,19 @@ namespace UAS_MesInterface
         public string UpdateByCondition(string TableName, string update, string condition)
         {
             string sql = "update " + TableName + " set " + update + " where " + condition;
-            command = new OracleCommand(sql, connection);
+            command.CommandText = sql;
+            command.CommandType = CommandType.Text;
             Reconnect(command);
-            command.ExecuteNonQuery();
-            command.Dispose();
+            try
+            {
+                command.ExecuteNonQuery();
+            }
+            catch (Exception)
+            {
+                command.Connection = new OracleConnection(ConnectionStrings);
+                command.Connection.Open();
+                command.ExecuteNonQuery();
+            }
             return sql;
         }
 
@@ -861,17 +785,25 @@ namespace UAS_MesInterface
         /// <param name="param"></param>
         public void CallProcedure(string ProcedureName, ref string[] param)
         {
-            command = new OracleCommand(ProcedureName);
-            command.Connection = connection;
-            Reconnect(command);
+            command.Parameters.Clear();
             command.CommandText = ProcedureName;
             command.CommandType = CommandType.StoredProcedure;
+            command.ArrayBindCount = 0;
+            Reconnect(command);
             for (int i = 0; i < param.Length; i++)
                 command.Parameters.Add(new OracleParameter(param[i].ToString(), OracleDbType.Varchar2, 200, param[i], ParameterDirection.InputOutput));
-            command.ExecuteNonQuery();
+            try
+            {
+                command.ExecuteNonQuery();
+            }
+            catch (Exception)
+            {
+                command.Connection = new OracleConnection(ConnectionStrings);
+                command.Connection.Open();
+                command.ExecuteNonQuery();
+            }
             for (int i = 0; i < command.Parameters.Count; i++)
                 param[i] = command.Parameters[i].Value.ToString();
-            command.Dispose();
         }
 
         /// <summary>
@@ -881,8 +813,6 @@ namespace UAS_MesInterface
         public void ExecuteSQLTran(params string[] SQL)
         {
             OracleTransaction tx = connection.BeginTransaction();
-            command = new OracleCommand();
-            command.Connection = connection;
             command.Transaction = tx;
             try
             {
@@ -891,7 +821,17 @@ namespace UAS_MesInterface
                     if (!string.IsNullOrEmpty(sql))
                     {
                         command.CommandText = sql;
-                        command.ExecuteNonQuery();
+                        command.CommandType = CommandType.Text;
+                        try
+                        {
+                            command.ExecuteNonQuery();
+                        }
+                        catch (Exception)
+                        {
+                            command.Connection = new OracleConnection(ConnectionStrings);
+                            command.Connection.Open();
+                            command.ExecuteNonQuery();
+                        }
                     }
                 }
                 tx.Commit();
@@ -901,7 +841,6 @@ namespace UAS_MesInterface
                 tx.Rollback();
                 throw new Exception(E.Message);
             }
-            command.Dispose();
         }
 
         /// <summary>
@@ -951,20 +890,32 @@ namespace UAS_MesInterface
         public object GetLabelParam(string sql)
         {
             DataTable dt = new DataTable();
-            command = new OracleCommand(sql, connection);
+            command.CommandText = sql;
+            command.CommandType = CommandType.Text;
             Reconnect(command);
             OracleDataAdapter ad = new OracleDataAdapter();
             ad.SelectCommand = command;
-            ad.Fill(dt);
+            try
+            {
+                ad.Fill(dt);
+            }
+            catch (Exception)
+            {
+                connection = new OracleConnection(ConnectionStrings);
+                connection.Open();
+                command.Connection = connection;
+                ad = new OracleDataAdapter();
+                ad.SelectCommand = command;
+                ad.Fill(dt);
+            }
             if (dt.Rows.Count > 0)
             {
                 ad.Dispose();
-                command.Dispose();
+
                 return dt.Rows[0][0];
             }
             else
             {
-                command.Dispose();
                 return "";
             }
         }
@@ -980,6 +931,7 @@ namespace UAS_MesInterface
                 //新建一个char类型的数组用来存储每个字节的变量
                 char[] c = par[i + 1].ToCharArray();
                 addpar[i] = new StringBuilder();
+
                 for (int j = 0; j < c.Length; j++)
                 {
                     if (c[j] != ' ' && c[j] != ',' && c[j] != ')')
@@ -999,6 +951,14 @@ namespace UAS_MesInterface
             return param;
         }
 
+        public void Dispose()
+        {
+            if (command != null)
+                command.Dispose();
+            if (connection != null)
+                connection.Dispose();
+        }
+
         private void Reconnect(OracleCommand cmd)
         {
             if (cmd.Connection.State == ConnectionState.Closed)

+ 70 - 66
UAS_MesInterface/LogicHandler.cs

@@ -23,15 +23,14 @@ namespace UAS_MesInterface
         /// <summary>
         /// 检测当前的岗位资源对应的工序
         /// </summary>
-        /// <param name="iSnCode"></param>
-        /// <param name="iMakeCode"></param>
-        /// <param name="iSourceCode"></param>
+        /// <param name="iSN"></param>
+        /// <param name="iResCode"></param>
         /// <param name="oErrMessage"></param>
         /// <returns></returns>
-        public bool CheckRoutePassed(string iSnCode, string iSourceCode, out string oErrMessage)
+        public bool CheckRoutePassed(string iSN, string iResCode, out string oErrMessage)
         {
             oErrMessage = "";
-            string[] param = new string[] { "", iSourceCode, iSnCode, "", "", "", oErrMessage };
+            string[] param = new string[] { "", iResCode, iSN, "", "", "", oErrMessage };
             dh.CallProcedure("CS_CHECKSTEPSNANDMACODE", ref param);
             oErrMessage = param[6];
             if (oErrMessage == "" || oErrMessage == null || oErrMessage == "null")
@@ -65,12 +64,12 @@ namespace UAS_MesInterface
         /// 验证用户身份信息和岗位资源
         /// </summary>
         /// <param name="iUserCode"></param>
-        /// <param name="iPassWord"></param>
-        /// <param name="oErrorMessage"></param>
+        /// <param name="iResCode"></param>
+        /// <param name="oErrMessage"></param>
         /// <returns></returns>
-        public bool CheckUserAndResourcePassed(string iUserCode, string iSourceCode, out string oErrorMessage)
+        public bool CheckUserAndResourcePassed(string iUserCode, string iResCode, out string oErrMessage)
         {
-            oErrorMessage = "";
+            oErrMessage = "";
             string SQL = "select em_code,em_type,em_name from employee where em_code=:UserName ";
             DataTable dt;
             dt = (DataTable)dh.ExecuteSql(SQL, "select", iUserCode);
@@ -78,20 +77,20 @@ namespace UAS_MesInterface
             {
                 string em_name = dt.Rows[0]["em_name"].ToString();
                 string em_type = dt.Rows[0]["em_type"].ToString();
-                if (iSourceCode == "")
+                if (iResCode == "")
                 {
-                    oErrorMessage = "岗位资源不允许为空";
+                    oErrMessage = "岗位资源不允许为空";
                     return false;
                 }
                 if (em_type == "admin")
                 {
-                    if (dh.CheckExist("Source", "sc_code='" + iSourceCode + "' and sc_statuscode='AUDITED'"))
+                    if (dh.CheckExist("Source", "sc_code='" + iResCode + "' and sc_statuscode='AUDITED'"))
                     {
                         return true;
                     }
                     else
                     {
-                        oErrorMessage = "岗位资源编号错误或者未审核!";
+                        oErrMessage = "岗位资源编号错误或者未审核!";
                         return false;
                     }
                 }
@@ -104,51 +103,50 @@ namespace UAS_MesInterface
                         //判断如果多个岗位资源存在,用户输入的只要在其中就行
                         for (int i = 0; i < dt.Rows.Count; i++)
                         {
-                            if (dt.Rows[i]["ur_resourcecode"].ToString() == iSourceCode)
+                            if (dt.Rows[i]["ur_resourcecode"].ToString() == iResCode)
                                 return true;
                         }
-                        oErrorMessage = "用户不处于当前资源所属分组!";
+                        oErrMessage = "用户不处于当前资源所属分组!";
                     }
                     else
-                        oErrorMessage = "岗位资源编号错误或者未审核!";
+                        oErrMessage = "岗位资源编号错误或者未审核!";
                 }
             }
             else
-                oErrorMessage = "用户不存在!";
+                oErrMessage = "用户不存在!";
             return false;
         }
 
         /// <summary>
         /// 分配Mac地址和BT地址
         /// </summary>
-        /// <param name="iSnCode"></param>
-        /// <param name="iMakeCode"></param>
-        /// <param name="oMac"></param>
+        /// <param name="iSN"></param>
+        /// <param name="oWIFI"></param>
         /// <param name="oBT"></param>
         /// <param name="oCode1"></param>
         /// <param name="oCode2"></param>
         /// <param name="oCdoe3"></param>
-        /// <param name="oErrorMessage"></param>
+        /// <param name="oErrMessage"></param>
         /// <returns></returns>
-        public bool GetAddressRangeByMO(string iSnCode, out string oMac, out string oBT, out string oCode1, out string oCode2, out string oCdoe3, out string oErrorMessage)
+        public bool GetAddressRangeByMO(string iSN, out string oWIFI, out string oBT, out string oCode1, out string oCode2, out string oCdoe3, out string oErrMessage)
         {
-            oMac = "";
+            oWIFI = "";
             oBT = "";
             oCode1 = "";
             oCode2 = "";
             oCdoe3 = "";
-            oErrorMessage = "";
+            oErrMessage = "";
             string omakeCode = "";
-            GetRcardMOInfo(iSnCode,out omakeCode,out oErrorMessage);
-            string[] param = new string[] { iSnCode, omakeCode, oMac, oBT, oCode1, oCode2, oCdoe3, oErrorMessage };
+            GetRcardMOInfo(iSN,out omakeCode,out oErrMessage);
+            string[] param = new string[] { iSN, omakeCode, oWIFI, oBT, oCode1, oCode2, oCdoe3, oErrMessage };
             dh.CallProcedure("CS_GETADDRESSBYMAKECODE", ref param);
-            oMac = param[2];
+            oWIFI = param[2];
             oBT = param[3];
             oCode1 = param[4];
             oCode2 = param[5];
             oCdoe3 = param[6];
-            oErrorMessage = param[7];
-            if (oErrorMessage == "" || oErrorMessage == null || oErrorMessage == "null")
+            oErrMessage = param[7];
+            if (oErrMessage == "" || oErrMessage == null || oErrMessage == "null")
                 return true;
             else
                 return false;
@@ -158,8 +156,7 @@ namespace UAS_MesInterface
         /// 输入的 SN 号查找在制品是否有 IMEI 信息存在,如果存在则将 IMEI 信息传出,如果没有则在该工单下未使用的 IMEI 中随机分配一组
         /// 如果iIMEI1、iNetCode不为空,则分别作为获取的附件加条件。
         /// </summary>
-        /// <param name="iSN"></param>
-        /// <param name="iMO"></param>
+        /// <param name="iSnCode"></param>
         /// <param name="iIMEI1"></param>
         /// <param name="iNetCode"></param>
         /// <param name="oIMEI1"></param>
@@ -168,14 +165,12 @@ namespace UAS_MesInterface
         /// <param name="oMEID"></param>
         /// <param name="oNetCode"></param>
         /// <param name="oPSN"></param>
-        /// <param name="oMac"></param>
-        /// <param name="oBT"></param>
         /// <param name="oID1"></param>
         /// <param name="oID2"></param>
         /// <param name="oID3"></param>
-        /// <param name="oErrorMessage"></param>
+        /// <param name="oErrMessage"></param>
         /// <returns></returns>
-        public bool GetMEIOrNetCodeRange(string iSnCode, string iIMEI1, string iNetCode, out string oIMEI1, out string oIMEI2, out string oIMEI3, out string oMEID, out string oNetCode, out string oPSN, out string oID1, out string oID2, out string oID3, out string oErrorMessage)
+        public bool GetMEIOrNetCodeRange(string iSnCode, string iIMEI1, string iNetCode, out string oIMEI1, out string oIMEI2, out string oIMEI3, out string oMEID, out string oNetCode, out string oPSN, out string oID1, out string oID2, out string oID3, out string oErrMessage)
         {
             oIMEI1 = "";
             oIMEI2 = "";
@@ -186,8 +181,8 @@ namespace UAS_MesInterface
             oID1 = "";
             oID2 = "";
             oID3 = "";
-            oErrorMessage = "";
-            string[] param = new string[] { iSnCode, "", iIMEI1, iNetCode, oIMEI1, oIMEI2, oIMEI3, oMEID, oNetCode, oPSN, oID1, oID2, oID3, oErrorMessage };
+            oErrMessage = "";
+            string[] param = new string[] { iSnCode, "", iIMEI1, iNetCode, oIMEI1, oIMEI2, oIMEI3, oMEID, oNetCode, oPSN, oID1, oID2, oID3, oErrMessage };
             dh.CallProcedure("CS_GETIMEIORNETCODERANGE", ref param);
             oIMEI1 = param[4];
             oIMEI2 = param[5];
@@ -198,8 +193,8 @@ namespace UAS_MesInterface
             oID1 = param[10];
             oID2 = param[11];
             oID3 = param[12];
-            oErrorMessage = param[13];
-            if (oErrorMessage == "" || oErrorMessage == null || oErrorMessage == "null")
+            oErrMessage = param[13];
+            if (oErrMessage == "" || oErrMessage == null || oErrMessage == "null")
                 return true;
             else
                 return false;
@@ -208,22 +203,22 @@ namespace UAS_MesInterface
         /// <summary>
         /// 获取工单的最近一条执行记录
         /// </summary>
-        /// <param name="iSnCode"></param>
-        /// <param name="oMakeCode"></param>
-        /// <param name="oErrorMessage"></param>
+        /// <param name="iSN"></param>
+        /// <param name="oMoCode"></param>
+        /// <param name="oErrMessage"></param>
         /// <returns></returns>
-        public bool GetRcardMOInfo(string iSnCode, out string oMakeCode, out string oErrorMessage)
+        public bool GetRcardMOInfo(string iSN, out string oMoCode, out string oErrMessage)
         {
             //取MakeProcess表中的执行记录ID最大的一个工单的号码
-            oMakeCode = "";
-            oErrorMessage = "";
-            string ms_id = dh.getFieldDataByCondition("MakeSerial", "max(ms_id) ms_id", "ms_sncode='" + iSnCode + "' or ms_firstsn in (select firstsn from makesnrelation where sn='" + iSnCode + "')").ToString();
-            oMakeCode = dh.getFieldDataByCondition("MakeSerial", "ms_makecode", "ms_id='" + ms_id + "'").ToString();
-            if (oMakeCode != "")
+            oMoCode = "";
+            oErrMessage = "";
+            string ms_id = dh.getFieldDataByCondition("MakeSerial", "max(ms_id) ms_id", "ms_sncode='" + iSN + "' or ms_firstsn in (select firstsn from makesnrelation where sn='" + iSN + "')").ToString();
+            oMoCode = dh.getFieldDataByCondition("MakeSerial", "ms_makecode", "ms_id='" + ms_id + "'").ToString();
+            if (oMoCode != "")
                 return true;
             else
             {
-                oErrorMessage = "序列号:" + iSnCode + " 未归属工单";
+                oErrMessage = "序列号:" + iSN + " 未归属工单";
                 return false;
             }
         }
@@ -232,24 +227,29 @@ namespace UAS_MesInterface
         /// 获取序列号的所有串号信息
         /// </summary>
         /// <param name="iSnCode"></param>
+        /// <param name="oWIFI"></param>
+        /// <param name="oBT"></param>
+        /// <param name="oCode1"></param>
+        /// <param name="oCode2"></param>
+        /// <param name="oCode3"></param>
         /// <param name="oIMEI1"></param>
         /// <param name="oIMEI2"></param>
         /// <param name="oIMEI3"></param>
         /// <param name="oMEID"></param>
         /// <param name="oNetCode"></param>
         /// <param name="oPSN"></param>
-        /// <param name="oMac"></param>
-        /// <param name="oBT"></param>
-        /// <param name="oCode1"></param>
-        /// <param name="oCode2"></param>
-        /// <param name="oCode3"></param>
+        /// <param name="oID1"></param>
+        /// <param name="oID2"></param>
+        /// <param name="oID3"></param>
+        /// <param name="oID4"></param>
+        /// <param name="oID5"></param>
         /// <param name="oErrorMessage"></param>
         /// <returns></returns>
-        public bool GetMobileAllInfo(string iSnCode, out string oMac, out string oBT, out string oCode1, out string oCode2, out string oCode3, out string oIMEI1, out string oIMEI2, out string oIMEI3, out string oMEID, out string oNetCode, out string oPSN, out string oID1, out string oID2, out string oID3, out string oErrorMessage)
+        public bool GetMobileAllInfo(string iSnCode, out string oWIFI, out string oBT, out string oCode1, out string oCode2, out string oCode3, out string oIMEI1, out string oIMEI2, out string oIMEI3, out string oMEID, out string oNetCode, out string oPSN, out string oID1, out string oID2, out string oID3,out string oID4,out string oID5, out string oErrorMessage)
         {
             oBT = "";
             oMEID = "";
-            oMac = "";
+            oWIFI = "";
             oPSN = "";
             oNetCode = "";
             oIMEI1 = "";
@@ -261,6 +261,8 @@ namespace UAS_MesInterface
             oID1 = "";
             oID2 = "";
             oID3 = "";
+            oID4 = "";
+            oID5 = "";
             //通过序列号获取最近操作的工单号
             string ms_id = dh.getFieldDataByCondition("makeserial", "ms_id", "ms_sncode='" + iSnCode + "'").ToString();
             if (ms_id != "")
@@ -268,7 +270,7 @@ namespace UAS_MesInterface
                 DataTable dt = dh.getFieldsDataByCondition("MakeSerial", new string[] { "ms_id", "ms_mac", "ms_bt", "ms_meid", "ms_netcode", "ms_psn", "ms_imei1", "ms_imei2", "ms_imei3", "ms_othcode1", "ms_othcode2", "ms_othcode3", "ms_othid1", "ms_othid2", "ms_othid3" }, "ms_id='" + ms_id + "'");
                 if (dt.Rows.Count > 0)
                 {
-                    oMac = dt.Rows[0]["ms_mac"].ToString();
+                    oWIFI = dt.Rows[0]["ms_mac"].ToString();
                     oBT = dt.Rows[0]["ms_bt"].ToString();
                     oPSN = dt.Rows[0]["ms_psn"].ToString();
                     oNetCode = dt.Rows[0]["ms_netcode"].ToString();
@@ -326,17 +328,17 @@ namespace UAS_MesInterface
         /// 保存Mac地址和BT地址
         /// </summary>
         /// <param name="iSN"></param>
-        /// <param name="iMac"></param>
+        /// <param name="iWIFI"></param>
         /// <param name="iBT"></param>
         /// <param name="iCode1"></param>
         /// <param name="iCode2"></param>
         /// <param name="iCode3"></param>
         /// <param name="oErrorMessage"></param>
         /// <returns></returns>
-        public bool SetAddressInfo(string iSN, string iMac, string iBT, string iCode1, string iCode2, string iCode3, out string oErrorMessage)
+        public bool SetAddressInfo(string iSN, string iWIFI, string iBT, string iCode1, string iCode2, string iCode3, out string oErrorMessage)
         {
             oErrorMessage = "";
-            string[] param = new string[] { iSN, iMac, iBT, iCode1, iCode2, iCode3, oErrorMessage };
+            string[] param = new string[] { iSN, iWIFI, iBT, iCode1, iCode2, iCode3, oErrorMessage };
             dh.CallProcedure("CS_SETADDRESSINFO", ref param);
             oErrorMessage = param[6];
             if (oErrorMessage == "" || oErrorMessage == null || oErrorMessage == "null")
@@ -423,7 +425,7 @@ namespace UAS_MesInterface
         /// <summary>
         /// 方法说明:测试详细信息录入系统,针对一个SN多个测试项目结果可循环调用
         /// </summary>
-        /// <param name="iSnCode">序列号</param>
+        /// <param name="iSN">序列号</param>
         /// <param name="iClass"></param>
         /// <param name="iSubClass1"></param>
         /// <param name="iSubClass2"></param>
@@ -437,17 +439,19 @@ namespace UAS_MesInterface
         /// <param name="iTestResult"></param>
         /// <param name="oErrMessage"></param>                                                      
         /// <returns></returns>
-        public bool SetTestDetail(string iSnCode, string iMakeCode, string iClass, string iSubClass1, string iSubClass2, string iSubClass3, string iMaxValue, string iMinValue, string iActualValue, string iValue1, string iValue2, string iValue3, string iTestResult, string iSourceCode, out string oErrMessage)
+        public bool SetTestDetail(string iSN, string iClass, string iSubClass1, string iSubClass2, string iSubClass3, string iMaxValue, string iMinValue, string iActualValue, string iValue1, string iValue2, string iValue3, string iTestResult, out string oErrMessage)
         {
             oErrMessage = "";
             sql.Clear();
+            string omakeCode;
+            GetRcardMOInfo(iSN, out omakeCode, out oErrMessage);
             sql.Append("Insert into STEPTESTDETAIL (STD_ID,STD_SN,STD_MAKECODE,STD_CLASS,STD_SUBCLASS1,STD_SUBCLASS2,");
             sql.Append("STD_SUBCLASS3,STD_MAXVALUE,STD_MINVALUE,STD_ACTUALVALUE,STD_VALUE1,STD_VALUE2,STD_VALUE3,STD_TESTRESULT,");
-            sql.Append("STD_DATE,STD_RESCODE) values (STEPTESTDETAIL_SEQ.nextval,:std_sn,:std_makecode,");
+            sql.Append("STD_DATE) values (STEPTESTDETAIL_SEQ.nextval,:std_sn,:std_makecode,");
             sql.Append(":std_class,:std_subclass1,:std_subclass2,:std_subclass3,:std_maxvalue,:std_minvalue,:std_actualvalue,:std_value1,");
-            sql.Append(":std_value2,:std_value3,:std_testresult,sysdate,:std_record)");
-            dh.ExecuteSql(sql.ToString(), "select", iSnCode, iMakeCode, iClass, iSubClass1, iSubClass2, iSubClass3, iMaxValue, iMinValue, iActualValue, iValue1, iValue2, iValue3, iTestResult, iSourceCode);
-            return true;
+            sql.Append(":std_value2,:std_value3,:std_testresult,sysdate)");
+            dh.ExecuteSql(sql.ToString(), "select", iSN, omakeCode, iClass, iSubClass1, iSubClass2, iSubClass3, iMaxValue, iMinValue, iActualValue, iValue1, iValue2, iValue3, iTestResult);
+            return true;    
         }
 
         /// <summary>