diff --git a/sf_base/__manifest__.py b/sf_base/__manifest__.py index 21f4d41d..2c05e1a2 100644 --- a/sf_base/__manifest__.py +++ b/sf_base/__manifest__.py @@ -19,6 +19,8 @@ "views/menu_view.xml", "views/tool_base_views.xml", "views/tool_base_menu.xml", + 'views/fixture_base_view.xml', + 'views/menu_fixture_view.xml', ], 'demo': [ diff --git a/sf_base/models/__init__.py b/sf_base/models/__init__.py index f6e247d2..5b9136ae 100644 --- a/sf_base/models/__init__.py +++ b/sf_base/models/__init__.py @@ -1,5 +1,6 @@ from . import base from . import common from . import tool_base +from . import fixture_base diff --git a/sf_base/models/fixture_base.py b/sf_base/models/fixture_base.py new file mode 100644 index 00000000..6ca48f71 --- /dev/null +++ b/sf_base/models/fixture_base.py @@ -0,0 +1,240 @@ +from odoo import models, fields + +'''============================定位元件型号=====================================''' + + +class FixtureSettingElement(models.Model): + _name = 'sf.fixture.setting.element' + _description = "定位元件型号" + + code = fields.Char(string='编码', readonly=True) + name = fields.Char(string="型号名称", readonly=True) + setting_ele_type_id = fields.Many2one('sf.setting.element.type', string="定位元件类型", readonly=True) + brand_id = fields.Many2one('sf.machine.brand', string="品牌", readonly=True) + + length = fields.Char(string='长度(mm)', readonly=True) + width = fields.Char(string='宽度(mm)', readonly=True) + height = fields.Char(string='高度(mm)', readonly=True) + diameter = fields.Char(string='直径(mm)', readonly=True) + + material_type_id = fields.Many2one('sf.materials.model', string='材料型号', readonly=True) + hardness = fields.Char(string='硬度(°)', readonly=True) + chucking_power = fields.Char(string='夹持力', readonly=True) + surface_treatment = fields.Char(string='表面处理', readonly=True) + accuracy_grade = fields.Char(string='精度等级', readonly=True) + + picture = fields.Binary(string="图片", readonly=True) + comment = fields.Text(string='备注', readonly=True) + + +'''=============================定位原件类型=============================================''' + + +class SettingElementType(models.Model): + _name = 'sf.setting.element.type' + _description = "定位原件类型" + + code = fields.Char(string='编码', readonly=True) + name = fields.Char(string='定位原件类型', readonly=True) + comment = fields.Text(string='备注', readonly=True) + + +'''==============================夹紧元件型号==============================================''' + + +class FixtureClampingElement(models.Model): + _name = 'sf.fixture.clamping.element' + _description = "夹紧元件型号" + + code = fields.Char(string='编码', readonly=True) + name = fields.Char(string="型号名称", readonly=True) + clamping_ele_type_id = fields.Many2one('sf.clamping.element.type', string="夹紧元件类型", readonly=True) + brand_id = fields.Many2one('sf.machine.brand', string="品牌", readonly=True) + + length = fields.Char(string='长度(mm)', readonly=True) + width = fields.Char(string='宽度(mm)', readonly=True) + height = fields.Char(string='高度(mm)', readonly=True) + diameter = fields.Char(string='直径(mm)', readonly=True) + + material_type_id = fields.Many2one('sf.materials.model', string='材料型号', readonly=True) + hardness = fields.Char(string='硬度(°)', readonly=True) + chucking_power = fields.Char(string='夹持力', readonly=True) + surface_treatment = fields.Char(string='夹持方式', readonly=True) + accuracy_grade = fields.Char(string='精度等级', readonly=True) + + picture = fields.Binary(string="图片", readonly=True) + comment = fields.Text(string='备注', readonly=True) + + +'''============================夹紧元件类型=======================================''' + + +# 夹紧元件类型 +class ClampingElementType(models.Model): + _name = "sf.clamping.element.type" + _description = "夹紧元件类型" + + code = fields.Char(string='编码', readonly=True) + name = fields.Char(name='夹紧元件类型', readonly=True) + comment = fields.Text(string='备注', readonly=True) + + +'''=========================对刀夹具型号=====================================''' + + +class FixtureToolSetting(models.Model): + _name = 'sf.fixture.tool.setting' + _description = "对刀夹具型号" + + code = fields.Char(string='编码', readonly=True) + name = fields.Char(string="型号名称", readonly=True) + tool_setting_type_id = fields.Many2one('sf.tool.setting.type', string="对刀夹具类型", readonly=True) + brand_id = fields.Many2one('sf.machine.brand', string="品牌", readonly=True) + + length = fields.Char(string='长度(mm)', readonly=True) + width = fields.Char(string='宽度(mm)', readonly=True) + height = fields.Char(string='高度(mm)', readonly=True) + diameter = fields.Char(string='直径(mm)', readonly=True) + + material_type_id = fields.Many2one('sf.materials.model', string='材料型号', readonly=True) + hardness = fields.Char(string='硬度(°)', readonly=True) + chucking_power = fields.Char(string='夹持力', readonly=True) + clamp_mode = fields.Char(string='夹持方式', readonly=True) + accuracy_grade = fields.Char(string='精度等级', readonly=True) + max_clamp_diameter = fields.Char('最大夹持直接(mm)', readonly=True) + + picture = fields.Binary(string="图片", readonly=True) + comment = fields.Text(string='备注', readonly=True) + + +'''===========================对刀夹具类型==========================================''' + + +class ToolSettingType(models.Model): + _name = 'sf.tool.setting.type' + _description = "对刀夹具类型" + + code = fields.Char('编码', readonly=True) + name = fields.Char(string='对刀夹具类型', readonly=True) + comment = fields.Text(string='备注', readonly=True) + + +'''==========================定位装置型号=======================================''' + + +class FixtureLocatingDevice(models.Model): + _name = 'sf.fixture.locating.device' + _description = "定位装置型号" + + code = fields.Char(string='编码', readonly=True) + name = fields.Char(string="型号名称", readonly=True) + locating_device_type_id = fields.Many2one('sf.locating.device.type', string="定位装置类型", readonly=True) + brand_id = fields.Many2one('sf.machine.brand', string="品牌", readonly=True) + + length = fields.Char(string='长度(mm)', readonly=True) + width = fields.Char(string='宽度(mm)', readonly=True) + height = fields.Char(string='高度(mm)', readonly=True) + diameter = fields.Char(string='直径(mm)', readonly=True) + + material_type_id = fields.Many2one('sf.materials.model', string='材料型号', readonly=True) + weight = fields.Char(string='重量(kg)', readonly=True) + accuracy_grade = fields.Char(string='精度等级', readonly=True) + locate_mode_ids = fields.Many2many('sf.locating.device.locate.mode', string='定位装置定位方式', readonly=True) + max_bearing_capacity = fields.Char(string='最大承载力', readonly=True) + + picture = fields.Binary(string="图片", readonly=True) + comment = fields.Text(string='备注', readonly=True) + + +'''==============================定位装置类型================================''' + + +# 定位装置型号 +class LocatingDeviceType(models.Model): + _name = 'sf.locating.device.type' + _description = "定位装置类型" + + code = fields.Char('编码', readonly=True) + name = fields.Char(string='定位装置类型', readonly=True) + comment = fields.Text(string='备注', readonly=True) + + +'''============================定位装置定位方式========================================''' + + +# 定位装置定位方式 +class LocatingDeviceLocateMode(models.Model): + _name = 'sf.locating.device.locate.mode' + _description = "定位装置定位方式" + + code = fields.Char('编码', readonly=True) + name = fields.Char('定位方式', readonly=True) + name_id = fields.Many2many('sf.fixture.locating.device', string='定位装置', readonly=True) + comment = fields.Text(string='备注', readonly=True) + + +'''===========================导向元件型号====================================''' + + +class FixtureGuideElement(models.Model): + _name = 'sf.fixture.guide.element' + _description = "导向元件型号" + + code = fields.Char(string='编码', readonly=True) + name = fields.Char(string="型号名称", readonly=True) + guide_ele_type_id = fields.Many2one('sf.guide.element.type', string="导向元件类型", readonly=True) + brand_id = fields.Many2one('sf.machine.brand', string="品牌", readonly=True) + + length = fields.Char(string='长度(mm)', readonly=True) + width = fields.Char(string='宽度(mm)', readonly=True) + height = fields.Char(string='高度(mm)', readonly=True) + diameter = fields.Char(string='直径(mm)', readonly=True) + + material_type_id = fields.Many2one('sf.materials.model', string='材料型号', readonly=True) + weight = fields.Char(string='重量', readonly=True) + accuracy_grade = fields.Char(string='精度等级', readonly=True) + guide_ele_guide_mode_id = fields.Many2many('sf.guide.element.guide.mode', string='导向元件导向方式', readonly=True) + scope_of_application = fields.Char(string='适用范围', readonly=True) + guide_ele_way_to_install_id = fields.Many2many('sf.guide.element.way.to.install', string='导向元件安装方式', + readonly=True) + + picture = fields.Binary(string="图片", readonly=True) + comment = fields.Text(string='备注', readonly=True) + + +'''=============================导向元件类型============================================''' + + +class GuideElementType(models.Model): + _name = 'sf.guide.element.type' + _description = "导向元件类型" + + code = fields.Char(string='编码', readonly=True) + name = fields.Char(string="导向元件类型", readonly=True) + comment = fields.Text(string='备注', readonly=True) + + +'''================================导向元件导向方式==========================================''' + + +class GuideElementGuideMode(models.Model): + _name = 'sf.guide.element.guide.mode' + _description = "导向元件导向方式" + + code = fields.Char(string='编码', readonly=True) + name = fields.Char(string="导向元件导向方式", readonly=True) + name_id = fields.Many2many('sf.fixture.guide.element', string='导向元件', readonly=True) + comment = fields.Text(string='备注', readonly=True) + + +'''=============================导向元件安装方式===========================================''' + + +class GuideElementWayToInstall(models.Model): + _name = 'sf.guide.element.way.to.install' + _description = '导向元件安装方式' + + code = fields.Char(string='编码', readonly=True) + name = fields.Char(string="导向元件安装方式", readonly=True) + name_id = fields.Many2many('sf.fixture.guide.element', string='导向元件', readonly=True) + comment = fields.Text(string='备注', readonly=True) diff --git a/sf_base/security/ir.model.access.csv b/sf_base/security/ir.model.access.csv index b75eee63..ff43d323 100644 --- a/sf_base/security/ir.model.access.csv +++ b/sf_base/security/ir.model.access.csv @@ -33,6 +33,18 @@ access_sf_chuck,sf.chuck,model_sf_chuck,base.group_user,1,1,1,1 access_sf_chuck_model,sf.chuck.model,model_sf_chuck_model,base.group_user,1,1,1,1 - +access_sf_fixture_setting_element,sf_fixture_setting_element,model_sf_fixture_setting_element,base.group_user,1,1,1,1 +access_sf_setting_element_type,sf_setting_element_type,model_sf_setting_element_type,base.group_user,1,1,1,1 +access_sf_fixture_clamping_element,sf_fixture_clamping_element,model_sf_fixture_clamping_element,base.group_user,1,1,1,1 +access_sf_clamping_element_type,sf_clamping_element_type,model_sf_clamping_element_type,base.group_user,1,1,1,1 +access_sf_fixture_tool_setting,sf_fixture_tool_setting,model_sf_fixture_tool_setting,base.group_user,1,1,1,1 +access_sf_tool_setting_type,sf_tool_setting_type,model_sf_tool_setting_type,base.group_user,1,1,1,1 +access_sf_fixture_locating_device,sf_fixture_locating_device,model_sf_fixture_locating_device,base.group_user,1,1,1,1 +access_sf_locating_device_type,sf_locating_device_type,model_sf_locating_device_type,base.group_user,1,1,1,1 +access_sf_locating_device_locate_mode,sf_locating_device_locate_mode,model_sf_locating_device_locate_mode,base.group_user,1,1,1,1 +access_sf_fixture_guide_element,sf_fixture_guide_element,model_sf_fixture_guide_element,base.group_user,1,1,1,1 +access_sf_guide_element_type,sf_guide_element_type,model_sf_guide_element_type,base.group_user,1,1,1,1 +access_sf_guide_element_guide_mode,sf_guide_element_guide_mode,model_sf_guide_element_guide_mode,base.group_user,1,1,1,1 +access_sf_guide_element_way_to_install,sf_guide_element_way_to_install,model_sf_guide_element_way_to_install,base.group_user,1,1,1,1 diff --git a/sf_base/views/fixture_base_view.xml b/sf_base/views/fixture_base_view.xml new file mode 100644 index 00000000..09cd4b86 --- /dev/null +++ b/sf_base/views/fixture_base_view.xml @@ -0,0 +1,681 @@ + + + + + + 定位元件型号 + sf.fixture.setting.element + + + + + + + + + + + + + 定位元件型号 + sf.fixture.setting.element + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + 定位元件型号 + ir.actions.act_window + sf.fixture.setting.element + tree,form + + + + + + + 定位原件类型 + sf.setting.element.type + + + + + + + + + + 定位元件类型 + sf.setting.element.type + +
+ + + + + + + + + + + + + +
+
+
+ + + 定位元件类型 + ir.actions.act_window + sf.setting.element.type + tree,form + + + + + + + + 夹紧元件型号 + sf.fixture.clamping.element + + + + + + + + + + + + + 夹紧元件型号 + sf.fixture.clamping.element + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + 夹紧元件型号 + ir.actions.act_window + sf.fixture.clamping.element + tree,form + + + + + + + + 夹紧元件类型 + sf.clamping.element.type + + + + + + + + + + 夹紧元件类型 + sf.clamping.element.type + +
+ + + + + + + + + + + + + +
+
+
+ + + 夹紧元件类型 + ir.actions.act_window + sf.clamping.element.type + tree,form + + + + + + + 对刀夹具型号 + sf.fixture.tool.setting + + + + + + + + + + + + + 对刀夹具型号 + sf.fixture.tool.setting + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + 对刀夹具型号 + ir.actions.act_window + sf.fixture.tool.setting + tree,form + + + + + + 对刀夹具类型 + sf.tool.setting.type + + + + + + + + + + 对刀夹具类型 + sf.tool.setting.type + +
+ + + + + + + + + + + + + +
+
+
+ + + 对刀夹具类型 + ir.actions.act_window + sf.tool.setting.type + tree,form + + + + + + + 定位装置型号 + sf.fixture.locating.device + + + + + + + + + + + + + 定位装置型号 + sf.fixture.locating.device + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + 定位装置型号 + ir.actions.act_window + sf.fixture.locating.device + tree,form + + + + + + 定位装置类型 + sf.locating.device.type + + + + + + + + + + 定位装置类型 + sf.locating.device.type + +
+ + + + + + + + + + + + + +
+
+
+ + + 定位装置类型 + ir.actions.act_window + sf.locating.device.type + tree,form + + + + + + 定位装置定位方式 + sf.locating.device.locate.mode + + + + + + + + + + 定位装置定位方式 + sf.locating.device.locate.mode + +
+ + + + + + + + + + + + + + +
+
+
+ + + 定位装置定位方式 + ir.actions.act_window + sf.locating.device.locate.mode + tree,form + + + + + + 导向元件型号 + sf.fixture.guide.element + + + + + + + + + + + + + 导向元件型号 + sf.fixture.guide.element + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + 导向元件型号 + ir.actions.act_window + sf.fixture.guide.element + tree,form + + + + + + 导向元件类型 + sf.guide.element.type + + + + + + + + + + 导向元件类型 + sf.guide.element.type + +
+ + + + + + + + + + + + + +
+
+
+ + + 导向元件类型 + ir.actions.act_window + sf.guide.element.type + tree,form + + + + + + + 导向元件导向方式 + sf.guide.element.guide.mode + + + + + + + + + + 导向元件导向方式 + sf.guide.element.guide.mode + +
+ + + + + + + + + + + + + + +
+
+
+ + + 导向元件导向方式 + ir.actions.act_window + sf.guide.element.guide.mode + tree,form + + + + + + + 导向元件安装方式 + sf.guide.element.way.to.install + + + + + + + + + + 导向元件安装方式 + sf.guide.element.way.to.install + +
+ + + + + + + + + + + + + + +
+
+
+ + + 导向元件安装方式 + ir.actions.act_window + sf.guide.element.way.to.install + tree,form + + + + +
\ No newline at end of file diff --git a/sf_base/views/menu_fixture_view.xml b/sf_base/views/menu_fixture_view.xml new file mode 100644 index 00000000..ab7981c4 --- /dev/null +++ b/sf_base/views/menu_fixture_view.xml @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sf_mrs_connect/data/ir_cron_data.xml b/sf_mrs_connect/data/ir_cron_data.xml index 513d5dee..dd14859d 100644 --- a/sf_mrs_connect/data/ir_cron_data.xml +++ b/sf_mrs_connect/data/ir_cron_data.xml @@ -307,4 +307,48 @@ -1 + + + 同步资源库夹紧元件型号 + + code + model.sync_fixture_clamping_element() + 1 + days + -1 + + + + + 同步资源库夹紧元件类型 + + code + model.sync_clamping_element_type() + 1 + days + -1 + + + + + 同步资源库导向元件类型 + + code + model.sync_guide_element_type() + 1 + days + -1 + + + + + 同步资源库导向元件导向方式 + + code + model.sync_guide_element_guide_mode() + 1 + days + -1 + + \ No newline at end of file diff --git a/sf_mrs_connect/models/res_config_setting.py b/sf_mrs_connect/models/res_config_setting.py index bb996fdf..535c394e 100644 --- a/sf_mrs_connect/models/res_config_setting.py +++ b/sf_mrs_connect/models/res_config_setting.py @@ -134,6 +134,15 @@ class ResConfigSettings(models.TransientModel): self.env['sf.functional.cutting.tool'].sync_all_functional_cutting_tool() _logger.info("同步所有功能刀具列表完成") + self.env['sf.fixture.clamping.element'].sync_all_fixture_clamping_element() + _logger.info("同步资源库夹紧元件型号") + self.env['sf.clamping.element.type'].sync_all_clamping_element_type() + _logger.info("同步资源库夹紧元件类型") + self.env['sf.guide.element.type'].sync_all_guide_element_type() + _logger.info("同步资源库导向元件类型") + self.env['sf.guide.element.guide.mode'].sync_all_guide_element_guide_mode() + _logger.info("同步资源库导向元件导向方式") + except Exception as e: _logger.info("捕获错误信息:%s" % e) raise ValidationError("数据错误导致同步失败,请联系管理员") diff --git a/sf_mrs_connect/models/sync_common.py b/sf_mrs_connect/models/sync_common.py index 601b9212..d5377cf7 100644 --- a/sf_mrs_connect/models/sync_common.py +++ b/sf_mrs_connect/models/sync_common.py @@ -2930,3 +2930,339 @@ class SyncChuckModel(models.Model): print('同步夹头类型列表成功') else: raise ValidationError("认证未通过") + + + + +'''=========================================夹紧元件类型===============================================''' + + +class sfClampingElementType(models.Model): + _inherit = 'sf.clamping.element.type' + _description = '夹紧元件类型' + url = '/api/mrs_clamping_element_type/list' + + # 定时同步每日夹紧元件类型 + def sync_clamping_element_type(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['mrs_clamping_element_type_yesterday_list']: + if item: + brand = self.env['sf.clamping.element.type'].search( + [("code", '=', item['code'])]) + if brand: + brand.name = item['name'], + brand.code = item['code'], + brand.comment = item['comment'] + else: + self.env['sf.clamping.element.type'].create({ + "name": item['name'], + "code": item['code'], + "comment": item['comment'] + }) + else: + raise ValidationError("认证未通过") + + # 同步所有夹紧元件类型 + def sync_all_clamping_element_type(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: + _logger.info('result:%s' % result) + for item in result['mrs_clamping_element_type_all_list']: + if item: + brand = self.env['sf.clamping.element.type'].search( + [("code", '=', item['code'])]) + if not brand: + self.env['sf.clamping.element.type'].create({ + "name": item['name'], + "code": item['code'], + "comment": item['comment'] + }) + else: + raise ValidationError("认证未通过") + + +'''=================================夹紧元件型号=============================================''' + + +class sfFixtureClampingElement(models.Model): + _inherit = 'sf.fixture.clamping.element' + _description = '夹紧元件型号' + url = '/api/mrs_fixture_clamping_element/list' + + # 定时同步夹紧元件型号 + def sync_fixture_clamping_element(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['mrs_fixture_clamping_element_yesterday_list']: + brand = self.env['sf.fixture.clamping.element'].search( + [("code", '=', item['code'])]) + if brand: + brand.code = item['code'], + brand.name = item['name'], + + brand.length = item['length'], + brand.width = item['width'], + brand.height = item['height'], + brand.diameter = item['diameter'], + brand.hardness = item['hardness'], + brand.chucking_power = item['chucking_power'], + brand.surface_treatment = item['surface_treatment'], + brand.accuracy_grade = item['accuracy_grade'], + # brand.picture = item['picture'].encode('utf-8'), + brand.picture = base64.b64decode(item['picture']), + brand.comment = item['comment'], + + brand.brand_id = self.env['sf.machine.brand'].search( + [('code', '=', item['brand_id'])]).id, + brand.material_type_id = self.env['sf.materials.model'].search( + [('materials_no', '=', item['material_type_id'])]).id, + brand.clamping_ele_type_id = self.env['sf.clamping.element.type'].search( + [('code', '=', item['clamping_ele_type_id'])]).id + + else: + self.env['sf.fixture.clamping.element'].create({ + "code": item['code'], + "name": item['name'], + + "length": item['length'], + "width": item['width'], + "height": item['height'], + "diameter": item['diameter'], + "hardness": item['hardness'], + "chucking_power": item['chucking_power'], + "surface_treatment": item['surface_treatment'], + "accuracy_grade": item['accuracy_grade'], + + 'picture': base64.b64decode(item['picture']), + # "picture": item['picture'].encode('utf-8'), + "comment": item['comment'], + + + 'brand_id': self.env['sf.machine.brand'].search( + [('code', '=', item['brand_id'])]).id, + "material_type_id": self.env['sf.materials.model'].search( + [('materials_no', '=', item['material_type_id'])]).id, + "clamping_ele_type_id": self.env['sf.clamping.element.type'].search( + [('code', '=', item['clamping_ele_type_id'])]).id, + }) + else: + raise ValidationError("认证未通过") + + # 同步所有夹紧元件型号 + def sync_all_fixture_clamping_element(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']) + print(result) + if result['status'] == 1: + for item in result['mrs_fixture_clamping_element_all_list']: + brand = self.env['sf.fixture.clamping.element'].search( + [("code", '=', item['code'])]) + if not brand: + self.env['sf.fixture.clamping.element'].create({ + "code": item['code'], + "name": item['name'], + + "length": item['length'], + "width": item['width'], + "height": item['height'], + "diameter": item['diameter'], + "hardness": item['hardness'], + "chucking_power": item['chucking_power'], + "surface_treatment": item['surface_treatment'], + "accuracy_grade": item['accuracy_grade'], + + # "picture": item['picture'].encode('utf-8'), + 'picture': base64.b64decode(item['picture']), + "comment": item['comment'], + + 'brand_id': self.env['sf.machine.brand'].search( + [('code', '=', item['brand_id'])]).id, + "material_type_id": self.env['sf.materials.model'].search( + [('materials_no', '=', item['material_type_id'])]).id, + "clamping_ele_type_id": self.env['sf.clamping.element.type'].search( + [('code', '=', item['clamping_ele_type_id'])]).id, + }) + + + else: + raise ValidationError("认证未通过") + + +'''===================================导向元件类型==========================================''' + + +class sfGuideElementType(models.Model): + _inherit = 'sf.guide.element.type' + _description = '导向元件类型' + url = '/api/mrs_guide_element_type/list' + + # 定时同步每日导向元件类型 + def sync_guide_element_type(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: + _logger.info('result:%s' % result) + for item in result['mrs_guide_element_type_yesterday_list']: + if item: + brand = self.env['sf.guide.element.type'].search( + [("code", '=', item['code'])]) + if brand: + brand.name = item['name'], + brand.code = item['code'], + brand.comment = item['comment'] + else: + self.env['sf.guide.element.type'].create({ + "name": item['name'], + "code": item['code'], + "comment": item['comment'] + }) + else: + raise ValidationError("认证未通过") + + # 同步所有导向元件类型 + def sync_all_guide_element_type(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: + _logger.info('result:%s' % result) + for item in result['mrs_guide_element_type_all_list']: + if item: + brand = self.env['sf.guide.element.type'].search( + [("code", '=', item['code'])]) + if not brand: + self.env['sf.guide.element.type'].create({ + "name": item['name'], + "code": item['code'], + "comment": item['comment'] + }) + # guide_element_type = self.env['sf.guide.element.type'].search([('code', '=', code)]) + # tags = self.env['sf.tag'].search([('name', '=', 'new_tag_name')]) + # guide_element_type.write({'tag_ids': [(6, 0, tags.ids)]}) + else: + raise ValidationError("认证未通过") + + +'''===================================导向元件导向方式==========================================''' + + +class sfGuideElementGuideMode(models.Model): + _inherit = 'sf.guide.element.guide.mode' + _description = '导向元件导向方式' + url = '/api/mrs_guide_element_guide_mode/list' + + # 定时同步每日导向元件导向方式 + def sync_guide_element_guide_mode(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: + _logger.info('result:%s' % result) + for item in result['mrs_guide_element_guide_mode_yesterday_list']: + name_id_list = [] + if item.get('guide_ele_guide_mode_id'): + for i in item.get('guide_ele_guide_mode_id'): + name_id_list.append(self.env['sf.fixture.guide.element'].search( + [("code", '=', i)]).id) + if item: + brand = self.env['sf.guide.element.guide.mode'].search( + [("code", '=', item['code'])]) + if brand: + brand.name = item['name'], + brand.code = item['code'], + brand.comment = item['comment'] + brand.name_id = name_id_list + + else: + self.env['sf.guide.element.guide.mode'].create({ + "name": item['name'], + "code": item['code'], + "comment": item['comment'], + "name_id": name_id_list + }) + else: + raise ValidationError("认证未通过") + + # 同步所有导向元件导向方式 + def sync_all_guide_element_guide_mode(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: + _logger.info('result:%s' % result) + for item in result['mrs_guide_element_guide_mode_all_list']: + name_id_list = [] + if item.get('guide_ele_guide_mode_id'): + for i in item.get('guide_ele_guide_mode_id'): + name_id_list.append(self.env['sf.fixture.guide.element'].search( + [("code", '=', i)]).id) + if item: + brand = self.env['sf.guide.element.guide.mode'].search( + [("code", '=', item['code'])]) + if not brand: + self.env['sf.guide.element.guide.mode'].create({ + "name": item['name'], + "code": item['code'], + "comment": item['comment'], + "name_id": name_id_list + }) + else: + raise ValidationError("认证未通过") +