add recipe product code also search sub menu, add recipe sharding.
This commit is contained in:
parent
2761cf1676
commit
08bb0899a3
3 changed files with 279 additions and 39 deletions
|
|
@ -106,16 +106,38 @@ impl Recipe {
|
|||
///
|
||||
/// an `Option` type, specifically `Option<&Recipe01>`.
|
||||
pub fn search_pd(&self, product_code: String) -> Option<&Recipe01> {
|
||||
self.Recipe01
|
||||
.iter()
|
||||
.find(|&r| r.productCode == product_code)
|
||||
self.Recipe01.iter().find(|&r| {
|
||||
if r.SubMenu.is_none() {
|
||||
r.productCode == product_code
|
||||
} else {
|
||||
r.SubMenu
|
||||
.as_ref()
|
||||
.unwrap()
|
||||
.iter()
|
||||
.filter(|x| x.productCode == product_code)
|
||||
.count()
|
||||
> 0
|
||||
|| r.productCode == product_code
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/// Similar to `search_pd` but ignoring exacted matching.
|
||||
pub fn search_pd_by_no_country_code(&self, product_code: String) -> Option<&Recipe01> {
|
||||
self.Recipe01
|
||||
.iter()
|
||||
.find(|&r| r.productCode.contains(&product_code))
|
||||
self.Recipe01.iter().find(|&r| {
|
||||
if r.SubMenu.is_none() {
|
||||
r.productCode.contains(&product_code)
|
||||
} else {
|
||||
r.SubMenu
|
||||
.as_ref()
|
||||
.unwrap()
|
||||
.iter()
|
||||
.filter(|x| x.productCode.contains(&product_code))
|
||||
.count()
|
||||
> 0
|
||||
|| r.productCode.contains(&product_code)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/// Mulitple product code searching with parallel and no exact matching.
|
||||
|
|
@ -126,7 +148,20 @@ impl Recipe {
|
|||
.map(|pd| {
|
||||
self.Recipe01
|
||||
.par_iter()
|
||||
.find_any(|x| x.productCode.contains(pd))
|
||||
.find_any(|x| {
|
||||
if x.SubMenu.is_none() {
|
||||
x.productCode.contains(pd)
|
||||
} else {
|
||||
x.SubMenu
|
||||
.clone()
|
||||
.unwrap()
|
||||
.iter()
|
||||
.filter(|x2| x2.productCode.contains(pd))
|
||||
.count()
|
||||
> 0
|
||||
|| x.productCode.contains(pd)
|
||||
}
|
||||
})
|
||||
.cloned()
|
||||
})
|
||||
.collect_into_vec(&mut found);
|
||||
|
|
@ -138,7 +173,20 @@ impl Recipe {
|
|||
pub fn get_pd_index(&self, product_code: String) -> usize {
|
||||
self.Recipe01
|
||||
.iter()
|
||||
.position(|r| r.productCode == product_code)
|
||||
.position(|r| {
|
||||
if r.SubMenu.is_none() {
|
||||
r.productCode == product_code
|
||||
} else {
|
||||
r.SubMenu
|
||||
.clone()
|
||||
.unwrap()
|
||||
.iter()
|
||||
.filter(|x2| x2.productCode == product_code)
|
||||
.count()
|
||||
> 0
|
||||
|| r.productCode == product_code
|
||||
}
|
||||
})
|
||||
.unwrap()
|
||||
}
|
||||
|
||||
|
|
@ -1508,6 +1556,10 @@ impl RecipeList {
|
|||
|
||||
diff_list
|
||||
}
|
||||
|
||||
pub fn to_map(&self) -> serde_json::Value {
|
||||
serde_json::to_value(self).unwrap()
|
||||
}
|
||||
}
|
||||
|
||||
/// The above code defines a Rust struct called MaterialSetting with various fields representing
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue