配置存取逻辑完成, 测试逻辑优化, 添加测试excel

This commit is contained in:
JIe Jie 2024-07-09 16:36:36 +08:00
parent e059757766
commit 3ce29dcd2b
4 changed files with 57 additions and 8 deletions

BIN
IMEI_SN_INDEX.xlsx Normal file

Binary file not shown.

View File

@ -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)
}
}

View File

@ -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);
});

View File

@ -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) {