From 3a8c65c8d15213d0670b5f1cdb6594bb43b5d967 Mon Sep 17 00:00:00 2001
From: yuxianghui <1608204036@qq.com>
Date: Tue, 13 Jun 2023 11:19:06 +0800
Subject: [PATCH 01/11] =?UTF-8?q?=E8=A7=A3=E5=86=B3sf=E4=BB=A3=E7=A0=81?=
=?UTF-8?q?=E5=86=B2=E7=AA=81=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_base/__manifest__.py | 2 +
sf_base/models/__init__.py | 1 +
sf_base/models/fixture_base.py | 240 +++++++
sf_base/security/ir.model.access.csv | 14 +-
sf_base/views/fixture_base_view.xml | 681 ++++++++++++++++++++
sf_base/views/menu_fixture_view.xml | 106 +++
sf_mrs_connect/data/ir_cron_data.xml | 44 ++
sf_mrs_connect/models/res_config_setting.py | 9 +
sf_mrs_connect/models/sync_common.py | 336 ++++++++++
9 files changed, 1432 insertions(+), 1 deletion(-)
create mode 100644 sf_base/models/fixture_base.py
create mode 100644 sf_base/views/fixture_base_view.xml
create mode 100644 sf_base/views/menu_fixture_view.xml
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("认证未通过")
+
From 3d1d5e6ef3579e496f85715d551b0ab38d479f7a Mon Sep 17 00:00:00 2001
From: mgw <1392924357@qq.com>
Date: Tue, 13 Jun 2023 14:13:15 +0800
Subject: [PATCH 02/11] =?UTF-8?q?=E6=99=BA=E8=83=BD=E5=B7=A5=E5=8E=82?=
=?UTF-8?q?=E5=88=80=E5=85=B7=E7=89=A9=E6=96=99=E6=A8=A1=E5=9E=8B=E3=80=81?=
=?UTF-8?q?=E5=85=B3=E8=81=94=E5=85=B3=E7=B3=BB=E5=8F=8A=E5=85=B6=E7=95=8C?=
=?UTF-8?q?=E9=9D=A2=E5=B7=B2=E5=BB=BA=E7=AB=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_base/models/tool_base.py | 37 ++++++++++++++++++++--
sf_base/security/ir.model.access.csv | 2 +-
sf_base/views/tool_base_menu.xml | 38 +++++++++-------------
sf_base/views/tool_base_views.xml | 47 +++++++++++++++++++++++++++-
4 files changed, 97 insertions(+), 27 deletions(-)
diff --git a/sf_base/models/tool_base.py b/sf_base/models/tool_base.py
index b41a1075..452b5ecf 100644
--- a/sf_base/models/tool_base.py
+++ b/sf_base/models/tool_base.py
@@ -7,6 +7,16 @@ from odoo.exceptions import UserError
from datetime import datetime
+# 功能刀具物料
+class CuttingToolMaterial(models.Model):
+ _name = 'sf.cutting.tool.material'
+ _description = '刀具物料'
+
+ code = fields.Char('编码')
+ name = fields.Char('名称')
+ remark = fields.Char('备注')
+
+
# 功能刀具
class FunctionalCuttingTool(models.Model):
_name = 'sf.functional.cutting.tool'
@@ -53,6 +63,8 @@ class IntegralCuttingTool(models.Model):
code = fields.Char('编码')
name = fields.Char('型号名称')
+ # 关联刀具物料
+ cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料', required=True)
# 整体式刀具类型字段,关联整体式刀具类型对象
integral_model_number = fields.Many2one('sf.integral.cutting.tool.model', '整体式刀具类型')
# 增加品牌、总长度(mm)、柄部长度(mm)、刃部长度(mm)、直径(mm)、刃数、前角(°)、后角(°)、主偏角(°)、材料型号、配对螺母(mm)、适用夹头型号、适用范围、图片、创建人、创建时间等字段
@@ -80,6 +92,8 @@ class IntegralCuttingToolModel(models.Model):
code = fields.Char('编码')
name = fields.Char('名称')
+ # 关联刀具物料
+ cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料', required=True)
remark = fields.Text('备注')
@@ -90,10 +104,12 @@ class Blade(models.Model):
code = fields.Char('编码')
name = fields.Char('型号名称')
+ # 关联刀具物料
+ cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料', required=True)
# 刀片类型字段,关联刀片类型对象
blade_model_number = fields.Many2one('sf.blade.model', '刀片类型')
# 编码、型号名称、刀片类型、品牌、长度L(mm)、宽度D(mm)、高度T(mm)、顶角(°)、前角(°)、后角(°)、主偏角(°)、R角(°)、材料型号、加工硬度、配对螺母(mm)、适用刀杆/刀盘型号、刀尖半径(mm)、图片、创建人、创建时间字段
- brand = fields.Many2one('sf.machine.brand', '品牌',)
+ brand = fields.Many2one('sf.machine.brand', '品牌', )
length = fields.Float('长度L(mm)')
width = fields.Float('宽度D(mm)')
height = fields.Float('高度T(mm)')
@@ -120,6 +136,8 @@ class BladeModel(models.Model):
code = fields.Char('编码')
name = fields.Char('名称')
+ # 关联刀具物料
+ cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料', required=True)
# 刀片类型字段,关联刀片对象
blade_ids = fields.One2many('sf.blade', 'blade_model_number', '刀片类型')
remark = fields.Text('备注')
@@ -132,6 +150,8 @@ class CutterBar(models.Model):
code = fields.Char('编码')
name = fields.Char('型号名称')
+ # 关联刀具物料
+ cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料', required=True)
# 刀杆类型字段,关联刀杆类型对象
cutter_bar_model_number = fields.Many2one('sf.cutter.bar.model', '刀杆类型')
# 品牌、C柄径(mm)、L总长(mm)、材料型号、刃数、D刃径(mm)、适用刀片型号、配对扳手(mm)、配备螺丝(mm)、刀尖圆角半径、精度等级、硬度(°)、适用范围、图片、创建人、创建时间
@@ -158,6 +178,8 @@ class CutterBarModel(models.Model):
code = fields.Char('编码')
name = fields.Char('名称')
+ # 关联刀具物料
+ cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料', required=True)
remark = fields.Text('备注')
@@ -168,6 +190,8 @@ class CutterPad(models.Model):
code = fields.Char('编码')
name = fields.Char('型号名称')
+ # 关联刀具物料
+ cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料', required=True)
# 刀盘类型字段,关联刀盘类型对象
cutter_pad_model_number = fields.Many2one('sf.cutter.pad.model', '刀盘类型')
# 增加品牌、C柄径(mm)、L总长(mm)、材料型号、刃数、D刃径(mm)、适用刀片型号、配对扳手(mm)、配备螺丝(mm)、刀尖圆角半径、精度等级、硬度(°)、适用范围、图片、创建人、创建时间
@@ -194,6 +218,8 @@ class CutterPadModel(models.Model):
code = fields.Char('编码')
name = fields.Char('名称')
+ # 关联刀具物料
+ cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料', required=True)
remark = fields.Text('备注')
@@ -204,6 +230,8 @@ class Handle(models.Model):
code = fields.Char('编码')
name = fields.Char('型号名称')
+ # 关联刀具物料
+ cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料', required=True)
# 刀柄类型字段,关联刀柄类型对象
handle_model_number = fields.Many2one('sf.handle.model', '刀柄类型')
# 增加、刀柄类型、品牌、L(mm)、L1(mm)、D1(mm)、重量(kg)、材料型号、本体精度(mm)、配对螺母(mm)、适用夹头型号、夹持范围(mm)、检测精度、检测硬度、标准转速、图片、创建人、创建时间
@@ -230,6 +258,8 @@ class HandleModel(models.Model):
code = fields.Char('编码')
name = fields.Char('名称')
+ # 关联刀具物料
+ cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料', required=True)
remark = fields.Text('备注')
@@ -240,6 +270,8 @@ class Chuck(models.Model):
code = fields.Char('编码')
name = fields.Char('型号名称')
+ # 关联刀具物料
+ cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料', required=True)
# 夹头类型字段,关联夹头类型对象
chuck_model_number = fields.Many2one('sf.chuck.model', '夹头类型')
# 增加品牌、精度(mm)、外径(mm)、内径(mm)、高度(mm)、材料型号、配对螺母(mm)、适用刀柄型号、夹持范围(mm)、特性、图片、创建人、创建时间
@@ -263,5 +295,6 @@ class ChuckModel(models.Model):
code = fields.Char('编码')
name = fields.Char('名称')
+ # 关联刀具物料
+ cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料', required=True)
remark = fields.Text('备注')
-
diff --git a/sf_base/security/ir.model.access.csv b/sf_base/security/ir.model.access.csv
index ff43d323..f07b2fcb 100644
--- a/sf_base/security/ir.model.access.csv
+++ b/sf_base/security/ir.model.access.csv
@@ -31,7 +31,7 @@ access_sf_handle,sf.handle,model_sf_handle,base.group_user,1,1,1,1
access_sf_handle_model,sf.handle.model,model_sf_handle_model,base.group_user,1,1,1,1
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_cutting_tool_material,sf.cutting.tool.material,model_sf_cutting_tool_material,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
diff --git a/sf_base/views/tool_base_menu.xml b/sf_base/views/tool_base_menu.xml
index bde509e3..851fbf21 100644
--- a/sf_base/views/tool_base_menu.xml
+++ b/sf_base/views/tool_base_menu.xml
@@ -100,15 +100,13 @@
sf.chuck.model
tree,form
-
-
-
-
-
-
-
-
-
+
+
+ 刀具物料
+ ir.actions.act_window
+ sf.cutting.tool.material
+ tree,form
+
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
- #------------------刀具型号------------------
-
-
- search.sf.cutting_tool.type
- sf.cutting_tool.type
-
-
-
-
-
-
-
-
- tree.sf.cutting_tool.type
- sf.cutting_tool.type
-
-
-
-
-
-
-
-
-
-
- form.sf.cutting_tool.type
- sf.cutting_tool.type
-
-
-
-
-
-
- 刀具型号
- ir.actions.act_window
- sf.cutting_tool.type
- tree,form
-
-
- [刀具型号] 还没有哦!点左上角的[创建]按钮,沙发归你了!
-
-
-
-
-
-
- #------------------刀具类别------------------
-
-
- search.sf.cutting_tool.category
- sf.cutting_tool.category
-
-
-
-
-
-
-
-
- tree.sf.cutting_tool.category
- sf.cutting_tool.category
-
-
-
-
-
-
-
-
-
- form.sf.cutting_tool.category
- sf.cutting_tool.category
-
-
-
-
-
-
- 刀具类别
- ir.actions.act_window
- sf.cutting_tool.category
- tree,form
-
-
- [刀具类别] 还没有哦!点左上角的[创建]按钮,沙发归你了!
-
-
-
-
-
#------------------机床注册------------------
diff --git a/sf_base/views/menu_view.xml b/sf_base/views/menu_view.xml
index e011a29d..c9b8f1c1 100644
--- a/sf_base/views/menu_view.xml
+++ b/sf_base/views/menu_view.xml
@@ -127,26 +127,6 @@
sequence="1"
action="action_sf_machine_tool_category"/>
-
-
-
-
-
-