From 446bd04a9d4bd62f9812e0339d1af4ab2c283571 Mon Sep 17 00:00:00 2001 From: "jinling.yang" Date: Thu, 23 Mar 2023 18:18:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=90=8C=E6=AD=A5mrs?= =?UTF-8?q?=E7=9A=84=E8=A1=A8=E9=9D=A2=E5=B7=A5=E8=89=BA=E7=B1=BB=E5=88=AB?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_base/models/common.py | 12 +++ sf_base/views/common_view.xml | 88 +++++++++++++++------ sf_base/views/menu_view.xml | 7 ++ sf_dlm/__manifest__.py | 2 +- sf_dlm/views/product_template_view.xml | 2 +- sf_manufacturing/models/tray.py | 2 +- sf_mrs_connect/data/ir_cron_data.xml | 22 +++--- sf_mrs_connect/models/res_config_setting.py | 2 + sf_mrs_connect/models/sync_common.py | 77 ++++++++++++++++-- 9 files changed, 170 insertions(+), 44 deletions(-) diff --git a/sf_base/models/common.py b/sf_base/models/common.py index 01b66a4d..32c4b245 100644 --- a/sf_base/models/common.py +++ b/sf_base/models/common.py @@ -38,6 +38,17 @@ class MrsMaterialModel(models.Model): active = fields.Boolean('有效', default=True) +class MrsProductionProcessCategory(models.Model): + _name = 'sf.production.process.category' + _description = '表面工艺类别' + order = 'id desc' + + name = fields.Char('名称') + code = fields.Char("编码") + production_process_ids = fields.One2many('sf.production.process', 'category_id', string="表面工艺") + active = fields.Boolean('有效', default=True) + + # 工艺 编码,名称,备注 class MrsProductionProcess(models.Model): _name = 'sf.production.process' @@ -51,6 +62,7 @@ class MrsProductionProcess(models.Model): active = fields.Boolean('有效', default=True) parameter_ids = fields.One2many('sf.production.process.parameter', 'process_id', string='可选参数') gain_way = fields.Selection([("自加工", "自加工"), ("外协", "外协")], default="", string="获取方式") + category_id = fields.Many2one('sf.production.process.category') class MrsProcessingTechnology(models.Model): diff --git a/sf_base/views/common_view.xml b/sf_base/views/common_view.xml index 1f5e2907..d89acc71 100644 --- a/sf_base/views/common_view.xml +++ b/sf_base/views/common_view.xml @@ -39,6 +39,59 @@ + + + + sf.production.process.category + +
+ + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + sf.production.process.category + + + + + + + + + + search.sf.production.process.category + sf.production.process.category + + + + + + + + sf.production.process @@ -95,8 +148,6 @@ - - @@ -231,26 +282,6 @@ - - - - - - - - - - - - - - - - - - - - 材料 ir.actions.act_window @@ -290,13 +321,24 @@ sf.processing.technology tree,form -

加工工艺!

+ + 表面工艺类别 + ir.actions.act_window + sf.production.process.category + tree,form + +

+ 表面工艺类别! +

