RouteManage.xaml.cs 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Windows;
  6. using System.Windows.Controls;
  7. using System.Windows.Data;
  8. using System.Windows.Documents;
  9. using System.Windows.Input;
  10. using System.Windows.Media;
  11. using System.Windows.Media.Imaging;
  12. using System.Windows.Navigation;
  13. using System.Windows.Shapes;
  14. using DAL;
  15. using System.Data;
  16. using System.Data.SqlClient;
  17. using System.Windows.Media.Animation;
  18. using ColorFont;
  19. using AGV_WPF.Services;
  20. namespace AGV_WPF
  21. {
  22. /// <summary>
  23. /// MarkManage.xaml 的交互逻辑
  24. /// </summary>
  25. public partial class RouteManage : Page
  26. {
  27. public DAL.ZSql sql = new DAL.ZSql();
  28. public int linenum = -1;
  29. public int id = -1;
  30. public bool IsIDModel = true;
  31. public bool IsbtnCopy = true;
  32. public SolidColorBrush IsVirtualMark = Brushes.Gray;
  33. public SolidColorBrush NotVirtualMark = Brushes.Yellow;
  34. public SolidColorBrush RouteColor = Brushes.Tomato;
  35. public double MarkDiameter = 4;
  36. Path path;
  37. PathGeometry animationPath;
  38. PathFigure pFigure;
  39. PolyLineSegment route;
  40. string strrouteworkline = null;
  41. public RouteManage()
  42. {
  43. InitializeComponent();
  44. }
  45. /// <summary>
  46. /// 页面加载
  47. /// </summary>
  48. /// <param name="sender"></param>
  49. /// <param name="e"></param>
  50. private void Page_Loaded(object sender, RoutedEventArgs e)
  51. {
  52. IsVirtualMark = new SolidColorBrush(Properties.Settings.Default.MarkVirtualColor);
  53. NotVirtualMark = new SolidColorBrush(Properties.Settings.Default.MarkNotColor);
  54. MarkDiameter = Properties.Settings.Default.MarkDiameter;
  55. RouteColor = new SolidColorBrush(Properties.Settings.Default.RouteColor);
  56. EVirtualMark.Fill = IsVirtualMark;
  57. ENotVirtualMark.Fill = NotVirtualMark;
  58. RecRoute.Fill = RouteColor;
  59. // Create the animation path.
  60. path = new Path();
  61. path.Stroke = RouteColor;
  62. path.StrokeThickness = 1;
  63. animationPath = new PathGeometry();
  64. pFigure = new PathFigure();
  65. route = new PolyLineSegment();
  66. path.Data = animationPath;
  67. pFigure.Segments.Add(route);
  68. animationPath.Figures.Add(pFigure);
  69. MapInit(@"Image\background.png");
  70. //修改日期:2013-12-1
  71. //修改日期:2013-12-30
  72. BindWorkLineCombox();
  73. BindLineCombox(cbRoute_WorkLine.Text.Trim());
  74. LoadAllMark();
  75. }
  76. /// <summary>
  77. /// 加载电子地图背景图片
  78. /// </summary>
  79. /// <param name="struri">电子地图图片位置</param>
  80. public void MapInit(string struri)
  81. {
  82. ImageBrush imageBrush = new ImageBrush();
  83. imageBrush.ImageSource = new BitmapImage(new Uri(struri, UriKind.RelativeOrAbsolute));
  84. imageBrush.Stretch = Stretch.Uniform;
  85. imageBrush.AlignmentX = AlignmentX.Left;
  86. canvas.Background = imageBrush;
  87. }
  88. /// <summary>
  89. /// 加载地标
  90. /// </summary>
  91. private void LoadAllMark()
  92. {
  93. DAL.ZSql sql1 = new DAL.ZSql();
  94. sql1.Open("select * from T_Mark");
  95. //加载地图中地标
  96. canvas.Children.Clear();
  97. double x = 0, y = 0;
  98. for (int i = 0; i < sql1.Rows.Count; i++)
  99. {
  100. x = Convert.ToDouble(sql1.Rows[i]["XPos"]);
  101. y = Convert.ToDouble(sql1.Rows[i]["YPos"]);
  102. Ellipse markellipse = new Ellipse();
  103. markellipse.Height = MarkDiameter;
  104. markellipse.Width = MarkDiameter;
  105. markellipse.ToolTip = sql1.Rows[i]["ID"].ToString() + "\r\nWorkLine:" + sql1.Rows[i]["WorkLine"].ToString() + " Mark:" + sql1.Rows[i]["Mark"];
  106. Canvas.SetLeft(markellipse, x - MarkDiameter / 2);
  107. Canvas.SetTop(markellipse, y - MarkDiameter / 2);
  108. //设置虚拟点颜色
  109. if (Convert.ToBoolean(sql1.Rows[i]["VirtualMark"]))
  110. {
  111. markellipse.Fill = IsVirtualMark;
  112. }
  113. else
  114. {
  115. markellipse.Fill = NotVirtualMark;
  116. Label marklable = new Label();
  117. marklable.FontSize = 7;
  118. marklable.Foreground = Brushes.Black;
  119. //marklable.Content = sql1.Rows[i]["ID"].ToString();//地标ID
  120. marklable.Content = sql1.Rows[i]["Mark"].ToString();//地标号
  121. Canvas.SetLeft(marklable, x - 10);
  122. Canvas.SetTop(marklable, y - 15);
  123. canvas.Children.Add(marklable);
  124. }
  125. canvas.Children.Add(markellipse);
  126. }
  127. sql1.Close();
  128. }
  129. /// <summary>
  130. /// 加载数据表格
  131. /// </summary>
  132. /// <param name="paraworkline"></param>
  133. /// <param name="paralinenum"></param>
  134. private void LoadDataGrid(string paraworkline, int paralinenum)
  135. {
  136. if (paralinenum > 0)
  137. {
  138. DAL.ZSql sql1 = new DAL.ZSql();
  139. sql1.Open("select l.*,m.Mark,m.WorkLine,m.XPos,m.YPos from T_Line as l LEFT OUTER JOIN T_Mark as m ON l.MarkID = m.ID where l.MarkID IS NOT NULL and l.MarkOrder IS NOT NULL and l.LineNum=" + Convert.ToString(paralinenum) + " and WorkLine=" + paraworkline +" order by l.MarkOrder");
  140. canvas.Children.Remove(path);
  141. if (sql1.Rows.Count>1)
  142. {
  143. route.Points.Clear();
  144. for (int i = 0; i < sql1.Rows.Count; i++ )
  145. {
  146. if(!string.IsNullOrEmpty(sql1.Rows[i]["XPos"].ToString()) && !string.IsNullOrEmpty(sql1.Rows[i]["YPos"].ToString()))
  147. {
  148. route.Points.Add(new Point(Convert.ToDouble(sql1.Rows[i]["XPos"]), Convert.ToDouble(sql1.Rows[i]["YPos"])));
  149. }
  150. }
  151. if (route.Points.Count >= 2)
  152. {
  153. pFigure.StartPoint = route.Points[0];
  154. canvas.Children.Add(path);
  155. }
  156. }
  157. dataGrid1.ItemsSource = sql1.m_table.DefaultView;
  158. sql1.Close();
  159. linenum = paralinenum;
  160. }
  161. else
  162. {
  163. dataGrid1.ItemsSource = null;
  164. }
  165. }
  166. /// <summary>
  167. /// 线路号绑定
  168. /// </summary>
  169. /// <param name="worklinenum">生产区</param>
  170. private void BindLineCombox(string worklinenum)
  171. {
  172. if (!string.IsNullOrEmpty(worklinenum))
  173. {
  174. DAL.ZSql sql1 = new DAL.ZSql();
  175. sql1.Open("select DISTINCT LineNum from T_Line LEFT OUTER JOIN T_Mark ON T_Line.MarkID = T_Mark.ID where WorkLine=" + worklinenum + " order by LineNum");
  176. cbRoute.ItemsSource = sql1.m_table.DefaultView;
  177. cbRoute.DisplayMemberPath = "LineNum";
  178. cbRoute.SelectedValuePath = "LineNum";
  179. sql1.Close();
  180. }
  181. }
  182. //修改日期:2013-12-1
  183. /// <summary>
  184. /// 生产区下拉框绑定
  185. /// </summary>
  186. private void BindWorkLineCombox()
  187. {
  188. DAL.ZSql sql1 = new DAL.ZSql();
  189. sql1.Open("Select DISTINCT WorkLine from T_Mark");
  190. cbWorkLine.ItemsSource = sql1.m_table.DefaultView;
  191. cbWorkLine.DisplayMemberPath = "WorkLine";
  192. cbWorkLine.SelectedValuePath = "WorkLine";
  193. sql1.Close();
  194. //修改日期:2013-12-30
  195. DAL.ZSql sql2 = new DAL.ZSql();
  196. sql2.Open("Select DISTINCT WorkLine from T_Mark");
  197. cbRoute_WorkLine.ItemsSource = sql2.m_table.DefaultView;
  198. cbRoute_WorkLine.DisplayMemberPath = "WorkLine";
  199. cbRoute_WorkLine.SelectedValuePath = "WorkLine";
  200. sql2.Close();
  201. }
  202. /// <summary>
  203. /// 表格选择不同行消息触发
  204. /// </summary>
  205. /// <param name="sender"></param>
  206. /// <param name="e"></param>
  207. private void dataGrid1_SelectionChanged(object sender, SelectionChangedEventArgs e)
  208. {
  209. DataRowView selectItem = dataGrid1.SelectedItem as DataRowView;
  210. if (selectItem != null)
  211. {
  212. id = Convert.ToInt16(selectItem["ID"].ToString().Trim());
  213. tbOrder.Text = selectItem["MarkOrder"].ToString().Trim();
  214. tbMarkID.Text = selectItem["MarkID"].ToString().Trim();
  215. tbDistance.Text = selectItem["Distance"].ToString().Trim();
  216. cbWorkLine.Text = selectItem["WorkLine"].ToString().Trim();
  217. tbMark.Text = selectItem["Mark"].ToString().Trim();
  218. string a = selectItem["Parallel"].ToString().Trim();
  219. string a1 = selectItem["Direction"].ToString().Trim();
  220. if (a.ToLower() == "true")
  221. {
  222. comboBox1.Text = "1";
  223. }
  224. else
  225. {
  226. comboBox1.Text = "0";
  227. }
  228. if (a1.ToLower() == null||a1.ToLower() =="")
  229. {
  230. comboBox2.Text = "0";
  231. }
  232. else
  233. {
  234. comboBox2.Text = a1;
  235. }
  236. //comboBox1.Text = selectItem["Parallel"].ToString().Trim();
  237. }
  238. else
  239. {
  240. tbOrder.Text = "";
  241. tbMarkID.Text = "";
  242. tbDistance.Text = "";
  243. tbMark.Text = "";
  244. comboBox1.Text = "0";
  245. }
  246. }
  247. /// <summary>
  248. /// 删除路线
  249. /// </summary>
  250. /// <param name="sender"></param>
  251. /// <param name="e"></param>
  252. private void DeleteAll_Click(object sender, RoutedEventArgs e)
  253. {
  254. strrouteworkline = cbRoute_WorkLine.Text.ToString().Trim();
  255. string strRoute = cbRoute.Text.ToString().Trim();
  256. string strDirection = comboBox2.Text.ToString().Trim();
  257. if (string.IsNullOrEmpty(strRoute))
  258. {
  259. MessageBox.Show("请输入要删除路线!");
  260. cbRoute.Focus();
  261. return;
  262. }
  263. sql.Open("select * from T_Line LEFT OUTER JOIN T_Mark ON T_Line.MarkID = T_Mark.ID where LineNum=" + strRoute + " and WorkLine=" + strrouteworkline);
  264. if (sql.Rows.Count <= 0)
  265. {
  266. MessageBox.Show("不存在此路线!");
  267. return;
  268. }
  269. if (MessageBox.Show("确认要删除此路线?", "警告", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
  270. {
  271. sql.Open("delete T_Line from T_Line LEFT OUTER JOIN T_Mark ON T_Line.MarkID = T_Mark.ID where LineNum=" + strRoute + " and WorkLine=" + strrouteworkline +"and Direction="+strDirection);
  272. MessageBox.Show("删除线路成功!");
  273. LoadAllMark();
  274. cbRoute.Text = "";
  275. tbOrder.Text = "";
  276. tbMarkID.Text = "";
  277. tbDistance.Text = "";
  278. BindLineCombox(cbRoute_WorkLine.Text.Trim());
  279. }
  280. sql.Close();
  281. }
  282. /// <summary>
  283. /// 复制线路
  284. /// </summary>
  285. /// <param name="sender"></param>
  286. /// <param name="e"></param>
  287. private void CopyRoute_Click(object sender, RoutedEventArgs e)
  288. {
  289. this.tbOrder.Visibility = Visibility.Hidden;
  290. this.tbMarkID.Visibility = Visibility.Hidden;
  291. this.tbMark.Visibility = Visibility.Hidden;
  292. this.labelMark.Visibility = Visibility.Hidden;
  293. this.labelWorkLine.Visibility = Visibility.Hidden;
  294. this.cbWorkLine.Visibility = Visibility.Hidden;
  295. this.tbDistance.Visibility = Visibility.Hidden;
  296. this.labelOrder.Visibility = Visibility.Hidden;
  297. this.labelDistance.Visibility = Visibility.Hidden;
  298. this.labelMarkID.Visibility = Visibility.Hidden;
  299. this.btn_Shift.Visibility = Visibility.Hidden;
  300. this.labelNewRoute.Visibility = Visibility.Visible;
  301. this.tbNewRoute.Visibility = Visibility.Visible;
  302. this.CancelCopy.Visibility = Visibility.Visible;
  303. string strlinenum = cbRoute.Text.ToString().Trim();
  304. string strnewroute = tbNewRoute.Text.ToString().Trim();
  305. strrouteworkline = cbRoute_WorkLine.Text.ToString().Trim();
  306. btnAdd.IsEnabled = false;
  307. ModifyRecord.IsEnabled = false;
  308. DeleteRecord.IsEnabled = false;
  309. if (string.IsNullOrEmpty(strlinenum))
  310. {
  311. MessageBox.Show("对不起,请选择要复制的路线!");
  312. this.cbRoute.Focus();
  313. return;
  314. }
  315. if (string.IsNullOrEmpty(strnewroute))
  316. {
  317. MessageBox.Show("对不起,请输入复制后新路线的编号!");
  318. this.tbNewRoute.Focus();
  319. return;
  320. }
  321. sql.Open("select * from T_Line LEFT OUTER JOIN T_Mark ON T_Line.MarkID = T_Mark.ID where LineNum=" + strlinenum + " and WorkLine=" + strrouteworkline);
  322. if (sql.Rows.Count < 1)
  323. {
  324. MessageBox.Show("您输入的复制线路不存在,请重新输入!");
  325. this.cbRoute.Focus();
  326. return;
  327. }
  328. sql.Open("select * from T_Line LEFT OUTER JOIN T_Mark ON T_Line.MarkID = T_Mark.ID where LineNum=" + strnewroute + " and WorkLine=" + strrouteworkline);
  329. if (sql.Rows.Count > 0)
  330. {
  331. MessageBox.Show("您输入的新线路编号已存在,请重新输入!");
  332. this.tbNewRoute.Focus();
  333. return;
  334. }
  335. sql.Open("insert into T_Line (LineNum,MarkID,MarkOrder,Distance,Parallel,Direction) select " + strnewroute +
  336. ",MarkID,MarkOrder,Distance,Parallel ,Direction from T_Line LEFT OUTER JOIN T_Mark ON T_Line.MarkID = T_Mark.ID where LineNum=" + strlinenum + " and WorkLine=" + strrouteworkline);
  337. MessageBox.Show("添加成功!");
  338. this.tbOrder.Visibility = Visibility.Visible;
  339. this.tbMarkID.Visibility = Visibility.Visible;
  340. this.tbDistance.Visibility = Visibility.Visible;
  341. this.labelOrder.Visibility = Visibility.Visible;
  342. this.labelDistance.Visibility = Visibility.Visible;
  343. this.labelMarkID.Visibility = Visibility.Visible;
  344. this.btn_Shift.Visibility = Visibility.Visible;
  345. this.labelNewRoute.Visibility = Visibility.Hidden;
  346. this.tbNewRoute.Visibility = Visibility.Hidden;
  347. this.CancelCopy.Visibility = Visibility.Hidden;
  348. IsIDModel = true;
  349. btnAdd.IsEnabled = true;
  350. ModifyRecord.IsEnabled = true;
  351. DeleteRecord.IsEnabled = true;
  352. tbNewRoute.Text = "";
  353. BindLineCombox(cbRoute_WorkLine.Text.Trim());
  354. }
  355. /// <summary>
  356. /// 添加记录
  357. /// </summary>
  358. /// <param name="sender"></param>
  359. /// <param name="e"></param>
  360. private void btnAdd_Click(object sender, RoutedEventArgs e)
  361. {
  362. string strlinenum = cbRoute.Text.ToString().Trim();
  363. string strorder = tbOrder.Text.ToString().Trim();
  364. string strmarkid = tbMarkID.Text.ToString().Trim();
  365. string strdistance = tbDistance.Text.ToString().Trim();
  366. string strmark = tbMark.Text.ToString().Trim();
  367. strrouteworkline = cbRoute_WorkLine.Text.ToString().Trim();
  368. string strworkline = cbWorkLine.Text.ToString().Trim();
  369. string strparallel = comboBox1.Text.ToString().Trim();
  370. string strdirection = comboBox2.Text.ToString().Trim();
  371. if (IsIDModel)
  372. {
  373. if (string.IsNullOrEmpty(strorder) || string.IsNullOrEmpty(strmarkid) || string.IsNullOrEmpty(strdistance)
  374. || string.IsNullOrEmpty(strrouteworkline) || string.IsNullOrEmpty(strlinenum))
  375. {
  376. MessageBox.Show("对不起,请同时输入生产区、线路号、序号、地标ID号和距离!");
  377. return;
  378. }
  379. sql.Open("select * from T_Mark where ID=" + strmarkid);
  380. if (sql.Rows.Count <= 0)
  381. {
  382. MessageBox.Show("输入的地标不存在!");
  383. return;
  384. }
  385. }
  386. else
  387. {
  388. if (string.IsNullOrEmpty(strorder) || string.IsNullOrEmpty(strmark) || string.IsNullOrEmpty(strworkline)
  389. || string.IsNullOrEmpty(strdistance) || string.IsNullOrEmpty(strrouteworkline) || string.IsNullOrEmpty(strlinenum))
  390. {
  391. MessageBox.Show("对不起,请同时输入生产区、线路号、序号、生产区、地标和距离!");
  392. return;
  393. }
  394. sql.Open("select ID from T_Mark where WorkLine=" + strworkline + " and Mark=" + strmark);
  395. if (sql.rowcount < 1)
  396. {
  397. MessageBox.Show("输入的地标不存在!");
  398. return;
  399. }
  400. strmarkid = sql.Rows[0]["ID"].ToString();
  401. }
  402. sql.Open("select * from T_Mark where ID=" + strmarkid + " and WorkLine=" + strrouteworkline);
  403. if (sql.Rows.Count == 0)
  404. {
  405. MessageBox.Show("路线中地标不可以跨生产区输入!");
  406. return;
  407. }
  408. sql.Open("select * from T_Line LEFT OUTER JOIN T_Mark ON T_Line.MarkID = T_Mark.ID where LineNum=" + strlinenum + " and MarkID=" + strmarkid + " and WorkLine=" + strrouteworkline);
  409. //if (sql.Rows.Count > 0)
  410. //{
  411. // MessageBox.Show("路线中已存在此地标,不可重复输入相同地标!");
  412. // return;
  413. //}
  414. sql.Open("SELECT MAX(MarkOrder) AS MaxOrder FROM T_Line LEFT OUTER JOIN T_Mark ON T_Line.MarkID = T_Mark.ID where LineNum=" + strlinenum + " and WorkLine=" + strrouteworkline);
  415. if (sql.Rows.Count > 0)
  416. {
  417. if (!string.IsNullOrEmpty(sql.Rows[0]["MaxOrder"].ToString()))
  418. {
  419. if ((Convert.ToInt32(sql.Rows[0]["MaxOrder"]) + 1) < Convert.ToInt32(strorder))
  420. {
  421. MessageBox.Show("对不起,请按序号的顺序输入线路!");
  422. return;
  423. }
  424. }
  425. }
  426. sql.Open("update T_Line set MarkOrder=MarkOrder+1 from T_Line LEFT OUTER JOIN T_Mark ON T_Line.MarkID = T_Mark.ID where LineNum=" + strlinenum + " and MarkOrder>=" + strorder + " and WorkLine=" + strrouteworkline);
  427. sql.Open("insert into T_Line (LineNum,MarkID,MarkOrder,Distance,Parallel,Direction) Values (@linenum,@markid,@markorder,@distance,@parallel,@direction)",
  428. new SqlParameter[]{
  429. new SqlParameter("linenum",strlinenum),
  430. new SqlParameter("markid",strmarkid),
  431. new SqlParameter("markorder",strorder),
  432. new SqlParameter("distance",strdistance),
  433. new SqlParameter("parallel",strparallel),
  434. new SqlParameter("direction",strdirection)
  435. });
  436. sql.Close();
  437. linenum = Convert.ToInt32(strlinenum);
  438. LoadDataGrid(cbRoute_WorkLine.Text.Trim(),linenum);
  439. BindLineCombox(cbRoute_WorkLine.Text.Trim());
  440. MessageBox.Show("添加成功!");
  441. this.cbRoute.SelectedValue = strlinenum;
  442. this.tbOrder.Text = (Convert.ToInt32(strorder) + 1).ToString();
  443. if (IsIDModel)
  444. {
  445. this.tbMarkID.Text = (Convert.ToInt32(strmarkid) + 1).ToString();
  446. }
  447. else
  448. {
  449. this.tbMark.Text = (Convert.ToInt32(strmark) + 1).ToString();
  450. }
  451. }
  452. /// <summary>
  453. /// 修改记录
  454. /// </summary>
  455. /// <param name="sender"></param>
  456. /// <param name="e"></param>
  457. private void ModifyRecord_Click(object sender, RoutedEventArgs e)
  458. {
  459. if (id <= 0)
  460. {
  461. MessageBox.Show("请在表格中选择要修改的行!");
  462. return;
  463. }
  464. string strlinenum = cbRoute.Text.ToString().Trim();
  465. string strorder = tbOrder.Text.ToString().Trim();
  466. string strmarkid = tbMarkID.Text.ToString().Trim();
  467. string strdistance = tbDistance.Text.ToString().Trim();
  468. string strmark = tbMark.Text.ToString().Trim();
  469. string strworkline = cbWorkLine.Text.ToString().Trim();
  470. strrouteworkline = cbRoute_WorkLine.Text.ToString().Trim();
  471. string strparallel = comboBox1.Text.ToString().Trim();
  472. string strdirection = comboBox2.Text.ToString().Trim();
  473. if (IsIDModel)
  474. {
  475. if (string.IsNullOrEmpty(strlinenum) || string.IsNullOrEmpty(strorder) || string.IsNullOrEmpty(strmark)
  476. || string.IsNullOrEmpty(strworkline) || string.IsNullOrEmpty(strdistance) || string.IsNullOrEmpty(strrouteworkline))
  477. {
  478. MessageBox.Show("对不起,请同时输入线路、序号、地标和距离!");
  479. return;
  480. }
  481. sql.Open("select * from T_Mark where ID=" + strmarkid);
  482. //if (sql.Rows.Count <= 0)
  483. //{
  484. // MessageBox.Show("输入的地标ID不存在!");
  485. // return;
  486. //}
  487. }
  488. else
  489. {
  490. if (string.IsNullOrEmpty(strlinenum) || string.IsNullOrEmpty(strorder)
  491. || string.IsNullOrEmpty(strmarkid) || string.IsNullOrEmpty(strdistance) || string.IsNullOrEmpty(strrouteworkline))
  492. {
  493. MessageBox.Show("对不起,请同时输入线路、序号、生产区、地标和距离!");
  494. return;
  495. }
  496. sql.Open("select ID from T_Mark where WorkLine=" + strworkline + " and Mark=" + strmark);
  497. if (sql.Rows.Count <= 0)
  498. {
  499. MessageBox.Show("输入的地标ID不存在!");
  500. return;
  501. }
  502. strmarkid = sql.Rows[0]["ID"].ToString();
  503. }
  504. sql.Open("select * from T_Line where LineNum=" + linenum.ToString() + " and MarkOrder=" + strorder);
  505. if (sql.Rows.Count == 0)
  506. {
  507. MessageBox.Show("您修改的序号记录不存在!");
  508. return;
  509. }
  510. sql.Open("select * from T_Line LEFT OUTER JOIN T_Mark ON T_Line.MarkID = T_Mark.ID where LineNum="
  511. + linenum.ToString() + " and MarkID=" + strmarkid + " and Distance=" + strdistance + " and WorkLine=" + strrouteworkline);
  512. //if (sql.Rows.Count > 0)
  513. //{
  514. // MessageBox.Show("路线中已存在此地标,不可重复输入相同地标!");
  515. // return;
  516. //}
  517. sql.Open("update T_Line set MarkID=@markid,Distance=@distance,Parallel=@parallel ,Direction=@direction where ID=@id",
  518. new SqlParameter[]{
  519. new SqlParameter("id",id.ToString()),
  520. new SqlParameter("markid",strmarkid),
  521. new SqlParameter("distance",strdistance),
  522. new SqlParameter("parallel",strparallel),
  523. new SqlParameter("direction",strdirection)
  524. });
  525. sql.Close();
  526. LoadDataGrid(cbRoute_WorkLine.Text.Trim(),linenum);
  527. MessageBox.Show("修改成功!");
  528. }
  529. /// <summary>
  530. /// 删除记录
  531. /// </summary>
  532. /// <param name="sender"></param>
  533. /// <param name="e"></param>
  534. private void DeleteRecord_Click(object sender, RoutedEventArgs e)
  535. {
  536. string strlinenum = cbRoute.Text.ToString().Trim();
  537. string strorder = tbOrder.Text.ToString().Trim();
  538. strrouteworkline = cbRoute_WorkLine.Text.ToString().Trim();
  539. if (string.IsNullOrEmpty(strorder) || string.IsNullOrEmpty(strlinenum) || string.IsNullOrEmpty(strrouteworkline))
  540. {
  541. MessageBox.Show("对不起,请同时输入路线和序号!");
  542. return;
  543. }
  544. if (id > 0)
  545. {
  546. sql.Open("select * from T_Line where ID=" + id.ToString());
  547. if (sql.rowcount <= 0)
  548. {
  549. MessageBox.Show("对不起,请从表格中选择要删除的行!");
  550. return;
  551. }
  552. sql.Open("delete from T_Line where ID=" + id.ToString());
  553. sql.Open("update T_Line set MarkOrder=MarkOrder-1 from T_Line LEFT OUTER JOIN T_Mark ON T_Line.MarkID = T_Mark.ID where LineNum="
  554. + strlinenum + " and MarkOrder>" + strorder + " and WorkLine=" + strrouteworkline);
  555. MessageBox.Show("删除成功!");
  556. LoadDataGrid(cbRoute_WorkLine.Text.Trim(), linenum);
  557. sql.Close();
  558. }
  559. }
  560. /// <summary>
  561. /// 线路下拉框消息触发
  562. /// </summary>
  563. /// <param name="sender"></param>
  564. /// <param name="e"></param>
  565. private void cbRoute_SelectionChanged(object sender, SelectionChangedEventArgs e)
  566. {
  567. if (cbRoute.SelectedValue != null)
  568. {
  569. linenum = Convert.ToUInt16(cbRoute.SelectedValue.ToString().Trim());
  570. LoadDataGrid(cbRoute_WorkLine.Text.Trim(), linenum);
  571. }
  572. }
  573. bool MapZoomInOut = false;
  574. Point lastpoint = new Point(0, 0);
  575. Point OffsetPoint = new Point(0, 0);
  576. /// <summary>
  577. /// 画布中鼠标左键消息
  578. /// </summary>
  579. /// <param name="sender"></param>
  580. /// <param name="e"></param>
  581. private void canvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
  582. {
  583. MapZoomInOut = true;
  584. lastpoint.X = e.GetPosition(null).X + OffsetPoint.X;
  585. lastpoint.Y = e.GetPosition(null).Y + OffsetPoint.Y;
  586. this.Cursor = Cursors.Hand;
  587. }
  588. /// <summary>
  589. /// 鼠标移出画布消息
  590. /// </summary>
  591. /// <param name="sender"></param>
  592. /// <param name="e"></param>
  593. private void canvas_MouseLeave(object sender, MouseEventArgs e)
  594. {
  595. MapZoomInOut = false;
  596. }
  597. /// <summary>
  598. /// 鼠标左键弹起消息
  599. /// </summary>
  600. /// <param name="sender"></param>
  601. /// <param name="e"></param>
  602. private void canvas_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
  603. {
  604. if (MapZoomInOut)
  605. {
  606. MapZoomInOut = false;
  607. OffsetPoint = canvas.Offset;
  608. }
  609. }
  610. /// <summary>
  611. /// 鼠标滚轮消息
  612. /// </summary>
  613. /// <param name="sender"></param>
  614. /// <param name="e"></param>
  615. private void canvas_MouseWheel(object sender, MouseWheelEventArgs e)
  616. {
  617. canvas.Scale += e.Delta / 1000.0;
  618. //最大放大十倍
  619. if (canvas.Scale > 10)
  620. {
  621. canvas.Scale = 10;
  622. }
  623. //缩小可以小到3倍
  624. if (canvas.Scale < 0.3)
  625. {
  626. canvas.Scale = 0.3;
  627. }
  628. }
  629. /// <summary>
  630. /// 画布中鼠标移动消息
  631. /// </summary>
  632. /// <param name="sender"></param>
  633. /// <param name="e"></param>
  634. private void canvas_MouseMove(object sender, MouseEventArgs e)
  635. {
  636. if (MapZoomInOut)
  637. {
  638. Point newpoint = e.GetPosition(null);
  639. canvas.Offset = new Point(lastpoint.X - newpoint.X, lastpoint.Y - newpoint.Y);
  640. }
  641. }
  642. //修改日期:2013-12-1
  643. //修改内容:添加了输入地标时的切换功能,地标ID与地标、生产区可以切换输入
  644. private void btn_Shift_Click(object sender, RoutedEventArgs e)
  645. {
  646. IsIDModel = !IsIDModel;
  647. tbMarkID.Visibility = IsIDModel ? Visibility.Visible : Visibility.Hidden;
  648. labelMarkID.Visibility = IsIDModel ? Visibility.Visible : Visibility.Hidden;
  649. tbMark.Visibility = !IsIDModel ? Visibility.Visible : Visibility.Hidden;
  650. labelMark.Visibility = !IsIDModel ? Visibility.Visible : Visibility.Hidden;
  651. cbWorkLine.Visibility = !IsIDModel ? Visibility.Visible : Visibility.Hidden;
  652. labelWorkLine.Visibility = !IsIDModel ? Visibility.Visible : Visibility.Hidden;
  653. }
  654. //修改日期:2013-12-23
  655. //修改内容:复制线路时,添加了返回功能和禁用按钮功能
  656. private void CancelCopy_Click(object sender, RoutedEventArgs e)
  657. {
  658. this.tbOrder.Visibility = Visibility.Visible;
  659. this.tbMarkID.Visibility = Visibility.Visible;
  660. this.tbDistance.Visibility = Visibility.Visible;
  661. this.labelOrder.Visibility = Visibility.Visible;
  662. this.labelDistance.Visibility = Visibility.Visible;
  663. this.labelMarkID.Visibility = Visibility.Visible;
  664. this.btn_Shift.Visibility = Visibility.Visible;
  665. this.labelNewRoute.Visibility = Visibility.Hidden;
  666. this.tbNewRoute.Visibility = Visibility.Hidden;
  667. this.CancelCopy.Visibility = Visibility.Hidden;
  668. btnAdd.IsEnabled = true;
  669. ModifyRecord.IsEnabled = true;
  670. DeleteRecord.IsEnabled = true;
  671. tbNewRoute.Text = "";
  672. }
  673. //修改日期:2013-12-30
  674. //添加内容:线路号按照生产区划分
  675. private void cbRoute_WorkLine_SelectionChanged(object sender, SelectionChangedEventArgs e)
  676. {
  677. if (cbRoute_WorkLine.SelectedValue != null)
  678. {
  679. BindLineCombox(cbRoute_WorkLine.SelectedValue.ToString().Trim());
  680. }
  681. }
  682. /// <summary>
  683. /// 页面卸载消息
  684. /// </summary>
  685. /// <param name="sender"></param>
  686. /// <param name="e"></param>
  687. private void Page_Unloaded(object sender, RoutedEventArgs e)
  688. {
  689. Properties.Settings.Default.MarkVirtualColor = IsVirtualMark.Color;
  690. Properties.Settings.Default.MarkNotColor = NotVirtualMark.Color;
  691. Properties.Settings.Default.MarkDiameter = MarkDiameter;
  692. Properties.Settings.Default.RouteColor = RouteColor.Color;
  693. Properties.Settings.Default.Save();
  694. }
  695. /// <summary>
  696. /// 虚拟点颜色设置
  697. /// </summary>
  698. /// <param name="sender"></param>
  699. /// <param name="e"></param>
  700. private void EVirtualMark_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
  701. {
  702. ColorFont.ColorDialog fntDialog = new ColorFont.ColorDialog(IsVirtualMark, MarkDiameter);
  703. if (fntDialog.ShowDialog() == true)
  704. {
  705. IsVirtualMark = fntDialog.selectedColor;
  706. MarkDiameter = fntDialog.selectedSize;
  707. EVirtualMark.Fill = fntDialog.selectedColor;
  708. LoadAllMark();
  709. }
  710. }
  711. /// <summary>
  712. /// 非虚拟点颜色设置
  713. /// </summary>
  714. /// <param name="sender"></param>
  715. /// <param name="e"></param>
  716. private void ENotVirtualMark_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
  717. {
  718. ColorFont.ColorDialog fntDialog = new ColorFont.ColorDialog(NotVirtualMark, MarkDiameter);
  719. if (fntDialog.ShowDialog() == true)
  720. {
  721. NotVirtualMark = fntDialog.selectedColor;
  722. MarkDiameter = fntDialog.selectedSize;
  723. ENotVirtualMark.Fill = fntDialog.selectedColor;
  724. LoadAllMark();
  725. }
  726. }
  727. /// <summary>
  728. /// 线路颜色设置
  729. /// </summary>
  730. /// <param name="sender"></param>
  731. /// <param name="e"></param>
  732. private void RecRoute_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
  733. {
  734. ColorFont.ColorDialog fntDialog = new ColorFont.ColorDialog(RouteColor, MarkDiameter);
  735. if (fntDialog.ShowDialog() == true)
  736. {
  737. RouteColor = fntDialog.selectedColor;
  738. RecRoute.Fill = fntDialog.selectedColor;
  739. path.Stroke = RouteColor;
  740. LoadDataGrid(cbRoute_WorkLine.Text.Trim(), linenum);
  741. }
  742. }
  743. }
  744. }