Browse Source

数据上传方式修改

章政 6 years ago
parent
commit
14ef51925d

+ 66 - 3
UAS-出货标签管理(吉利通)/PublicMethod/DataHelper.cs

@@ -619,7 +619,7 @@ namespace UAS_LabelMachine
         /// 获取DbFind的数据的DataTable的结构
         /// </summary>
         /// <param name="field"></param>
-        /// <param name="caller"></param>
+        /// <param name="caller"></param>   
         /// <returns></returns>
         public DataTable GetDbFindDataTable(string field, string caller)
         {
@@ -954,7 +954,7 @@ namespace UAS_LabelMachine
             //将第一个数组的下标固定为0作为循环添加的参数的名称
             for (int i = 1; i <= names[0].Length; i++)
             {
-                if (names[0][i - 1].ToString().ToUpper().Contains("DATE"))
+                if (names[0][i - 1].ToString().ToUpper().Contains("DATE") && !names[0][i - 1].ToString().ToUpper().Contains("DATECODE"))
                 {
                     DateTime[] time = new DateTime[names[i].Length];
                     try
@@ -1095,7 +1095,44 @@ namespace UAS_LabelMachine
         /// </summary>
         /// <param name="ProcedureName"></param>
         /// <param name="param"></param>
-        public void CallProcedure(string ProcedureName,ref  string[] param)
+        public void CallProcedure(string ProcedureName,DataTable upload)
+        {
+            StringBuilder sql = new StringBuilder();
+            sql.Append("declare barcode BarCodeUpload_arr;begin barcode:=BarCodeUpload_arr(");
+            for (int i = 0; i < upload.Rows.Count; i++)
+            {
+                sql.Append("BarCodeUpload(");
+                for (int j = 0; j < upload.Columns.Count; j++)
+                {
+                    sql.Append("'"+upload.Rows[i][j].ToString()+"',");
+                }
+                sql.Remove(sql.Length - 1, 1);
+                sql.Append("),");
+            }
+            sql.Remove(sql.Length-1,1);
+            sql.Append(");sp_uploadbarcode(barcode);END;");
+            command = new OracleCommand();
+            command.Connection = connection;
+            command.CommandText = sql.ToString();
+            try
+            {
+                command.ExecuteNonQuery();
+            }
+            catch (Exception)
+            {
+                command.Connection = new OracleConnection(DBConnectionString);
+                command.Connection.Open();
+                command.ExecuteNonQuery();
+            }
+            command.Dispose();
+        }
+
+        /// <summary>
+        /// 调用存储过程
+        /// </summary>
+        /// <param name="ProcedureName"></param>
+        /// <param name="param"></param>
+        public void CallProcedure(string ProcedureName, ref string[] param)
         {
             command = new OracleCommand(ProcedureName);
             command.Connection = connection;
@@ -1118,6 +1155,32 @@ namespace UAS_LabelMachine
             command.Dispose();
         }
 
+        /// <summary>
+        /// 调用存储过程
+        /// </summary>
+        /// <param name="ProcedureName"></param>
+        /// <param name="param"></param>
+        public void CallProcedure(string ProcedureName, string[] param)
+        {
+            command = new OracleCommand(ProcedureName);
+            command.Connection = connection;
+            command.CommandText = ProcedureName;
+            command.CommandType = CommandType.StoredProcedure;
+            for (int i = 0; i < param.Length; i++)
+                command.Parameters.Add(new OracleParameter(param[i].ToString(), OracleDbType.Varchar2, 200, param[i], ParameterDirection.InputOutput));
+            try
+            {
+                command.ExecuteNonQuery();
+            }
+            catch (Exception)
+            {
+                command.Connection = new OracleConnection(DBConnectionString);
+                command.Connection.Open();
+                command.ExecuteNonQuery();
+            }
+            command.Dispose();
+        }
+
         /// <summary>
         /// 出现异常进行回滚的执行方法
         /// </summary>

+ 6 - 3
UAS-出货标签管理(吉利通)/PublicMethod/LogicHandler.cs

@@ -76,14 +76,17 @@ namespace UAS_LabelMachine.PublicMethod
         /// <param name="iInoutno"></param>
         public static bool CheckUploadData(string iInoutno, int iUploadNum)
         {
-            DataTable dt = (DataTable)adh.ExecuteSql("select pib_id,pib_outboxcode1,pib_outboxcode2,pib_lotno,pib_ifmodify,pib_datecode,pib_ifpick,-1 as pib_ifupload,pib_ifprint,pib_ifrecheck from prodiobarcode where pib_inoutno='" + iInoutno + "'   ", "select");
+            DataTable dt = (DataTable)adh.ExecuteSql("select pib_id,pib_outboxcode1,pib_outboxcode2,pib_custmidboxcode,pib_custoutboxcode,pib_lotno,pib_datecode,pib_ifmodify,pib_ifupload,pib_ifpick,pib_ifprint,pib_ifrecheck from prodiobarcode where pib_inoutno='" + iInoutno + "'   ", "select");
             DataTable upload = BaseUtil.filterDataTable(dt, "pib_ifupload=0 and pib_ifrecheck=-1");
             DataTable unupload = BaseUtil.filterDataTable(dt, "pib_ifpick=0");
             //如果本地需要上传的数据已经达到了需要上传的条数或者已经采集完了最后一条数据
+            for (int i = 0; i < upload.Rows.Count; i++)
+            {
+                upload.Rows[i]["pib_ifupload"] = -1;
+            }
             if (iUploadNum <= upload.Rows.Count || unupload.Rows.Count == 0)
             {
-                //上传数据
-                dh.SaveDataTable(upload, "prodiobarcode", "pib_id");
+                dh.CallProcedure("sp_uploadbarcode", upload);
                 //更新本地数据为已上传
                 if (adh.UpdateByCondition("prodiobarcode", "pib_ifupload=-1", "pib_inoutno='" + iInoutno + "' and pib_ifrecheck=-1 and pib_ifupload<>-1") > 0)
                 {