private void Button_Click(object sender, RoutedEventArgs e) { Button button = sender as Button; if (button.Tag.ToString() == "confirm") { bool rs = CheckProject(); if (!rs) { return; } (App.Current.Resources["Locator"] as ViewModelLocator).Main.Projects.Add(project); SQliteDbContext.AddProject(project); string msg = IsModify ? "修改成功!" : "添加成功!"; MessageBox.Show(msg, "Info", MessageBoxButton.OK, MessageBoxImage.Information); this.Close(); } else if (button.Tag.ToString() == "cancel") { if (!IsModify) { foreach (var item in grid.Children) { if (item is TextBox) { (item as TextBox).Text = ""; } } } //project.Author = (App.Current.Resources["Locator"] as ViewModelLocator).Main.User.EmployeeNumbe; } }
private void Ellipse_MouseUp(object sender, MouseButtonEventArgs e) { Ellipse ep = sender as Ellipse; mousedown = false; ep.ReleaseMouseCapture(); if (tempEp != null && (Operator == Operation.Move)) { tempEp.Fill = TempBruhes; Operator = Operation.None; } if (ep.Name != null && ep.Name.Trim().Length > 0) { string name = ep.Name.Remove(0, 1); Pin p = (App.Current.Resources["Locator"] as ViewModelLocator).Paper.Pins.ToList().Find(x => x.PinCode == name); if (p == null) { return; } p.PinSX = Canvas.GetLeft(ep); p.PinSY = Canvas.GetTop(ep); SQliteDbContext.UpdatOnePin(p); } }
/// <summary> /// 清空列表 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void MenuItem_Click_1(object sender, RoutedEventArgs e) { canvas.Children.Clear(); string pno = (App.Current.Resources["Locator"] as ViewModelLocator).Paper.Project.ProjectNO; string fixno = (App.Current.Resources["Locator"] as ViewModelLocator).Paper.CablePaper.FixtureCode; SQliteDbContext.DeleteALLPin(pno, fixno); (App.Current.Resources["Locator"] as ViewModelLocator).Paper.Pins.Clear(); }
private void MenuItem_Click_Delete(object sender, RoutedEventArgs e) { if (tempEp.Name != null && tempEp.Name != "") { canvas.UnregisterName(tempEp.Name); this.canvas.Children.Remove(tempEp); SQliteDbContext.DeleteOneExPin(tempEp.Name.Substring(1, tempEp.Name.Length - 1), (App.Current.Resources["Locator"] as ViewModelLocator).ExcelPaper.Fixture.FixtureType); ExcelPin p = (App.Current.Resources["Locator"] as ViewModelLocator).ExcelPaper.Pins.ToList().Find(x => x.PinNO == tempEp.Name.Substring(1, tempEp.Name.Length - 1)); (App.Current.Resources["Locator"] as ViewModelLocator).ExcelPaper.Pins.Remove(p); } }
private void MenuItem_Delete(object sender, RoutedEventArgs e) { int rs = SQliteDbContext.DeleteOnePin(SelectedpinEx.PinCode, SelectedpinEx.ProjectNO); if (rs > 0) { this.canvas.Children.Remove(tempEp); (App.Current.Resources["Locator"] as ViewModelLocator).Paper.Pins.Remove(SelectedpinEx); tempEp = null; SelectedpinEx = null; } }
private void MenuItem_Update(object sender, RoutedEventArgs e) { int count = SQliteDbContext.CheckAddressSingle(SelectedpinEx); int ct = SQliteDbContext.GetOnePin(SelectedpinEx.PinCode, SelectedpinEx.ProjectNO).physicalChannel; if (count >= 1 && ct != SelectedpinEx.physicalChannel) { MessageBox.Show("物理地址已经被占用!", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning); return; } int rs = SQliteDbContext.UpdatOnePin(SelectedpinEx); }
private void MenuItem_Click_ON(object sender, RoutedEventArgs e) { byte[] msg = new byte[] { 0xfe, 0xef, 0x30, 0x0c, 0x00, 0x02, }; var pin = paperdata.SelectedItem as ExcelPin; if (pin != null) { short led = (short)SQliteDbContext.GetOneFixtureBaseInfo(pin.FixtureType).LEDAddress; byte[] addr = BitConverter.GetBytes(led).Reverse().ToArray(); List <byte> datas = new List <byte>(); datas.AddRange(msg); datas.AddRange(addr); Messenger.Default.Send <byte[]>(datas.ToArray(), "Send"); } }
private void Button_Click(object sender, RoutedEventArgs e) { string tag = (sender as Button).Tag.ToString(); if (tag == "confirm") { CarProject car = (App.Current.Resources["Locator"] as ViewModelLocator).ExcelPaper.Car; if (Operation == WindowOperation.Add) { if (QualityCheck()) { car.Author = (App.Current.Resources["Locator"] as ViewModelLocator).Main.User.UserID; int r = SQliteDbContext.AddCarType(car); if (r > 0) { MessageBox.Show("添加成功!", "提示", MessageBoxButton.OK, MessageBoxImage.Information); (App.Current.Resources["Locator"] as ViewModelLocator).Main.CarTypes = new System.Collections.ObjectModel.ObservableCollection <CarProject>(SQliteDbContext.GetAllCarTypes()); } } } else if (Operation == WindowOperation.Update) { QualityCheck(); int r = SQliteDbContext.UpdateCarType(car); if (r > 0) { MessageBox.Show("更新成功!", "提示", MessageBoxButton.OK, MessageBoxImage.Information); (App.Current.Resources["Locator"] as ViewModelLocator).Main.CarTypes = new System.Collections.ObjectModel.ObservableCollection <CarProject>(SQliteDbContext.GetAllCarTypes()); this.Close(); } } else if (Operation == WindowOperation.Delete) { QualityCheck(); int r = SQliteDbContext.DeleteCarType(car); if (r > 0) { MessageBox.Show("删除成功!", "提示", MessageBoxButton.OK, MessageBoxImage.Information); (App.Current.Resources["Locator"] as ViewModelLocator).Main.CarTypes = new System.Collections.ObjectModel.ObservableCollection <CarProject>(SQliteDbContext.GetAllCarTypes()); this.Close(); } } } else if (tag == "cancel") { this.Close(); } }
public bool QualityCheck() { if (cmbFixtures.SelectedIndex == -1 && txtFixture.Text.Trim().Length == 0) { MessageBox.Show("请输入一个治具型号!", "提示", MessageBoxButton.OK, MessageBoxImage.Warning); return(false); } if (Operation == WindowOperation.Add && SQliteDbContext.CheckFixturetype((App.Current.Resources["Locator"] as ViewModelLocator).ExcelPaper.Fixture.FixtureType)) { MessageBox.Show("治具型号不能重复!", "提示", MessageBoxButton.OK, MessageBoxImage.Warning); return(false); } if (imagetxt.Text.Trim().Length == 0) { MessageBox.Show("请导入图片!", "提示", MessageBoxButton.OK, MessageBoxImage.Warning); return(false); } if (this.ledAddr.Text.Trim().Length == 0) { MessageBox.Show("请输入LED地址!", "提示", MessageBoxButton.OK, MessageBoxImage.Warning); ledAddr.Focus(); return(false); } if (!IsNumber(this.ledAddr.Text.Trim())) { MessageBox.Show("LED地址只能为整数!", "提示", MessageBoxButton.OK, MessageBoxImage.Warning); ledAddr.Focus(); return(false); } if (Operation == WindowOperation.Add && SQliteDbContext.CheckLEDAddress(ledAddr.Text.Trim())) { MessageBox.Show("LED地址不能重复!", "提示", MessageBoxButton.OK, MessageBoxImage.Warning); ledAddr.Focus(); return(false); } if (Operation == WindowOperation.Update && templed != ledAddr.Text) { if (SQliteDbContext.CheckLEDAddress(ledAddr.Text.Trim())) { MessageBox.Show("LED地址不能重复!", "提示", MessageBoxButton.OK, MessageBoxImage.Warning); ledAddr.Focus(); return(false); } } return(true); }
private void Button_Click(object sender, RoutedEventArgs e) { Button btn = sender as Button; string tag = btn.Tag.ToString().ToLower(); switch (tag) { case "create": Operator = Operation.Create; break; case "move": Operator = Operation.Move; break; case "modify": Operator = Operation.Modify; break; case "delete": Operator = Operation.Delete; break; case "clsall": SQliteDbContext.DeleteAllExPin((App.Current.Resources["Locator"] as ViewModelLocator).ExcelPaper.Fixture.FixtureType); (App.Current.Resources["Locator"] as ViewModelLocator).ExcelPaper.Pins.Clear(); foreach (var item in canvas.Children) { try { if (item is Ellipse) { var ep = item as Ellipse; canvas.UnregisterName(ep.Name); } } catch (Exception ex) { Console.WriteLine(ex.Message); } } this.canvas.Children.Clear(); break; case "clear": (App.Current.Resources["Locator"] as ViewModelLocator).ExcelPaper.Channels.Clear(); break; default: break; } }
private void Btn_Click(object sender, RoutedEventArgs e) { if (CheckPin()) { if (IsModify) { SQliteDbContext.UpdatOnePin(pin); } else { SQliteDbContext.AddPin(pin); } string msg = IsModify ? "修改成功!" : "添加成功!"; MessageBox.Show(msg, "Info", MessageBoxButton.OK, MessageBoxImage.Information); Messenger.Default.Send <string>("update", "UpdateCanavs"); this.Close(); } }
private bool QualityCheck() { if (codepart.Text.Trim().Length == 0) { MessageBox.Show("请输入引脚编号", "提示", MessageBoxButton.OK, MessageBoxImage.Warning); codepart.Focus(); return(false); } if (address.Text.Trim().Length == 0) { MessageBox.Show("请输入物理地址", "提示", MessageBoxButton.OK, MessageBoxImage.Warning); address.Focus(); return(false); } if (!IsModify && SQliteDbContext.CheckPinNOExist(cmbfixture.Text.Trim(), codepart.Text.Trim())) { MessageBox.Show("引脚编号已经存在请重新输入", "提示", MessageBoxButton.OK, MessageBoxImage.Warning); codepart.Focus(); return(false); } if (!IsModify && SQliteDbContext.CheckPinAddressExist(address.Text.Trim())) { MessageBox.Show("物理地址已经存在请重新输入", "提示", MessageBoxButton.OK, MessageBoxImage.Warning); address.Focus(); return(false); } if (IsModify && address.Text.Trim() != tempaddress) { if (SQliteDbContext.CheckPinAddressExist(address.Text.Trim())) { MessageBox.Show("物理地址已经存在请重新输入", "提示", MessageBoxButton.OK, MessageBoxImage.Warning); address.Focus(); return(false); } else { return(true); } } return(true); }
private bool QualityCheck() { if (carType.SelectedIndex == -1) { MessageBox.Show("请选择车型名称", "提示", MessageBoxButton.OK, MessageBoxImage.Warning); carType.Focus(); return(false); } if (wireName.SelectedIndex == -1) { MessageBox.Show("请输入车型编号", "提示", MessageBoxButton.OK, MessageBoxImage.Warning); wireName.Focus(); return(false); } if (projectName.Text.Trim().Length == 0) { MessageBox.Show("请输入工程名称", "提示", MessageBoxButton.OK, MessageBoxImage.Warning); projectName.Focus(); return(false); } if (projectNO.Text.Trim().Length == 0) { MessageBox.Show("请输入工程编号", "提示", MessageBoxButton.OK, MessageBoxImage.Warning); projectName.Focus(); return(false); } if (Operation == WindowOperation.Add && SQliteDbContext.CheckCarNOExist(projectNO.Text.Trim())) { MessageBox.Show("车型编号已经存在请重新输入", "提示", MessageBoxButton.OK, MessageBoxImage.Warning); projectName.Focus(); return(false); } if (filename.Text.Trim().Length == 0 && Operation == WindowOperation.Add) { MessageBox.Show("请导入文件路径", "提示", MessageBoxButton.OK, MessageBoxImage.Warning); projectName.Focus(); return(false); } return(true); }
private void MenuItem_Click_Modify(object sender, RoutedEventArgs e) { ExcelPin p = SQliteDbContext.GetOneExPin((App.Current.Resources["Locator"] as ViewModelLocator).ExcelPaper.Fixture.FixtureType, tempEp.Name.Substring(1, tempEp.Name.Length - 1)); if (p == null) { return; } p.PinEX = canvas.RenderSize.Width; p.PinEY = canvas.RenderSize.Height; p.PinSX = Canvas.GetLeft(tempEp); p.PinSY = Canvas.GetTop(tempEp); p.Radius = tempEp.ActualHeight; (App.Current.Resources["Locator"] as ViewModelLocator).ExcelPaper.Pin = p; ExcelPinWindow codeWindow = new ExcelPinWindow(true); // SQliteDbContext.UpdatOneExPin(p); codeWindow.ShowDialog(); tempEp.Name = "P" + p.PinNO; }
private bool CheckPaper() { if (this.cablePaper.FixtureCode.Trim().Length == 0) { MessageBox.Show("治具编号不能为空!", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning); return(false); } if (cablePaper.FixtureName.Trim().Length == 0) { MessageBox.Show("治具名称不能为空!", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning); return(false); } if (cablePaper.LEDAddress > 0) { MessageBox.Show("治具地址不能为空!", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning); return(false); } if (cablePaper.ImagePath.Trim().Length == 0) { MessageBox.Show("治具图纸不能为空!", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning); return(false); } if (SQliteDbContext.GetPaper(cablePaper) != null) { MessageBox.Show("治具编号不能重复!", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning); return(false); } return(true); }
private void Button_Click(object sender, RoutedEventArgs e) { if (!IsModify) { ExcelPin p = (App.Current.Resources["Locator"] as ViewModelLocator).ExcelPaper.Pin; p.PinNO = this.codepart.Text; if (QualityCheck()) { int rs = SQliteDbContext.AddExPin(p); if (rs > 0) { MessageBox.Show("添加成功", "提示", MessageBoxButton.OK, MessageBoxImage.Information); (App.Current.Resources["Locator"] as ViewModelLocator).ExcelPaper.Pins.Add(p); IsAdd = true; this.Close(); } } } else { ExcelPin p = (App.Current.Resources["Locator"] as ViewModelLocator).ExcelPaper.Pin; p.PinNO = this.codepart.Text; if (QualityCheck()) { int rs = SQliteDbContext.UpdatOneExPin(p); if (rs > 0) { MessageBox.Show("修改成功!", "提示", MessageBoxButton.OK, MessageBoxImage.Information); this.Close(); } } } (App.Current.Resources["Locator"] as ViewModelLocator).ExcelPaper.Pins = new ObservableCollection <ExcelPin>(SQliteDbContext. GetOneFixtureExcelPins((App.Current.Resources["Locator"] as ViewModelLocator). ExcelPaper.Fixture.FixtureType)); }
private void MenuItem_ON(object sender, RoutedEventArgs e) { var mi = sender as MenuItem; var cm = mi.Parent as ContextMenu; var lstItem = cm.PlacementTarget as ListViewItem; if (lstItem == null) { return; } string tag = lstItem.Content.ToString(); List <byte> msg = new List <byte> { 0xfe, 0xef, 0x30, 0x0c }; List <string> leftCodes = GetCodes(tag.Split('+')[0]); List <string> rightCodes = GetCodes(tag.Split('+')[1]); List <byte> datas = new List <byte>(); if (leftCodes[2] != "" && leftCodes[2].Trim().Length != 0) { short led = (short)SQliteDbContext.GetOneFixtureBaseInfo(leftCodes[2]).LEDAddress; byte[] addr = BitConverter.GetBytes(led).Reverse().ToArray(); datas.AddRange(addr); } if (rightCodes[2] != "" && rightCodes[2].Trim().Length != 0) { short led = (short)SQliteDbContext.GetOneFixtureBaseInfo(rightCodes[2]).LEDAddress; byte[] addr = BitConverter.GetBytes(led).Reverse().ToArray(); datas.AddRange(addr); } msg.AddRange(BitConverter.GetBytes((short)datas.Count).Reverse()); msg.AddRange(datas); Messenger.Default.Send <byte[]>(msg.ToArray(), "Send"); }
private bool QualityCheck() { if (carname.Text.Trim().Length == 0) { MessageBox.Show("请输入车型名称", "提示", MessageBoxButton.OK, MessageBoxImage.Warning); carname.Focus(); return(false); } if (typeno.Text.Trim().Length == 0) { MessageBox.Show("请输入车型编号", "提示", MessageBoxButton.OK, MessageBoxImage.Warning); carname.Focus(); return(false); } if (Operation == WindowOperation.Add && SQliteDbContext.CheckCarNOExist(typeno.Text.Trim())) { MessageBox.Show("车型编号已经存在请重新输入", "提示", MessageBoxButton.OK, MessageBoxImage.Warning); carname.Focus(); return(false); } if (Operation == WindowOperation.Update && tempCarNo.Trim() != typeno.Text.Trim()) { if (SQliteDbContext.CheckCarNOExist(typeno.Text.Trim())) { MessageBox.Show("车型编号已经存在请重新输入", "提示", MessageBoxButton.OK, MessageBoxImage.Warning); carname.Focus(); return(false); } else { return(true); } } return(true); }
/// <summary> /// 浏览图片按钮 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Button_Click(object sender, RoutedEventArgs e) { string tag = (sender as Button).Tag.ToString().ToLower(); if (tag == "scan") { string filePathName = ""; //定义图像文件的位置(包括路径及文件名) System.Windows.Forms.OpenFileDialog ofd = new System.Windows.Forms.OpenFileDialog(); //添加打开对话框 ofd.Filter = "图像文件|*jpg;*.bmp;*.png,*.tif|所有文件|*.*"; //设置过滤器 if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK) //如果确定打开图片,则保存文件的路径及文件名到字符串变量filePathName中 { filePathName = ofd.FileName; //包括路径和文件名 } try { Bitmap bitmap = new Bitmap(filePathName); string filepath = ""; if (folderExist(System.Environment.CurrentDirectory + "\\Image\\" + projectcode)) { filepath = System.Environment.CurrentDirectory + "\\Image\\" + projectcode + "\\" + System.IO.Path.GetFileName(ofd.FileName); } else { folderCreate(System.Environment.CurrentDirectory + "\\Image\\" + projectcode); filepath = System.Environment.CurrentDirectory + "\\Image\\" + projectcode + "\\" + System.IO.Path.GetFileName(ofd.FileName); } bitmap.Save(filepath); bitmap.Dispose(); cablePaper.ImagePath = filepath; } catch (Exception ex) { System.Windows.MessageBox.Show("工程中已经存在同名的图片,请将图片重命名后再导入", "警告", MessageBoxButton.OK, MessageBoxImage.Warning); } } else if (tag == "confirm") { if (CheckPaper()) { (App.Current.Resources["Locator"] as ViewModelLocator).Main.Papers.Add(cablePaper); SQliteDbContext.AddPaper(cablePaper); string msg = IsModify ? "修改成功!" : "添加成功!"; MessageBox.Show(msg, "Info", MessageBoxButton.OK, MessageBoxImage.Information); this.Close(); } } else if (tag == "cancel") { if (!IsModify) { foreach (var item in grid.Children) { if (item is TextBox) { (item as TextBox).Text = ""; } } } } }
private void Add() { FixtureBase fixture = (App.Current.Resources["Locator"] as ViewModelLocator).ExcelPaper.Fixture; switch (Operation) { case WindowOperation.Add: if (QualityCheck()) { try { Bitmap bitmap = new Bitmap(filepath); if (folderExist(System.Environment.CurrentDirectory + "\\Image\\" + "ExcelProject")) { filepath = System.Environment.CurrentDirectory + "\\Image\\" + "ExcelProject" + "\\" + System.IO.Path.GetFileName(filepath); } else { folderCreate(System.Environment.CurrentDirectory + "\\Image\\" + "ExcelProject"); filepath = System.Environment.CurrentDirectory + "\\Image\\" + "ExcelProject" + "\\" + System.IO.Path.GetFileName(filepath); } bitmap.Save(filepath); bitmap.Dispose(); } catch (Exception ex) { System.Windows.MessageBox.Show("工程中已经存在同名的图片,请将图片重命名后再导入", "警告", MessageBoxButton.OK, MessageBoxImage.Warning); return; } int row = SQliteDbContext.AddFixtureBaseInfo(fixture); if (row > 0) { System.Windows.MessageBox.Show("添加成功!", "提示", MessageBoxButton.OK, MessageBoxImage.Information); this.Close(); } } break; case WindowOperation.Update: if (QualityCheck()) { int rs = SQliteDbContext.UpdateFixtureBaseInfo(fixture); if (rs > 0) { System.Windows.MessageBox.Show("更新成功!", "提示", MessageBoxButton.OK, MessageBoxImage.Information); this.Close(); } } break; case WindowOperation.Delete: int rd = SQliteDbContext.DeleteFixtureBaseInfo(fixture); if (rd > 0) { System.Windows.MessageBox.Show("删除成功!", "提示", MessageBoxButton.OK, MessageBoxImage.Information); this.Close(); } break; default: break; } (App.Current.Resources["Locator"] as ViewModelLocator).ExcelPaper.Fixtures = new System.Collections.ObjectModel.ObservableCollection <FixtureBase>(SQliteDbContext.GetAllFixtureBaseInfos()); }
private bool CheckPin() { this.pin = (App.Current.Resources["Locator"] as ViewModelLocator).Paper.Pin; if (pin.PinCode.Trim().Length == 0) { MessageBox.Show("引脚编号不能为空!", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning); return(false); } if (pin.physicalChannel <= 0) { MessageBox.Show("物理地址必须为大于零的整数!", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning); return(false); } if (pin.IsSafeBox && pin.SafeBoxName.Trim().Length == 0) { MessageBox.Show("元件名称不能为空!", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning); return(false); } else if (pin.IsSafeBox && !(pin.SafeBoxName.Trim().Contains("F") || pin.SafeBoxName.Trim().Contains("K"))) { MessageBox.Show("请输入正确的元件名称(继电器—K 保险芯—F)!", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning); return(false); } else if (pin.IsSafeBox) { if (!IsModify && SQliteDbContext.CheckSafeBoxNameSingle(pin) > 0) { MessageBox.Show("元器件名称不能重复", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning); return(false); } else if (IsModify) { if (SQliteDbContext.GetOnePin(pin.PinCode, pin.ProjectNO).safeBoxName != pin.safeBoxName && SQliteDbContext.CheckSafeBoxNameSingle(pin) > 0) { MessageBox.Show("元器件名称不能重复", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning); return(false); } } } if (SQliteDbContext.CheckCodeSingle(pin) && !IsModify) { MessageBox.Show("引脚编号不重复!", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning); return(false); } if (SQliteDbContext.CheckAddressSingle(pin) >= 1) { MessageBox.Show("物理地址已经被占用!", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning); return(false); } if (SQliteDbContext.CheckAddressSingle(pin) > 1 && SQliteDbContext.GetOnePin(pin.PinCode, pin.ProjectNO).physicalChannel != pin.physicalChannel && IsModify) { MessageBox.Show("物理地址已经被占用!", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning); return(false); } return(true); }
private void Ellipse_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { Ellipse ep = sender as Ellipse; mousedown = true; if (Operator != Operation.Create) { tempEp = ep; TempBruhes = ep.Fill; ep.Fill = Brushes.LawnGreen; ep.CaptureMouse(); } if (Operator == Operation.Delete) { ep.ReleaseMouseCapture(); canvas.Children.Remove(ep); if (ep.Name != null && ep.Name != "") { SQliteDbContext.DeleteOnePin(ep.Name.Substring(1, ep.Name.Length - 1), (App.Current.Resources["Locator"] as ViewModelLocator).Paper.Project.ProjectNO); PinEx p = (App.Current.Resources["Locator"] as ViewModelLocator).Paper.Pins.ToList().Find(x => x.PinCode == ep.Name.Substring(1, ep.Name.Length - 1)); (App.Current.Resources["Locator"] as ViewModelLocator).Paper.Pins.Remove(p); } } if (Operator == Operation.Modify) { if (tempEp != null) { int value = 0; int.TryParse(txtDia.Text, out value); if (cbDia.IsChecked.HasValue && cbDia.IsChecked.Value) { tempEp.Height = value; tempEp.Width = value; } if (cbDia.IsChecked.HasValue && cbColor.IsChecked.Value) { tempEp.Fill = clpk.SelectedBrush; } } if (tempEp.Name == "") { Pin p = new Pin(); p.PinEX = canvas.RenderSize.Width; p.PinEY = canvas.RenderSize.Height; p.PinSX = Canvas.GetLeft(tempEp); p.PinSY = Canvas.GetTop(tempEp); p.Radius = tempEp.ActualHeight; if (tempEp.Fill.ToString().Trim().Length > 0 && tempEp.Fill.ToString() != "0") { p.DrawColor = tempEp.Fill.ToString(); } else { p.DrawColor = "#FF0000"; } bool isrelay = (App.Current.Resources["Locator"] as ViewModelLocator).Paper.CablePaper.IsSafeBox == 1; p.ProjectNO = (App.Current.Resources["Locator"] as ViewModelLocator).Paper.Project.ProjectNO; p.FixtureCode = (App.Current.Resources["Locator"] as ViewModelLocator).Paper.CablePaper.FixtureCode; (App.Current.Resources["Locator"] as ViewModelLocator).Paper.Pin = p; CodeWindow codeWindow = new CodeWindow(isrelay); codeWindow.ShowDialog(); tempEp.Name = "P" + p.PinCode; //canvas.RegisterName(tempEp.Name, tempEp); tempEp.Fill = TempBruhes; } else { string projectno = (App.Current.Resources["Locator"] as ViewModelLocator).Paper.Project.ProjectNO; Pin p = SQliteDbContext.GetOnePin(tempEp.Name.Substring(1, tempEp.Name.Length - 1), projectno); if (p == null) { return; } p.PinEX = canvas.RenderSize.Width; p.PinEY = canvas.RenderSize.Height; p.PinSX = Canvas.GetLeft(tempEp); p.PinSY = Canvas.GetTop(tempEp); p.Radius = tempEp.ActualHeight; (App.Current.Resources["Locator"] as ViewModelLocator).Paper.Pin = p; bool isrelay = (App.Current.Resources["Locator"] as ViewModelLocator).Paper.CablePaper.IsSafeBox == 1; CodeWindow codeWindow = new CodeWindow(isrelay); codeWindow.IsModify = true; codeWindow.ShowDialog(); // tempEp.Name ="P"+ p.PinCode; } } }
private void Button_Click(object sender, RoutedEventArgs e) { string tag = (sender as System.Windows.Controls.Button).Tag.ToString().ToLower(); if (tag == "scan") { string filePathName = ""; //定义图像文件的位置(包括路径及文件名) System.Windows.Forms.OpenFileDialog ofd = new System.Windows.Forms.OpenFileDialog(); //添加打开对话框 ofd.Filter = "Excel文件|*.xls;*.xlsx"; //设置过滤器 if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK) //如果确定打开图片,则保存文件的路径及文件名到字符串变量filePathName中 { filePathName = ofd.FileName; //包括路径和文件名 // filepath = this.filename.Text = ofd.FileName; filepath = ofd.FileName; } } else if (tag == "confirm") { ExcelProject project = (App.Current.Resources["Locator"] as ViewModelLocator).ExcelPaper.Project; if (Operation == WindowOperation.Add) { if (QualityCheck()) { project.Author = (App.Current.Resources["Locator"] as ViewModelLocator).Main.User.UserID; bool rs = ImportExcel(project.ProjectNO, project.ProjectName, filepath); if (SQliteDbContext.GetAllExcelProject().Exists(x => x.ProjectNO == project.ProjectNO)) { MessageBox.Show("工程编号已经存在!", "提示", MessageBoxButton.OK, MessageBoxImage.Information); this.projectNO.Focus(); return; } if (rs) { int r = SQliteDbContext.AddExcelProject(project); if (r > 0 && rs) { MessageBox.Show("添加成功!", "提示", MessageBoxButton.OK, MessageBoxImage.Information); this.Close(); } } } } else if (Operation == WindowOperation.Update) { QualityCheck(); int r = SQliteDbContext.UpdateExcelProject(project); if (r > 0) { MessageBox.Show("更新成功!", "提示", MessageBoxButton.OK, MessageBoxImage.Information); this.Close(); } } else if (Operation == WindowOperation.Delete) { QualityCheck(); int r = SQliteDbContext.DeleteExcelProject(project); if (r > 0) { MessageBox.Show("删除成功!", "提示", MessageBoxButton.OK, MessageBoxImage.Information); this.Close(); } } (App.Current.Resources["Locator"] as ViewModelLocator).Main.ExProjects = new System.Collections.ObjectModel.ObservableCollection <ExcelProject>(SQliteDbContext.GetAllExcelProject()); } else if (tag == "cancel") { this.Close(); } }
/// <summary> /// 导入Excel /// </summary> private bool ImportExcel(string projectNO, string ProjectName, string path) { DataSet ds = null; System.Data.DataTable dt = null; try { { #region Part string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=1;'"; OleDbConnection myConn = new OleDbConnection(strConn); myConn.Open(); OleDbDataAdapter myCommand = null; string strExcel = "select * from [sheet1$]";//这里sheet1对应excel的工作表名称,一定要注意。 myCommand = new OleDbDataAdapter(strExcel, strConn); ds = new DataSet(); myCommand.Fill(ds, "table1"); dt = ds.Tables[0]; List <Part> projects = new List <Part>(); foreach (DataRow dr in dt.Rows) { for (int i = 1; i < dt.Columns.Count - 1; i++) { if (dr[i].ToString().Trim().Length > 0 && dr[i].ToString().Trim().Length > 0) { Part part = new Part() { PartType = dr[0].ToString().Trim(), ProjectNO = projectNO, Circuit = dt.Columns[i].ToString().Trim() }; projects.Add(part); } } } var names = projects.Select(x => x.PartType).Distinct().ToList(); foreach (var item in names) { if (SQliteDbContext.CheckPartNameExist(item)) { System.Windows.MessageBox.Show($"{item}型号已经存在,请删除该零件新后再导入", "警告", MessageBoxButton.OK, MessageBoxImage.Warning); return(false); } } #endregion #region Fixture string sql2 = "select * from [sheet3$]";//这里sheet1对应excel的工作表名称,一定要注意。 myCommand = new OleDbDataAdapter(sql2, strConn); ds = new DataSet(); myCommand.Fill(ds, "table1"); dt = ds.Tables[0]; if (dt.Columns.Count < 5) { System.Windows.MessageBox.Show($"Sheet3缺少列,列数必须为6列,包括第一列的空白列,请检测列信息是否完成", "警告", MessageBoxButton.OK, MessageBoxImage.Warning); return(false); } bool IsChecked = true; int index3 = 0; dt.Rows.Cast <DataRow>().Where(x => x.ItemArray[1].ToString().Trim().Length > 0).ToList().ForEach(r => { index3++; if (r[2].ToString().Trim().Length == 0) { IsChecked = false; MessageBox.Show($"模型编号不能为空,在sheet3中{index3+1}行", "错误", MessageBoxButton.OK, MessageBoxImage.Error); } int pinindex = 0; if (!int.TryParse(r[2].ToString().Trim(), out pinindex)) { IsChecked = false; MessageBox.Show($"模型编号必须为数字,在sheet3中{index3 + 1}行", "错误", MessageBoxButton.OK, MessageBoxImage.Error); } if (r[4].ToString().Trim().Length == 0) { IsChecked = false; MessageBox.Show($"插接件编号不能为空,在sheet3中{index3 + 1}行", "错误", MessageBoxButton.OK, MessageBoxImage.Error); } if (r[5].ToString().Trim().Length == 0) { IsChecked = false; MessageBox.Show($"Pin编号不能为空,在sheet3中{index3 + 1}行", "错误", MessageBoxButton.OK, MessageBoxImage.Error); } if (!int.TryParse(r[5].ToString().Trim(), out pinindex)) { IsChecked = false; MessageBox.Show($"Pin编号必须为数字,在sheet3中{index3 + 1}行", "错误", MessageBoxButton.OK, MessageBoxImage.Error); } }); if (!IsChecked) { MessageBox.Show($"导入数据出错!", "错误", MessageBoxButton.OK, MessageBoxImage.Error); return(false); } var fixtures = dt.Rows.Cast <DataRow>().Where(x => x.ItemArray[1].ToString().Trim().Length > 0).Select(r => new FixtureInfo { ProjectNO = projectNO, FixtureType = r[1].ToString().Trim(), PinNO = r[2].ToString().Trim(), FixtureNO = r[4].ToString().Trim(), // PhysicalChannel = r[2].ToString().Trim().Length == 0 ? 0 : Convert.ToInt32(r[1].ToString()), PinIndex = Convert.ToInt32(r[5].ToString()), } ).ToList(); #endregion // #region Connect string Sql3 = "select * from [sheet2$]";//这里sheet1对应excel的工作表名称,一定要注意。 myCommand = new OleDbDataAdapter(Sql3, strConn); ds = new DataSet(); myCommand.Fill(ds, "table1"); dt = ds.Tables[0]; if (dt.Columns.Count < 7) { System.Windows.MessageBox.Show($"Sheet2缺少列,列数必须为7列,包括第一列的序号列,请检测列信息是否完成", "警告", MessageBoxButton.OK, MessageBoxImage.Warning); return(false); } int index2 = 0; dt.AsEnumerable().Where(x => x[0].ToString().Trim().Length > 0).ToList().ForEach(r => { index2++; if (r[1].ToString().Trim().Length == 0) { IsChecked = false; MessageBox.Show($"Wire不能为空,在sheet2中{index2+1}行", "错误", MessageBoxButton.OK, MessageBoxImage.Error); } int pinindex = 0; if (r[2].ToString().Trim().Length == 0) { IsChecked = false; MessageBox.Show($"Option不能为空,在sheet2中{index2+1}行", "错误", MessageBoxButton.OK, MessageBoxImage.Error); } if (r[3].ToString().Trim().Length == 0) { IsChecked = false; MessageBox.Show($"From不能为空,在sheet2中{index2 + 1}行", "错误", MessageBoxButton.OK, MessageBoxImage.Error); } if (r[4].ToString().Trim().Length == 0) { IsChecked = false; MessageBox.Show($"From-Pin不能为空,在sheet2中{index2 + 1}行", "错误", MessageBoxButton.OK, MessageBoxImage.Error); } if (!int.TryParse(r[4].ToString().Trim(), out pinindex)) { IsChecked = false; MessageBox.Show("FromPin编号必须为数字", "错误", MessageBoxButton.OK, MessageBoxImage.Error); } if (r[5].ToString().Trim().Length == 0) { IsChecked = false; MessageBox.Show($"To不能为空,在sheet2中{index2 + 1}行", "错误", MessageBoxButton.OK, MessageBoxImage.Error); } if (r[6].ToString().Trim().Length == 0) { IsChecked = false; MessageBox.Show($"To-Pin不能为空,在sheet2中{index2 + 1}行", "错误", MessageBoxButton.OK, MessageBoxImage.Error); } if (!int.TryParse(r[6].ToString().Trim(), out pinindex)) { IsChecked = false; MessageBox.Show("ToPin编号必须为数字", "错误", MessageBoxButton.OK, MessageBoxImage.Error); } }); if (!IsChecked) { MessageBox.Show($"导入数据出错!", "错误", MessageBoxButton.OK, MessageBoxImage.Error); return(false); } var data = dt.AsEnumerable().Where(x => x[0].ToString().Trim().Length > 0).ToList().Select(x => new WireConnect() { Wire = x[1].ToString().Trim(), Option = x[2].ToString().Trim(), From = x[3].ToString().Trim(), FromPin = x[4].ToString().Trim(), To = x[5].ToString().Trim(), ToPin = x[6].ToString().Trim(), }).ToList(); List <HashSet <WireConnect> > wireConnects = new List <HashSet <WireConnect> >(); for (int i = 0; i < data.Count; i++) { List <WireConnect> wires = new List <WireConnect>(); if (data[i].IsDeal) { continue; } wires.AddRange(data.FindAll(x => x.Equals(data[i]))); data[i].IsDeal = true; if (wires.Count > 0) { for (int j = 0; j < wires.Count; j++) { if (wires[j].IsDeal) { continue; } wires.AddRange(data.FindAll(x => x.Equals(wires[j]))); wires[j].IsDeal = true; } wires.ForEach(x => x.Num = data[i].Wire); wireConnects.Add(new HashSet <WireConnect>(wires)); } } List <ConnectInfoEx> ctlst = new List <ConnectInfoEx>(); foreach (var item in wireConnects) { foreach (var subitem in item) { ctlst.Add(new ConnectInfoEx { ProjectNO = projectNO, WireNum = subitem.Num.Trim(), CirCuitName = subitem.Option.Trim(), Pins = new List <BasePin>() { new BasePin() { PinIndex = Convert.ToInt32(subitem.FromPin.ToString().Trim()), FixtureNO = subitem.From.ToString().Trim() }, new BasePin() { PinIndex = Convert.ToInt32(subitem.ToPin.ToString().Trim()), FixtureNO = subitem.To.ToString().Trim() }, } }); } } ////将From to 拆分成单个的两个归属到治具里 //var ctlst = wireConnects.Select(r => new ConnectInfoEx //{ // ProjectNO = projectNO, // WireNum = r.Num.Trim(), // CirCuitName=r.Option.Trim(), // Pins=new List<BasePin>() // { // new BasePin() { PinIndex = Convert.ToInt32(r.FromPin.ToString().Trim()), FixtureNO = r.From.ToString().Trim()}, // new BasePin() { PinIndex = Convert.ToInt32(r.ToPin.ToString().Trim()), FixtureNO = r.To.ToString().Trim()}, // } //}); //筛选出合并点的信息 List <ConnectionInfo> result = new List <ConnectionInfo>(); if (!rd.IsChecked.Value) { result = ctlst.SelectMany(p => p.Pins, (p, r) => new ConnectionInfo { CirCuitName = p.CirCuitName, ProjectNO = p.ProjectNO, WireNum = p.WireNum, FixtureNO = r.FixtureNO, PinIndex = r.PinIndex, }).Where(n => !System.Text.RegularExpressions.Regex.IsMatch(n.FixtureNO, @"^[a-zA-Z]{3}")).ToList(); } else if (rd.IsChecked.Value && rd.IsChecked.HasValue) { if (patter.Text.Trim().Length == 0) { MessageBox.Show("请输入需要匹配的合点字母", "提示", MessageBoxButton.OK, MessageBoxImage.Information); return(false); } result = ctlst.SelectMany(p => p.Pins, (p, r) => new ConnectionInfo { CirCuitName = p.CirCuitName, ProjectNO = p.ProjectNO, WireNum = p.WireNum, FixtureNO = r.FixtureNO, PinIndex = r.PinIndex, }).Where(n => !n.FixtureNO.StartsWith(patter.Text.Trim())).ToList(); } //给每个点赋与物理地址 result.ForEach(x => { var rs = fixtures.ToList().Find(r => r.FixtureNO == x.FixtureNO && r.PinIndex == x.PinIndex); if (rs != null) { x.PhysicalChannel = rs.PhysicalChannel; x.FixtureType = rs.FixtureType; x.PinNO = rs.PinNO; } else { MessageBox.Show($"导入数据出错:{x.FixtureNO}-{x.PinIndex}在表3中不存在!", "错误", MessageBoxButton.OK, MessageBoxImage.Error); } } ); #region ////将From to 拆分成单个的两个归属到治具里 //var ctlst = dt.Rows.Cast<DataRow>().Where(x => x.ItemArray[1].ToString() != "").Select(r => new ConnectInfoEx //{ // ProjectNO = projectNO, // WireNum = r[1].ToString().Trim(), // CirCuitName = r[2].ToString().Trim(), // Pins = new List<BasePin>() { new BasePin() { PinIndex = Convert.ToInt32(r[4].ToString().Trim()), FixtureNO = r[3].ToString().Trim()}, // new BasePin() { PinIndex = Convert.ToInt32(r[6].ToString().Trim()), FixtureNO = r[5].ToString().Trim()},} //}).ToList(); #endregion #endregion Dictionary <string, object> dict = new Dictionary <string, object>(); //实体线束(零件图号) string sql = "Insert into ExcelPart(ProjectNO,PartType,Circuit)Values(@ProjectNO,@PartType,@Circuit)"; dict.Add(sql, projects); int row1 = SQliteDbContext.MultiInsert <Part>(sql, projects); if (row1 == 0) { MessageBox.Show($"导入数据出错,插入数据库失败!", "错误", MessageBoxButton.OK, MessageBoxImage.Error); return(false); } //治具信息 string sqlFixtureAdd = "Insert into ExcelFixturePinInfo(ProjectNO,FixtureType,FixtureNO,PinNO, PinIndex)Values(@ProjectNO,@FixtureType,@FixtureNO,@PinNO,@PinIndex)"; int row2 = SQliteDbContext.MultiInsert <FixtureInfo>(sqlFixtureAdd, fixtures); if (row2 == 0) { MessageBox.Show($"导入数据出错,插入数据库失败!", "错误", MessageBoxButton.OK, MessageBoxImage.Error); return(false); } //连接点 string sqlconn = "Insert into ExcelConnect(WireNum,CirCuitName,ProjectNO,FixtureNO,FixtureType,PinIndex,PinNO)Values(@WireNum,@CirCuitName,@ProjectNO,@FixtureNO,@FixtureType,@PinIndex,@PinNO)"; int row3 = SQliteDbContext.MultiInsert <ConnectionInfo>(sqlconn, result); if (row3 == 0) { MessageBox.Show($"导入数据出错,插入数据库失败!", "错误", MessageBoxButton.OK, MessageBoxImage.Error); return(false); } } return(true); } catch (Exception ex) { MessageBox.Show($"导入数据出错:{ex.Message}", "错误", MessageBoxButton.OK, MessageBoxImage.Error); return(false); } }
private void Ellipse_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { Ellipse ep = sender as Ellipse; mousedown = true; if (Operator != Operation.Create) { if (tempEp != null) { tempEp.Fill = TempBruhes; } tempEp = ep; TempBruhes = ep.Fill; ep.Fill = Brushes.LawnGreen; ep.CaptureMouse(); } if (Operator == Operation.Delete) { ep.ReleaseMouseCapture(); canvas.UnregisterName(ep.Name); canvas.Children.Remove(ep); if (ep.Name != null && ep.Name != "") { SQliteDbContext.DeleteOneExPin(ep.Name.Substring(1, ep.Name.Length - 1), (App.Current.Resources["Locator"] as ViewModelLocator).ExcelPaper.Fixture.FixtureType); ExcelPin p = (App.Current.Resources["Locator"] as ViewModelLocator).ExcelPaper.Pins.ToList().Find(x => x.PinNO == ep.Name.Substring(1, ep.Name.Length - 1)); (App.Current.Resources["Locator"] as ViewModelLocator).ExcelPaper.Pins.Remove(p); } } if (Operator == Operation.Modify) { if (tempEp != null) { int value = 0; int.TryParse(txtDia.Text, out value); if (cbDia.IsChecked.HasValue && cbDia.IsChecked.Value) { tempEp.Height = value; tempEp.Width = value; } if (cbDia.IsChecked.HasValue && cbColor.IsChecked.Value) { tempEp.Fill = clpk.SelectedBrush; } } if (tempEp.Name == "") { ExcelPin p = new ExcelPin(); p.PinEX = canvas.RenderSize.Width; p.PinEY = canvas.RenderSize.Height; p.PinSX = Canvas.GetLeft(tempEp); p.PinSY = Canvas.GetTop(tempEp); p.Radius = tempEp.ActualHeight; if (tempEp.Fill.ToString().Trim().Length > 0 && tempEp.Fill.ToString() != "0") { p.DrawColor = tempEp.Fill.ToString(); } else { p.DrawColor = "#FF0000"; } if ((App.Current.Resources["Locator"] as ViewModelLocator).ExcelPaper.Fixture == null) { MessageBox.Show("请选择一个治具型号后再创建!", "提示", MessageBoxButton.OK, MessageBoxImage.Warning); return; } p.FixtureType = (App.Current.Resources["Locator"] as ViewModelLocator).ExcelPaper.Fixture.FixtureType; (App.Current.Resources["Locator"] as ViewModelLocator).ExcelPaper.Pin = p; ExcelPinWindow codeWindow = new ExcelPinWindow(false); codeWindow.ShowDialog(); // tempEp.Name = "P" + p.PinNO; //canvas.RegisterName(tempEp.Name, tempEp); tempEp.Fill = TempBruhes; } else { ExcelPin p = SQliteDbContext.GetOneExPin((App.Current.Resources["Locator"] as ViewModelLocator).ExcelPaper.Fixture.FixtureType, tempEp.Name.Substring(1, tempEp.Name.Length - 1)); if (p == null) { return; } p.PinEX = canvas.RenderSize.Width; p.PinEY = canvas.RenderSize.Height; p.PinSX = Canvas.GetLeft(tempEp); p.PinSY = Canvas.GetTop(tempEp); p.Radius = tempEp.ActualHeight; (App.Current.Resources["Locator"] as ViewModelLocator).ExcelPaper.Pin = p; ExcelPinWindow codeWindow = new ExcelPinWindow(true); // SQliteDbContext.UpdatOneExPin(p); codeWindow.ShowDialog(); tempEp.Name = "P" + p.PinNO; } } }
private void Ellipse_MouseUp(object sender, MouseButtonEventArgs e) { Ellipse ep = sender as Ellipse; mousedown = false; ep.ReleaseMouseCapture(); if (tempEp != null && (Operator == Operation.Move)) { tempEp.Fill = TempBruhes; Operator = Operation.None; } if (ep.Name != null && ep.Name.Trim().Length > 0) { string name = ep.Name.Remove(0, 1); ExcelPin p = (App.Current.Resources["Locator"] as ViewModelLocator).ExcelPaper.Pins.ToList().Find(x => x.PinNO == name); if (p == null) { return; } p.PinSX = Canvas.GetLeft(ep); p.PinSY = Canvas.GetTop(ep); SQliteDbContext.UpdatOneExPin(p); } if (ep.Name == "" && Operator == Operation.Create) { ExcelPin p = new ExcelPin(); p.PinEX = canvas.RenderSize.Width; p.PinEY = canvas.RenderSize.Height; p.PinSX = Canvas.GetLeft(ep); p.PinSY = Canvas.GetTop(ep); p.Radius = ep.ActualHeight; if (ep.Fill.ToString().Trim().Length > 0 && ep.Fill.ToString() != "0") { p.DrawColor = ep.Fill.ToString(); } else { p.DrawColor = "#FF0000"; } if ((App.Current.Resources["Locator"] as ViewModelLocator).ExcelPaper.Fixture == null) { MessageBox.Show("请选择一个治具型号后再创建!", "提示", MessageBoxButton.OK, MessageBoxImage.Warning); return; } p.FixtureType = (App.Current.Resources["Locator"] as ViewModelLocator).ExcelPaper.Fixture.FixtureType; var pnm = (App.Current.Resources["Locator"] as ViewModelLocator).ExcelPaper.Pins.OrderBy(x => Convert.ToInt16(x.PinNO)).LastOrDefault(); int pn = 0; if (pnm != null) { string pno = pnm.PinNO; int.TryParse(pno, out pn); } p.PinNO = (pn + 1).ToString(); p.PhysicalChannel = (App.Current.Resources["Locator"] as ViewModelLocator).ExcelPaper.Channels.FirstOrDefault(); (App.Current.Resources["Locator"] as ViewModelLocator).ExcelPaper.Pin = p; ExcelPinWindow codeWindow = new ExcelPinWindow(false); codeWindow.ShowDialog(); // tempEp.Name = "P" + p.PinNO; //canvas.RegisterName(tempEp.Name, tempEp); if (codeWindow.IsAdd) { tempEp = ep; ep.Name = "P" + p.PinNO; canvas.RegisterName(ep.Name, ep); } else { ep.Fill = null; } } }