diff --git a/src/main.rs b/src/main.rs index d900481..2ce2593 100644 --- a/src/main.rs +++ b/src/main.rs @@ -269,17 +269,28 @@ impl MainWindow { let label = self.label.clone(); let download_type: DownloadType = self.selection.unwrap(); let online = self.is_online.clone(); + if label == ""{ + add_log("请输入Label".to_string()); + return; + } std::thread::spawn(move || { let mut download_wrapper = download_wrapper::DownloadWrapper::new(); let mut mes_service: MesService; if online { add_log("当前为在线模式, 正在连接数据库".to_string()); - mes_service = MesService::new(mes_config.ip.clone(), mes_config.port.clone(), mes_config.username.clone(), mes_config.password.clone(), mes_config.database.clone()); + match MesService::new(mes_config.ip.clone(), mes_config.port.clone(), mes_config.username.clone(), mes_config.password.clone(), mes_config.database.clone()){ + Ok(service) => mes_service = service, + Err(e) =>{ + add_log(format!("连接数据库失败: {:?}", e.to_string())); + sender.send(Message::DownloadEnd(false)).unwrap(); + return; + } + } add_log("连接成功".to_string()); add_log("正在过站检测".to_string()); let check_result = mes_service.check_station(mes_config.work_order.clone(), label.clone(), download_type); if let Err(res) = check_result { - add_log(format!("过站检测失败: {:?}", res)); + add_log(format!("过站检测失败: {:?}", res.to_string())); sender.send(Message::DownloadEnd(false)).unwrap(); return; } else if let Ok(res) = check_result { @@ -343,11 +354,17 @@ impl MainWindow { } return if online { - mes_service = MesService::new(mes_config.ip, mes_config.port, mes_config.username, mes_config.password, mes_config.database); - add_log("正在上传数据".to_string()); + match MesService::new(mes_config.ip.clone(), mes_config.port.clone(), mes_config.username.clone(), mes_config.password.clone(), mes_config.database.clone()){ + Ok(service) => mes_service = service, + Err(e) =>{ + add_log(format!("连接数据库失败: {:?}", e.to_string())); + sender.send(Message::DownloadEnd(false)).unwrap(); + return; + } + } add_log("正在上传数据".to_string()); let update_result = mes_service.update_station(mes_config.work_order, label, download_type); if let Err(e) = update_result { - add_log(format!("上传失败: {:?}", e)); + add_log(format!("上传失败: {:?}", e.to_string())); sender.send(Message::DownloadEnd(false)).unwrap(); return; diff --git a/src/mes_service.rs b/src/mes_service.rs index 8985501..5be0822 100644 --- a/src/mes_service.rs +++ b/src/mes_service.rs @@ -7,13 +7,13 @@ pub(crate) struct MesService { } impl MesService { - pub fn new(ip: String, port: String, username: String, password: String, database: String) -> Self { + pub fn new(ip: String, port: String, username: String, password: String, database: String) -> Result { let url = format!( "mysql://{}:{}@{}:{}/{}", username, password, ip, port, database ); - let pool = mysql::Pool::new(url.as_str()).unwrap(); - Self { pool } + let pool = mysql::Pool::new(url.as_str())?; + Ok(Self { pool }) } pub fn get_work_orders(&self) -> Result, Error> {