/// <summary> /// 设置货位列表 /// </summary> /// <param name="id"></param> /// <param name="name"></param> /// <param name="single"></param> /// <param name="standerd"></param> public void setList(string id, string name) { try { DataTable dt = bll.getListByIN(id, name, placeArea, inOutType); if (inOutType.Equals(InOutType.KNIFE_IN)) {//新刀具入库时,要去掉已选中的货位 List <int> listToDel = new List <int>(); for (int i = 0; i < dt.Rows.Count; i++) { for (int j = 0; j < dtPar.Rows.Count; j++) { if (dt.Rows[i][0].Equals(dtPar.Rows[j][4])) { listToDel.Add(i); } } } listToDel.Sort(); listToDel.Reverse(); listToDel.ForEach(i => dt.Rows.RemoveAt(i)); } dgv_Data.DataSource = dt; dgv_Data.Columns[0].HeaderText = "编码"; dgv_Data.Columns[0].ReadOnly = true; dgv_Data.Columns[0].Width = 100; dgv_Data.Columns[1].HeaderText = "名称"; dgv_Data.Columns[1].ReadOnly = true; dgv_Data.Columns[1].Width = 250; dgv_Data.Columns[2].HeaderText = "是否被占用"; dgv_Data.Columns[2].ReadOnly = true; dgv_Data.Columns[2].Width = 150; } catch (Exception) { MessageBox.Show("与数据库连接失败,请查看网络连接是否正常。如不能解决请与网络管理员联系!", "严重错误:", MessageBoxButtons.OK, MessageBoxIcon.Error); this.Close(); return; } }
/// <summary> /// 根据id和名称获得货位(最小控制单元) /// </summary> /// <param name="tableName"></param> /// <returns></returns> public DataTable getListByIN(string id, string name, string placeArea, InOutType type) { string sql; if (type.Equals(InOutType.MATERIEL_IN)) { sql = " SELECT [C_ID], [C_NAME], case when b.num > 0 then '是' else '否' end FROM [T_JB_Place] a " + " left join (select C_PLACE, count(*) num from [T_OPERATE_STOCKS] group by C_PLACE) b on a.C_ID = b.C_PLACE where I_END=1 and I_INUSE = 1 " + " and C_ID not in (select C_PLACE from T_RUNING_DOLIST) "; } else { sql = " SELECT [C_ID], [C_NAME], case when b.num > 0 then '是' else '否' end FROM [T_JB_Place] a " + " left join (select C_PLACE, count(*) num from [T_OPERATE_STOCKS] group by C_PLACE) b on a.C_ID = b.C_PLACE where I_END=1 and I_INUSE = 1 " + " and C_ID not in (select C_PLACE from T_RUNING_DOLIST) " + " and C_ID not in (select C_PLACE from T_OPERATE_INOUT_SUB where I_FLAG = 1) " + " and C_ID not in (select C_PLACE from T_OPERATE_STOCKS) "; } DataTable dt = new DataTable(); try { if (id != null || name != null || placeArea != null) { Hashtable table = new Hashtable(); if (id != null) { sql += " and C_ID like @id"; table.Add("id", id + "%"); } if (name != null) { sql += " and C_NAME like @C_NAME"; table.Add("C_NAME", "%" + name + "%"); } if (placeArea != null) { sql += " and C_AREA = @C_AREA"; table.Add("C_AREA", placeArea); } sql += " order by convert(numeric,c_id) asc"; DbParameter[] parms = dbHelper.getParams(table); dt = dbHelper.GetDataSet(sql, parms); } else { sql += " order by convert(numeric,c_id) asc"; dt = dbHelper.GetDataSet(sql); } } catch (Exception ex) { Log.write(ex.Message + "\r\n" + ex.StackTrace); throw ex; } finally { dbHelper.getConnection().Close(); } return(dt); }
/// <summary> /// 联机任务 /// </summary> /// <param name="dt"></param> /// <param name="meno"></param> /// <param name="station"></param> /// <returns></returns> public string SaveDolist(DataTable dt, string meno, InOutType type) { int result = 0; DbConnection conn = dbHelper.getConnection(); try { conn.Open(); } catch (Exception ex) { Log.write(ex.Message + "\r\n" + ex.StackTrace); conn.Close(); throw ex; } DbTransaction tran = conn.BeginTransaction(); DbCommand com = conn.CreateCommand(); string sql = string.Empty; try { com.Transaction = tran; string dh; DateTime dtNow = DateTime.Now; long dec_id = 0; string c_id = string.Empty; sql = "SELECT MAX(c_id) FROM T_OPERATE_INOUT_MAIN where datediff(day,[D_TIME],getdate()) = 0 AND C_CRK_LEIBIE = '" + (int)type + "'"; com.CommandText = sql; object obj = com.ExecuteScalar(); dec_id = Convert.IsDBNull(obj) ? 0 : Convert.ToInt64(obj.ToString().Substring(10)); c_id = Common.GetInOutCode(type) + dtNow.ToString("yyyyMMdd") + (dec_id + 1).ToString().PadLeft(6, '0'); dh = c_id; for (int i = 0; i < dt.Rows.Count; i++) { sql = @"INSERT INTO [T_Runing_Dolist]([Dec_ID], [C_DH], [I_INOUT], [D_RQ], [C_MATERIEL], [C_PLACE], [DEC_COUNT], [C_CZY], [I_RUN], [D_AddRQ], [C_MEMO], [I_FLAG], [C_MACHINE]) VALUES(@Dec_ID, @C_DH, @I_INOUT, @D_RQ, @C_MATERIEL, @C_PLACE, @DEC_COUNT, @C_CZY, @I_RUN, @D_AddRQ, @C_MEMO, @I_FLAG, @C_MACHINE)"; com.CommandText = sql; Hashtable table2 = new Hashtable(); table2.Add("Dec_ID", i + 1); table2.Add("C_DH", dh); table2.Add("I_INOUT", (int)type); table2.Add("D_RQ", Convert.ToDateTime(dt.Rows[i][5]).ToString("yyyy-MM-dd")); table2.Add("C_MATERIEL", dt.Rows[i][0]); table2.Add("C_PLACE", dt.Rows[i][4]); table2.Add("DEC_COUNT", dt.Rows[i][3]); table2.Add("C_CZY", dt.Rows[i][6]); table2.Add("I_RUN", 0); table2.Add("D_AddRQ", DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")); if (meno == null || string.Empty.Equals(meno.Trim())) { table2.Add("C_MEMO", DBNull.Value); } else { table2.Add("C_MEMO", meno); } if (type.Equals(InOutType.KNIFE_OUT_USE)) { table2.Add("I_FLAG", 1); table2.Add("C_MACHINE", dt.Rows[i][7]); } else { table2.Add("I_FLAG", 0); table2.Add("C_MACHINE", DBNull.Value); } DbParameter[] parms2 = dbHelper.getParams(table2); com.Parameters.Clear(); com.Parameters.AddRange(parms2); result = com.ExecuteNonQuery(); } tran.Commit(); if (result > 0) { return(dh); } else { return(null); } } catch (Exception ex) { tran.Rollback(); conn.Close(); Log.write(ex.Message + "\r\n" + ex.StackTrace); throw ex; } finally { conn.Close(); } }