提交 bda2e6df authored 作者: 贺阳's avatar 贺阳

尾程匹配托盘的优化

上级 7b89420b
......@@ -721,16 +721,16 @@ class OrderController(http.Controller):
# 3. 预加载托盘数据(如果需要)
pallet_data = {}
if is_pallet:
# 先匹配所有服务商,获取ID列表
# 使用已构建的provider_index匹配服务商,获取ID列表
provider_ids = set()
for pkg in big_packages:
if not pkg.next_provider_name:
continue
for provider in all_providers:
if provider.match_provider(pkg.next_provider_name, all_providers):
provider_ids.add(provider.id)
break
provider_key = pkg.next_provider_name.lower().strip()
provider = provider_index.get(provider_key)
if provider:
provider_ids.add(provider.id)
# 批量查询托盘数据
if provider_ids:
pallet_domain = [('express_company_id', 'in', list(provider_ids))]
......@@ -738,7 +738,7 @@ class OrderController(http.Controller):
pallet_domain.append(('usage_state', '=', 'unused'))
else:
pallet_domain.append(('usage_state', '=', 'used'))
pallets = request.env['cc.pallet'].sudo().search(pallet_domain)
for pallet in pallets:
if pallet.express_company_id.id not in pallet_data:
......@@ -750,13 +750,13 @@ class OrderController(http.Controller):
for pkg in big_packages:
if not pkg.next_provider_name:
continue
next_provider_name=pkg.next_provider_name.lower().strip()
# 使用缓存的匹配结果
if pkg.next_provider_name not in provider_map:
provider = provider_index.get(pkg.next_provider_name.lower().strip())
provider_map[pkg.next_provider_name] = provider
if next_provider_name not in provider_map:
provider = provider_index.get(next_provider_name)
provider_map[next_provider_name] = provider
provider = provider_map[pkg.next_provider_name]
provider = provider_map[next_provider_name]
if not provider:
continue
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论