+
+
+ #------------------托盘------------------ 托盘 diff --git a/sf_base/views/menu_view.xml b/sf_base/views/menu_view.xml index 3b329ccb..620712ac 100644 --- a/sf_base/views/menu_view.xml +++ b/sf_base/views/menu_view.xml @@ -63,6 +63,13 @@ action="sf_production_process" /> + mrp.bom.form.inherit.sf mrp.bom - + - - - - - - - - - - + + 同步表面工艺类别 + + code + model.sync_production_process_category() + 1 + days + -1 + + 同步资源库机床型号 @@ -132,7 +132,7 @@ - + 同步表面工艺可选参数 code diff --git a/sf_mrs_connect/models/res_config_setting.py b/sf_mrs_connect/models/res_config_setting.py index 9a61ce8d..856b3c83 100644 --- a/sf_mrs_connect/models/res_config_setting.py +++ b/sf_mrs_connect/models/res_config_setting.py @@ -26,6 +26,8 @@ class ResConfigSettings(models.TransientModel): _logger.info("同步资源库材料型号") self.env['sf.production.process'].sync_all_production_process() _logger.info("同步资源库表面工艺") + self.env['sf.production.process.category'].sync_all_production_process_category() + _logger.info("同步资源库表面工艺类别") self.env['sf.processing.technology'].sync_all_processing_technology() _logger.info("同步资源库加工工艺") self.env['sf.machine.brand.tags'].sync_all_machine_brand_tags() diff --git a/sf_mrs_connect/models/sync_common.py b/sf_mrs_connect/models/sync_common.py index 6cdd98ba..c4da9926 100644 --- a/sf_mrs_connect/models/sync_common.py +++ b/sf_mrs_connect/models/sync_common.py @@ -6,6 +6,7 @@ from odoo import models from odoo.exceptions import ValidationError import logging from odoo.addons.sf_base.commons.common import Common + _logger = logging.getLogger(__name__) @@ -162,6 +163,66 @@ class sfMaterialModel(models.Model): raise ValidationError("认证未通过") +class sfProductionProcessCategory(models.Model): + _inherit = 'sf.production.process.category' + _description = '表面工艺类别' + url = '/api/production_process_category/list' + + # 定时同步每日表面工艺类别 + def sync_production_process_category(self): + sf_sync_config = self.env['res.config.settings'].get_values() + token = sf_sync_config['token'] + sf_secret_key = sf_sync_config['sf_secret_key'] + headers = Common.get_headers(self, token, sf_secret_key) + + strUrl = sf_sync_config['sf_url'] + self.url + r = requests.post(strUrl, json={}, data=None, headers=headers) + r = r.json() + result = json.loads(r['result']) + if result['status'] == 1: + for item in result['production_process_category_yesterday_list']: + if item: + production_process_category = self.env['sf.production.process.category'].search( + [("code", '=', item['code'])]) + if production_process_category: + production_process_category.name = item['name'], + production_process_category.code = item['code'], + production_process_category.active = item['active'] + else: + self.env['sf.production.process.category'].create({ + "name": item['name'], + "code": item['code'], + "active": item['active'], + }) + else: + raise ValidationError("认证未通过") # 定时同步表面工艺 + + # 同步所有表面工艺类别 + def sync_all_production_process_category(self): + sf_sync_config = self.env['res.config.settings'].get_values() + token = sf_sync_config['token'] + sf_secret_key = sf_sync_config['sf_secret_key'] + headers = Common.get_headers(self, token, sf_secret_key) + + strUrl = sf_sync_config['sf_url'] + self.url + r = requests.post(strUrl, json={}, data=None, headers=headers) + r = r.json() + result = json.loads(r['result']) + if result['status'] == 1: + for item in result['production_process_category_all_list']: + if item: + category = self.env['sf.production.process.category'].search( + [("process_encode", '=', item['process_encode'])]) + if not category: + self.env['sf.production.process.category'].create({ + "name": item['name'], + "code": item['code'], + "active": item['active'], + }) + else: + raise ValidationError("认证未通过") + + class sfProductionProcess(models.Model): _inherit = 'sf.production.process' _description = '表面工艺' @@ -184,21 +245,21 @@ class sfProductionProcess(models.Model): brand = self.env['sf.production.process'].search( [("process_encode", '=', item['process_encode'])]) if brand: - brand.id = item['id'], brand.name = item['name'], + brand.category_id = self.env['sf.production.process.category'].search( + [("code", '=', item['category_code'])]).id, brand.process_encode = item['process_encode'], brand.remark = item['remark'], brand.active = item['active'], brand.remark = item['remark'] else: self.env['sf.production.process'].create({ - "id": item['id'], "name": item['name'], + "category_id": self.env['sf.production.process.category'].search( + [("code", '=', item['category_code'])]).id, "process_encode": item['process_encode'], "remark": item['remark'], "active": item['active'], - # "tag_ids": item['tag_ids'] - }) else: raise ValidationError("认证未通过") # 定时同步表面工艺 @@ -221,8 +282,9 @@ class sfProductionProcess(models.Model): [("process_encode", '=', item['process_encode'])]) if not brand: self.env['sf.production.process'].create({ - "id": item['id'], "name": item['name'], + "category_id": self.env['sf.production.process.category'].search( + [("code", '=', item['category_code'])]).id, "process_encode": item['process_encode'], "remark": item['remark'], "active": item['active'], @@ -949,6 +1011,7 @@ class sfProcessingOrder(models.Model): else: raise ValidationError("认证未通过") + class sfProductionProcessParameter(models.Model): _inherit = 'sf.production.process.parameter' _description = '表面工艺可选参数' @@ -980,7 +1043,7 @@ class sfProductionProcessParameter(models.Model): "name": item['name'], "code": item['code'], "active": item['active'], - "price" : item['price'], + "price": item['price'], "process_id": self.env['sf.production.process'].search( [('process_encode', '=', item['process_id_code'])]).id, 'materials_model_ids': self.env['sf.materials.model'].search( @@ -1019,4 +1082,4 @@ class sfProductionProcessParameter(models.Model): }) else: - raise ValidationError("认证未通过") \ No newline at end of file + raise ValidationError("认证未通过")