配置存取逻辑完成, 测试逻辑优化, 添加测试excel
This commit is contained in:
parent
e059757766
commit
3ce29dcd2b
BIN
IMEI_SN_INDEX.xlsx
Normal file
BIN
IMEI_SN_INDEX.xlsx
Normal file
Binary file not shown.
@ -1,13 +1,19 @@
|
||||
use std::fs;
|
||||
use anyhow::Result;
|
||||
use crate::models::config_model::ConfigModel;
|
||||
|
||||
pub(crate) struct ConfigService;
|
||||
|
||||
impl ConfigService {
|
||||
pub fn save_config(model: ConfigModel) -> Result<()> {
|
||||
todo!()
|
||||
pub fn save_config(model: ConfigModel) ->Result<()> {
|
||||
let json = serde_json::to_string(&model)?;
|
||||
fs::write("config.json", json)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn load_config() -> Result<ConfigModel> {
|
||||
todo!()
|
||||
let json = fs::read_to_string("config.json")?;
|
||||
let model: ConfigModel = serde_json::from_str(&json)?;
|
||||
Ok(model)
|
||||
}
|
||||
}
|
@ -1,4 +1,5 @@
|
||||
use std::cell::RefCell;
|
||||
use std::process;
|
||||
use std::rc::Rc;
|
||||
use std::sync::{Arc, Mutex};
|
||||
use fltk::prelude::{DisplayExt, InputExt, WidgetBase, WidgetExt};
|
||||
@ -17,8 +18,36 @@ pub(crate) struct UiService {
|
||||
|
||||
impl UiService {
|
||||
pub(crate) fn new() -> Self {
|
||||
// Create the Rc<RefCell<>> instances
|
||||
let ui = Rc::new(RefCell::new(main_ui::UserInterface::make_window()));
|
||||
UiService { ui, work_service: Rc::new(RefCell::new(WorkService::new())), current_com: "".to_string() }
|
||||
let work_service_rc = Rc::new(RefCell::new(WorkService::new()));
|
||||
|
||||
// Clone the Rc<RefCell<>> to avoid moving them
|
||||
let work_service_clone = Rc::clone(&work_service_rc);
|
||||
let current_com;
|
||||
let should_current_line;
|
||||
|
||||
{
|
||||
let mut work_service = work_service_clone.borrow_mut();
|
||||
current_com = work_service.config_model.last_com.clone();
|
||||
should_current_line = work_service.config_model.current_line;
|
||||
}
|
||||
|
||||
if work_service_rc.borrow().config_model.excel_path != "" {
|
||||
ui.borrow_mut().excel_file_textbox.set_value(&work_service_rc.borrow().config_model.excel_path);
|
||||
ui.borrow_mut().current_line_textbox.set_value(&work_service_rc.borrow().config_model.current_line.to_string());
|
||||
ui.borrow_mut().com_textbox.set_value(&*current_com.clone());
|
||||
|
||||
work_service_rc.borrow_mut().excel_service.as_mut().unwrap().set_current_line(should_current_line).unwrap();
|
||||
}
|
||||
|
||||
let ui_service = UiService {
|
||||
ui,
|
||||
work_service: work_service_rc,
|
||||
current_com
|
||||
};
|
||||
|
||||
ui_service
|
||||
}
|
||||
|
||||
pub(crate) fn init_components(&mut self) {
|
||||
@ -26,14 +55,17 @@ impl UiService {
|
||||
self.init_start_btn();
|
||||
self.init_set_line_btn();
|
||||
self.init_log();
|
||||
self.init_exit_callback()
|
||||
}
|
||||
|
||||
fn init_exit_callback(&mut self){
|
||||
let ui_rc = Rc::clone(&self.ui);
|
||||
let ui_rc_clone = Rc::clone(&ui_rc);
|
||||
let work_service_rc = Rc::clone(&self.work_service);
|
||||
ui_rc.borrow_mut().main_window.set_callback(move |_|{
|
||||
let mut work_service = work_service_rc.borrow_mut();
|
||||
work_service.save_config();
|
||||
process::exit(0);
|
||||
});
|
||||
}
|
||||
|
||||
@ -123,8 +155,10 @@ impl UiService {
|
||||
dialog.show();
|
||||
let binding = dialog.filename();
|
||||
let path = binding.to_str().unwrap();
|
||||
let current_line = &work_service.get_current_line().to_string();
|
||||
work_service.init_excel_service(path.to_string()).unwrap();
|
||||
let current_line = &work_service.get_current_line().to_string();
|
||||
work_service.config_model.excel_path = path.to_string();
|
||||
work_service.config_model.current_line = current_line.parse::<usize>().unwrap();
|
||||
ui.excel_file_textbox.set_value(path);
|
||||
ui.current_line_textbox.set_value(current_line);
|
||||
});
|
||||
|
@ -45,14 +45,21 @@ impl WorkService {
|
||||
pub fn write_and_check(&mut self, model: WorkModel) -> Result<bool, String> {
|
||||
let msg = &format!("{}:{}:{}", model.imei, model.sn, model.line_number);
|
||||
log::info!("Write Start");
|
||||
log::info!("Check Imei From DB");
|
||||
match self.sqlite_service.check_imei_has_insert(&model.imei) {
|
||||
Ok(true) => {
|
||||
log::error!("Imei Exist");
|
||||
log::error!("Imei Exist: {}", model.imei);
|
||||
self.serial_service = None;
|
||||
return Err("Imei Exist".to_string());
|
||||
}
|
||||
_ => {}
|
||||
_ => {log::info!("Check Imei From Db Pass")}
|
||||
}
|
||||
match self.sqlite_service.check_sn_has_insert(&model.sn) {
|
||||
Ok(true) => {
|
||||
log::error!("Imei Exist: {}", model.sn);
|
||||
self.serial_service = None;
|
||||
return Err("Imei Exist".to_string());
|
||||
}
|
||||
_ => {log::info!("Check Sn From Db Pass")}
|
||||
}
|
||||
if let Err(msg) = self.write_imei(model.imei.clone()) {
|
||||
log::error!("Write Imei Error:{}", msg);
|
||||
@ -63,6 +70,7 @@ impl WorkService {
|
||||
log::error!("Write Sn Error:{}", msg);
|
||||
return Err(msg);
|
||||
}
|
||||
log::info!("Write Imei:{}", model.sn);
|
||||
log::info!("Write End");
|
||||
log::info!("Check Start");
|
||||
if let Err(msg) = self.check_imei(&model.imei) {
|
||||
@ -74,6 +82,7 @@ impl WorkService {
|
||||
log::error!("Check Sn Error:{}", msg);
|
||||
return Err(msg);
|
||||
}
|
||||
log::info!("Check Sn:{}", model.sn);
|
||||
log::info!("Check End");
|
||||
self.serial_service = None;
|
||||
match self.sqlite_service.insert(model) {
|
||||
|
Loading…
Reference in New Issue
Block a user