private void Button_Click_1(object sender, RoutedEventArgs e) { if (!isChoosed) { MessageBox.Show("Вы должны выбрать задачу"); return; } Builder.setTaskId(worker, Int32.Parse(taskds_st.tskID)); Builder.setWhId(worker, Int32.Parse(taskds_st.wareHID)); string buff = "UPDATE TASKS SET DRIVER_ID="; buff += worker.id; buff += " WHERE TASK_ID="; buff += worker.choodesTaskId; SqlCommand cmd = new SqlCommand(); SqlConnection sc = DBSQLServerUtils.GetDBConnection(); sc.Open(); cmd.Connection = sc; cmd.CommandText = buff; cmd.ExecuteNonQuery(); sc.Close(); DriverWork dw = new DriverWork(worker); dw.Show(); this.Close(); }
public bool checkREQ() { string sql = "Select wh_id,good_id,AVAILABLE_QUANTITY from wh_goods where wh_id="; SqlCommand cmd = new SqlCommand(); SqlConnection sc = DBSQLServerUtils.GetDBConnection(); sc.Open(); cmd.Connection = sc; cmd.CommandText = sql; try { using (DbDataReader reader1 = cmd.ExecuteReader()) { if (reader1.HasRows) { sc.Close(); return(true); } else { sc.Close(); return(false); } } } catch (Exception ed) { MessageBox.Show(ed + ed.StackTrace); } finally { sc.Close(); } return(false); }
private void reqSel(object sender, RoutedEventArgs e) { reqTask p = new reqTask(); p = (reqTask)reqList.SelectedItem; if (p.reqID == "ID Запроса ") { return; } req_goods.Items.Clear(); string sql = "Select good_id,quantity from order_list where order_id="; for (int i = 0; i < p.reqID.Length - 1; i++) { sql += p.reqID[i]; } SqlCommand cmd = new SqlCommand(); SqlConnection sc = DBSQLServerUtils.GetDBConnection(); sc.Open(); reqGoods buff = new reqGoods(); buff.goodID = "ID Товара "; buff.quan = "Количество"; req_goods.Items.Add(buff); cmd.Connection = sc; cmd.CommandText = sql; try { using (DbDataReader reader1 = cmd.ExecuteReader()) { if (reader1.HasRows) { while (reader1.Read()) { buff = new reqGoods(); int idGood = reader1.GetOrdinal("good_id"); int quant = reader1.GetOrdinal("quantity"); buff.goodID = reader1.GetInt32(idGood).ToString() + " "; buff.quan = reader1.GetInt32(quant).ToString(); req_goods.Items.Add(buff); } } } } catch (Exception ed) { MessageBox.Show(ed + ed.StackTrace); } finally { sc.Close(); } }
private void Button_Click3(object sender, RoutedEventArgs e) { if (goodChAim.Text == null || goodChAim.Text == "") { MessageBox.Show("Поле ID товара, цена которого меняется не должно быть пустым"); return; } if (newCost.Text == null || newCost.Text == "") { MessageBox.Show("Поле значения новой цены не должно быть пустым"); return; } if (Int32.Parse(newCost.Text) < 0) { MessageBox.Show("Цена товара не должна быть отрицательной"); return; } if (Int32.Parse(goodChAim.Text) <= 0) { MessageBox.Show("Недопустимое ID товара"); return; } if (Int32.Parse(goodChAim.Text) > goodsQuant) { MessageBox.Show("Недопустимое ID товара"); return; } string sql = "UPDATE G_NAMES SET COST="; sql += newCost.Text; sql += " WHERE GOOD_ID="; sql += goodChAim.Text; SqlCommand cmd = new SqlCommand(); SqlConnection sc = DBSQLServerUtils.GetDBConnection(); sc.Open(); cmd.Connection = sc; cmd.CommandText = sql; try { cmd.ExecuteNonQuery(); } catch (Exception ed) { MessageBox.Show(ed + ed.StackTrace); } finally { sc.Close(); } goods_id.Items.Clear(); this.showGoods(); MessageBox.Show("Изменения вступили в силу"); }
public void showGoods() { InfGood buffd = new InfGood(); buffd.gI = "ID"; buffd.gN = "Название"; buffd.cSt = " Цена"; goods_id.Items.Add(buffd); string sql = "Select good_id,good_name,cost from G_Names"; SqlCommand cmd = new SqlCommand(); SqlConnection sc = DBSQLServerUtils.GetDBConnection(); sc.Open(); cmd.Connection = sc; cmd.CommandText = sql; InfGood buff; try { using (DbDataReader reader = cmd.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { goodsQuant++; int idI = reader.GetOrdinal("good_id"); int idN = reader.GetOrdinal("good_name"); int idCST = reader.GetOrdinal("cost"); int idG = reader.GetInt32(idI); string name = reader.GetString(idN); int cst = reader.GetInt32(idCST); buff = new InfGood(); buff.gI = idG.ToString(); buff.gN = name; buff.cSt = " "; buff.cSt += cst.ToString(); goods_id.Items.Add(buff); } } } } catch (Exception ed) { MessageBox.Show(ed + ed.StackTrace); } finally { sc.Close(); } }
private void whSel(object sender, RoutedEventArgs e) { wareHouse p = new wareHouse(); p = (wareHouse)warList.SelectedItem; if (p.whID == "ID Склада") { return; } warehouseGoods.Items.Clear(); string sql = "Select wh_id,good_id,AVAILABLE_QUANTITY from wh_goods where wh_id="; sql += p.whID; SqlCommand cmd = new SqlCommand(); SqlConnection sc = DBSQLServerUtils.GetDBConnection(); sc.Open(); wareGoods buff = new wareGoods(); buff.goodID = "ID Товара "; buff.quan = "Количество "; warehouseGoods.Items.Add(buff); cmd.Connection = sc; cmd.CommandText = sql; try { using (DbDataReader reader1 = cmd.ExecuteReader()) { if (reader1.HasRows) { while (reader1.Read()) { buff = new wareGoods(); int idGood = reader1.GetOrdinal("good_id"); int quant = reader1.GetOrdinal("AVAILABLE_QUANTITY"); buff.goodID = reader1.GetInt32(idGood).ToString() + " "; buff.quan = reader1.GetInt32(quant).ToString(); warehouseGoods.Items.Add(buff); } } } } catch (Exception ed) { MessageBox.Show(ed + ed.StackTrace); } finally { sc.Close(); } }
public DriverChill(Human h) { worker = h; InitializeComponent(); // string sql = "select task_id,wh_id from tasks where DRIVER_ID is NULL"; SqlCommand cmd = new SqlCommand(); SqlConnection sc = DBSQLServerUtils.GetDBConnection(); sc.Open(); cmd.Connection = sc; cmd.CommandText = sql; taskds buff; try { using (DbDataReader reader = cmd.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { buff = new taskds(); int task_id = reader.GetOrdinal("task_id"); int wh_id = reader.GetOrdinal("wh_id"); buff.tskID = (reader.GetInt32(task_id)).ToString(); buff.wareHID = (reader.GetInt32(wh_id)).ToString(); taskers.Items.Add(buff); } } } } catch (Exception ed) { MessageBox.Show(ed + ed.StackTrace); } finally { sc.Close(); } // }
private void Button_Click_1(object sender, RoutedEventArgs e) { if (ReqGoodsNum == 0) { MessageBox.Show("Нельзя добавить пустой запрос"); return; } ReqGood rg; ReqGood buff_rg; for (int i = 0; i < goods_lb.Items.Count; i++) { rg = goods_lb.Items[i] as ReqGood; if (rg.quantity <= 0) { MessageBox.Show("Строка " + ((int)i + 1) + ". Количество должно быть положительным"); return; } if (rg.id <= 0) { MessageBox.Show("Строка " + ((int)i + 1) + ". ID товаров должно быть положительным"); return; } if (rg.id > goodsQuant) { MessageBox.Show("Строка " + ((int)i + 1) + ". Введено недоступное ID товара"); return; } for (int j = 0; j < goods_lb.Items.Count; j++) { buff_rg = goods_lb.Items[j] as ReqGood; if (j == i) { continue; } if (rg.id == buff_rg.id) { MessageBox.Show("ID товаров не должны повторяться"); return; } } } ord.IsEnabled = false; int order_id = (((((DateTime.Now.Year * 100 + DateTime.Now.Month) * 100 + DateTime.Now.Day) * 100 + DateTime.Now.Hour) * 100 + DateTime.Now.Minute) * 100 + DateTime.Now.Second); string sql = "insert into orders (order_id,shop_id) values("; sql += order_id.ToString(); sql += ","; sql += worker.shopId.ToString(); sql += ")"; SqlCommand cmd = new SqlCommand(); SqlConnection sc = DBSQLServerUtils.GetDBConnection(); sc.Open(); cmd.Connection = sc; cmd.CommandText = sql; try { using (DbDataReader reader = cmd.ExecuteReader()) { } } catch (Exception ed) { MessageBox.Show(ed + ed.StackTrace); } finally { sc.Close(); } SqlCommand cmd1 = new SqlCommand(); SqlConnection sc1 = DBSQLServerUtils.GetDBConnection(); sc1.Open(); cmd1.Connection = sc1; ReqGood rg_s; for (int i = 0; i < goods_lb.Items.Count; i++) { rg_s = goods_lb.Items[i] as ReqGood; sql = "insert into order_list (order_id,good_id,quantity) values("; sql += order_id.ToString(); sql += ","; sql += rg_s.id.ToString(); sql += ","; sql += rg_s.quantity.ToString(); sql += ")"; cmd1.CommandText = sql; try { using (DbDataReader reader2 = cmd1.ExecuteReader()) { } } catch (Exception ed) { MessageBox.Show(ed + ed.StackTrace); } } goods_lb.Items.Clear(); ReqGoodsNum = 0; sc1.Close(); Task.Delay(1000); ord.IsEnabled = true; }
private void Enter_Click(object sender, RoutedEventArgs e) { if (login.Text == "" || login.Text == null) { MessageBox.Show("Заполните поле логина"); return; } if (pass.Text == "" || pass.Text == null) { MessageBox.Show("Заполните поле пароля"); return; } string sql = "Select id,position,pass, F_name, surname from workers"; SqlCommand cmd = new SqlCommand(); SqlConnection sc = DBSQLServerUtils.GetDBConnection(); sc.Open(); cmd.Connection = sc; cmd.CommandText = sql; try { using (DbDataReader reader = cmd.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { int IdIndex = reader.GetOrdinal("id"); int FNIndex = reader.GetOrdinal("f_name"); int SNIndex = reader.GetOrdinal("surname"); int PassIndex = reader.GetOrdinal("pass"); int PosIndex = reader.GetOrdinal("position"); if (reader.GetString(FNIndex) + "_" + reader.GetString(SNIndex) == login.Text) { if (reader.GetInt32(PassIndex).ToString() == pass.Text.GetHashCode().ToString()) { Builder.setId(worker, reader.GetInt32(IdIndex)); Builder.setName(worker, reader.GetString(FNIndex)); Builder.setSName(worker, reader.GetString(SNIndex)); if (reader.GetInt32(PosIndex) == 1) { sc.Close(); DriverChill dc = new DriverChill(worker); dc.Show(); this.Close(); return; } if (reader.GetInt32(PosIndex) == 2) { sc.Close(); Manager man = new Manager(worker); man.Show(); this.Close(); return; } if (reader.GetInt32(PosIndex) == 3) { string sqlShop = "Select shop_id from SHOPS_MANAGERS where worker_id=" + worker.id; sc.Close(); sc.Open(); cmd.Connection = sc; cmd.CommandText = sqlShop; using (DbDataReader reader_sec = cmd.ExecuteReader()) { if (reader_sec.HasRows) { while (reader_sec.Read()) { int ShopIdIndex = reader_sec.GetOrdinal("shop_id"); Builder.setShopId(worker, reader_sec.GetInt32(ShopIdIndex)); } } } sc.Close(); ShopOrdering so = new ShopOrdering(worker); so.Show(); this.Close(); return; } } else { MessageBox.Show("Ошибка авторизации: P"); return; } } } } else { MessageBox.Show("Ошибка авторизации: L"); } } MessageBox.Show("Ошибка авторизации: NR"); } catch (Exception ed) { MessageBox.Show(ed + ed.StackTrace); } finally { sc.Close(); } }
public Manager(Human h) { InitializeComponent(); addGiT.IsEnabled = false; wareHouse buff; buff = new wareHouse(); buff.whID = "ID Склада"; warList.Items.Add(buff); worker = h; string sql = "Select wh_id from warehouses"; SqlCommand cmd = new SqlCommand(); SqlConnection sc = DBSQLServerUtils.GetDBConnection(); sc.Open(); cmd.Connection = sc; cmd.CommandText = sql; try { using (DbDataReader reader1 = cmd.ExecuteReader()) { if (reader1.HasRows) { while (reader1.Read()) { buff = new wareHouse(); int idWH = reader1.GetOrdinal("wh_id"); buff.whID = reader1.GetInt32(idWH).ToString(); warList.Items.Add(buff); } } } } catch (Exception ed) { MessageBox.Show(ed + ed.StackTrace); } finally { sc.Close(); } reqTask buff_t; buff_t = new reqTask(); buff_t.reqID = "ID Запроса "; buff_t.shopID = "ID Магазина"; sql = "Select order_id,shop_id from orders"; reqList.Items.Add(buff_t); sc.Open(); cmd.Connection = sc; cmd.CommandText = sql; try { using (DbDataReader reader1 = cmd.ExecuteReader()) { if (reader1.HasRows) { while (reader1.Read()) { buff_t = new reqTask(); int idOR = reader1.GetOrdinal("order_id"); int idSH = reader1.GetOrdinal("shop_id"); buff_t.reqID = reader1.GetInt32(idOR).ToString() + " "; buff_t.shopID = reader1.GetInt32(idSH).ToString(); reqList.Items.Add(buff_t); } } } } catch (Exception ed) { MessageBox.Show(ed + ed.StackTrace); } finally { sc.Close(); } }
private void Button_Click_2(object sender, RoutedEventArgs e) { int access_quantity = 0; if (ready_quest.Items.IsEmpty) { MessageBox.Show("Невозможно создать пустую задачу"); return; } bool isExist = false; string sql; SqlCommand cmd = new SqlCommand(); SqlConnection sc = DBSQLServerUtils.GetDBConnection(); string[] quants = new string[ready_quest.Items.Count]; string[] shopsIdentificators = new string[ready_quest.Items.Count]; string wareHouseId = sourceWH.Text; taskObject tO; int taskId = (((((DateTime.Now.Year * 100 + DateTime.Now.Month) * 100 + DateTime.Now.Day) * 100 + DateTime.Now.Hour) * 100 + DateTime.Now.Minute) * 100 + DateTime.Now.Second); // reqTask rT; for (int i = 0; i < ready_quest.Items.Count; i++) { tO = ready_quest.Items[i] as taskObject; if (tO.goodId == null || tO.goodId == "") { MessageBox.Show("Поле id товара пусто в строке " + i + 1); return; } if (tO.reqId == null || tO.reqId == "") { MessageBox.Show("Поле id запроса пусто в строке " + i + 1); return; } if (Int32.Parse(tO.goodId) <= 0) { MessageBox.Show("ID товара должно быть больше нуля. Строка " + i + 1); return; } if (Int32.Parse(tO.reqId) <= 0) { MessageBox.Show("ID запроса должно быть больше нуля. Строка " + i + 1); return; } for (int j = 0; j < reqList.Items.Count; j++) { rT = reqList.Items[j] as reqTask; if ((rT.reqID).GetHashCode() == (tO.reqId + " ").GetHashCode()) { isExist = true; shopsIdentificators[i] = rT.shopID; } } if (!isExist) { MessageBox.Show("Строка " + (i + 1) + ". Введённое ID не существует"); return; } isExist = false; sql = "SELECT QUANTITY FROM ORDER_LIST WHERE ORDER_ID = "; sql += tO.reqId; sql += " AND GOOD_ID = "; sql += tO.goodId; sc.Open(); cmd.Connection = sc; cmd.CommandText = sql; try { using (DbDataReader reader = cmd.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { int qID = reader.GetOrdinal("QUANTITY"); quants[i] = reader.GetInt32(qID).ToString(); } } } } catch (Exception ed) { MessageBox.Show(ed + ed.StackTrace); } finally { sc.Close(); } } // for (int i = 0; i < ready_quest.Items.Count; i++) { tO = ready_quest.Items[i] as taskObject; sc.Open(); sql = "SELECT QUANTITY FROM ORDER_LIST WHERE ORDER_ID = "; sql += tO.reqId; sql += " AND GOOD_ID = "; sql += tO.goodId; cmd.Connection = sc; cmd.CommandText = sql; try { using (DbDataReader reader2 = cmd.ExecuteReader()) { if (!reader2.HasRows) { MessageBox.Show("Строка " + (i + 1) + ". Запроса на этот товар не существует"); sc.Close(); return; } } } catch (Exception ed) { MessageBox.Show(ed + ed.StackTrace); sc.Close(); return; } finally { sc.Close(); } // } //// for (int i = 0; i < ready_quest.Items.Count; i++) { tO = ready_quest.Items[i] as taskObject; sc.Open(); sql = "SELECT * FROM WH_GOODS WHERE WH_ID = "; sql += sourceWH.Text; sql += " AND GOOD_ID = "; sql += tO.goodId; sql += " AND AVAILABLE_QUANTITY >= "; sql += quants[i]; cmd.Connection = sc; cmd.CommandText = sql; try { using (DbDataReader reader1 = cmd.ExecuteReader()) { if (!reader1.HasRows) { MessageBox.Show("Товар с ID: " + tO.goodId + " и ID запроса: " + tO.reqId + " не может быть добавлен в задачу из-за нехватки на складе"); sc.Close(); continue; } } } catch (Exception ed) { MessageBox.Show(ed + ed.StackTrace); sc.Close(); return; } finally { sc.Close(); } sc.Open(); tO = ready_quest.Items[i] as taskObject; sql = "UPDATE WH_GOODS SET AVAILABLE_QUANTITY = AVAILABLE_QUANTITY-" + quants[i] + " "; sql += ",RESERVED_QUANTITY=RESERVED_QUANTITY+" + quants[i]; sql += " WHERE WH_ID=" + sourceWH.Text; sql += " AND GOOD_ID= " + tO.goodId; cmd.Connection = sc; cmd.CommandText = sql; try { cmd.ExecuteReader(); } catch (Exception ed) { MessageBox.Show(ed + ed.StackTrace); sc.Close(); return; } finally { sc.Close(); } tO = ready_quest.Items[i] as taskObject; sql = "INSERT INTO TASKS_GOODS(TASK_ID,SHOP_ID,GOOD_ID,QUANTITY) VALUES( "; sql += taskId.ToString(); sql += ","; sql += shopsIdentificators[i]; sql += ","; sql += tO.goodId.ToString(); sql += ","; sql += quants[i]; sql += ")"; sc.Open(); cmd.Connection = sc; cmd.CommandText = sql; try { cmd.ExecuteNonQuery(); } catch (Exception ed) { MessageBox.Show(ed + ed.StackTrace); sc.Close(); return; } finally { sc.Close(); } tO = ready_quest.Items[i] as taskObject; sql = "DELETE FROM ORDER_LIST WHERE ORDER_ID = "; sql += tO.reqId.ToString(); sql += " AND GOOD_ID = "; sql += tO.goodId.ToString(); sc.Open(); cmd.Connection = sc; cmd.CommandText = sql; try { cmd.ExecuteNonQuery(); } catch (Exception ed) { MessageBox.Show(ed + ed.StackTrace); sc.Close(); return; } finally { sc.Close(); } access_quantity++; } if (access_quantity > 0) { sql = "INSERT INTO TASKS(TASK_ID,WH_ID) VALUES( "; sql += taskId.ToString(); sql += ","; sql += wareHouseId; sql += ")"; sc.Open(); cmd.Connection = sc; cmd.CommandText = sql; try { cmd.ExecuteNonQuery(); } catch (Exception ed) { MessageBox.Show(ed + ed.StackTrace); sc.Close(); return; } finally { sc.Close(); } } reqTask buff; for (int i = 1; i < reqList.Items.Count; i++) { buff = reqList.Items[i] as reqTask; sc.Open(); sql = "SELECT * FROM ORDER_LIST WHERE ORDER_ID="; sql += buff.reqID; cmd.Connection = sc; cmd.CommandText = sql; try { using (DbDataReader reader = cmd.ExecuteReader()) { if (!reader.HasRows) { sc.Close(); sc.Open(); sql = "DELETE FROM ORDERS WHERE ORDER_ID="; sql += buff.reqID; cmd.Connection = sc; cmd.CommandText = sql; cmd.ExecuteNonQuery(); } } } catch (Exception ed) { MessageBox.Show(ed + ed.StackTrace); sc.Close(); return; } finally { sc.Close(); } } Manager man = new Manager(worker); man.Show(); this.Close(); }
public DriverWork(Human h) { worker = h; InitializeComponent(); completeBut.IsEnabled = false; string sql = "select shop_id,good_id,quantity from tasks_goods where task_id="; sql += worker.choodesTaskId; SqlCommand cmd = new SqlCommand(); SqlConnection sc = DBSQLServerUtils.GetDBConnection(); sc.Open(); cmd.Connection = sc; cmd.CommandText = sql; thisTask ttbuff; try { using (DbDataReader reader = cmd.ExecuteReader()) { if (reader.HasRows) { thisTask.tskID = (worker.choodesTaskId).ToString(); while (reader.Read()) { ttbuff = new thisTask(); int sbuff = reader.GetOrdinal("shop_id"); int gbuff = reader.GetOrdinal("good_id"); int qbuff = reader.GetOrdinal("quantity"); ttbuff.shopID = reader.GetInt32(sbuff).ToString(); ttbuff.goodID = reader.GetInt32(gbuff).ToString(); ttbuff.quant = reader.GetInt32(qbuff).ToString(); tt.Add(ttbuff); } } } } catch (Exception ed) { MessageBox.Show(ed + ed.StackTrace); } finally { sc.Close(); } sc.Open(); cmd.Connection = sc; bool isExist = false; shCoordinates buff; try { for (int i = 0; i < tt.Count; i++) { sql = "select shop_x,shop_y from shops where shop_id="; sql += tt[i].shopID; cmd.CommandText = sql; for (int j = 0; j < i; j++) { if (tt[i].shopID == tt[j].shopID) { isExist = true; break; } } if (isExist) { isExist = false; continue; } buff = new shCoordinates(); buff.shpID = tt[i].shopID; using (DbDataReader reader = cmd.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { int x_buff = reader.GetOrdinal("shop_x"); int y_buff = reader.GetOrdinal("shop_y"); buff.x = (reader.GetInt32(x_buff)); buff.y = (reader.GetInt32(y_buff)); } } } shops.Add(buff); } sql = "select wh_x,wh_y from warehouses where wh_id="; sql += worker.choodesWhId; cmd.CommandText = sql; buff = new shCoordinates(); buff.shpID = "0"; using (DbDataReader reader = cmd.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { int x_buff = reader.GetOrdinal("wh_x"); int y_buff = reader.GetOrdinal("wh_y"); buff.x = (reader.GetInt32(x_buff)); buff.y = (reader.GetInt32(y_buff)); } } } shops.Add(buff); } catch (Exception ed) { MessageBox.Show(ed + ed.StackTrace); } finally { sc.Close(); } #region Kommi double[,] kommi = new double[shops.Count, shops.Count]; start_kommi = new double[shops.Count, shops.Count]; for (int i = 0; i < shops.Count; i++) { for (int j = 0; j < shops.Count; j++) { if (i != j) { kommi[j, i] = Math.Sqrt(Math.Pow(shops[i].x - shops[j].x, 2) + Math.Pow(shops[i].y - shops[j].y, 2)); start_kommi[j, i] = Math.Sqrt(Math.Pow(shops[i].x - shops[j].x, 2) + Math.Pow(shops[i].y - shops[j].y, 2)); } else { kommi[i, j] = Double.MaxValue; start_kommi[i, j] = Double.MaxValue; } } } double[] strings_min = new double[shops.Count]; double[] columns_min = new double[shops.Count]; double min = Double.MaxValue; while (route.Count != shops.Count) { min = Double.MaxValue; for (int i = 0; i < shops.Count; i++) { min = Double.MaxValue; for (int j = 0; j < shops.Count; j++) { if (kommi[i, j] == Double.MaxValue) { continue; } else { if (min > kommi[i, j]) { min = kommi[i, j]; } } } strings_min[i] = min; } for (int i = 0; i < shops.Count; i++) { for (int j = 0; j < shops.Count; j++) { if (kommi[i, j] == Double.MaxValue) { continue; } else { kommi[i, j] -= strings_min[i]; } } } min = Double.MaxValue; for (int i = 0; i < shops.Count; i++) { min = Double.MaxValue; for (int j = 0; j < shops.Count; j++) { if (kommi[j, i] == Double.MaxValue) { continue; } else { if (min > kommi[j, i]) { min = kommi[j, i]; } } } columns_min[i] = min; } //// for (int i = 0; i < shops.Count; i++) { for (int j = 0; j < shops.Count; j++) { if (kommi[j, i] == Double.MaxValue) { continue; } else { kommi[j, i] -= columns_min[i]; } } } //// zeroKl buffZK = new zeroKl(); double min_str = Double.MaxValue; double min_clm = Double.MaxValue; for (int i = 0; i < shops.Count; i++) { for (int j = 0; j < shops.Count; j++) { if (kommi[i, j] == 0) { buffZK = new zeroKl(); for (int k = 0; k < shops.Count; k++) { if (k == j) { continue; } if (min_str > kommi[i, k]) { min_str = kommi[i, k]; } } for (int k = 0; k < shops.Count; k++) { if (k == i) { continue; } if (min_clm > kommi[k, j]) { min_clm = kommi[k, j]; } } buffZK.str = i; buffZK.col = j; buffZK.mark = min_str + min_clm; zKLs.Add(buffZK); } min_str = Double.MaxValue; min_clm = Double.MaxValue; } } zeroKl with_max_mark = new zeroKl(); with_max_mark.mark = 0; for (int i = 0; i < zKLs.Count; i++) { if (with_max_mark.mark <= zKLs[i].mark) { with_max_mark.mark = zKLs[i].mark; with_max_mark.str = zKLs[i].str; with_max_mark.col = zKLs[i].col; } } // route.Add(new stringsPare(shops[with_max_mark.str].shpID, shops[with_max_mark.col].shpID)); kommi[with_max_mark.str, with_max_mark.col] = Double.MaxValue; kommi[with_max_mark.col, with_max_mark.str] = Double.MaxValue; for (int i = 0; i < shops.Count; i++) { kommi[with_max_mark.str, i] = Double.MaxValue; kommi[i, with_max_mark.col] = Double.MaxValue; } // with_max_mark.mark = 0; zKLs = new List <zeroKl>(); } #endregion }
private void Button_Click1(object sender, RoutedEventArgs e) { if (et.Text == "" || et.Text == null) { MessageBox.Show("Поле конечного времени должно быть заполненным"); return; } if (st.Text == "" || st.Text == null) { MessageBox.Show("Поле начального времени должно быть заполненным"); return; } List <string> opers = new List <string>(); string sql = "INSERT INTO DRIVERS_HAVE(DRIVER_ID,GOOD_ID,QUANTITY) VALUES("; string buff = ""; SqlCommand cmd = new SqlCommand(); SqlConnection sc = DBSQLServerUtils.GetDBConnection(); sc.Open(); cmd.Connection = sc; try { for (int i = 0; i < tt.Count; i++) { sql = "SELECT * FROM SH_GOODS WHERE SH_ID="; sql += tt[i].shopID; sql += " and GOOD_ID="; sql += tt[i].goodID; cmd.CommandText = sql; using (DbDataReader reader = cmd.ExecuteReader()) { if (reader.HasRows) { buff = "UPDATE SH_GOODS SET QUANTITY=QUANTITY+"; buff += tt[i].quant; buff += " WHERE SH_ID="; buff += tt[i].shopID; buff += " and GOOD_ID="; buff += tt[i].goodID; } else { buff = "INSERT INTO SH_GOODS(SH_ID,GOOD_ID,QUANTITY) VALUES("; buff += tt[i].shopID; buff += ","; buff += tt[i].goodID; buff += ","; buff += tt[i].quant; buff += ")"; } opers.Add(buff); buff = "UPDATE DRIVERS_HAVE SET QUANTITY=QUANTITY-"; buff += tt[i].quant; buff += " WHERE DRIVER_ID="; buff += worker.id; buff += " and GOOD_ID="; buff += tt[i].goodID; opers.Add(buff); } } for (int i = 0; i < opers.Count; i++) { cmd.CommandText = opers[i]; cmd.ExecuteNonQuery(); } sql = "DELETE FROM DRIVERS_HAVE WHERE QUANTITY=0 and DRIVER_ID="; sql += worker.id; cmd.CommandText = sql; cmd.ExecuteNonQuery(); sql = "DELETE FROM TASKS WHERE TASK_ID="; sql += worker.choodesTaskId; cmd.CommandText = sql; cmd.ExecuteNonQuery(); sql = "DELETE FROM TASKS_GOODS WHERE TASK_ID="; sql += worker.choodesTaskId; cmd.CommandText = sql; cmd.ExecuteNonQuery(); int minutes = 0; if (DateTime.Parse(et.Text).Hour > DateTime.Parse(st.Text).Hour) { minutes = (DateTime.Parse(et.Text).Hour - DateTime.Parse(st.Text).Hour) * 60; if (DateTime.Parse(et.Text).Minute > DateTime.Parse(st.Text).Hour) { minutes += (DateTime.Parse(et.Text).Minute - DateTime.Parse(st.Text).Minute); } else { minutes += (DateTime.Parse(et.Text).Minute + 60 - DateTime.Parse(st.Text).Minute); } } if (DateTime.Parse(et.Text).Hour < DateTime.Parse(st.Text).Hour) { minutes = (DateTime.Parse(et.Text).Hour + 24 - DateTime.Parse(st.Text).Hour) * 60; if (DateTime.Parse(et.Text).Minute > DateTime.Parse(st.Text).Hour) { minutes += (DateTime.Parse(et.Text).Minute - DateTime.Parse(st.Text).Minute); } else { minutes += (DateTime.Parse(et.Text).Minute + 60 - DateTime.Parse(st.Text).Minute); } } sql = "INSERT INTO REPORTS(TASK_ID,SUMTIME,LENG,NOTES) VALUES("; sql += worker.choodesTaskId; sql += ","; sql += minutes; sql += ","; sql += length; sql += ",'"; if (hints.Text == "" || hints.Text == null) { sql += " "; } else { sql += hints.Text; } sql += "')"; cmd.CommandText = sql; cmd.ExecuteNonQuery(); if ((60 - length / (minutes / 60)) < 10) { MessageBox.Show("Анализатор маршрута: данный маршрут оптимален"); } else { MessageBox.Show("Анализатор маршрута: данный маршрут не оптимален"); } this.Close(); } catch (Exception ed) { MessageBox.Show(ed + ed.StackTrace); } finally { sc.Close(); } }
private void Button_Click(object sender, RoutedEventArgs e) { bool isExist = false; string sql = "INSERT INTO DRIVERS_HAVE(DRIVER_ID,GOOD_ID,QUANTITY) VALUES("; SqlCommand cmd = new SqlCommand(); SqlConnection sc = DBSQLServerUtils.GetDBConnection(); sc.Open(); cmd.Connection = sc; try { for (int i = 0; i < tt.Count; i++) { for (int j = 0; j < i; j++) { if (tt[i].goodID == tt[j].goodID && i != j) { isExist = true; break; } } if (isExist) { isExist = false; continue; } sql = "INSERT INTO DRIVERS_HAVE(DRIVER_ID,GOOD_ID,QUANTITY) VALUES("; sql += worker.id; sql += ","; sql += tt[i].goodID; sql += ","; sql += "0"; sql += ")"; cmd.CommandText = sql; cmd.ExecuteNonQuery(); } for (int i = 0; i < tt.Count; i++) { sql = "UPDATE DRIVERS_HAVE SET QUANTITY=QUANTITY+"; sql += tt[i].quant; sql += " WHERE DRIVER_ID="; sql += worker.id; sql += " AND GOOD_ID="; sql += tt[i].goodID; cmd.CommandText = sql; cmd.ExecuteNonQuery(); sql = "UPDATE WH_GOODS SET RESERVED_QUANTITY=RESERVED_QUANTITY-"; sql += tt[i].quant; sql += " WHERE WH_ID="; sql += worker.choodesWhId; sql += " AND GOOD_ID="; sql += tt[i].goodID; cmd.CommandText = sql; cmd.ExecuteNonQuery(); } } catch (Exception ed) { MessageBox.Show(ed + ed.StackTrace); } finally { sc.Close(); } takeBut.IsEnabled = false; timeStatistic tsBuff; int frID = 0; int toID = 0; string fromID = "0"; for (int j = 0; j < route.Count; j++) { for (int i = 0; i < route.Count; i++) { if (route[i].from == fromID) { tsBuff = new timeStatistic(); if (fromID == "0") { tsBuff.shpID = "Склад"; } else { tsBuff.shpID = route[i].from; } for (int u = 0; u < shops.Count; u++) { if (route[i].from == shops[u].shpID) { frID = u; break; } } for (int u = 0; u < route.Count; u++) { if (route[i].to == shops[u].shpID) { toID = u; break; } } fromID = route[i].to; destinations.Items.Add(tsBuff); if (route[i].from == route[i].to) { break; } length += start_kommi[frID, toID]; break; } } } completeBut.IsEnabled = true; }