优化同步刀具标准库接口(包含全部合并每日)
This commit is contained in:
@@ -19,8 +19,8 @@
|
||||
'views/fixture_view.xml',
|
||||
'views/functional_fixture_view.xml',
|
||||
'views/menu_view.xml',
|
||||
"views/tool_views.xml",
|
||||
"views/tool_menu.xml",
|
||||
'views/tool_views.xml',
|
||||
'views/tool_menu.xml',
|
||||
'views/menu_fixture_view.xml',
|
||||
|
||||
],
|
||||
|
||||
@@ -1,304 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import logging
|
||||
|
||||
from odoo import fields, models, api
|
||||
# from odoo.exceptions import UserError
|
||||
# # from odoo.addons import sf_base, sf_common
|
||||
# from datetime import datetime
|
||||
|
||||
|
||||
# 功能刀具物料
|
||||
class CuttingToolMaterial(models.Model):
|
||||
_name = 'sf.cutting.tool.material'
|
||||
_description = '刀具物料'
|
||||
|
||||
code = fields.Char('编码')
|
||||
name = fields.Char('名称')
|
||||
remark = fields.Char('备注')
|
||||
active = fields.Boolean('有效', default=True)
|
||||
|
||||
|
||||
# 功能刀具
|
||||
class FunctionalCuttingTool(models.Model):
|
||||
_name = 'sf.functional.cutting.tool'
|
||||
_description = '功能刀具'
|
||||
|
||||
code = fields.Char('编码')
|
||||
name = fields.Char('名称')
|
||||
functional_model_number = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型')
|
||||
integral_model_number = fields.Many2one('sf.integral.cutting.tool', string='整体式刀具型号')
|
||||
blade_model_number = fields.Many2one('sf.blade', string='刀片型号')
|
||||
cutterbar_model_number = fields.Many2one('sf.cutter.bar', string='刀杆型号')
|
||||
cutterpad_model_number = fields.Many2one('sf.cutter.pad', string='刀盘型号')
|
||||
handle_model_number = fields.Many2one('sf.handle', string='刀柄型号')
|
||||
chuck_model_number = fields.Many2one('sf.chuck', string='夹头型号')
|
||||
diameter = fields.Float('直径(mm)')
|
||||
tool_grade = fields.Selection([('1', 'P1'), ('2', 'P2'), ('3', 'P3'), ('4', 'P4'), ('5', 'P5'), ('6', 'P6')],
|
||||
string='刀具等级')
|
||||
machining_accuracy = fields.Float('加工精度(mm)')
|
||||
tool_length = fields.Float('装刀长')
|
||||
blade_number = fields.Integer('刃数')
|
||||
integral_blade_length = fields.Float('整体刃长(mm)')
|
||||
effective_blade_length = fields.Float('有效刃长(mm)')
|
||||
max_life = fields.Float('最大寿命值')
|
||||
is_standard = fields.Boolean('是否标准刀')
|
||||
applicable_range = fields.Char('适用范围')
|
||||
image = fields.Binary('图片')
|
||||
active = fields.Boolean('有效', default=True)
|
||||
|
||||
|
||||
# 功能刀具类型
|
||||
class FunctionalCuttingToolModel(models.Model):
|
||||
_name = 'sf.functional.cutting.tool.model'
|
||||
_description = '功能刀具类型'
|
||||
|
||||
name = fields.Char('名称')
|
||||
code = fields.Char('编码')
|
||||
remark = fields.Char('备注')
|
||||
active = fields.Boolean('有效', default=True)
|
||||
|
||||
|
||||
# 整体式刀具
|
||||
class IntegralCuttingTool(models.Model):
|
||||
_name = 'sf.integral.cutting.tool'
|
||||
_description = '整体式刀具'
|
||||
|
||||
code = fields.Char('编码')
|
||||
name = fields.Char('型号名称')
|
||||
# 关联刀具物料
|
||||
cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料')
|
||||
# 整体式刀具类型字段,关联整体式刀具类型对象
|
||||
integral_model_number = fields.Many2one('sf.integral.cutting.tool.model', '整体式刀具类型')
|
||||
# 增加品牌、总长度(mm)、柄部长度(mm)、刃部长度(mm)、直径(mm)、刃数、前角(°)、后角(°)、主偏角(°)、材料型号、配对螺母(mm)、适用夹头型号、适用范围、图片、创建人、创建时间等字段
|
||||
brand = fields.Many2one('sf.machine.brand', '品牌', domain="[('tag_ids.name', 'ilike', '刀具')]")
|
||||
total_length = fields.Float('总长度(mm)')
|
||||
shank_length = fields.Float('柄部长度(mm)')
|
||||
blade_length = fields.Float('刃部长度(mm)')
|
||||
diameter = fields.Float('直径(mm)')
|
||||
blade_number = fields.Integer('刃数')
|
||||
front_angle = fields.Float('前角(°)')
|
||||
rear_angle = fields.Float('后角(°)')
|
||||
main_included_angle = fields.Float('主偏角(°)')
|
||||
material_model = fields.Many2one('sf.materials.model', '材料型号')
|
||||
nut = fields.Float('配对螺母(mm)')
|
||||
# 适用夹头型号可以多选
|
||||
chuck_model = fields.Many2many('sf.chuck', string='适用夹头型号')
|
||||
scope = fields.Char('适用范围')
|
||||
image = fields.Binary('图片')
|
||||
active = fields.Boolean('有效', default=True)
|
||||
|
||||
|
||||
# 整体式刀具类型
|
||||
class IntegralCuttingToolModel(models.Model):
|
||||
_name = 'sf.integral.cutting.tool.model'
|
||||
_description = '整体式刀具类型'
|
||||
|
||||
code = fields.Char('编码')
|
||||
name = fields.Char('名称')
|
||||
# 关联刀具物料
|
||||
cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料')
|
||||
remark = fields.Char('备注')
|
||||
|
||||
|
||||
# 刀片
|
||||
class Blade(models.Model):
|
||||
_name = 'sf.blade'
|
||||
_description = '刀片'
|
||||
|
||||
code = fields.Char('编码')
|
||||
name = fields.Char('型号名称')
|
||||
# 关联刀具物料
|
||||
cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料')
|
||||
# 刀片类型字段,关联刀片类型对象
|
||||
blade_model_number = fields.Many2one('sf.blade.model', '刀片类型')
|
||||
# 编码、型号名称、刀片类型、品牌、长度L(mm)、宽度D(mm)、高度T(mm)、顶角(°)、前角(°)、后角(°)、主偏角(°)、R角(°)、材料型号、加工硬度、配对螺母(mm)、适用刀杆/刀盘型号、刀尖半径(mm)、图片、创建人、创建时间字段
|
||||
brand = fields.Many2one('sf.machine.brand', '品牌', )
|
||||
length = fields.Float('长度L(mm)')
|
||||
width = fields.Float('宽度D(mm)')
|
||||
height = fields.Float('高度T(mm)')
|
||||
top_angle = fields.Float('顶角(°)')
|
||||
front_angle = fields.Float('前角(°)')
|
||||
rear_angle = fields.Float('后角(°)')
|
||||
main_included_angle = fields.Float('主偏角(°)')
|
||||
r_angle = fields.Float('R角(°)')
|
||||
material_model = fields.Many2one('sf.materials.model', '材料型号')
|
||||
hardness = fields.Char('加工硬度')
|
||||
nut = fields.Float('配对螺母(mm)')
|
||||
# 适用刀杆型号可以多选
|
||||
cutter_bar = fields.Many2many('sf.cutter.bar', string='适用刀杆型号')
|
||||
# 适用刀盘型号可以多选
|
||||
cutter_pad = fields.Many2many('sf.cutter.pad', string='适用刀盘型号')
|
||||
radius = fields.Float('刀尖半径(mm)')
|
||||
image = fields.Binary('图片')
|
||||
|
||||
|
||||
# 刀片类型
|
||||
class BladeModel(models.Model):
|
||||
_name = 'sf.blade.model'
|
||||
_description = '刀片类型'
|
||||
|
||||
code = fields.Char('编码')
|
||||
name = fields.Char('名称')
|
||||
# 关联刀具物料
|
||||
cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料')
|
||||
# 刀片类型字段,关联刀片对象
|
||||
blade_ids = fields.One2many('sf.blade', 'blade_model_number', '刀片类型')
|
||||
remark = fields.Char('备注')
|
||||
|
||||
|
||||
# 刀杆
|
||||
class CutterBar(models.Model):
|
||||
_name = 'sf.cutter.bar'
|
||||
_description = '刀杆'
|
||||
|
||||
code = fields.Char('编码')
|
||||
name = fields.Char('型号名称')
|
||||
# 关联刀具物料
|
||||
cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料')
|
||||
# 刀杆类型字段,关联刀杆类型对象
|
||||
cutter_bar_model_number = fields.Many2one('sf.cutter.bar.model', '刀杆类型')
|
||||
# 品牌、C柄径(mm)、L总长(mm)、材料型号、刃数、D刃径(mm)、适用刀片型号、配对扳手(mm)、配备螺丝(mm)、刀尖圆角半径、精度等级、硬度(°)、适用范围、图片、创建人、创建时间
|
||||
brand = fields.Many2one('sf.machine.brand', '品牌')
|
||||
c_diameter = fields.Float('C柄径(mm)')
|
||||
total_length = fields.Float('L总长(mm)')
|
||||
material_model = fields.Many2one('sf.materials.model', '材料型号')
|
||||
blade_number = fields.Integer('刃数')
|
||||
d_diameter = fields.Float('D刃径(mm)')
|
||||
blade = fields.Many2many('sf.blade', string='适用刀片型号')
|
||||
wrench = fields.Float('配对扳手(mm)')
|
||||
screw = fields.Float('配备螺丝(mm)')
|
||||
radius = fields.Float('刀尖圆角半径')
|
||||
accuracy = fields.Char('精度等级')
|
||||
hardness = fields.Char('硬度(°)')
|
||||
scope = fields.Char('适用范围')
|
||||
image = fields.Binary('图片')
|
||||
|
||||
|
||||
# 刀杆类型
|
||||
class CutterBarModel(models.Model):
|
||||
_name = 'sf.cutter.bar.model'
|
||||
_description = '刀杆类型'
|
||||
|
||||
code = fields.Char('编码')
|
||||
name = fields.Char('名称')
|
||||
# 关联刀具物料
|
||||
cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料')
|
||||
remark = fields.Char('备注')
|
||||
|
||||
|
||||
# 刀盘
|
||||
class CutterPad(models.Model):
|
||||
_name = 'sf.cutter.pad'
|
||||
_description = '刀盘'
|
||||
|
||||
code = fields.Char('编码')
|
||||
name = fields.Char('型号名称')
|
||||
# 关联刀具物料
|
||||
cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料')
|
||||
# 刀盘类型字段,关联刀盘类型对象
|
||||
cutter_pad_model_number = fields.Many2one('sf.cutter.pad.model', '刀盘类型')
|
||||
# 增加品牌、C柄径(mm)、L总长(mm)、材料型号、刃数、D刃径(mm)、适用刀片型号、配对扳手(mm)、配备螺丝(mm)、刀尖圆角半径、精度等级、硬度(°)、适用范围、图片、创建人、创建时间
|
||||
brand = fields.Many2one('sf.machine.brand', '品牌')
|
||||
c_diameter = fields.Float('C柄径(mm)')
|
||||
total_length = fields.Float('L总长(mm)')
|
||||
material_model = fields.Many2one('sf.materials.model', '材料型号')
|
||||
blade_number = fields.Integer('刃数')
|
||||
d_diameter = fields.Float('D刃径(mm)')
|
||||
blade = fields.Many2many('sf.blade', string='适用刀片型号')
|
||||
wrench = fields.Float('配对扳手(mm)')
|
||||
screw = fields.Float('配备螺丝(mm)')
|
||||
radius = fields.Float('刀尖圆角半径')
|
||||
accuracy = fields.Char('精度等级')
|
||||
hardness = fields.Char('硬度(°)')
|
||||
scope = fields.Char('适用范围')
|
||||
image = fields.Binary('图片')
|
||||
|
||||
|
||||
# 刀盘类型
|
||||
class CutterPadModel(models.Model):
|
||||
_name = 'sf.cutter.pad.model'
|
||||
_description = '刀盘类型'
|
||||
|
||||
code = fields.Char('编码')
|
||||
name = fields.Char('名称')
|
||||
# 关联刀具物料
|
||||
cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料')
|
||||
remark = fields.Char('备注')
|
||||
|
||||
|
||||
# 刀柄
|
||||
class Handle(models.Model):
|
||||
_name = 'sf.handle'
|
||||
_description = '刀柄'
|
||||
|
||||
code = fields.Char('编码')
|
||||
name = fields.Char('型号名称')
|
||||
# 关联刀具物料
|
||||
cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料')
|
||||
# 刀柄类型字段,关联刀柄类型对象
|
||||
handle_model_number = fields.Many2one('sf.handle.model', '刀柄类型')
|
||||
# 增加、刀柄类型、品牌、L(mm)、L1(mm)、D1(mm)、重量(kg)、材料型号、本体精度(mm)、配对螺母(mm)、适用夹头型号、夹持范围(mm)、检测精度、检测硬度、标准转速、图片、创建人、创建时间
|
||||
brand = fields.Many2one('sf.machine.brand', '品牌')
|
||||
length = fields.Float('L(mm)')
|
||||
length1 = fields.Float('L1(mm)')
|
||||
diameter1 = fields.Float('D1(mm)')
|
||||
weight = fields.Float('重量(kg)')
|
||||
material_model = fields.Many2one('sf.materials.model', '材料型号')
|
||||
body_accuracy = fields.Float('本体精度(mm)')
|
||||
nut = fields.Float('配对螺母(mm)')
|
||||
chuck_model = fields.Many2many('sf.chuck.model', string='适用夹头型号')
|
||||
clamping_range = fields.Float('夹持范围(mm)')
|
||||
detection_accuracy = fields.Float('检测精度')
|
||||
detection_hardness = fields.Char('检测硬度')
|
||||
standard_speed = fields.Float('标准转速')
|
||||
image = fields.Binary('图片')
|
||||
|
||||
|
||||
# 刀柄类型
|
||||
class HandleModel(models.Model):
|
||||
_name = 'sf.handle.model'
|
||||
_description = '刀柄类型'
|
||||
|
||||
code = fields.Char('编码')
|
||||
name = fields.Char('名称')
|
||||
# 关联刀具物料
|
||||
cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料')
|
||||
remark = fields.Char('备注')
|
||||
|
||||
|
||||
# 夹头对象(夹头型号对象)
|
||||
class Chuck(models.Model):
|
||||
_name = 'sf.chuck'
|
||||
_description = '夹头'
|
||||
_rec_name = 'code'
|
||||
|
||||
code = fields.Char('编码')
|
||||
name = fields.Char('型号名称')
|
||||
# 关联刀具物料
|
||||
cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料')
|
||||
# 夹头类型字段,关联夹头类型对象
|
||||
chuck_model_number = fields.Many2one('sf.chuck.model', '夹头类型')
|
||||
# 增加品牌、精度(mm)、外径(mm)、内径(mm)、高度(mm)、材料型号、配对螺母(mm)、适用刀柄型号、夹持范围(mm)、特性、图片、创建人、创建时间
|
||||
brand = fields.Many2one('sf.machine.brand', '品牌')
|
||||
accuracy = fields.Float('精度(mm)')
|
||||
diameter = fields.Float('外径(mm)')
|
||||
inner_diameter = fields.Float('内径(mm)')
|
||||
height = fields.Float('高度(mm)')
|
||||
material_model = fields.Many2one('sf.materials.model', '材料型号')
|
||||
nut = fields.Float('配对螺母(mm)')
|
||||
handle_model = fields.Many2many('sf.handle.model', string='适用刀柄型号')
|
||||
clamping_range = fields.Float('夹持范围(mm)')
|
||||
feature = fields.Char('特性')
|
||||
image = fields.Binary('图片')
|
||||
|
||||
|
||||
# 夹头类型
|
||||
class ChuckModel(models.Model):
|
||||
_name = 'sf.chuck.model'
|
||||
_description = '夹头类型'
|
||||
|
||||
code = fields.Char('编码')
|
||||
name = fields.Char('名称')
|
||||
# 关联刀具物料
|
||||
cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料')
|
||||
remark = fields.Char('备注')
|
||||
@@ -103,6 +103,14 @@ class CuttingToolType(models.Model):
|
||||
remark = fields.Char('备注')
|
||||
active = fields.Boolean('有效', default=True)
|
||||
|
||||
def _get_ids(self, cutting_tool_type_code):
|
||||
cutting_tool_type_ids = []
|
||||
for item in cutting_tool_type_code:
|
||||
cutting_tool_type = self.search([('code', '=', item)])
|
||||
if cutting_tool_type:
|
||||
cutting_tool_type_ids.append(cutting_tool_type.id)
|
||||
return [(6, 0, cutting_tool_type_ids)]
|
||||
|
||||
|
||||
# 刀具标准库
|
||||
class CuttingToolModel(models.Model):
|
||||
@@ -148,13 +156,28 @@ class CuttingToolModel(models.Model):
|
||||
'适合冷却液', domain=[('type', '=', '冷却液')])
|
||||
compaction_way_ids = fields.Many2many('maintenance.equipment.image', 'compaction_way_library_rel',
|
||||
'压紧方式', domain=[('type', '=', '压紧方式')])
|
||||
basic_parameters_ids = fields.One2many('sf.tool.materials.basic.parameters',
|
||||
'standard_library_id', string='基本参数')
|
||||
integral_tool_basic_parameters_ids = fields.One2many('sf.tool.materials.basic.parameters',
|
||||
'standard_library_id', string='整体式刀具基本参数')
|
||||
blade_basic_parameters_ids = fields.One2many('sf.tool.materials.basic.parameters',
|
||||
'standard_library_id', string='刀片基本参数')
|
||||
cutter_bar_basic_parameters_ids = fields.One2many('sf.tool.materials.basic.parameters',
|
||||
'standard_library_id', string='刀杆基本参数')
|
||||
cutter_head_basic_parameters_ids = fields.One2many('sf.tool.materials.basic.parameters',
|
||||
'standard_library_id', string='刀盘基本参数')
|
||||
knife_handle_basic_parameters_ids = fields.One2many('sf.tool.materials.basic.parameters',
|
||||
'standard_library_id', string='刀柄基本参数')
|
||||
chuck_basic_parameters_ids = fields.One2many('sf.tool.materials.basic.parameters',
|
||||
'standard_library_id', string='夹头基本参数')
|
||||
cutting_speed_ids = fields.One2many('sf.cutting.speed', 'standard_library_id', string='切削速度Vc')
|
||||
feed_per_tooth_ids = fields.One2many('sf.feed.per.tooth', 'standard_library_id', '每齿走刀量fz')
|
||||
|
||||
feed_per_tooth_ids = fields.One2many('sf.feed.per.tooth', 'standard_library_id', '每齿走刀量fz',
|
||||
domain=[('cutting_speed', '!=', False)])
|
||||
feed_per_tooth_ids_2 = fields.One2many('sf.feed.per.tooth', 'standard_library_id', '每齿走刀量fz',
|
||||
domain=[('machining_method', '!=', False)])
|
||||
feed_per_tooth_ids_3 = fields.One2many('sf.feed.per.tooth', 'standard_library_id', '每齿走刀量fz',
|
||||
domain=[('cutting_speed', '!=', False)])
|
||||
feed_per_tooth_ids_4 = fields.One2many('sf.feed.per.tooth', 'standard_library_id', '每齿走刀量fz',
|
||||
domain=[('machining_method', '!=', False)])
|
||||
material_model_id = fields.Many2one('sf.materials.model', '材料型号')
|
||||
nut = fields.Float('配对螺母(mm)')
|
||||
# 适用夹头型号可以多选
|
||||
chuck_ids = fields.Many2many(
|
||||
'sf.cutting.tool.type',
|
||||
@@ -163,8 +186,6 @@ class CuttingToolModel(models.Model):
|
||||
column2='model_id_2',
|
||||
domain="[('cutting_tool_material_id.name', '=', '夹头')]",
|
||||
string='适用夹头型号')
|
||||
|
||||
working_hardness = fields.Char('加工硬度(hrc)')
|
||||
cutter_bar_ids = fields.Many2many(
|
||||
'sf.cutting.tool.type',
|
||||
relation='cutting_tool_type_library_cutter_bar_rel',
|
||||
@@ -182,7 +203,6 @@ class CuttingToolModel(models.Model):
|
||||
string='适用刀盘型号' # 使用空列表作为默认值
|
||||
)
|
||||
# 刀杆/参数
|
||||
blade_diameter = fields.Float('刃径(mm)')
|
||||
blade_ids = fields.Many2many(
|
||||
'sf.cutting.tool.type',
|
||||
relation='cutting_tool_type_library_pad_blade_rel',
|
||||
@@ -202,8 +222,8 @@ class CuttingToolModel(models.Model):
|
||||
active = fields.Boolean('有效', default=True)
|
||||
is_cloud = fields.Boolean('云端数据', default=False)
|
||||
|
||||
def get_cutter_bar_ids(self):
|
||||
return self.cutter_bar_ids
|
||||
# def get_cutter_bar_ids(self):
|
||||
# return self.cutter_bar_ids
|
||||
|
||||
|
||||
class MaintenanceStandardImage(models.Model):
|
||||
@@ -219,6 +239,14 @@ class MaintenanceStandardImage(models.Model):
|
||||
string='特征')
|
||||
equipment_id = fields.Many2many('maintenance.equipment', 'image_id', string='设备')
|
||||
|
||||
def _get_ids(self, name_arr):
|
||||
ability_feature_ids = []
|
||||
for item in name_arr:
|
||||
ability_feature = self.search([('name', '=', item)])
|
||||
if ability_feature:
|
||||
ability_feature_ids.append(ability_feature.id)
|
||||
return [(6, 0, ability_feature_ids)]
|
||||
|
||||
@api.model
|
||||
def name_search(self, name='', args=None, operator='ilike', limit=100):
|
||||
# 调用父类的name_search方法,获取原始的结果列表
|
||||
|
||||
@@ -113,6 +113,7 @@ class ToolMaterialsBasicParameters(models.Model):
|
||||
weight = fields.Char('重量(kg)', size=20)
|
||||
clamping_length = fields.Char('夹持长度(mm)', size=20)
|
||||
clamping_tolerance = fields.Char('夹持公差(mm)', size=20)
|
||||
cooling_jacket = fields.Char('适用冷却套型号', size=50)
|
||||
handle_ids = fields.Many2many(
|
||||
'sf.cutting.tool.type',
|
||||
relation='basic_param_chuck_handle_rel',
|
||||
@@ -122,25 +123,33 @@ class ToolMaterialsBasicParameters(models.Model):
|
||||
string='适用刀柄型号'
|
||||
)
|
||||
|
||||
def _json_basic_param(self, obj):
|
||||
basic_param_str = [0, '', {
|
||||
def _json_integral_tool_basic_param(self, obj):
|
||||
integral_tool_basic_param_str = (0, '', {
|
||||
'code': obj['code'],
|
||||
'cutting_tool_type': obj['cutting_tool_type'],
|
||||
'total_length': obj['total_length'],
|
||||
'blade_diameter': obj['blade_diameter'],
|
||||
'blade_length': obj['blade_length'],
|
||||
'blade_number': obj['blade_number'],
|
||||
'neck_diameter': obj['neck_diameter'],
|
||||
'neck_length': obj['neck_length'],
|
||||
'neck_diameter': obj['neck_diameter'],
|
||||
'handle_diameter': obj['handle_diameter'],
|
||||
'handle_length': obj['handle_length'],
|
||||
'blade_tip_diameter': obj['blade_tip_diameter'],
|
||||
'blade_tip_working_size': obj['blade_tip_working_size'],
|
||||
'blade_tip_taper': obj['blade_tip_taper'],
|
||||
'blade_diameter': obj['blade_diameter'],
|
||||
'blade_length': obj['blade_length'],
|
||||
'blade_helix_angle': obj['blade_helix_angle'],
|
||||
'blade_width': obj['blade_width'],
|
||||
'blade_depth': obj['blade_depth'],
|
||||
'pitch': obj['pitch'],
|
||||
'cutting_depth': obj['cutting_depth'],
|
||||
})
|
||||
return integral_tool_basic_param_str
|
||||
|
||||
def _json_blade_basic_param(self, obj):
|
||||
blade_basic_param_str = (0, '', {
|
||||
'code': obj['code'],
|
||||
'cutting_tool_type': obj['cutting_tool_type'],
|
||||
'length': obj['length'],
|
||||
'thickness': obj['thickness'],
|
||||
'width': obj['width'],
|
||||
@@ -149,9 +158,12 @@ class ToolMaterialsBasicParameters(models.Model):
|
||||
'blade_tip_circular_arc_radius': obj['blade_tip_circular_arc_radius'],
|
||||
'inscribed_circle_diameter': obj['inscribed_circle_diameter'],
|
||||
'install_aperture_diameter': obj['install_aperture_diameter'],
|
||||
'pitch': obj['pitch'],
|
||||
'chip_breaker_groove': obj['chip_breaker_groove'],
|
||||
'blade_teeth_model': obj['bladed_teeth_model'],
|
||||
'blade_blade_number': obj['blade_blade_number'],
|
||||
'cutting_depth': obj['cutting_depth'],
|
||||
'blade_width': obj['blade_width'],
|
||||
'main_included_angle': obj['main_included_angle'],
|
||||
'top_angle': obj['top_angle'],
|
||||
'blade_tip_dip_angle': obj['blade_tip_dip_angle'],
|
||||
@@ -161,22 +173,68 @@ class ToolMaterialsBasicParameters(models.Model):
|
||||
'blade_tip_height_tolerance': obj['blade_tip_height_tolerance'],
|
||||
'inscribed_circle_tolerance': obj['inscribed_circle_tolerance'],
|
||||
'thickness_tolerance': obj['thickness_tolerance'],
|
||||
})
|
||||
return blade_basic_param_str
|
||||
|
||||
def _json_cutter_arbor_basic_param(self, obj):
|
||||
cutter_arbor_basic_param_str = (0, '', {
|
||||
'code': obj['code'],
|
||||
'cutting_tool_type': obj['cutting_tool_type'],
|
||||
'height': obj['height'],
|
||||
'width': obj['width'],
|
||||
'blade_height': obj['blade_height'],
|
||||
'total_length': obj['total_length'],
|
||||
'blade_width': obj['blade_width'],
|
||||
'blade_length': obj['blade_length'],
|
||||
'blade_height': obj['blade_height'],
|
||||
'cutter_arbor_diameter': obj['cutter_arbor_diameter'],
|
||||
'main_included_angle': obj['main_included_angle'],
|
||||
'relief_angle': obj['relief_angle'],
|
||||
'cutting_depth': obj['cutting_depth'],
|
||||
'min_machining_aperture': obj['min_machining_aperture'],
|
||||
'install_blade_tip_num': obj['install_blade_tip_num'],
|
||||
'cutting_blade_model': obj['cutting_blade_model'],
|
||||
'cooling_hole': obj['cooling_hole'],
|
||||
'locating_slot_code': obj['locating_slot_code'],
|
||||
'installing_structure': obj['installing_structure'],
|
||||
'blade_ids': [(6, 0, [])] if not obj.get('blade_codes') else self.evn['sf.cutting.tool.type']._get_ids(
|
||||
obj['blade_codes']),
|
||||
'tool_shim': obj['tool_shim'],
|
||||
'cotter_pin': obj['cotter_pin'],
|
||||
'pressing_plate': obj['pressing_plate'],
|
||||
'screw': obj['screw'],
|
||||
'spanner': obj['spanner'],
|
||||
})
|
||||
return cutter_arbor_basic_param_str
|
||||
|
||||
def _json_cutter_head_basic_param(self, obj):
|
||||
cutter_head_basic_param_str = (0, '', {
|
||||
'code': obj['code'],
|
||||
'cutting_tool_type': obj['cutting_tool_type'],
|
||||
'install_blade_tip_num': obj['install_blade_tip_num'],
|
||||
'blade_diameter': obj['blade_diameter'],
|
||||
'cutter_head_diameter': obj['cutter_head_diameter'],
|
||||
'interface_diameter': obj['interface_diameter'],
|
||||
'total_length': obj['total_length'],
|
||||
'blade_length': obj['blade_length'],
|
||||
'cutting_depth': obj['cutting_depth'],
|
||||
'main_included_angle': obj['main_included_angle'],
|
||||
'installing_structure': obj['installing_structure'],
|
||||
'blade_ids': [(6, 0, [])] if not obj.get('blade_codes') else self.evn['sf.cutting.tool.type']._get_ids(
|
||||
obj['blade_codes']),
|
||||
'screw': obj['screw'],
|
||||
'spanner': obj['spanner'],
|
||||
'cutting_blade_model': obj['cutting_blade_model'],
|
||||
'cooling_hole': obj['cooling_hole'],
|
||||
'locating_slot_code': obj['locating_slot_code'],
|
||||
})
|
||||
return cutter_head_basic_param_str
|
||||
|
||||
def _json_knife_handle_basic_param(self, obj):
|
||||
knife_handle_basic_param_str = (0, '', {
|
||||
'code': obj['code'],
|
||||
'cutting_tool_type': obj['cutting_tool_type'],
|
||||
'total_length': obj['total_length'],
|
||||
'flange_shank_length': obj['flange_shank_length'],
|
||||
'handle_external_diameter': obj['handle_external_diameter'],
|
||||
'handle_inside_diameter': obj['handle_inside_diameter'],
|
||||
@@ -190,23 +248,40 @@ class ToolMaterialsBasicParameters(models.Model):
|
||||
'max_rotate_speed': obj['max_rotate_speed'],
|
||||
'diameter_slip_accuracy': obj['diameter_slip_accuracy'],
|
||||
'cooling_model': obj['cooling_model'],
|
||||
'is_rough_machining': obj['is_rough_machining'],
|
||||
'is_finish_machining': obj['is_finish_machining'],
|
||||
'is_quick_cutting': obj['is_quick_cutting'],
|
||||
'is_drill_hole': obj['is_drill_hole'],
|
||||
'is_safe_lock': obj['is_safe_lock'],
|
||||
'is_rough_machining': obj['whether_rough_machining'],
|
||||
'is_finish_machining': obj['whether_finish_machining'],
|
||||
'is_quick_cutting': obj['whether_quick_cutting'],
|
||||
'is_drill_hole': obj['whether_drill_hole'],
|
||||
'is_safe_lock': obj['whether_safe_lock'],
|
||||
'screw': obj['screw'],
|
||||
'spanner': obj['spanner'],
|
||||
})
|
||||
return knife_handle_basic_param_str
|
||||
|
||||
def _json_chuck_basic_param(self, obj):
|
||||
chuck_basic_param_str = (0, '', {
|
||||
'code': obj['code'],
|
||||
'cutting_tool_type': obj['cutting_tool_type'],
|
||||
'er_size_model': obj['er_size_model'],
|
||||
'min_clamping_diameter': obj['min_clamping_diameter'],
|
||||
'max_clamping_diameter': obj['max_clamping_diameter'],
|
||||
'outer_diameter': obj['outer_diameter'],
|
||||
'inner_diameter': obj['inner_diameter'],
|
||||
'run_out_accuracy': obj['run_out_accuracy'],
|
||||
'total_length': obj['total_length'],
|
||||
'taper': obj['taper'],
|
||||
'run_out_accuracy': obj['run_out_accuracy'],
|
||||
'top_diameter': obj['top_diameter'],
|
||||
'weight': obj['weight'],
|
||||
'clamping_mode': obj['clamping_mode'],
|
||||
'clamping_length': obj['clamping_length'],
|
||||
'clamping_tolerance': obj['clamping_tolerance'],
|
||||
'handle_ids': obj['weight'],
|
||||
'blade_ids': obj['clamping_length'],
|
||||
}]
|
||||
return basic_param_str
|
||||
'max_load_capacity': obj['max_load_capacity'],
|
||||
'handle_ids': [(6, 0, [])] if not obj.get(
|
||||
'handle_codes') else self.evn['sf.cutting.tool.type']._get_ids(obj['handle_codes']),
|
||||
'cooling_jacket': obj['cooling_jacket'],
|
||||
})
|
||||
return chuck_basic_param_str
|
||||
|
||||
|
||||
class CuttingSpeed(models.Model):
|
||||
@@ -215,11 +290,13 @@ class CuttingSpeed(models.Model):
|
||||
|
||||
# product_template_id = fields.Many2one('product.template', string='产品')
|
||||
standard_library_id = fields.Many2one('sf.cutting_tool.standard.library', string='标准库')
|
||||
execution_standard_id = fields.Char('执行标准')
|
||||
execution_standard_id = fields.Many2one('sf.international.standards', string='执行标准', store=True)
|
||||
material_code = fields.Char('材料代号')
|
||||
material_name = fields.Char('材料名称')
|
||||
material_id = fields.Many2one('sf.materials.model', '材料名称',
|
||||
domain="[('standards_id', '=', execution_standard_id)]")
|
||||
slope_milling_angle = fields.Integer('坡铣角度(°)')
|
||||
material_grade = fields.Char('材料牌号')
|
||||
tensile_strength = fields.Float('拉伸强度 (N/mm²)')
|
||||
tensile_strength = fields.Char('拉伸强度 (N/mm²)')
|
||||
hardness = fields.Float('硬度(HRC)')
|
||||
cutting_speed_n1 = fields.Char('径向切宽 ae=100%D1 ap=1*D1 切削速度Vc')
|
||||
cutting_speed_n2 = fields.Char('径向切宽 ae=50%D1 ap=1.5*D1 切削速度Vc')
|
||||
@@ -231,10 +308,11 @@ class CuttingSpeed(models.Model):
|
||||
application = fields.Selection([('主应用', '主应用'), ('次应用', '次应用')], '主/次应用')
|
||||
|
||||
def _json_cutting_speed(self, obj):
|
||||
cutting_speed_str = [0, '', {
|
||||
'execution_standard_id': obj['execution_standard_id'],
|
||||
cutting_speed_str = (0, '', {
|
||||
'execution_standard_id': self.env['sf.international.standards'].search(
|
||||
[('code', '=', obj['execution_standard_code'])]).id,
|
||||
'material_code': obj['material_code'],
|
||||
'material_name': obj['material_name'],
|
||||
'material_id': self.env['sf.materials.model'].search([('materials_no', '=', obj['material_name_code'])]).id,
|
||||
'material_grade': obj['material_grade'],
|
||||
'tensile_strength': obj['tensile_strength'],
|
||||
'hardness': obj['hardness'],
|
||||
@@ -246,36 +324,57 @@ class CuttingSpeed(models.Model):
|
||||
'rough_machining': obj['rough_machining'],
|
||||
'precision_machining': obj['precision_machining'],
|
||||
'application': obj['application'],
|
||||
}]
|
||||
})
|
||||
return cutting_speed_str
|
||||
|
||||
|
||||
class FeedPerTooth(models.Model):
|
||||
_name = 'sf.feed.per.tooth'
|
||||
_description = '每齿走刀量fz'
|
||||
_order = 'machining_method desc, blade_diameter, materials_type_id'
|
||||
|
||||
# product_template_id = fields.Many2one('product.template', string='产品')
|
||||
standard_library_id = fields.Many2one('sf.cutting_tool.standard.library', string='标准库')
|
||||
|
||||
cutting_speed = fields.Char('径向切宽 ae(mm)')
|
||||
machining_method = fields.Selection([('直铣', '直铣'), ('坡铣', '坡铣')], string='加工方式')
|
||||
materials_type_id = fields.Many2one('sf.materials.model', string='材料型号')
|
||||
# blade_diameter = fields.Float('刃部直径D1(mm)', readonly=True,
|
||||
# related='product_template_id.cutting_tool_blade_diameter')
|
||||
blade_diameter = fields.Char('刃部直径(mm)', readonly=True)
|
||||
feed_per_tooth = fields.Char('每齿走刀量 (mm/z)')
|
||||
unit = fields.Char('单位', default='fz')
|
||||
|
||||
def _json_feed_per_tooth(self, obj):
|
||||
feed_per_tooth_str = [0, '', {
|
||||
feed_per_tooth_str = (0, '', {
|
||||
'cutting_speed': obj['cutting_speed'],
|
||||
'machining_method': obj['machining_method'],
|
||||
'materials_type_id': obj['materials_type_id'],
|
||||
# 'blade_diameter': obj['blade_diameter'],
|
||||
'blade_diameter': obj['blade_diameter'],
|
||||
'feed_per_tooth': obj['feed_per_tooth'],
|
||||
'unit': obj['unit'],
|
||||
}]
|
||||
})
|
||||
return feed_per_tooth_str
|
||||
|
||||
def _json_feed_per_tooth_2(self, obj):
|
||||
feed_per_tooth_2_str = (0, '', {
|
||||
'machining_method': obj['machining_method'],
|
||||
'materials_type_id': self.env['sf.materials.model'].search(
|
||||
[('materials_no', '=', obj['materials_type_code'])]).id,
|
||||
'blade_diameter': obj['blade_diameter'],
|
||||
'feed_per_tooth': obj['feed_per_tooth'],
|
||||
})
|
||||
return feed_per_tooth_2_str
|
||||
|
||||
def _json_feed_per_tooth_3(self, obj):
|
||||
feed_per_tooth_3_str = (0, '', {
|
||||
'cutting_speed': obj['cutting_speed'],
|
||||
'feed_per_tooth': obj['feed_per_tooth'],
|
||||
})
|
||||
return feed_per_tooth_3_str
|
||||
|
||||
def _json_feed_per_tooth_4(self, obj):
|
||||
feed_per_tooth_4_str = (0, '', {
|
||||
'machining_method': obj['machining_method'],
|
||||
'materials_type_id': self.env['sf.materials.model'].search(
|
||||
[('materials_no', '=', obj['materials_type_code'])]).id,
|
||||
'feed_per_tooth': obj['feed_per_tooth'],
|
||||
})
|
||||
return feed_per_tooth_4_str
|
||||
|
||||
# @api.depends('product_template_id')
|
||||
# def _compute_product_template_id(self):
|
||||
# if self.product_template_id is not None:
|
||||
|
||||
@@ -249,65 +249,227 @@
|
||||
<field name="suitable_coolant_ids" string="" widget="custom_many2many_checkboxes"/>
|
||||
</group>
|
||||
</group>
|
||||
<!-- <notebook>-->
|
||||
<!-- <page string="基本参数">-->
|
||||
<!-- <field name="tool_materials_basic_parameters_ids">-->
|
||||
<!-- <tree editable="bottom" class="center">-->
|
||||
<!-- <field name="code"/>-->
|
||||
<!-- <field name="total_length"/>-->
|
||||
<!-- <field name="blade_diameter"/>-->
|
||||
<!-- <field name="blade_length"/>-->
|
||||
<!-- <field name="blade_number"/>-->
|
||||
<!-- <field name="neck_length"/>-->
|
||||
<!-- <field name="neck_diameter"/>-->
|
||||
<!-- <field name="handle_length"/>-->
|
||||
<!-- <field name="handle_diameter"/>-->
|
||||
<!-- <field name="blade_tip_diameter"/>-->
|
||||
<!-- <field name="blade_tip_working_size"/>-->
|
||||
<!-- <field name="blade_tip_taper"/>-->
|
||||
<!-- <field name="blade_helix_angle"/>-->
|
||||
<!-- <field name="blade_width"/>-->
|
||||
<!-- <field name="blade_depth"/>-->
|
||||
<!-- <field name="pitch"/>-->
|
||||
<!-- <field name="cutting_depth"/>-->
|
||||
<!-- </tree>-->
|
||||
<!-- </field>-->
|
||||
<!-- </page>-->
|
||||
<!-- <page string="切削速度Vc"-->
|
||||
<!-- attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片'))]}">-->
|
||||
<!-- <field name="cutting_speed_ids">-->
|
||||
<!-- <tree editable="bottom" class="center">-->
|
||||
<!-- <field name="execution_standard_id"/>-->
|
||||
<!-- <field name="material_code"/>-->
|
||||
<!-- <field name="material_name_id"/>-->
|
||||
<!-- <field name="material_grade"/>-->
|
||||
<!-- <field name="tensile_strength"/>-->
|
||||
<!-- <field name="hardness"/>-->
|
||||
<!-- <field name="cutting_speed_n1"/>-->
|
||||
<!-- <field name="cutting_speed_n2"/>-->
|
||||
<!-- <field name="cutting_speed_n3"/>-->
|
||||
<!-- <field name="cutting_speed_n4"/>-->
|
||||
<!-- <field name="cutting_speed_n5"/>-->
|
||||
<!-- <field name="rough_machining"/>-->
|
||||
<!-- <field name="precision_machining"/>-->
|
||||
<!-- <field name="application"/>-->
|
||||
<!-- </tree>-->
|
||||
<!-- </field>-->
|
||||
<!-- </page>-->
|
||||
<!-- <page string="每齿走刀量fz"-->
|
||||
<!-- attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片'))]}">-->
|
||||
<!-- <field name="feed_per_tooth_ids">-->
|
||||
<!-- <tree editable="bottom" class="center">-->
|
||||
<!-- <field name="cutting_speed"/>-->
|
||||
<!-- <field name="machining_method"/>-->
|
||||
<!-- <field name="materials_type_id"/>-->
|
||||
<!-- <field name="blade_diameter"/>-->
|
||||
<!-- <field name="feed_per_tooth"/>-->
|
||||
<!-- <field name="unit"/>-->
|
||||
<!-- </tree>-->
|
||||
<!-- </field>-->
|
||||
<!-- </page>-->
|
||||
<!-- </notebook>-->
|
||||
<notebook>
|
||||
<page string="基本参数">
|
||||
<field name="integral_tool_basic_parameters_ids" import_button="true"
|
||||
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}">
|
||||
<tree editable="bottom" class="center" delete="1">
|
||||
<field name="cutting_tool_type" invisible="1"/>
|
||||
<field name="code"/>
|
||||
<field name="total_length"/>
|
||||
<field name="blade_diameter" class="diameter"/>
|
||||
<field name="blade_length"/>
|
||||
<field name="blade_number" placeholder="请选择"/>
|
||||
<field name="neck_length"/>
|
||||
<field name="neck_diameter" class="diameter"/>
|
||||
<field name="handle_diameter" class="diameter"/>
|
||||
<field name="handle_length"/>
|
||||
<field name="blade_tip_working_size" class="du"/>
|
||||
<field name="blade_tip_diameter" class="diameter"/>
|
||||
<field name="blade_tip_taper" class="du"/>
|
||||
<field name="blade_helix_angle" class="du"/>
|
||||
<field name="pitch"/>
|
||||
<field name="blade_width"/>
|
||||
<field name="blade_depth"/>
|
||||
<field name="cutting_depth"/>
|
||||
</tree>
|
||||
</field>
|
||||
|
||||
<field name="blade_basic_parameters_ids"
|
||||
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')]}">
|
||||
<tree editable="bottom" class="center" delete="1">
|
||||
<field name="cutting_tool_type" invisible="1"/>
|
||||
<field name="code"/>
|
||||
<field name="length"/>
|
||||
<field name="thickness"/>
|
||||
<field name="width"/>
|
||||
<field name="cutting_blade_length"/>
|
||||
<field name="relief_angle" class="du"/>
|
||||
<field name="blade_tip_circular_arc_radius"/>
|
||||
<field name="inscribed_circle_diameter" class="diameter"/>
|
||||
<field name="install_aperture_diameter" class="diameter"/>
|
||||
<field name="pitch"/>
|
||||
<field name="chip_breaker_groove" placeholder="请选择"/>
|
||||
<field name="blade_teeth_model" placeholder="请选择"/>
|
||||
<field name="cutting_depth" string="最大切削深度(mm)"/>
|
||||
<field name="blade_blade_number" string="刃数(个)"/>
|
||||
<field name="blade_width" string="刃宽(mm)"/>
|
||||
<field name="main_included_angle"/>
|
||||
<field name="top_angle"/>
|
||||
<field name="blade_tip_dip_angle"/>
|
||||
<field name="side_cutting_edge_angle"/>
|
||||
<field name="thread_model" placeholder="请选择"/>
|
||||
<field name="thread_num"/>
|
||||
<field name="blade_tip_height_tolerance"/>
|
||||
<field name="inscribed_circle_tolerance"/>
|
||||
<field name="thickness_tolerance"/>
|
||||
</tree>
|
||||
</field>
|
||||
<field name="cutter_bar_basic_parameters_ids"
|
||||
attrs="{'invisible': [('cutting_tool_type', '!=', '刀杆')]}">
|
||||
<tree editable="bottom" class="center" delete="1">
|
||||
<field name="cutting_tool_type" invisible="1"/>
|
||||
<field name="code"/>
|
||||
<field name="height"/>
|
||||
<field name="width"/>
|
||||
<field name="total_length"/>
|
||||
<field name="blade_height"/>
|
||||
<field name="blade_width"/>
|
||||
<field name="blade_length"/>
|
||||
<field name="blade_diameter" class="diameter"/>
|
||||
<field name="cutter_arbor_diameter" class="diameter"/>
|
||||
<field name="main_included_angle" class="du"/>
|
||||
<field name="relief_angle" class="du"/>
|
||||
<field name="cutting_depth" string="最大切削深度(mm)"/>
|
||||
<field name="min_machining_aperture" class="diameter"/>
|
||||
<field name="install_blade_tip_num"/>
|
||||
<field name="cutting_blade_model"/>
|
||||
<field name="cooling_hole" placeholder="请选择"/>
|
||||
<field name="locating_slot_code"/>
|
||||
<field name="installing_structure"/>
|
||||
<field name="blade_ids" widget="many2many_tags" placeholder="请选择"/>
|
||||
<field name="tool_shim"/>
|
||||
<field name="cotter_pin"/>
|
||||
<field name="pressing_plate"/>
|
||||
<field name="screw"/>
|
||||
<field name="spanner"/>
|
||||
</tree>
|
||||
</field>
|
||||
|
||||
<field name="cutter_head_basic_parameters_ids"
|
||||
attrs="{'invisible': [('cutting_tool_type', '!=', '刀盘')]}">
|
||||
<tree editable="bottom" class="center" delete="1">
|
||||
<field name="cutting_tool_type" invisible="1"/>
|
||||
<field name="code"/>
|
||||
<field name="install_blade_tip_num"/>
|
||||
<field name="blade_diameter" class="diameter"/>
|
||||
<field name="cutter_head_diameter" class="diameter"/>
|
||||
<field name="interface_diameter" class="diameter"/>
|
||||
<field name="total_length"/>
|
||||
<field name="blade_length"/>
|
||||
<field name="cutting_depth" string="最大切削深度(mm)"/>
|
||||
<field name="main_included_angle" class="du"/>
|
||||
<field name="installing_structure"/>
|
||||
<field name="blade_ids" widget="many2many_tags" placeholder="请选择"/>
|
||||
<field name="screw"/>
|
||||
<field name="spanner"/>
|
||||
<field name="cutting_blade_model"/>
|
||||
<field name="cooling_hole" placeholder="请选择"/>
|
||||
<field name="locating_slot_code"/>
|
||||
</tree>
|
||||
</field>
|
||||
|
||||
<field name="knife_handle_basic_parameters_ids"
|
||||
attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')]}">
|
||||
<tree editable="bottom" class="center" delete="1">
|
||||
<field name="cutting_tool_type" invisible="1"/>
|
||||
<field name="code"/>
|
||||
<field name="total_length"/>
|
||||
<field name="flange_shank_length"/>
|
||||
<field name="handle_external_diameter" class="diameter"/>
|
||||
<field name="handle_inside_diameter" class="diameter"/>
|
||||
<field name="min_clamping_diameter" class="diameter"/>
|
||||
<field name="max_clamping_diameter" class="diameter"/>
|
||||
<field name="clamping_mode"/>
|
||||
<field name="max_load_capacity"/>
|
||||
<field name="taper" class="du"/>
|
||||
<field name="tool_changing_time"/>
|
||||
<field name="standard_rotate_speed"/>
|
||||
<field name="max_rotate_speed"/>
|
||||
<field name="diameter_slip_accuracy"/>
|
||||
<field name="cooling_model"/>
|
||||
<field name="is_rough_machining" placeholder="请选择"/>
|
||||
<field name="is_finish_machining" placeholder="请选择"/>
|
||||
<field name="is_quick_cutting" placeholder="请选择"/>
|
||||
<field name="is_drill_hole" placeholder="请选择"/>
|
||||
<field name="is_safe_lock" placeholder="请选择"/>
|
||||
<field name="screw"/>
|
||||
<field name="spanner"/>
|
||||
</tree>
|
||||
</field>
|
||||
<field name="chuck_basic_parameters_ids"
|
||||
attrs="{'invisible': [('cutting_tool_type', '!=', '夹头')]}">
|
||||
<tree editable="bottom" class="center" delete="1">
|
||||
<field name="cutting_tool_type" invisible="1"/>
|
||||
<field name="code"/>
|
||||
<field name="er_size_model"/>
|
||||
<field name="min_clamping_diameter" class="diameter" required="1"/>
|
||||
<field name="max_clamping_diameter" class="diameter"/>
|
||||
<field name="outer_diameter" class="diameter"/>
|
||||
<field name="inner_diameter" class="diameter"/>
|
||||
<field name="total_length"/>
|
||||
<field name="taper" class="du"/>
|
||||
<field name="run_out_accuracy"/>
|
||||
<field name="top_diameter" class="diameter"/>
|
||||
<field name="weight"/>
|
||||
<field name="clamping_mode"/>
|
||||
<field name="clamping_length"/>
|
||||
<field name="clamping_tolerance"/>
|
||||
<field name="max_load_capacity"/>
|
||||
<field name="handle_ids" widget="many2many_tags" placeholder="请选择"/>
|
||||
<field name="cooling_jacket"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
<page string="切削速度Vc"
|
||||
attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片'))]}">
|
||||
<field name="cutting_speed_ids">
|
||||
<tree editable="bottom" class="center" delete="1">
|
||||
<field name="execution_standard_id" placeholder="请选择" required="1"/>
|
||||
<field name="material_code" readonly="1"/>
|
||||
<field name="material_id" placeholder="请选择"
|
||||
attrs="{'readonly': [('execution_standard_id', '=', False)], 'required': [('execution_standard_id', '!=', False)]}"/>
|
||||
<field name="material_grade" readonly="1"/>
|
||||
<field name="tensile_strength" readonly="1"/>
|
||||
<field name="hardness" readonly="1"/>
|
||||
<field name="slope_milling_angle" widget="du"/>
|
||||
<field name="cutting_speed_n1"/>
|
||||
<field name="cutting_speed_n2"/>
|
||||
<field name="cutting_speed_n3"/>
|
||||
<field name="cutting_speed_n4"/>
|
||||
<field name="cutting_speed_n5"/>
|
||||
<field name="rough_machining"/>
|
||||
<field name="precision_machining"/>
|
||||
<field name="application" placeholder="请选择" required="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
<page string="每齿走刀量fz"
|
||||
attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片'))]}">
|
||||
<field name="feed_per_tooth_ids"
|
||||
attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具'))]}">
|
||||
<tree editable="bottom" class="center" create="0" delete="0">
|
||||
<field name="cutting_speed"/>
|
||||
<field name="blade_diameter"/>
|
||||
<field name="feed_per_tooth" required="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
<field name="feed_per_tooth_ids_2"
|
||||
attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具'))]}">
|
||||
<tree editable="bottom" class="center" create="0" delete="0">
|
||||
<field name="machining_method"/>
|
||||
<field name="materials_type_id"/>
|
||||
<field name="blade_diameter"/>
|
||||
<field name="feed_per_tooth" required="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
<field name="feed_per_tooth_ids_3"
|
||||
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀片'))]}">
|
||||
<tree editable="bottom" class="center" create="0" delete="0">
|
||||
<field name="cutting_speed"/>
|
||||
<field name="feed_per_tooth" required="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
<field name="feed_per_tooth_ids_4"
|
||||
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀片'))]}">
|
||||
<tree editable="bottom" class="center" create="0" delete="0">
|
||||
<field name="machining_method"/>
|
||||
<field name="materials_type_id"/>
|
||||
<field name="feed_per_tooth" required="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
@@ -365,11 +527,11 @@
|
||||
<field name="name">maintenance.equipment.image.tree</field>
|
||||
<field name="model">maintenance.equipment.image</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="能力特征库" editable="bottom" delete="0" create="0" >
|
||||
<tree string="能力特征库" editable="bottom" delete="0" create="0">
|
||||
<field name="name" readonly="1"/>
|
||||
<field name="type" readonly="1"/>
|
||||
<field name="image" widget="image" readonly="1"/>
|
||||
<field name="equipment_id" />
|
||||
<field name="equipment_id"/>
|
||||
<field name="active" invisible="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
@@ -397,5 +559,4 @@
|
||||
</record>
|
||||
|
||||
|
||||
|
||||
</odoo>
|
||||
|
||||
@@ -1135,51 +1135,5 @@
|
||||
<!-- groups="maintenance.group_equipment_manager,base.group_user"-->
|
||||
<!-- sequence="1"/-->
|
||||
<!-- 设备图文展示-->
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
<record id="view_maintenance_equipment_image_tree" model="ir.ui.view">
|
||||
<field name="name">maintenance.equipment.image.tree</field>
|
||||
<field name="model">maintenance.equipment.image</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="能力特征库" editable="bottom" delete="0" create="0">
|
||||
<field name="name" readonly="1"/>
|
||||
<field name="type" readonly="1"/>
|
||||
<field name="image" widget="image" readonly="1"/>
|
||||
<field name="equipment_id"/>
|
||||
<field name="active" invisible="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record model="ir.ui.view" id="view_maintenance_equipment_image_search">
|
||||
<field name="name">maintenance.equipment.image.search</field>
|
||||
<field name="model">maintenance.equipment.image</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="name"/>
|
||||
<searchpanel class="account_root">
|
||||
<field name="type" icon="fa-filter" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_maintenance_equipment_image" model="ir.actions.act_window">
|
||||
<field name="name">能力特征库</field>
|
||||
<field name="res_model">maintenance.equipment.image</field>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="domain">[]</field>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
id="maintenance_equipment_image_form"
|
||||
name="能力特征库"
|
||||
parent="maintenance.menu_m_request"
|
||||
action="action_maintenance_equipment_image"
|
||||
groups="maintenance.group_equipment_manager,base.group_user"
|
||||
sequence="2"/>
|
||||
>>>>>>> 9b5a0162ff1f972a9e99e09624b98c13150b64d9
|
||||
|
||||
|
||||
</odoo>
|
||||
@@ -21,7 +21,6 @@
|
||||
'views/production_line_view.xml',
|
||||
'views/mrp_workcenter_views.xml',
|
||||
'views/mrp_workorder_view.xml',
|
||||
'views/tool_other_features_view.xml',
|
||||
'views/model_type_view.xml',
|
||||
'views/sf_maintenance_equipment.xml',
|
||||
# 'views/kanban_change.xml'
|
||||
|
||||
@@ -1,282 +0,0 @@
|
||||
from odoo import fields, models, api
|
||||
|
||||
|
||||
class ToolMaterialsBasicParameters(models.Model):
|
||||
_name = 'sf.tool.materials.basic.parameters'
|
||||
_description = '刀具物料基本参数'
|
||||
|
||||
standard_library_id = fields.Many2one('sf.cutting_tool.standard.library', string='刀具标准库')
|
||||
cutting_tool_type = fields.Char(related='cutting_tool_model_id.cutting_tool_type', string='刀具物料类型',
|
||||
store=True)
|
||||
# cutting_tool_type_1 = fields.Char(related='cutting_tool_type', string='类型', store=True)
|
||||
|
||||
# 整体式刀具参数
|
||||
code = fields.Char('物料号', size=50)
|
||||
total_length = fields.Char('总长度(mm)', size=20)
|
||||
blade_number = fields.Selection(
|
||||
[('2', '2'), ('3', '3'), ('4', '4'), ('5', '5'), ('6', '6'), ('7', '7'), ('8', '8')],
|
||||
string='刃数(个)')
|
||||
neck_diameter = fields.Char('颈部直径(mm)', size=20)
|
||||
neck_length = fields.Char('颈部长度(mm)', size=20)
|
||||
handle_diameter = fields.Char('柄部直径(mm)', size=20)
|
||||
handle_length = fields.Char('柄部长度(mm)', size=20)
|
||||
blade_tip_diameter = fields.Char('刀尖直径(mm)', size=20)
|
||||
blade_tip_working_size = fields.Char('刀尖处理尺寸(R半径mm/倒角)', size=20)
|
||||
blade_tip_taper = fields.Integer('刀尖锥度(°)')
|
||||
blade_diameter = fields.Char('刃部直径(mm)', size=20)
|
||||
blade_length = fields.Char('刃部长度(mm)', size=20)
|
||||
blade_helix_angle = fields.Integer('刃部螺旋角(°)')
|
||||
blade_width = fields.Char('刃部宽度(mm)', size=20)
|
||||
blade_depth = fields.Char('刃部深度(mm)', size=20)
|
||||
pitch = fields.Char('牙距(mm)', size=20)
|
||||
cutting_depth = fields.Char('切削深度(mm)', size=20)
|
||||
# 刀片参数
|
||||
length = fields.Char('长度(mm)', size=20)
|
||||
thickness = fields.Char('厚度(mm)', size=20)
|
||||
width = fields.Char('宽度(mm)', size=20)
|
||||
cutting_blade_length = fields.Char('切削刃长(mm)', size=20)
|
||||
relief_angle = fields.Integer('后角(°)')
|
||||
blade_tip_circular_arc_radius = fields.Char('刀尖圆弧半径(mm)', size=20)
|
||||
inscribed_circle_diameter = fields.Char('内接圆直径(mm)', size=20)
|
||||
install_aperture_diameter = fields.Char('安装孔直径(mm)', size=20)
|
||||
chip_breaker_groove = fields.Selection([('无', '无'), ('单面', '单面'), ('双面', '双面')],
|
||||
string='有无断屑槽')
|
||||
blade_teeth_model = fields.Selection(
|
||||
[('V牙型', 'V牙型'), ('米制全牙型', '米制全牙型'), ('美制全牙型', '美制全牙型'),
|
||||
('惠氏全牙型', '惠氏全牙型'), ('BSPT全牙型', 'BSPT全牙型'), ('NPT全牙型', 'NPT全牙型'),
|
||||
('UNJ全牙型', 'UNJ全牙型'), ('DIN405圆牙型', 'DIN405圆牙型'), ('ACME梯形', 'ACME梯形'),
|
||||
('石油管螺纹刀片', '石油管螺纹刀片'), ('矮牙ACME梯形', '矮牙ACME梯形'),
|
||||
('Trapeze30° 103', 'Trapeze30° 103')], string='刀片牙型')
|
||||
blade_blade_number = fields.Selection([('1', '1'), ('2', '2'), ('3', '3'), ('4', '4'), ('5', '5'), ('6', '6'),
|
||||
('7', '7'), ('8', '8'), ('9', '9'), ('10', '10')],
|
||||
string='刀片的刃数(个)')
|
||||
main_included_angle = fields.Integer('主偏角(°)')
|
||||
top_angle = fields.Integer('顶角(°)')
|
||||
blade_tip_dip_angle = fields.Integer('刀尖倾角(°)')
|
||||
side_cutting_edge_angle = fields.Integer('侧切削角(°)')
|
||||
thread_model = fields.Selection([('外螺纹', '外螺纹'), ('内螺纹', '内螺纹')], string='螺纹类型')
|
||||
thread_num = fields.Char('每英寸螺纹数(TPI)', size=20)
|
||||
blade_tip_height_tolerance = fields.Char('刀尖高度公差(mm)', size=20)
|
||||
inscribed_circle_tolerance = fields.Char('内接圆公差(mm)', size=20)
|
||||
thickness_tolerance = fields.Char('厚度公差(mm)', size=20)
|
||||
# 刀杆参数
|
||||
height = fields.Char('高度(mm)', size=20)
|
||||
blade_height = fields.Char('刃部高度(mm)', size=20)
|
||||
cutter_arbor_diameter = fields.Char('刀杆直径(mm)', size=20)
|
||||
min_machining_aperture = fields.Char('最小加工孔径(mm)', size=20)
|
||||
install_blade_tip_num = fields.Char('可装刀片数/齿数(个)', size=20)
|
||||
cutting_blade_model = fields.Char('切削类型', size=20)
|
||||
cooling_hole = fields.Selection([('有', '有'), ('无', '无')], string='有无冷却孔')
|
||||
locating_slot_code = fields.Char('定位槽代号', size=20)
|
||||
installing_structure = fields.Char('安装结构', size=20)
|
||||
blade_ids = fields.Many2many(
|
||||
'sf.cutting.tool.type',
|
||||
relation='cutting_tool_type_library_pad_blade_rel',
|
||||
column1='model_id_1',
|
||||
column2='model_id_2',
|
||||
domain="[('cutting_tool_material_id.name', '=', '刀片')]",
|
||||
string='适配刀片型号' # 使用空列表作为默认值
|
||||
)
|
||||
tool_shim = fields.Char('适配刀垫型号', size=50)
|
||||
cotter_pin = fields.Char('适配销钉型号', size=50)
|
||||
pressing_plate = fields.Char('适配压板型号', size=50)
|
||||
screw = fields.Char('适配螺钉型号', size=50)
|
||||
spanner = fields.Char('适配扳手型号', size=50)
|
||||
# 刀盘参数
|
||||
cutter_head_diameter = fields.Char('刀盘直径(mm)', size=20)
|
||||
interface_diameter = fields.Char('接口直径(mm)', size=20)
|
||||
# 刀柄参数
|
||||
flange_shank_length = fields.Char('法兰柄长(mm)', size=20)
|
||||
handle_external_diameter = fields.Char('柄部外径(mm)', size=20)
|
||||
handle_inside_diameter = fields.Char('柄部内径(mm)', size=20)
|
||||
min_clamping_diameter = fields.Char('最小夹持直径(mm)', size=20)
|
||||
max_clamping_diameter = fields.Char('最大夹持直径(mm)', size=20)
|
||||
clamping_mode = fields.Char('夹持方式', size=20)
|
||||
max_load_capacity = fields.Char('最大负载能力(kg)', size=20)
|
||||
taper = fields.Integer('锥度(°)')
|
||||
tool_changing_time = fields.Integer('换刀时间(s)')
|
||||
standard_rotate_speed = fields.Char('标准转速(n/min)', size=20)
|
||||
max_rotate_speed = fields.Char('最大转速(n/min)', size=20)
|
||||
diameter_slip_accuracy = fields.Char('径跳精度(mm)', size=20)
|
||||
cooling_model = fields.Char('冷却类型', size=20)
|
||||
is_rough_machining = fields.Selection([('是', '是'), ('否', '否')], string='是否可粗加工')
|
||||
is_finish_machining = fields.Selection([('是', '是'), ('否', '否')], string='是否可精加工')
|
||||
is_quick_cutting = fields.Selection([('是', '是'), ('否', '否')], string='是否可高速切削')
|
||||
is_drill_hole = fields.Selection([('是', '是'), ('否', '否')], string='是否可钻孔')
|
||||
is_safe_lock = fields.Selection([('是', '是'), ('否', '否')], string='有无安全锁')
|
||||
# 夹头参数
|
||||
er_size_model = fields.Char('ER尺寸型号', size=20)
|
||||
outer_diameter = fields.Char('外径(mm)', size=20)
|
||||
inner_diameter = fields.Char('内径(mm)', size=20)
|
||||
run_out_accuracy = fields.Char('跳动精度(mm)', size=20)
|
||||
top_diameter = fields.Char('顶部直径(mm)', size=20)
|
||||
weight = fields.Char('重量(kg)', size=20)
|
||||
clamping_length = fields.Char('夹持长度(mm)', size=20)
|
||||
clamping_tolerance = fields.Char('夹持公差(mm)', size=20)
|
||||
handle_ids = fields.Many2many(
|
||||
'sf.cutting.tool.type',
|
||||
relation='cutting_tool_type_library_chuck_handle_rel',
|
||||
column1='model_id_1',
|
||||
column2='model_id_2',
|
||||
domain="[('cutting_tool_material_id.name', '=', '刀柄')]",
|
||||
string='适用刀柄型号'
|
||||
)
|
||||
|
||||
def _json_basic_param(self, obj):
|
||||
basic_param_str = [0, '', {
|
||||
'code': obj['code'],
|
||||
'total_length': obj['total_length'],
|
||||
'blade_number': obj['blade_number'],
|
||||
'neck_diameter': obj['neck_diameter'],
|
||||
'neck_length': obj['neck_length'],
|
||||
'handle_diameter': obj['handle_diameter'],
|
||||
'handle_length': obj['handle_length'],
|
||||
'blade_tip_diameter': obj['blade_tip_diameter'],
|
||||
'blade_tip_working_size': obj['blade_tip_working_size'],
|
||||
'blade_tip_taper': obj['blade_tip_taper'],
|
||||
'blade_diameter': obj['blade_diameter'],
|
||||
'blade_length': obj['blade_length'],
|
||||
'blade_helix_angle': obj['blade_helix_angle'],
|
||||
'blade_width': obj['blade_width'],
|
||||
'blade_depth': obj['blade_depth'],
|
||||
'pitch': obj['pitch'],
|
||||
'cutting_depth': obj['cutting_depth'],
|
||||
'length': obj['length'],
|
||||
'thickness': obj['thickness'],
|
||||
'width': obj['width'],
|
||||
'cutting_blade_length': obj['cutting_blade_length'],
|
||||
'relief_angle': obj['relief_angle'],
|
||||
'blade_tip_circular_arc_radius': obj['blade_tip_circular_arc_radius'],
|
||||
'inscribed_circle_diameter': obj['inscribed_circle_diameter'],
|
||||
'install_aperture_diameter': obj['install_aperture_diameter'],
|
||||
'chip_breaker_groove': obj['chip_breaker_groove'],
|
||||
'blade_teeth_model': obj['bladed_teeth_model'],
|
||||
'blade_blade_number': obj['blade_blade_number'],
|
||||
'main_included_angle': obj['main_included_angle'],
|
||||
'top_angle': obj['top_angle'],
|
||||
'blade_tip_dip_angle': obj['blade_tip_dip_angle'],
|
||||
'side_cutting_edge_angle': obj['side_cutting_edge_angle'],
|
||||
'thread_model': obj['thread_model'],
|
||||
'thread_num': obj['thread_num'],
|
||||
'blade_tip_height_tolerance': obj['blade_tip_height_tolerance'],
|
||||
'inscribed_circle_tolerance': obj['inscribed_circle_tolerance'],
|
||||
'thickness_tolerance': obj['thickness_tolerance'],
|
||||
'height': obj['height'],
|
||||
'blade_height': obj['blade_height'],
|
||||
'cutter_arbor_diameter': obj['cutter_arbor_diameter'],
|
||||
'min_machining_aperture': obj['min_machining_aperture'],
|
||||
'install_blade_tip_num': obj['install_blade_tip_num'],
|
||||
'cutting_blade_model': obj['cutting_blade_model'],
|
||||
'cooling_hole': obj['cooling_hole'],
|
||||
'locating_slot_code': obj['locating_slot_code'],
|
||||
'installing_structure': obj['installing_structure'],
|
||||
'tool_shim': obj['tool_shim'],
|
||||
'cotter_pin': obj['cotter_pin'],
|
||||
'pressing_plate': obj['pressing_plate'],
|
||||
'screw': obj['screw'],
|
||||
'spanner': obj['spanner'],
|
||||
'cutter_head_diameter': obj['cutter_head_diameter'],
|
||||
'interface_diameter': obj['interface_diameter'],
|
||||
'flange_shank_length': obj['flange_shank_length'],
|
||||
'handle_external_diameter': obj['handle_external_diameter'],
|
||||
'handle_inside_diameter': obj['handle_inside_diameter'],
|
||||
'min_clamping_diameter': obj['min_clamping_diameter'],
|
||||
'max_clamping_diameter': obj['max_clamping_diameter'],
|
||||
'clamping_mode': obj['clamping_mode'],
|
||||
'max_load_capacity': obj['max_load_capacity'],
|
||||
'taper': obj['taper'],
|
||||
'tool_changing_time': obj['tool_changing_time'],
|
||||
'standard_rotate_speed': obj['standard_rotate_speed'],
|
||||
'max_rotate_speed': obj['max_rotate_speed'],
|
||||
'diameter_slip_accuracy': obj['diameter_slip_accuracy'],
|
||||
'cooling_model': obj['cooling_model'],
|
||||
'is_rough_machining': obj['is_rough_machining'],
|
||||
'is_finish_machining': obj['is_finish_machining'],
|
||||
'is_quick_cutting': obj['is_quick_cutting'],
|
||||
'is_drill_hole': obj['is_drill_hole'],
|
||||
'is_safe_lock': obj['is_safe_lock'],
|
||||
'er_size_model': obj['er_size_model'],
|
||||
'outer_diameter': obj['outer_diameter'],
|
||||
'inner_diameter': obj['inner_diameter'],
|
||||
'run_out_accuracy': obj['run_out_accuracy'],
|
||||
'top_diameter': obj['top_diameter'],
|
||||
'weight': obj['weight'],
|
||||
'clamping_length': obj['clamping_length'],
|
||||
'clamping_tolerance': obj['clamping_tolerance'],
|
||||
'handle_ids': obj['weight'],
|
||||
'blade_ids': obj['clamping_length'],
|
||||
}]
|
||||
return basic_param_str
|
||||
|
||||
|
||||
class CuttingSpeed(models.Model):
|
||||
_name = 'sf.cutting.speed'
|
||||
_description = '切削速度Vc'
|
||||
|
||||
product_template_id = fields.Many2one('product.template', string='产品')
|
||||
standard_library_id = fields.Many2one('sf.cutting_tool.standard.library', string='标准库')
|
||||
execution_standard_id = fields.Char('执行标准')
|
||||
material_code = fields.Char('材料代号')
|
||||
material_name = fields.Char('材料名称')
|
||||
material_grade = fields.Char('材料牌号')
|
||||
tensile_strength = fields.Float('拉伸强度 (N/mm²)')
|
||||
hardness = fields.Float('硬度(HRC)')
|
||||
cutting_speed_n1 = fields.Char('径向切宽 ae=100%D1 ap=1*D1 切削速度Vc')
|
||||
cutting_speed_n2 = fields.Char('径向切宽 ae=50%D1 ap=1.5*D1 切削速度Vc')
|
||||
cutting_speed_n3 = fields.Char('径向切宽 ae=25%D1 ap=L1max 切削速度Vc')
|
||||
cutting_speed_n4 = fields.Char('径向切宽 ae=15%D1 ap=L1max 切削速度Vc')
|
||||
cutting_speed_n5 = fields.Char('径向切宽 ae=5%D1 ap=L1max 切削速度Vc')
|
||||
rough_machining = fields.Char('粗加工 Vc(m/min)')
|
||||
precision_machining = fields.Char('精加工 Vc(m/min)')
|
||||
application = fields.Selection([('主应用', '主应用'), ('次应用', '次应用')], '主/次应用')
|
||||
|
||||
def _json_cutting_speed(self, obj):
|
||||
cutting_speed_str = [0, '', {
|
||||
'execution_standard_id': obj['execution_standard_id'],
|
||||
'material_code': obj['material_code'],
|
||||
'material_name': obj['material_name'],
|
||||
'material_grade': obj['material_grade'],
|
||||
'tensile_strength': obj['tensile_strength'],
|
||||
'hardness': obj['hardness'],
|
||||
'cutting_speed_n1': obj['cutting_speed_n1'],
|
||||
'cutting_speed_n2': obj['cutting_speed_n2'],
|
||||
'cutting_speed_n3': obj['cutting_speed_n3'],
|
||||
'cutting_speed_n4': obj['cutting_speed_n4'],
|
||||
'cutting_speed_n5': obj['cutting_speed_n5'],
|
||||
'rough_machining': obj['rough_machining'],
|
||||
'precision_machining': obj['precision_machining'],
|
||||
'application': obj['application'],
|
||||
}]
|
||||
return cutting_speed_str
|
||||
|
||||
|
||||
class FeedPerTooth(models.Model):
|
||||
_name = 'sf.feed.per.tooth'
|
||||
_description = '每齿走刀量fz'
|
||||
|
||||
product_template_id = fields.Many2one('product.template', string='产品')
|
||||
standard_library_id = fields.Many2one('sf.cutting_tool.standard.library', string='标准库')
|
||||
|
||||
cutting_speed = fields.Char('径向切宽 ae(mm)')
|
||||
machining_method = fields.Selection([('直铣', '直铣'), ('坡铣', '坡铣')], string='加工方式')
|
||||
materials_type_id = fields.Many2one('sf.materials.model', string='材料型号')
|
||||
blade_diameter = fields.Float('刃部直径D1(mm)', readonly=True,
|
||||
related='product_template_id.cutting_tool_blade_diameter')
|
||||
feed_per_tooth = fields.Char('每齿走刀量 (mm/z)')
|
||||
unit = fields.Char('单位', default='fz')
|
||||
|
||||
def _json_feed_per_tooth(self, obj):
|
||||
feed_per_tooth_str = [0, '', {
|
||||
'cutting_speed': obj['cutting_speed'],
|
||||
'machining_method': obj['machining_method'],
|
||||
'materials_type_id': obj['materials_type_id'],
|
||||
'blade_diameter': obj['blade_diameter'],
|
||||
'feed_per_tooth': obj['feed_per_tooth'],
|
||||
'unit': obj['unit'],
|
||||
}]
|
||||
return feed_per_tooth_str
|
||||
|
||||
# @api.depends('product_template_id')
|
||||
# def _compute_product_template_id(self):
|
||||
# if self.product_template_id is not None:
|
||||
# self.blade_diameter = self.product_template_id.cutting_tool_blade_diameter
|
||||
@@ -1,58 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<!-- ======================================== 切削速度Vc========================================-->
|
||||
<record id="sf_cutting_speed_tree" model="ir.ui.view">
|
||||
<field name="name">切削速度Vc</field>
|
||||
<field name="model">sf.cutting.speed</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="切削速度Vc" create="1">
|
||||
<!-- <field name="order"/>-->
|
||||
<field name="execution_standard_id"/>
|
||||
<field name="material_code"/>
|
||||
<field name="material_name"/>
|
||||
<field name="material_grade"/>
|
||||
<field name="tensile_strength"/>
|
||||
<field name="hardness"/>
|
||||
<field name="cutting_speed_n1"/>
|
||||
<field name="cutting_speed_n2"/>
|
||||
<field name="cutting_speed_n3"/>
|
||||
<field name="cutting_speed_n4"/>
|
||||
<field name="cutting_speed_n5"/>
|
||||
<field name="rough_machining"/>
|
||||
<field name="precision_machining"/>
|
||||
<field name="application"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="sf_cutting_speed_act" model="ir.actions.act_window">
|
||||
<field name="name">切削速度Vc</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">sf.cutting.speed</field>
|
||||
<field name="view_mode">tree</field>
|
||||
</record>
|
||||
|
||||
|
||||
<!-- ======================================== 每齿走刀量fz========================================-->
|
||||
<record model="ir.ui.view" id="sf_feed_per_tooth_tree">
|
||||
<field name="name">每齿走刀量fz</field>
|
||||
<field name="model">sf.feed.per.tooth</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field name="cutting_speed" attrs="{'readonly': [('materials_type_id','!=',False)]}"/>
|
||||
<field name="machining_method" attrs="{'readonly': [('cutting_speed','!=',False)]}"/>
|
||||
<field name="materials_type_id" attrs="{'readonly': [('cutting_speed','!=',False)]}"/>
|
||||
<!-- <field name="blade_diameter"/>-->
|
||||
<field name="feed_per_tooth"/>
|
||||
<field name="unit"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="sf_feed_per_tooth_act" model="ir.actions.act_window">
|
||||
<field name="name">每齿走刀量fz</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">sf.feed.per.tooth</field>
|
||||
<field name="view_mode">tree</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -22,48 +22,49 @@ class ResConfigSettings(models.TransientModel):
|
||||
def sf_all_sync(self):
|
||||
try:
|
||||
self.env['sf.production.materials'].sync_all_production_materials()
|
||||
_logger.info("同步资源库材料")
|
||||
_logger.info("同步资源库材料完成")
|
||||
self.env['sf.materials.model'].sync_all_materials_model()
|
||||
_logger.info("同步资源库材料型号")
|
||||
_logger.info("同步资源库材料型号完成")
|
||||
self.env['sf.international.standards'].sync_all_mrs_international_standards()
|
||||
_logger.info("同步资源库国际标准完成")
|
||||
self.env['material.apply'].sync_all_material_apply()
|
||||
_logger.info("同步资源库材料应用完成")
|
||||
self.env['sf.production.process.category'].sync_all_production_process_category()
|
||||
_logger.info("同步资源库表面工艺类别")
|
||||
_logger.info("同步资源库表面工艺类别完成")
|
||||
self.env['sf.production.process'].sync_all_production_process()
|
||||
_logger.info("同步资源库表面工艺")
|
||||
_logger.info("同步资源库表面工艺完成")
|
||||
# self.env['sf.processing.technology'].sync_all_processing_technology()
|
||||
# _logger.info("同步资源库加工工艺")
|
||||
self.env['sf.machine.brand.tags'].sync_all_machine_brand_tags()
|
||||
_logger.info("同步资源库品牌类别")
|
||||
_logger.info("同步资源库品牌类别完成")
|
||||
self.env['sf.machine.brand'].sync_all_machine_brand()
|
||||
_logger.info("同步资源库品牌")
|
||||
_logger.info("同步资源库品牌完成")
|
||||
self.env['sf.machine.control_system'].sync_all_machine_control_system()
|
||||
_logger.info("同步资源库控制系统")
|
||||
_logger.info("同步资源库控制系统完成")
|
||||
self.env['sf.machine_tool.category'].sync_all_machine_tool_category()
|
||||
_logger.info("同步资源库机床类型")
|
||||
_logger.info("同步资源库机床类型完成")
|
||||
self.env['sf.production.process.parameter'].sync_all_production_process_parameter()
|
||||
_logger.info("同步刀具物料")
|
||||
_logger.info("同步刀具物料完成")
|
||||
self.env['sf.cutting.tool.material'].sync_all_cutting_tool_material()
|
||||
_logger.info("同步刀具类型")
|
||||
_logger.info("同步刀具类型完成")
|
||||
self.env['sf.cutting.tool.type'].sync_all_tool_type()
|
||||
_logger.info("同步所有刀具型号完成")
|
||||
self.env['sf.functional.cutting.tool.model'].sync_all_functional_cutting_tool_model()
|
||||
_logger.info("同步夹具物料")
|
||||
_logger.info("同步夹具物料完成")
|
||||
self.env['sf.fixture.material'].sync_all_fixture_material()
|
||||
_logger.info("同步联装类型")
|
||||
_logger.info("同步联装类型完成")
|
||||
self.env['sf.multi_mounting.type'].sync_all_multi_mounting_type()
|
||||
_logger.info("同步夹具型号")
|
||||
_logger.info("同步夹具型号完成")
|
||||
self.env['sf.fixture.model'].sync_all_fixture_model()
|
||||
_logger.info("同步功能夹具类型")
|
||||
_logger.info("同步功能夹具类型完成")
|
||||
self.env['sf.functional.fixture.type'].sync_all_functional_fixture_type()
|
||||
_logger.info("同步功能夹具类型完成")
|
||||
self.env['sf.machine_tool.type'].sync_all_machine_tool_type()
|
||||
_logger.info("同步资源库机床型号完成")
|
||||
self.env['maintenance.equipment.image'].sync_all_maintenance_equipment_image()
|
||||
_logger.info("同步能力特征库完成")
|
||||
self.env['sf.cutting_tool.standard.library'].sync_all_cutting_tool_standard_library()
|
||||
_logger.info("同步刀具标准库完成")
|
||||
self.env['maintenance.equipment.image'].sync_all_maintenance_equipment_image()
|
||||
_logger.info("同步能力特征库")
|
||||
except Exception as e:
|
||||
_logger.info("捕获错误信息:%s" % e)
|
||||
raise ValidationError("数据错误导致同步失败,请联系管理员")
|
||||
|
||||
@@ -56,12 +56,12 @@ class MrStaticResourceDataSync(models.Model):
|
||||
logging.info("刀具物料已每日同步成功")
|
||||
self.env['sf.cutting.tool.type'].sync_tool_type_yesterday()
|
||||
logging.info("刀具类型已每日同步成功")
|
||||
self.env['sf.cutting_tool.standard.library'].sync_cutting_tool_standard_library_yesterday()
|
||||
logging.info("刀具标准库已每日同步成功")
|
||||
self.env['sf.functional.cutting.tool.model'].sync_functional_cutting_tool_model_yesterday()
|
||||
logging.info("功能刀具类型已每日同步成功")
|
||||
self.env['maintenance.equipment.image'].sync_maintenance_equipment_image_yesterday()
|
||||
logging.info("能力特征库已每日同步成功")
|
||||
self.env['sf.cutting_tool.standard.library'].sync_cutting_tool_standard_library_yesterday()
|
||||
logging.info("刀具标准库已每日同步成功")
|
||||
except Exception as e:
|
||||
logging.info("捕获错误信息:%s" % e)
|
||||
raise ValidationError("数据错误导致同步失败,请联系管理员")
|
||||
@@ -75,11 +75,9 @@ class sfProductionMaterials(models.Model):
|
||||
# 定时同步每日材料
|
||||
def sync_production_materials_yesterday(self):
|
||||
# 配置中获取token
|
||||
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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -103,11 +101,9 @@ class sfProductionMaterials(models.Model):
|
||||
|
||||
# 同步所有材料
|
||||
def sync_all_production_materials(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -137,11 +133,9 @@ class sfMaterialModel(models.Model):
|
||||
|
||||
# 定时同步每日材料型号
|
||||
def sync_materials_model_yesterday(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -185,11 +179,9 @@ class sfMaterialModel(models.Model):
|
||||
|
||||
# 同步所有材料型号
|
||||
def sync_all_materials_model(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -247,11 +239,9 @@ class sfProductionProcessCategory(models.Model):
|
||||
|
||||
# 定时同步每日表面工艺类别
|
||||
def sync_production_process_category_yesterday(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -274,11 +264,9 @@ class sfProductionProcessCategory(models.Model):
|
||||
|
||||
# 同步所有表面工艺类别
|
||||
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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -306,11 +294,9 @@ class sfProductionProcess(models.Model):
|
||||
|
||||
# 定时同步每日表面工艺
|
||||
def sync_production_process_yesterday(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -349,11 +335,9 @@ class sfProductionProcess(models.Model):
|
||||
|
||||
# 同步所有表面工艺
|
||||
def sync_all_production_process(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -387,11 +371,9 @@ class sfProcessingTechnology(models.Model):
|
||||
|
||||
# 定时同步加工工艺
|
||||
def sync_processing_technology_yesterday(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -415,11 +397,9 @@ class sfProcessingTechnology(models.Model):
|
||||
|
||||
# 同步所有加工工艺
|
||||
def sync_all_processing_technology(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -449,11 +429,9 @@ class MachineBrandTags(models.Model):
|
||||
|
||||
# 定时同步品牌类别
|
||||
def sync_machine_brand_tags_yesterday(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -473,12 +451,9 @@ class MachineBrandTags(models.Model):
|
||||
|
||||
# 同步所有品牌类别
|
||||
def sync_all_machine_brand_tags(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -504,11 +479,9 @@ class MachineControlSystem(models.Model):
|
||||
|
||||
# 定时同步控制系统
|
||||
def sync_machine_control_system_yesterday(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -535,11 +508,9 @@ class MachineControlSystem(models.Model):
|
||||
|
||||
# 同步所有控制系统
|
||||
def sync_all_machine_control_system(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -572,11 +543,9 @@ class MachineBrand(models.Model):
|
||||
|
||||
# 定时同步品牌
|
||||
def sync_machine_brand_yesterday(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -603,11 +572,9 @@ class MachineBrand(models.Model):
|
||||
|
||||
# 同步所有品牌
|
||||
def sync_all_machine_brand(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -640,11 +607,9 @@ class MachineToolType(models.Model):
|
||||
|
||||
# 定时同步机床型号
|
||||
def sync_machine_tool_type_yesterday(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -745,11 +710,9 @@ class MachineToolType(models.Model):
|
||||
|
||||
# 同步所有机床型号
|
||||
def sync_all_machine_tool_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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -858,11 +821,9 @@ class sfProcessingOrder(models.Model):
|
||||
|
||||
# 定时同步工序
|
||||
def sync_processing_order_yesterday(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -880,11 +841,9 @@ class sfProcessingOrder(models.Model):
|
||||
|
||||
# 同步所有工序
|
||||
def sync_all_processing_order(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -908,11 +867,9 @@ class sfProductionProcessParameter(models.Model):
|
||||
|
||||
# 定时同步每日表面工艺可选参数
|
||||
def sync_production_process_parameter_yesterday(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -942,11 +899,9 @@ class sfProductionProcessParameter(models.Model):
|
||||
|
||||
# 同步所有表面工艺可选参数
|
||||
def sync_all_production_process_parameter(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -983,11 +938,9 @@ class MachineToolCategory(models.Model):
|
||||
|
||||
# 定时同步机床类型
|
||||
def sync_machine_tool_category_yesterday(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -1012,11 +965,9 @@ class MachineToolCategory(models.Model):
|
||||
|
||||
# 同步所有机床类型
|
||||
def sync_all_machine_tool_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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -1049,11 +1000,9 @@ class sfSyncCutting_tool_Material(models.Model):
|
||||
|
||||
# 定时同步每日刀具物料
|
||||
def sync_cutting_tool_material_yesterday(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -1081,11 +1030,9 @@ class sfSyncCutting_tool_Material(models.Model):
|
||||
|
||||
# 同步所有刀具物料
|
||||
def sync_all_cutting_tool_material(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -1120,11 +1067,9 @@ class SyncFunctionalCuttingToolModel(models.Model):
|
||||
|
||||
# 定时同步每日功能刀具类型列表
|
||||
def sync_functional_cutting_tool_model_yesterday(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -1152,12 +1097,9 @@ class SyncFunctionalCuttingToolModel(models.Model):
|
||||
|
||||
# 同步所有功能刀具类型列表
|
||||
def sync_all_functional_cutting_tool_model(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -1192,11 +1134,9 @@ class SyncFixtureMaterial(models.Model):
|
||||
|
||||
# 定时同步夹具物料列表
|
||||
def sync_fixture_material_yesterday(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -1226,12 +1166,9 @@ class SyncFixtureMaterial(models.Model):
|
||||
|
||||
# 定时同步所有夹具物料列表
|
||||
def sync_all_fixture_material(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -1268,11 +1205,9 @@ class SyncMulti_Mounting_Type(models.Model):
|
||||
|
||||
# 定时同步联装类型列表
|
||||
def sync_multi_mounting_type_yesterday(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -1299,11 +1234,9 @@ class SyncMulti_Mounting_Type(models.Model):
|
||||
|
||||
# 定时同步所有联装类型列表
|
||||
def sync_all_multi_mounting_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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -1338,11 +1271,9 @@ class SyncFixtureModel(models.Model):
|
||||
|
||||
# 定时同步夹具型号列表
|
||||
def sync_fixture_model_yesterday(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -1417,11 +1348,9 @@ class SyncFixtureModel(models.Model):
|
||||
|
||||
# 定时同步所有夹具型号列表
|
||||
def sync_all_fixture_model(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -1504,11 +1433,9 @@ class SyncFunctionalFixtureType(models.Model):
|
||||
|
||||
# 定时同步功能夹具类型列表
|
||||
def sync_functional_fixture_type_yesterday(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -1536,11 +1463,9 @@ class SyncFunctionalFixtureType(models.Model):
|
||||
|
||||
# 定时同步所有功能夹具类型列表
|
||||
def sync_all_functional_fixture_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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -1575,11 +1500,9 @@ class SfToolType(models.Model):
|
||||
|
||||
# 定时同步每日刀具类型
|
||||
def sync_tool_type_yesterday(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -1609,11 +1532,9 @@ class SfToolType(models.Model):
|
||||
|
||||
# 同步所有刀具类型列表
|
||||
def sync_all_tool_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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -1651,11 +1572,9 @@ class SfMaintenanceEquipmentImage(models.Model):
|
||||
|
||||
# 定时同步每日能力特征库
|
||||
def sync_maintenance_equipment_image_yesterday(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -1681,11 +1600,9 @@ class SfMaintenanceEquipmentImage(models.Model):
|
||||
|
||||
# 同步所有能力特征库
|
||||
def sync_all_maintenance_equipment_image(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -1717,12 +1634,9 @@ class MaterialApply(models.Model):
|
||||
|
||||
# 定时同步材料应用
|
||||
def sync_material_apply(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -1742,12 +1656,9 @@ class MaterialApply(models.Model):
|
||||
|
||||
# 同步所有材料应用
|
||||
def sync_all_material_apply(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -1773,12 +1684,9 @@ class ModelInternationalStandards(models.Model):
|
||||
|
||||
# 定时同步制造标准
|
||||
def sync_mrs_international_standards(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -1791,6 +1699,7 @@ class ModelInternationalStandards(models.Model):
|
||||
else:
|
||||
self.create({
|
||||
"name": item['name'],
|
||||
"code": item['code'],
|
||||
"active": item['active'],
|
||||
})
|
||||
else:
|
||||
@@ -1798,12 +1707,9 @@ class ModelInternationalStandards(models.Model):
|
||||
|
||||
# 同步所有制造标准
|
||||
def sync_all_mrs_international_standards(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -1813,6 +1719,7 @@ class ModelInternationalStandards(models.Model):
|
||||
if not international_standards:
|
||||
self.create({
|
||||
"name": item['name'],
|
||||
"code": item['code'],
|
||||
"active": item['active'],
|
||||
})
|
||||
else:
|
||||
@@ -1829,27 +1736,160 @@ class Cutting_tool_standard_library(models.Model):
|
||||
|
||||
# 定时同步刀具标准库
|
||||
def sync_cutting_tool_standard_library_yesterday(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = 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['cutting_tool_standard_library_yesterday_list']:
|
||||
cutting_tool_standard_library = self.search(
|
||||
[("code", '=', item['code'])])
|
||||
if cutting_tool_standard_library:
|
||||
[("code", '=', item['code'].replace("JKM", result['factory_short_name']))])
|
||||
cutting_tool_type = self.env['sf.cutting.tool.type'].search(
|
||||
[("code", '=', item['cutting_tool_type_code'])])
|
||||
cutting_tool_material = self.env['sf.cutting.tool.material'].search(
|
||||
[("code", '=', item['cutting_tool_material_code'])])
|
||||
materials_model = self.env['sf.materials.model'].search(
|
||||
[("materials_no", '=', item['material_model_code'])])
|
||||
brand = self.env['sf.machine.brand'].search([("code", '=', item['brand_code'])])
|
||||
integral_tool_basic_param_list = []
|
||||
for integral_tool_item in item['integral_tool_basic_parameter']:
|
||||
integral_tool_basic_param_list.append(
|
||||
self.env['sf.tool.materials.basic.parameters']._json_integral_tool_basic_param(
|
||||
integral_tool_item))
|
||||
blade_basic_param_list = []
|
||||
for blade_item in item['blade_basic_parameter']:
|
||||
blade_basic_param_list.append(
|
||||
self.env['sf.tool.materials.basic.parameters']._json_blade_basic_param(blade_item))
|
||||
cutter_arbor_basic_param_list = []
|
||||
for cutter_arbor_item in item['cutter_arbor_basic_parameter']:
|
||||
cutter_arbor_basic_param_list.append(
|
||||
self.env['sf.tool.materials.basic.parameters']._json_cutter_arbor_basic_param(
|
||||
cutter_arbor_item))
|
||||
cutter_head_basic_param_list = []
|
||||
for cutter_head_item in item['cutter_head_basic_parameter']:
|
||||
cutter_head_basic_param_list.append(
|
||||
self.env['sf.tool.materials.basic.parameters']._json_cutter_head_basic_param(cutter_head_item))
|
||||
knife_handle_basic_param_list = []
|
||||
for knife_handle_item in item['knife_handle_basic_parameter']:
|
||||
knife_handle_basic_param_list.append(
|
||||
self.env['sf.tool.materials.basic.parameters']._json_knife_handle_basic_param(
|
||||
knife_handle_item))
|
||||
chuck_basic_param_list = []
|
||||
for chuck_item in item['chuck_basic_parameter']:
|
||||
chuck_basic_param_list.append(
|
||||
self.env['sf.tool.materials.basic.parameters']._json_chuck_basic_param(chuck_item))
|
||||
cutting_speed_list = []
|
||||
for cutting_speed_item in item['cutting_speed']:
|
||||
cutting_speed_list.append(
|
||||
self.env['sf.cutting.speed']._json_cutting_speed(cutting_speed_item))
|
||||
feed_per_tooth_list = []
|
||||
for feed_per_tooth_item in item['feed_per_tooth']:
|
||||
feed_per_tooth_list.append(
|
||||
self.env['sf.feed.per.tooth']._json_feed_per_tooth(feed_per_tooth_item))
|
||||
feed_per_tooth_2_list = []
|
||||
for feed_per_tooth_2_item in item['feed_per_tooth_2']:
|
||||
feed_per_tooth_2_list.append(
|
||||
self.env['sf.feed.per.tooth']._json_feed_per_tooth(feed_per_tooth_2_item))
|
||||
feed_per_tooth_3_list = []
|
||||
for feed_per_tooth_3_item in item['feed_per_tooth_3']:
|
||||
feed_per_tooth_3_list.append(
|
||||
self.env['sf.feed.per.tooth']._json_feed_per_tooth(feed_per_tooth_3_item))
|
||||
feed_per_tooth_4_list = []
|
||||
for feed_per_tooth_4_item in item['feed_per_tooth_4']:
|
||||
feed_per_tooth_4_list.append(
|
||||
self.env['sf.feed.per.tooth']._json_feed_per_tooth(feed_per_tooth_4_item))
|
||||
if not cutting_tool_standard_library:
|
||||
self.create({
|
||||
"code": item['code'].replace("JKM", result['factory_short_name']),
|
||||
"name": item['name'],
|
||||
"cutting_tool_material_id": cutting_tool_material.id,
|
||||
"cutting_tool_type_id": cutting_tool_type.id,
|
||||
"brand_id": brand.id,
|
||||
"material_model_id": materials_model.id,
|
||||
"tool_hardness": item['tool_hardness'],
|
||||
"coating_material": item['coating_material'],
|
||||
"blade_type": item['blade_type'],
|
||||
"integral_coarse_medium_fine": item['integral_coarse_medium_fine'],
|
||||
"integral_run_out_accuracy_max": item['integral_run_out_accuracy_max'],
|
||||
"integral_run_out_accuracy_min": item['integral_run_out_accuracy_min'],
|
||||
"cutter_bar_ids": [(6, 0, [])] if not item.get('cutter_bar_codes') else self.env[
|
||||
'sf.cutting.tool.type']._get_ids(item['cutter_bar_codes']),
|
||||
"cutter_pad_ids": [(6, 0, [])] if not item.get('cutter_pad_codes') else self.env[
|
||||
'sf.cutting.tool.type']._get_ids(item['cutter_pad_codes']),
|
||||
"fit_blade_shape_ids": [(6, 0, [])] if not item.get('fit_blade_shape') else self.env[
|
||||
'maintenance.equipment.image']._get_ids(item['fit_blade_shape']),
|
||||
"suitable_machining_method_ids": [(6, 0, [])] if not item.get(
|
||||
'suitable_machining_methods') else self.env['maintenance.equipment.image']._get_ids(
|
||||
item['suitable_machining_methods']),
|
||||
"blade_tip_characteristics_ids": [(6, 0, [])] if not item.get('blade_tip_characteristics') else
|
||||
self.env['maintenance.equipment.image']._get_ids(item['blade_tip_characteristics']),
|
||||
"handle_type_ids": [(6, 0, [])] if not item.get('handle_type') else self.env[
|
||||
'maintenance.equipment.image']._get_ids(item['handle_type']),
|
||||
"cutting_direction_ids": [(6, 0, [])] if not item.get('cutting_direction') else self.env[
|
||||
'maintenance.equipment.image']._get_ids(item['cutting_direction']),
|
||||
"suitable_coolant_ids": [(6, 0, [])] if not item.get('suitable_coolant') else self.env[
|
||||
'maintenance.equipment.image']._get_ids(item['suitable_coolant']),
|
||||
"compaction_way_ids": [(6, 0, [])] if not item.get('compaction_way') else self.env[
|
||||
'maintenance.equipment.image']._get_ids(item['compaction_way']),
|
||||
"integral_tool_basic_parameters_ids": integral_tool_basic_param_list,
|
||||
"blade_basic_parameters_ids": blade_basic_param_list,
|
||||
"cutter_bar_basic_parameters_ids": cutter_arbor_basic_param_list,
|
||||
"cutter_head_basic_parameters_ids": cutter_head_basic_param_list,
|
||||
"knife_handle_basic_parameters_ids": knife_handle_basic_param_list,
|
||||
"chuck_basic_parameters_ids": chuck_basic_param_list,
|
||||
"cutting_speed_ids": cutting_speed_list,
|
||||
"feed_per_tooth_ids": feed_per_tooth_list,
|
||||
"feed_per_tooth_ids_2": feed_per_tooth_2_list,
|
||||
"feed_per_tooth_ids_3": feed_per_tooth_3_list,
|
||||
"feed_per_tooth_ids_4": feed_per_tooth_4_list,
|
||||
"is_cloud": True,
|
||||
"active": item['active'],
|
||||
})
|
||||
else:
|
||||
cutting_tool_standard_library.write(
|
||||
{"name": item['name'],
|
||||
"active": item['active']}
|
||||
)
|
||||
else:
|
||||
self.create({
|
||||
"name": item['name'],
|
||||
"cutting_tool_material_id": cutting_tool_material.id,
|
||||
"cutting_tool_type_id": cutting_tool_type.id,
|
||||
"brand_id": brand.id,
|
||||
"material_model_id": materials_model.id,
|
||||
"tool_hardness": item['tool_hardness'],
|
||||
"coating_material": item['coating_material'],
|
||||
"blade_type": item['blade_type'],
|
||||
"integral_coarse_medium_fine": item['integral_coarse_medium_fine'],
|
||||
"integral_run_out_accuracy_max": item['integral_run_out_accuracy_max'],
|
||||
"integral_run_out_accuracy_min": item['integral_run_out_accuracy_min'],
|
||||
"cutter_bar_ids": [(6, 0, [])] if not item.get('cutter_bar_codes') else self.env[
|
||||
'sf.cutting.tool.type']._get_ids(item['cutter_bar_codes']),
|
||||
"cutter_pad_ids": [(6, 0, [])] if not item.get('cutter_pad_codes') else self.env[
|
||||
'sf.cutting.tool.type']._get_ids(item['cutter_pad_codes']),
|
||||
"fit_blade_shape_ids": [(6, 0, [])] if not item.get('fit_blade_shape') else self.env[
|
||||
'maintenance.equipment.image']._get_ids(item['fit_blade_shape']),
|
||||
"suitable_machining_method_ids": [(6, 0, [])] if not item.get(
|
||||
'suitable_machining_methods') else self.env['maintenance.equipment.image']._get_ids(
|
||||
item['suitable_machining_methods']),
|
||||
"blade_tip_characteristics_ids": [(6, 0, [])] if not item.get('blade_tip_characteristics') else
|
||||
self.env['maintenance.equipment.image']._get_ids(item['blade_tip_characteristics']),
|
||||
"handle_type_ids": [(6, 0, [])] if not item.get('handle_type') else self.env[
|
||||
'maintenance.equipment.image']._get_ids(item['handle_type']),
|
||||
"cutting_direction_ids": [(6, 0, [])] if not item.get('cutting_direction') else self.env[
|
||||
'maintenance.equipment.image']._get_ids(item['cutting_direction']),
|
||||
"suitable_coolant_ids": [(6, 0, [])] if not item.get('suitable_coolant') else self.env[
|
||||
'maintenance.equipment.image']._get_ids(item['suitable_coolant']),
|
||||
"compaction_way_ids": [(6, 0, [])] if not item.get('compaction_way') else self.env[
|
||||
'maintenance.equipment.image']._get_ids(item['compaction_way']),
|
||||
"integral_tool_basic_parameters_ids": integral_tool_basic_param_list,
|
||||
"blade_basic_parameters_ids": blade_basic_param_list,
|
||||
"cutter_bar_basic_parameters_ids": cutter_arbor_basic_param_list,
|
||||
"cutter_head_basic_parameters_ids": cutter_head_basic_param_list,
|
||||
"knife_handle_basic_parameters_ids": knife_handle_basic_param_list,
|
||||
"chuck_basic_parameters_ids": chuck_basic_param_list,
|
||||
"cutting_speed_ids": cutting_speed_list,
|
||||
"feed_per_tooth_ids": feed_per_tooth_list,
|
||||
"feed_per_tooth_ids_2": feed_per_tooth_2_list,
|
||||
"feed_per_tooth_ids_3": feed_per_tooth_3_list,
|
||||
"feed_per_tooth_ids_4": feed_per_tooth_4_list,
|
||||
"active": item['active'],
|
||||
})
|
||||
else:
|
||||
@@ -1857,12 +1897,9 @@ class Cutting_tool_standard_library(models.Model):
|
||||
|
||||
# 同步所有刀具标准库
|
||||
def sync_all_cutting_tool_standard_library(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
|
||||
config = self.env['res.config.settings'].get_values()
|
||||
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
|
||||
strUrl = config['sf_url'] + self.url
|
||||
r = requests.post(strUrl, json={}, data=None, headers=headers)
|
||||
r = r.json()
|
||||
result = json.loads(r['result'])
|
||||
@@ -1877,18 +1914,53 @@ class Cutting_tool_standard_library(models.Model):
|
||||
materials_model = self.env['sf.materials.model'].search(
|
||||
[("materials_no", '=', item['material_model_code'])])
|
||||
brand = self.env['sf.machine.brand'].search([("code", '=', item['brand_code'])])
|
||||
basic_param_list = []
|
||||
for basic_param_item in item['basic_parameter']:
|
||||
basic_param_list.append(
|
||||
self.env['sf.tool.materials.basic.parameters']._json_basic_param(basic_param_item))
|
||||
integral_tool_basic_param_list = []
|
||||
for integral_tool_item in item['integral_tool_basic_parameter']:
|
||||
integral_tool_basic_param_list.append(
|
||||
self.env['sf.tool.materials.basic.parameters']._json_integral_tool_basic_param(
|
||||
integral_tool_item))
|
||||
blade_basic_param_list = []
|
||||
for blade_item in item['blade_basic_parameter']:
|
||||
blade_basic_param_list.append(
|
||||
self.env['sf.tool.materials.basic.parameters']._json_blade_basic_param(blade_item))
|
||||
cutter_arbor_basic_param_list = []
|
||||
for cutter_arbor_item in item['cutter_arbor_basic_parameter']:
|
||||
cutter_arbor_basic_param_list.append(
|
||||
self.env['sf.tool.materials.basic.parameters']._json_cutter_arbor_basic_param(
|
||||
cutter_arbor_item))
|
||||
cutter_head_basic_param_list = []
|
||||
for cutter_head_item in item['cutter_head_basic_parameter']:
|
||||
cutter_head_basic_param_list.append(
|
||||
self.env['sf.tool.materials.basic.parameters']._json_cutter_head_basic_param(cutter_head_item))
|
||||
knife_handle_basic_param_list = []
|
||||
for knife_handle_item in item['knife_handle_basic_parameter']:
|
||||
knife_handle_basic_param_list.append(
|
||||
self.env['sf.tool.materials.basic.parameters']._json_knife_handle_basic_param(
|
||||
knife_handle_item))
|
||||
chuck_basic_param_list = []
|
||||
for chuck_item in item['chuck_basic_parameter']:
|
||||
chuck_basic_param_list.append(
|
||||
self.env['sf.tool.materials.basic.parameters']._json_chuck_basic_param(chuck_item))
|
||||
cutting_speed_list = []
|
||||
for cutting_speed_item in item['cutting_speed']:
|
||||
cutting_speed_list.append(
|
||||
self.env['sf.cutting.speed']._json_cutting_speed(cutting_speed_item))
|
||||
feed_per_tooth_list = []
|
||||
for feed_per_tooth_item in item['basic_parameter']:
|
||||
for feed_per_tooth_item in item['feed_per_tooth']:
|
||||
feed_per_tooth_list.append(
|
||||
self.env['sf.feed.per.tooth']._json_feed_per_tooth(feed_per_tooth_item))
|
||||
feed_per_tooth_2_list = []
|
||||
for feed_per_tooth_2_item in item['feed_per_tooth_2']:
|
||||
feed_per_tooth_2_list.append(
|
||||
self.env['sf.feed.per.tooth']._json_feed_per_tooth_2(feed_per_tooth_2_item))
|
||||
feed_per_tooth_3_list = []
|
||||
for feed_per_tooth_3_item in item['feed_per_tooth_3']:
|
||||
feed_per_tooth_3_list.append(
|
||||
self.env['sf.feed.per.tooth']._json_feed_per_tooth_3(feed_per_tooth_3_item))
|
||||
feed_per_tooth_4_list = []
|
||||
for feed_per_tooth_4_item in item['feed_per_tooth_4']:
|
||||
feed_per_tooth_4_list.append(
|
||||
self.env['sf.feed.per.tooth']._json_feed_per_tooth_4(feed_per_tooth_4_item))
|
||||
if not cutting_tool_standard_library:
|
||||
self.create({
|
||||
"code": item['code'].replace("JKM", result['factory_short_name']),
|
||||
@@ -1900,14 +1972,40 @@ class Cutting_tool_standard_library(models.Model):
|
||||
"tool_hardness": item['tool_hardness'],
|
||||
"coating_material": item['coating_material'],
|
||||
"blade_type": item['blade_type'],
|
||||
"blade_diameter": item['blade_diameter'],
|
||||
"working_hardness": item['working_hardness'],
|
||||
"integral_coarse_medium_fine": item['integral_coarse_medium_fine'],
|
||||
"integral_run_out_accuracy_max": item['integral_run_out_accuracy_max'],
|
||||
"integral_run_out_accuracy_min": item['integral_run_out_accuracy_min'],
|
||||
"basic_parameters_ids": basic_param_list,
|
||||
"cutter_bar_ids": [(6, 0, [])] if not item.get('cutter_bar_codes') else self.env[
|
||||
'sf.cutting.tool.type']._get_ids(item['cutter_bar_codes']),
|
||||
"cutter_pad_ids": [(6, 0, [])] if not item.get('cutter_pad_codes') else self.env[
|
||||
'sf.cutting.tool.type']._get_ids(item['cutter_pad_codes']),
|
||||
"fit_blade_shape_ids": [(6, 0, [])] if not item.get('fit_blade_shape') else self.env[
|
||||
'maintenance.equipment.image']._get_ids(item['fit_blade_shape']),
|
||||
"suitable_machining_method_ids": [(6, 0, [])] if not item.get(
|
||||
'suitable_machining_method') else self.env['maintenance.equipment.image']._get_ids(
|
||||
item['suitable_machining_method']),
|
||||
"blade_tip_characteristics_ids": [(6, 0, [])] if not item.get('blade_tip_characteristics') else
|
||||
self.env['maintenance.equipment.image']._get_ids(item['blade_tip_characteristics']),
|
||||
"handle_type_ids": [(6, 0, [])] if not item.get('handle_type') else self.env[
|
||||
'maintenance.equipment.image']._get_ids(item['handle_type']),
|
||||
"cutting_direction_ids": [(6, 0, [])] if not item.get('cutting_direction') else self.env[
|
||||
'maintenance.equipment.image']._get_ids(item['cutting_direction']),
|
||||
"suitable_coolant_ids": [(6, 0, [])] if not item.get('suitable_coolant') else self.env[
|
||||
'maintenance.equipment.image']._get_ids(item['suitable_coolant']),
|
||||
"compaction_way_ids": [(6, 0, [])] if not item.get('compaction_way') else self.env[
|
||||
'maintenance.equipment.image']._get_ids(item['compaction_way']),
|
||||
"integral_tool_basic_parameters_ids": integral_tool_basic_param_list,
|
||||
"blade_basic_parameters_ids": blade_basic_param_list,
|
||||
"cutter_bar_basic_parameters_ids": cutter_arbor_basic_param_list,
|
||||
"cutter_head_basic_parameters_ids": cutter_head_basic_param_list,
|
||||
"knife_handle_basic_parameters_ids": knife_handle_basic_param_list,
|
||||
"chuck_basic_parameters_ids": chuck_basic_param_list,
|
||||
"cutting_speed_ids": cutting_speed_list,
|
||||
"feed_per_tooth_ids": feed_per_tooth_list,
|
||||
"feed_per_tooth_ids_2": feed_per_tooth_2_list,
|
||||
"feed_per_tooth_ids_3": feed_per_tooth_3_list,
|
||||
"feed_per_tooth_ids_4": feed_per_tooth_4_list,
|
||||
"is_cloud": True,
|
||||
"active": item['active'],
|
||||
})
|
||||
else:
|
||||
@@ -1920,15 +2018,40 @@ class Cutting_tool_standard_library(models.Model):
|
||||
"tool_hardness": item['tool_hardness'],
|
||||
"coating_material": item['coating_material'],
|
||||
"blade_type": item['blade_type'],
|
||||
"blade_diameter": item['blade_diameter'],
|
||||
"working_hardness": item['working_hardness'],
|
||||
"integral_coarse_medium_fine": item['integral_coarse_medium_fine'],
|
||||
"integral_run_out_accuracy_max": item['integral_run_out_accuracy_max'],
|
||||
"integral_run_out_accuracy_min": item['integral_run_out_accuracy_min'],
|
||||
"basic_parameters_ids": basic_param_list,
|
||||
"cutter_bar_ids": [(6, 0, [])] if not item.get('cutter_bar_codes') else self.env[
|
||||
'sf.cutting.tool.type']._get_ids(item['cutter_bar_codes']),
|
||||
"cutter_pad_ids": [(6, 0, [])] if not item.get('cutter_pad_codes') else self.env[
|
||||
'sf.cutting.tool.type']._get_ids(item['cutter_pad_codes']),
|
||||
"fit_blade_shape_ids": [(6, 0, [])] if not item.get('fit_blade_shape') else self.env[
|
||||
'maintenance.equipment.image']._get_ids(item['fit_blade_shape']),
|
||||
"suitable_machining_method_ids": [(6, 0, [])] if not item.get(
|
||||
'suitable_machining_methods') else self.env['maintenance.equipment.image']._get_ids(
|
||||
item['suitable_machining_methods']),
|
||||
"blade_tip_characteristics_ids": [(6, 0, [])] if not item.get('blade_tip_characteristics') else
|
||||
self.env['maintenance.equipment.image']._get_ids(item['blade_tip_characteristics']),
|
||||
"handle_type_ids": [(6, 0, [])] if not item.get('handle_type') else self.env[
|
||||
'maintenance.equipment.image']._get_ids(item['handle_type']),
|
||||
"cutting_direction_ids": [(6, 0, [])] if not item.get('cutting_direction') else self.env[
|
||||
'maintenance.equipment.image']._get_ids(item['cutting_direction']),
|
||||
"suitable_coolant_ids": [(6, 0, [])] if not item.get('suitable_coolant') else self.env[
|
||||
'maintenance.equipment.image']._get_ids(item['suitable_coolant']),
|
||||
"compaction_way_ids": [(6, 0, [])] if not item.get('compaction_way') else self.env[
|
||||
'maintenance.equipment.image']._get_ids(item['compaction_way']),
|
||||
"integral_tool_basic_parameters_ids": integral_tool_basic_param_list,
|
||||
"blade_basic_parameters_ids": blade_basic_param_list,
|
||||
"cutter_bar_basic_parameters_ids": cutter_arbor_basic_param_list,
|
||||
"cutter_head_basic_parameters_ids": cutter_head_basic_param_list,
|
||||
"knife_handle_basic_parameters_ids": knife_handle_basic_param_list,
|
||||
"chuck_basic_parameters_ids": chuck_basic_param_list,
|
||||
"cutting_speed_ids": cutting_speed_list,
|
||||
"feed_per_tooth_ids": feed_per_tooth_list,
|
||||
"active": item['active'], }
|
||||
)
|
||||
"feed_per_tooth_ids_2": feed_per_tooth_2_list,
|
||||
"feed_per_tooth_ids_3": feed_per_tooth_3_list,
|
||||
"feed_per_tooth_ids_4": feed_per_tooth_4_list,
|
||||
"active": item['active'],
|
||||
})
|
||||
else:
|
||||
raise ValidationError("刀具标准库认证未通过")
|
||||
|
||||
Reference in New Issue
Block a user