From 885064fb12b566e4d9a8d84af128bf5178a81d64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=83=A1=E5=B0=A7?= Date: Thu, 26 Jun 2025 09:29:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B2=A1=E6=9C=89model=5Fid=E7=9A=84=E5=88=B6?= =?UTF-8?q?=E9=80=A0=E8=AE=A2=E5=8D=95=E4=B8=8D=E8=AF=B7=E6=B1=82=E7=BC=96?= =?UTF-8?q?=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_mrs_connect/models/mrp_production.py | 33 ++++++++++++++++--------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/sf_mrs_connect/models/mrp_production.py b/sf_mrs_connect/models/mrp_production.py index ec740abd..9da2f7aa 100644 --- a/sf_mrs_connect/models/mrp_production.py +++ b/sf_mrs_connect/models/mrp_production.py @@ -18,25 +18,34 @@ class MrpProduction(models.Model): 生成编程单 """ productions = super().create(vals_list) + # 定义变量存储编程单 grouped_product_programming_no = {} # 定义产品拼接成的制造订单名称 grouped_product_production_name = {} - # 查出所有的制造订单,为了适配通过补货生成的制造订单 - all_productions = self.env['mrp.production'].search([('origin', '=', productions[0].origin)]) - # 将不同产品的制造订单进行分组 - grouped_product_productions = {k: list(g) for k, g in groupby(all_productions, key=lambda x: x.product_id.id)} - for product_id, grouped_productions in grouped_product_productions.items(): - # 产品对应的编程单号 - if product_id not in grouped_product_programming_no: - # 使用列表推导式获取非空的programming_no - programming_nos = [p.programming_no for p in grouped_productions if p.programming_no if p.programming_no is not False] - if programming_nos: - grouped_product_programming_no[product_id] = programming_nos[0] - grouped_product_production_name[product_id] = ','.join(list(map(lambda p:p.name, grouped_productions))) + if productions and productions[0].origin: + # 查出所有的制造订单,为了适配通过补货生成的制造订单 + all_productions = self.env['mrp.production'].search([('origin', '=', productions[0].origin)]) + # 将不同产品的制造订单进行分组 + grouped_product_productions = {k: list(g) for k, g in groupby(all_productions, key=lambda x: x.product_id.id)} + + for product_id, grouped_productions in grouped_product_productions.items(): + # 产品对应的编程单号 + if product_id not in grouped_product_programming_no: + # 使用列表推导式获取非空的programming_no + programming_nos = [p.programming_no for p in grouped_productions if p.programming_no if p.programming_no is not False] + if programming_nos: + grouped_product_programming_no[product_id] = programming_nos[0] + grouped_product_production_name[product_id] = ','.join(list(map(lambda p:p.name, grouped_productions))) # 同一个产品的制造订单只请求一次CNC编程 for production in productions: + # 如果是委外产生的制造订单,则不请求编程 + if production.subcontractor_id: + continue + # 没有模型ID的制造订单不请求编程 + if not production.model_id: + continue if not production.programming_no and production.production_type in ['自动化产线加工','人工线下加工']: if production.product_id.id not in grouped_product_programming_no: production.fetchCNC(grouped_product_production_name[production.product_id.id])