配置存取逻辑完成, 测试逻辑优化, 添加测试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 anyhow::Result;
|
||||||
use crate::models::config_model::ConfigModel;
|
use crate::models::config_model::ConfigModel;
|
||||||
|
|
||||||
pub(crate) struct ConfigService;
|
pub(crate) struct ConfigService;
|
||||||
|
|
||||||
impl ConfigService {
|
impl ConfigService {
|
||||||
pub fn save_config(model: ConfigModel) -> Result<()> {
|
pub fn save_config(model: ConfigModel) ->Result<()> {
|
||||||
todo!()
|
let json = serde_json::to_string(&model)?;
|
||||||
|
fs::write("config.json", json)?;
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn load_config() -> Result<ConfigModel> {
|
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::cell::RefCell;
|
||||||
|
use std::process;
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
use std::sync::{Arc, Mutex};
|
use std::sync::{Arc, Mutex};
|
||||||
use fltk::prelude::{DisplayExt, InputExt, WidgetBase, WidgetExt};
|
use fltk::prelude::{DisplayExt, InputExt, WidgetBase, WidgetExt};
|
||||||
@ -17,8 +18,36 @@ pub(crate) struct UiService {
|
|||||||
|
|
||||||
impl UiService {
|
impl UiService {
|
||||||
pub(crate) fn new() -> Self {
|
pub(crate) fn new() -> Self {
|
||||||
|
// Create the Rc<RefCell<>> instances
|
||||||
let ui = Rc::new(RefCell::new(main_ui::UserInterface::make_window()));
|
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) {
|
pub(crate) fn init_components(&mut self) {
|
||||||
@ -26,14 +55,17 @@ impl UiService {
|
|||||||
self.init_start_btn();
|
self.init_start_btn();
|
||||||
self.init_set_line_btn();
|
self.init_set_line_btn();
|
||||||
self.init_log();
|
self.init_log();
|
||||||
|
self.init_exit_callback()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn init_exit_callback(&mut self){
|
fn init_exit_callback(&mut self){
|
||||||
let ui_rc = Rc::clone(&self.ui);
|
let ui_rc = Rc::clone(&self.ui);
|
||||||
|
let ui_rc_clone = Rc::clone(&ui_rc);
|
||||||
let work_service_rc = Rc::clone(&self.work_service);
|
let work_service_rc = Rc::clone(&self.work_service);
|
||||||
ui_rc.borrow_mut().main_window.set_callback(move |_|{
|
ui_rc.borrow_mut().main_window.set_callback(move |_|{
|
||||||
let mut work_service = work_service_rc.borrow_mut();
|
let mut work_service = work_service_rc.borrow_mut();
|
||||||
work_service.save_config();
|
work_service.save_config();
|
||||||
|
process::exit(0);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -123,8 +155,10 @@ impl UiService {
|
|||||||
dialog.show();
|
dialog.show();
|
||||||
let binding = dialog.filename();
|
let binding = dialog.filename();
|
||||||
let path = binding.to_str().unwrap();
|
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();
|
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.excel_file_textbox.set_value(path);
|
||||||
ui.current_line_textbox.set_value(current_line);
|
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> {
|
pub fn write_and_check(&mut self, model: WorkModel) -> Result<bool, String> {
|
||||||
let msg = &format!("{}:{}:{}", model.imei, model.sn, model.line_number);
|
let msg = &format!("{}:{}:{}", model.imei, model.sn, model.line_number);
|
||||||
log::info!("Write Start");
|
log::info!("Write Start");
|
||||||
log::info!("Check Imei From DB");
|
|
||||||
match self.sqlite_service.check_imei_has_insert(&model.imei) {
|
match self.sqlite_service.check_imei_has_insert(&model.imei) {
|
||||||
Ok(true) => {
|
Ok(true) => {
|
||||||
log::error!("Imei Exist");
|
log::error!("Imei Exist: {}", model.imei);
|
||||||
self.serial_service = None;
|
self.serial_service = None;
|
||||||
return Err("Imei Exist".to_string());
|
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()) {
|
if let Err(msg) = self.write_imei(model.imei.clone()) {
|
||||||
log::error!("Write Imei Error:{}", msg);
|
log::error!("Write Imei Error:{}", msg);
|
||||||
@ -63,6 +70,7 @@ impl WorkService {
|
|||||||
log::error!("Write Sn Error:{}", msg);
|
log::error!("Write Sn Error:{}", msg);
|
||||||
return Err(msg);
|
return Err(msg);
|
||||||
}
|
}
|
||||||
|
log::info!("Write Imei:{}", model.sn);
|
||||||
log::info!("Write End");
|
log::info!("Write End");
|
||||||
log::info!("Check Start");
|
log::info!("Check Start");
|
||||||
if let Err(msg) = self.check_imei(&model.imei) {
|
if let Err(msg) = self.check_imei(&model.imei) {
|
||||||
@ -74,6 +82,7 @@ impl WorkService {
|
|||||||
log::error!("Check Sn Error:{}", msg);
|
log::error!("Check Sn Error:{}", msg);
|
||||||
return Err(msg);
|
return Err(msg);
|
||||||
}
|
}
|
||||||
|
log::info!("Check Sn:{}", model.sn);
|
||||||
log::info!("Check End");
|
log::info!("Check End");
|
||||||
self.serial_service = None;
|
self.serial_service = None;
|
||||||
match self.sqlite_service.insert(model) {
|
match self.sqlite_service.insert(model) {
|
||||||
|
Loading…
Reference in New Issue
Block a user